Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c7037119a5 | |||
| e166ef1052 | |||
| a971d9f625 | |||
| a6f05ab2d5 | |||
| e544d6e04a |
@@ -0,0 +1,45 @@
|
||||
# Normalize line endings and mark binaries for cross-platform consistency
|
||||
|
||||
# Default: text with LF (cross-platform canonical)
|
||||
* text=auto eol=lf
|
||||
|
||||
# Windows scripts keep CRLF
|
||||
*.ps1 text eol=crlf
|
||||
*.cmd text eol=crlf
|
||||
*.bat text eol=crlf
|
||||
|
||||
# Shell/Unix scripts use LF
|
||||
*.sh text eol=lf
|
||||
|
||||
# Obsidian text artifacts
|
||||
*.md text eol=lf
|
||||
*.base text eol=lf
|
||||
*.canvas binary
|
||||
*.json text eol=lf
|
||||
*.yaml text eol=lf
|
||||
*.yml text eol=lf
|
||||
|
||||
# Binary assets (no diff noise, no line-ending conversion)
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
*.jpeg binary
|
||||
*.gif binary
|
||||
*.webp binary
|
||||
*.ico binary
|
||||
*.svg binary
|
||||
*.pdf binary
|
||||
*.epub binary
|
||||
*.docx binary
|
||||
*.pptx binary
|
||||
*.xlsx binary
|
||||
*.mp4 binary
|
||||
*.mov binary
|
||||
*.webm binary
|
||||
*.mp3 binary
|
||||
*.wav binary
|
||||
*.zip binary
|
||||
*.gz binary
|
||||
*.7z binary
|
||||
*.tar binary
|
||||
*.exe binary
|
||||
*.dll binary
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
# post-merge — refresh qmd index + hint to reload Obsidian after config pull
|
||||
|
||||
echo "=== post-merge: Updating qmd index ==="
|
||||
node "C:\Users\hhhh2024\AppData\Roaming\npm\node_modules\@tobilu\qmd\dist\cli\qmd.js" update 2>/dev/null || echo " qmd update skipped (not installed?)"
|
||||
|
||||
# If .obsidian configs changed in this merge, hint reload
|
||||
if ! git diff --quiet HEAD@{1} HEAD -- .obsidian 2>/dev/null; then
|
||||
echo "=== .obsidian config changed: reload Obsidian (Ctrl+R) to apply ==="
|
||||
fi
|
||||
|
||||
echo "=== Done ==="
|
||||
@@ -0,0 +1,40 @@
|
||||
#!/bin/sh
|
||||
# pre-commit — frontmatter validation + large file guard + secret scan
|
||||
|
||||
# 1. Frontmatter validation for wiki pages
|
||||
CHANGED=$(git diff --cached --name-only --diff-filter=ACM | grep '^wiki/.*\.md$')
|
||||
if [ -n "$CHANGED" ]; then
|
||||
python tools/scripts/validate-frontmatter.py --git-hook
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "ERROR: Frontmatter validation failed. Commit rejected."
|
||||
echo "Run 'python tools/scripts/validate-frontmatter.py --files <file>' to check."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# 2. Large file guard (>10MB) — prevent accidental PDF/video/attachment commits
|
||||
MAX_SIZE=10485760 # 10 MB
|
||||
REJECT=""
|
||||
for f in $(git diff --cached --name-only --diff-filter=ACM); do
|
||||
[ -f "$f" ] || continue
|
||||
FSIZE=$(wc -c < "$f" 2>/dev/null | tr -d ' ')
|
||||
[ -z "$FSIZE" ] && FSIZE=0
|
||||
if [ "$FSIZE" -gt "$MAX_SIZE" ]; then
|
||||
REJECT="$REJECT
|
||||
$f ($FSIZE bytes)"
|
||||
fi
|
||||
done
|
||||
if [ -n "$REJECT" ]; then
|
||||
echo "ERROR: Files exceed 10MB limit (rejected):$REJECT"
|
||||
echo "Use Git LFS or add to .gitignore."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 3. Secret scan — long hex tokens (40+ chars) in staged diff (warning only)
|
||||
LEAK=$(git diff --cached -U0 2>/dev/null | grep -iE '[0-9a-f]{40,}' | grep -v 'sha' | head -5)
|
||||
if [ -n "$LEAK" ]; then
|
||||
echo "WARN: Possible token/secret in staged diff (review before push):"
|
||||
echo "$LEAK"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
+43
-3
@@ -1,12 +1,52 @@
|
||||
# 排除所有文件
|
||||
# Obsidian vault — whitelist strategy
|
||||
# Ignore everything at repo root, explicitly allow specific dirs/files.
|
||||
# Rationale: keep LLM Wiki layer + infra in git; track .obsidian configs too.
|
||||
|
||||
/*
|
||||
# 但保留这些目录和文件
|
||||
|
||||
# === Tracked content (LLM Wiki layer + infrastructure) ===
|
||||
!raw/
|
||||
!wiki/
|
||||
!Templates/
|
||||
!tools/
|
||||
!.githooks/
|
||||
!AGENTS.md
|
||||
!.gitignore
|
||||
# 保留目录内的所有内容
|
||||
!.gitattributes
|
||||
!.mailmap
|
||||
|
||||
# Allow everything inside tracked dirs
|
||||
!raw/**
|
||||
!wiki/**
|
||||
!Templates/**
|
||||
!tools/**
|
||||
!.githooks/**
|
||||
|
||||
# === Obsidian config — track but ignore high-churn state/caches ===
|
||||
!.obsidian/
|
||||
!.obsidian/**
|
||||
|
||||
# Device-specific workspace state (frequent churn, causes merge conflicts)
|
||||
.obsidian/workspace.json
|
||||
.obsidian/workspace.json.tmp
|
||||
.obsidian/workspace_*.json
|
||||
.obsidian/workspace_*_Conflict.json
|
||||
|
||||
# Large derived indexes
|
||||
.obsidian/copilot-index-*.json
|
||||
|
||||
# Plugin internals: binaries, deps, backups, high-churn caches
|
||||
.obsidian/plugins/*/node_modules/
|
||||
.obsidian/plugins/*/*.exe
|
||||
.obsidian/plugins/*/*.dll
|
||||
.obsidian/plugins/*/data.json.bak
|
||||
.obsidian/plugins/recent-files-obsidian/data.json
|
||||
|
||||
# === Python ===
|
||||
**/__pycache__/
|
||||
*.pyc
|
||||
|
||||
# === OS junk ===
|
||||
**/Thumbs.db
|
||||
**/.DS_Store
|
||||
**/desktop.ini
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
hehaiguang1123 <hehaiguang1123@gmail.com> 豆儿雷锋大道 <hehaiguang1123@sina.com>
|
||||
hehaiguang1123 <hehaiguang1123@gmail.com> hehaiguang1123 <hehaiguang1123@sina.com>
|
||||
Vendored
+20
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"attachmentFolderPath": "Attachments",
|
||||
"promptDelete": false,
|
||||
"alwaysUpdateLinks": true,
|
||||
"newFileLocation": "root",
|
||||
"newFileFolderPath": "0 - 收集/卡片笔记",
|
||||
"trashOption": "system",
|
||||
"pdfExportSettings": {
|
||||
"includeName": true,
|
||||
"pageSize": "Letter",
|
||||
"landscape": false,
|
||||
"margin": "0",
|
||||
"downscalePercent": 100
|
||||
},
|
||||
"vimMode": false,
|
||||
"newLinkFormat": "shortest",
|
||||
"useMarkdownLinks": false,
|
||||
"showUnsupportedFiles": true,
|
||||
"openBehavior": "daily"
|
||||
}
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"accentColor": "",
|
||||
"cssTheme": "Lime_百草霜",
|
||||
"translucency": false,
|
||||
"enabledCssSnippets": [
|
||||
"IFPM-frame",
|
||||
"IFPM-title-center",
|
||||
"IFPM-title-top"
|
||||
],
|
||||
"baseFontSize": 20,
|
||||
"theme": "system",
|
||||
"nativeMenus": false,
|
||||
"baseFontSizeAction": false
|
||||
}
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"backlinkInDocument": true
|
||||
}
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"type": "group",
|
||||
"ctime": 1768359897129,
|
||||
"items": [],
|
||||
"title": "知识管理"
|
||||
}
|
||||
]
|
||||
}
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
[
|
||||
"obsidian-clipper",
|
||||
"obsidian-linter",
|
||||
"obsidian-local-images-plus",
|
||||
"templater-obsidian",
|
||||
"obsidian-opencode",
|
||||
"pkmer",
|
||||
"maps",
|
||||
"marp",
|
||||
"various-complements",
|
||||
"obsidian-custom-frames",
|
||||
"obsidian-git"
|
||||
]
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"file-explorer": true,
|
||||
"global-search": true,
|
||||
"switcher": true,
|
||||
"graph": true,
|
||||
"backlink": true,
|
||||
"canvas": true,
|
||||
"outgoing-link": true,
|
||||
"tag-pane": true,
|
||||
"page-preview": true,
|
||||
"daily-notes": true,
|
||||
"templates": false,
|
||||
"note-composer": true,
|
||||
"command-palette": true,
|
||||
"slash-command": false,
|
||||
"editor-status": true,
|
||||
"starred": true,
|
||||
"markdown-importer": true,
|
||||
"zk-prefixer": true,
|
||||
"random-note": false,
|
||||
"outline": true,
|
||||
"word-count": true,
|
||||
"slides": false,
|
||||
"audio-recorder": false,
|
||||
"workspaces": false,
|
||||
"file-recovery": true,
|
||||
"publish": false,
|
||||
"sync": false,
|
||||
"bookmarks": true,
|
||||
"properties": true
|
||||
}
|
||||
Vendored
+34
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"file-explorer": true,
|
||||
"global-search": true,
|
||||
"switcher": true,
|
||||
"graph": true,
|
||||
"backlink": true,
|
||||
"canvas": true,
|
||||
"outgoing-link": true,
|
||||
"tag-pane": true,
|
||||
"page-preview": true,
|
||||
"daily-notes": true,
|
||||
"templates": true,
|
||||
"note-composer": true,
|
||||
"command-palette": true,
|
||||
"slash-command": true,
|
||||
"editor-status": true,
|
||||
"starred": true,
|
||||
"markdown-importer": true,
|
||||
"zk-prefixer": true,
|
||||
"random-note": true,
|
||||
"outline": true,
|
||||
"word-count": true,
|
||||
"slides": true,
|
||||
"audio-recorder": false,
|
||||
"workspaces": true,
|
||||
"file-recovery": true,
|
||||
"publish": false,
|
||||
"sync": false,
|
||||
"bookmarks": true,
|
||||
"properties": true,
|
||||
"webviewer": true,
|
||||
"footnotes": true,
|
||||
"bases": true
|
||||
}
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"folder": "Daily",
|
||||
"template": "Templates/Daily Note Template"
|
||||
}
|
||||
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"collapse-filter": false,
|
||||
"search": "",
|
||||
"showTags": false,
|
||||
"showAttachments": false,
|
||||
"hideUnresolved": false,
|
||||
"showOrphans": true,
|
||||
"collapse-color-groups": false,
|
||||
"colorGroups": [],
|
||||
"collapse-display": false,
|
||||
"showArrow": true,
|
||||
"textFadeMultiplier": 0,
|
||||
"nodeSizeMultiplier": 1,
|
||||
"lineSizeMultiplier": 1,
|
||||
"collapse-forces": false,
|
||||
"centerStrength": 0.705983612201336,
|
||||
"repelStrength": 14.9142739103491,
|
||||
"linkStrength": 1,
|
||||
"linkDistance": 157,
|
||||
"scale": 0.1166089094258543,
|
||||
"close": true
|
||||
}
|
||||
Vendored
+153
@@ -0,0 +1,153 @@
|
||||
{
|
||||
"insert-current-time": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Alt"
|
||||
],
|
||||
"key": "T"
|
||||
}
|
||||
],
|
||||
"insert-current-date": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Alt"
|
||||
],
|
||||
"key": "D"
|
||||
}
|
||||
],
|
||||
"obsidian-read-it-later:save-clipboard-to-notice": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "R"
|
||||
}
|
||||
],
|
||||
"editor:save-file": [],
|
||||
"dida-sync:sync-current-file": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod",
|
||||
"Shift"
|
||||
],
|
||||
"key": "D"
|
||||
}
|
||||
],
|
||||
"insert-template": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Alt"
|
||||
],
|
||||
"key": "M"
|
||||
}
|
||||
],
|
||||
"mantou-ai:question_for_mantou": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Alt",
|
||||
"Meta"
|
||||
],
|
||||
"key": "I"
|
||||
}
|
||||
],
|
||||
"ai-zhipu:generate": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Alt",
|
||||
"Mod"
|
||||
],
|
||||
"key": "I"
|
||||
}
|
||||
],
|
||||
"obsidian-better-command-palette:open-better-commmand-palette": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "P"
|
||||
}
|
||||
],
|
||||
"command-palette:open": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "P"
|
||||
}
|
||||
],
|
||||
"workspace:split-vertical": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "\\"
|
||||
}
|
||||
],
|
||||
"workspace:split-horizontal": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "-"
|
||||
}
|
||||
],
|
||||
"file-explorer:new-file": [],
|
||||
"note-chain:chain_insert_node": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Alt"
|
||||
],
|
||||
"key": "I"
|
||||
}
|
||||
],
|
||||
"note-chain:chain_move_donw_node": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Alt"
|
||||
],
|
||||
"key": "ArrowDown"
|
||||
}
|
||||
],
|
||||
"note-chain:chain_move_up_node": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Alt"
|
||||
],
|
||||
"key": "ArrowUp"
|
||||
}
|
||||
],
|
||||
"note-chain:cmd_open_prev_note_of_right_leaf": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Alt"
|
||||
],
|
||||
"key": "ArrowLeft"
|
||||
}
|
||||
],
|
||||
"note-chain:cmd_open_next_note_of_right_leaf": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Alt"
|
||||
],
|
||||
"key": "ArrowRight"
|
||||
}
|
||||
],
|
||||
"zk-prefixer": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "N"
|
||||
}
|
||||
],
|
||||
"random-note": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Meta",
|
||||
"Shift"
|
||||
],
|
||||
"key": "N"
|
||||
}
|
||||
],
|
||||
"file-explorer:new-file-in-new-pane": []
|
||||
}
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"askBeforeMerging": false,
|
||||
"template": ""
|
||||
}
|
||||
+7370
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"id":"advanced-canvas","name":"Advanced Canvas","version":"5.6.5","minAppVersion":"1.1.0","description":"Supercharge your canvas experience! Create presentations, flowcharts and more!","author":"Developer-Mike","authorUrl":"https://github.com/Developer-Mike","fundingUrl":"https://ko-fi.com/X8X27IA08","isDesktopOnly":false}
|
||||
+508
@@ -0,0 +1,508 @@
|
||||
/* src/styles.scss */
|
||||
.properties-field > .setting-item-info {
|
||||
flex: 0;
|
||||
margin: 0;
|
||||
padding: var(--size-4-1) var(--size-4-2);
|
||||
border: var(--input-border-width) solid var(--background-modifier-border);
|
||||
border-radius: var(--input-radius) 0 0 var(--input-radius);
|
||||
}
|
||||
.properties-field > .setting-item-control > input {
|
||||
width: 100%;
|
||||
border-radius: 0 var(--input-radius) var(--input-radius) 0;
|
||||
}
|
||||
.ac-settings-heading {
|
||||
border-bottom: 1px solid var(--color-accent);
|
||||
}
|
||||
.ac-settings-heading:not(:first-child) {
|
||||
margin-top: var(--size-4-10) !important;
|
||||
}
|
||||
.ac-settings-heading:has(.checkbox-container:not(.is-enabled)) {
|
||||
border-bottom-color: var(--background-modifier-border-hover);
|
||||
}
|
||||
.ac-settings-heading .setting-item-description {
|
||||
margin-inline-end: 20px;
|
||||
}
|
||||
.settings-header-children {
|
||||
transform-origin: top center;
|
||||
transform: scaleY(1);
|
||||
transition: transform 0.2s ease-in-out;
|
||||
}
|
||||
.settings-header-children details {
|
||||
flex-direction: column;
|
||||
align-items: initial;
|
||||
}
|
||||
.ac-settings-heading:has(.checkbox-container:not(.is-enabled)) + .settings-header-children {
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
height: 0;
|
||||
transform: scaleY(0);
|
||||
}
|
||||
details.setting-item[open] > summary {
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
details.setting-item > *:not(summary) {
|
||||
padding-left: 1em;
|
||||
border-left: 1px solid var(--color-accent);
|
||||
}
|
||||
.kofi-banner {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: var(--size-4-3);
|
||||
background-color: var(--background-secondary);
|
||||
border: 1px solid var(--divider-color);
|
||||
border-radius: var(--radius-s);
|
||||
}
|
||||
.kofi-banner h1 {
|
||||
margin: 0;
|
||||
margin-bottom: 10px;
|
||||
font-size: var(--font-ui-large);
|
||||
font-weight: 600;
|
||||
}
|
||||
.kofi-banner .progress-container {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-items: center;
|
||||
}
|
||||
.kofi-banner .progress-container progress {
|
||||
background: transparent;
|
||||
}
|
||||
.kofi-banner .progress-container progress::-webkit-progress-bar {
|
||||
background-color: var(--background-modifier-border);
|
||||
border-radius: var(--input-radius);
|
||||
}
|
||||
.kofi-banner .progress-container progress::-webkit-progress-value {
|
||||
background-color: var(--color-accent);
|
||||
border-radius: var(--input-radius);
|
||||
}
|
||||
.kofi-banner .progress-container .hourly-rate {
|
||||
margin-left: 10px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.kofi-banner .ac-kofi-button {
|
||||
align-self: flex-end;
|
||||
width: min-content;
|
||||
height: min-content;
|
||||
line-height: 0;
|
||||
}
|
||||
.kofi-banner .ac-kofi-button img {
|
||||
min-width: 100px;
|
||||
width: 25%;
|
||||
max-width: 200px;
|
||||
}
|
||||
.canvas-wrapper > .document-search-container {
|
||||
transform: translateZ(0);
|
||||
margin: 0;
|
||||
}
|
||||
.canvas-wrapper:not(.mod-readonly) .show-while-readonly {
|
||||
display: none;
|
||||
}
|
||||
.canvas-control-item[data-toggled=true] {
|
||||
background-color: var(--color-accent);
|
||||
}
|
||||
.canvas-control-item[data-toggled=true] svg {
|
||||
stroke: var(--text-on-accent);
|
||||
}
|
||||
.reactive-node,
|
||||
.canvas-node[data-shape=database],
|
||||
.canvas-node[data-shape=document],
|
||||
.canvas-node[data-shape=predefined-process],
|
||||
.canvas-node[data-shape=diamond] {
|
||||
--border-color: rgb(var(--canvas-color));
|
||||
--border-width: 3px;
|
||||
--box-shadow: none;
|
||||
}
|
||||
.reactive-node.is-focused,
|
||||
.is-focused.canvas-node[data-shape=database],
|
||||
.is-focused.canvas-node[data-shape=document],
|
||||
.is-focused.canvas-node[data-shape=predefined-process],
|
||||
.is-focused.canvas-node[data-shape=diamond],
|
||||
.reactive-node.is-selected,
|
||||
.is-selected.canvas-node[data-shape=database],
|
||||
.is-selected.canvas-node[data-shape=document],
|
||||
.is-selected.canvas-node[data-shape=predefined-process],
|
||||
.is-selected.canvas-node[data-shape=diamond] {
|
||||
--border-color: var(--color-accent);
|
||||
--border-width: 5px;
|
||||
--box-shadow: var(--shadow-border-accent);
|
||||
}
|
||||
.reactive-node.is-themed,
|
||||
.is-themed.canvas-node[data-shape=database],
|
||||
.is-themed.canvas-node[data-shape=document],
|
||||
.is-themed.canvas-node[data-shape=predefined-process],
|
||||
.is-themed.canvas-node[data-shape=diamond] {
|
||||
--border-color: rgba(var(--canvas-color), 0.7);
|
||||
}
|
||||
.reactive-node.is-themed.is-focused,
|
||||
.is-themed.is-focused.canvas-node[data-shape=database],
|
||||
.is-themed.is-focused.canvas-node[data-shape=document],
|
||||
.is-themed.is-focused.canvas-node[data-shape=predefined-process],
|
||||
.is-themed.is-focused.canvas-node[data-shape=diamond],
|
||||
.reactive-node.is-themed.is-selected,
|
||||
.is-themed.is-selected.canvas-node[data-shape=database],
|
||||
.is-themed.is-selected.canvas-node[data-shape=document],
|
||||
.is-themed.is-selected.canvas-node[data-shape=predefined-process],
|
||||
.is-themed.is-selected.canvas-node[data-shape=diamond] {
|
||||
--border-color: rgb(var(--canvas-color));
|
||||
--box-shadow: var(--shadow-border-themed);
|
||||
}
|
||||
.canvas-node[data-text-align=center] .markdown-preview-view {
|
||||
scrollbar-gutter: auto;
|
||||
}
|
||||
.canvas-node[data-text-align=center] .markdown-preview-view .markdown-preview-section {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
min-height: 0 !important;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.canvas-node[data-text-align=right] {
|
||||
text-align: right;
|
||||
}
|
||||
.canvas-node[data-shape] .canvas-node-container .markdown-preview-view.markdown-rendered {
|
||||
transform: unset;
|
||||
}
|
||||
.canvas-node[data-shape=pill] .canvas-node-container {
|
||||
border-radius: 5000px;
|
||||
}
|
||||
.canvas-node[data-shape=diamond] {
|
||||
}
|
||||
.canvas-node[data-shape=diamond].is-focused,
|
||||
.canvas-node[data-shape=diamond].is-selected {
|
||||
border-radius: var(--radius-m);
|
||||
outline: 2px solid var(--color-accent);
|
||||
outline-offset: 5px;
|
||||
}
|
||||
.canvas-node[data-shape=diamond] .canvas-node-container {
|
||||
border: none;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
.canvas-node[data-shape=diamond] .canvas-node-container:not(:has(.embed-iframe)) {
|
||||
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
|
||||
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
|
||||
mask-repeat: no-repeat;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
mask-size: 100%;
|
||||
-webkit-mask-size: 100%;
|
||||
}
|
||||
.canvas-node[data-shape=diamond] .canvas-node-container .canvas-node-placeholder::after {
|
||||
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
|
||||
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
|
||||
mask-repeat: no-repeat;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
mask-size: 100%;
|
||||
-webkit-mask-size: 100%;
|
||||
}
|
||||
.canvas-node[data-shape=diamond]::before {
|
||||
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
|
||||
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
|
||||
mask-repeat: no-repeat;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
mask-size: 100%;
|
||||
-webkit-mask-size: 100%;
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: calc(var(--border-width) * -1);
|
||||
left: calc(var(--border-width) * -1);
|
||||
width: calc(100% + var(--border-width) * 2);
|
||||
height: calc(100% + var(--border-width) * 2);
|
||||
background-color: var(--border-color);
|
||||
}
|
||||
.canvas-node[data-shape=parallelogram] .canvas-node-container {
|
||||
transform: skewX(-20deg);
|
||||
backface-visibility: hidden;
|
||||
}
|
||||
.canvas-node[data-shape=parallelogram] .canvas-node-container .canvas-node-content .markdown-embed-content {
|
||||
transform: skewX(20deg);
|
||||
}
|
||||
.canvas-node[data-shape=circle] .canvas-node-container {
|
||||
border-radius: 50%;
|
||||
}
|
||||
.canvas-node[data-shape=circle] .canvas-node-container .markdown-preview-view {
|
||||
overflow-y: initial;
|
||||
}
|
||||
.canvas-node[data-shape=predefined-process] .canvas-node-container .canvas-node-content {
|
||||
padding: 0 10px;
|
||||
}
|
||||
.canvas-node[data-shape=predefined-process] .canvas-node-container::before,
|
||||
.canvas-node[data-shape=predefined-process] .canvas-node-container::after {
|
||||
content: "";
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 0;
|
||||
height: 100%;
|
||||
border-left: var(--border-width) solid var(--border-color);
|
||||
}
|
||||
.canvas-node[data-shape=predefined-process] .canvas-node-container::before {
|
||||
left: calc(10px - var(--border-width));
|
||||
}
|
||||
.canvas-node[data-shape=predefined-process] .canvas-node-container::after {
|
||||
right: calc(10px - var(--border-width));
|
||||
}
|
||||
.canvas-node[data-shape=document] {
|
||||
--border-width: 2.5px;
|
||||
filter: drop-shadow(0 var(--border-width) 0 var(--border-color)) drop-shadow(0 calc(var(--border-width) * -1) 0 var(--border-color));
|
||||
}
|
||||
.canvas-node[data-shape=document] .canvas-node-container {
|
||||
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 75 45' preserveAspectRatio='none'%3E%3Cpath d='M75 0 75 39.375Q56.25 29.25 37.5 39.375 18.75 49.5 0 39.375L0 0Z' /%3E%3C/svg%3E");
|
||||
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 75 45' preserveAspectRatio='none'%3E%3Cpath d='M75 0 75 39.375Q56.25 29.25 37.5 39.375 18.75 49.5 0 39.375L0 0Z' /%3E%3C/svg%3E");
|
||||
mask-repeat: no-repeat;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
mask-size: 100%;
|
||||
-webkit-mask-size: 100%;
|
||||
border: var(--border-width) solid var(--border-color);
|
||||
border-top: none;
|
||||
border-bottom: none;
|
||||
}
|
||||
.canvas-node[data-shape=document].is-focused,
|
||||
.canvas-node[data-shape=document].is-selected {
|
||||
--border-width: 4px;
|
||||
}
|
||||
.canvas-node[data-shape=database] {
|
||||
}
|
||||
.canvas-node[data-shape=database] .canvas-node-container {
|
||||
border: var(--border-width) solid var(--border-color);
|
||||
border-bottom: 0;
|
||||
border-top: 0;
|
||||
border-radius: 0;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
.canvas-node[data-shape=database] .canvas-node-container .canvas-node-placeholder {
|
||||
transform: translateY(25px);
|
||||
}
|
||||
.canvas-node[data-shape=database]::before,
|
||||
.canvas-node[data-shape=database]::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
border-radius: 50%;
|
||||
border: var(--border-width) solid var(--border-color);
|
||||
background-color: var(--background-primary);
|
||||
}
|
||||
.canvas-node[data-shape=database]::after {
|
||||
top: -25px;
|
||||
}
|
||||
.canvas-node[data-shape=database]::before {
|
||||
bottom: -25px;
|
||||
}
|
||||
.canvas-node[data-shape=database].is-themed .canvas-node-content {
|
||||
background-color: transparent;
|
||||
}
|
||||
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe)) .canvas-node-container,
|
||||
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe))::after,
|
||||
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe))::before {
|
||||
box-shadow: inset 0 0 0 1000px rgba(var(--canvas-color), 0.07) !important;
|
||||
}
|
||||
.canvas-node[data-shape=database] .canvas-node-content:not(:has(.embed-iframe)) {
|
||||
transform: translateY(20px);
|
||||
}
|
||||
.canvas-node[data-shape=database]:has(.embed-iframe)::after {
|
||||
z-index: -1;
|
||||
}
|
||||
.canvas-node[data-border=dashed] .canvas-node-container {
|
||||
box-shadow: none;
|
||||
border-style: dashed;
|
||||
}
|
||||
.canvas-node[data-border=dotted] .canvas-node-container {
|
||||
box-shadow: none;
|
||||
border-style: dotted;
|
||||
}
|
||||
.canvas-node[data-border=invisible] {
|
||||
box-shadow: none;
|
||||
}
|
||||
.canvas-node[data-border=invisible]:not(.is-focused):not(.is-selected) .canvas-node-container {
|
||||
border-color: transparent !important;
|
||||
}
|
||||
.canvas-node[data-border=invisible] .canvas-node-label {
|
||||
display: none;
|
||||
}
|
||||
.canvas-node[data-border=invisible] .canvas-node-container {
|
||||
background-color: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
.canvas-node[data-border][data-shape=predefined-process] {
|
||||
--border-width: 2px;
|
||||
}
|
||||
.canvas-node[data-border][data-shape=predefined-process] .is-focused,
|
||||
.canvas-node[data-border][data-shape=predefined-process] .is-selected {
|
||||
--border-width: 2px;
|
||||
}
|
||||
.canvas-node[data-border=dashed][data-shape=predefined-process] .canvas-node-container::before,
|
||||
.canvas-node[data-border=dashed][data-shape=predefined-process] .canvas-node-container::after {
|
||||
border-left: var(--border-width) dashed var(--border-color);
|
||||
}
|
||||
.canvas-node[data-border=dotted][data-shape=predefined-process] .canvas-node-container::before,
|
||||
.canvas-node[data-border=dotted][data-shape=predefined-process] .canvas-node-container::after {
|
||||
border-left: var(--border-width) dotted var(--border-color);
|
||||
}
|
||||
.canvas-node[data-border][data-shape=document] .canvas-node-container {
|
||||
border-top: none;
|
||||
border-bottom: none;
|
||||
}
|
||||
.canvas-edges path[data-path=dotted] {
|
||||
stroke-dasharray: calc(3px * var(--zoom-multiplier));
|
||||
}
|
||||
.canvas-edges path[data-path=short-dashed] {
|
||||
stroke-dasharray: 9px;
|
||||
}
|
||||
.canvas-edges path[data-path=long-dashed] {
|
||||
stroke-dasharray: 18px;
|
||||
}
|
||||
.canvas-edges [data-arrow=triangle-outline] polygon,
|
||||
.canvas-edges [data-arrow=diamond-outline] polygon,
|
||||
.canvas-edges [data-arrow=circle-outline] polygon {
|
||||
fill: var(--canvas-background);
|
||||
stroke: rgb(var(--canvas-color));
|
||||
stroke-width: calc(3px * var(--zoom-multiplier));
|
||||
}
|
||||
.canvas-edges [data-arrow=thin-triangle] polygon {
|
||||
fill: transparent;
|
||||
stroke: rgb(var(--canvas-color));
|
||||
stroke-width: calc(4px * var(--zoom-multiplier));
|
||||
}
|
||||
.canvas.is-exporting {
|
||||
--zoom-multiplier: 1;
|
||||
}
|
||||
.canvas.is-exporting * {
|
||||
pointer-events: none !important;
|
||||
transition: none !important;
|
||||
}
|
||||
.canvas.is-exporting .collapse-button {
|
||||
display: none;
|
||||
}
|
||||
.canvas.is-exporting #watermark-ac {
|
||||
z-index: 9999999;
|
||||
position: absolute;
|
||||
}
|
||||
.canvas-wrapper[data-collapsible-groups-feature-enabled=true] .canvas.is-exporting .canvas-node .canvas-group-label {
|
||||
left: 0;
|
||||
}
|
||||
.progress-bar-modal-ac {
|
||||
margin-top: 0.75em;
|
||||
}
|
||||
.progress-bar-modal-ac.error .setting-progress-bar {
|
||||
color: var(--color-error);
|
||||
}
|
||||
.canvas-wrapper[data-disable-font-size-relative-to-zoom=true] {
|
||||
--zoom-multiplier: 1 !important;
|
||||
}
|
||||
.canvas-wrapper.mod-readonly[data-hide-background-grid-when-in-readonly=true] .canvas-background {
|
||||
visibility: hidden;
|
||||
}
|
||||
.collapse-button {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: calc(-1 * var(--size-4-1) * var(--zoom-multiplier));
|
||||
padding: var(--size-4-1) var(--size-4-2);
|
||||
transform-origin: bottom left;
|
||||
transform: translate(0, -100%) scale(var(--zoom-multiplier));
|
||||
border-radius: var(--radius-s);
|
||||
color: var(--text-muted);
|
||||
background-color: rgba(var(--canvas-color), 0.1);
|
||||
font-size: 1.5em;
|
||||
line-height: 1;
|
||||
pointer-events: initial;
|
||||
cursor: pointer;
|
||||
transition: transform 500ms cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
.canvas-wrapper[data-collapsible-groups-feature-enabled=true] .canvas-node .canvas-group-label {
|
||||
left: calc(40px * var(--zoom-multiplier));
|
||||
}
|
||||
.canvas-node[data-collapsed] .canvas-node-container {
|
||||
display: none;
|
||||
}
|
||||
.canvas-node[data-collapsed] .canvas-group-label {
|
||||
max-width: initial;
|
||||
}
|
||||
.canvas-wrapper[data-collapsed-group-preview-on-drag=true][data-is-dragging] .canvas-node[data-collapsed] .canvas-node-container {
|
||||
display: block;
|
||||
opacity: 0.5;
|
||||
border-style: dashed;
|
||||
}
|
||||
.canvas-wrapper[data-collapsed-group-preview-on-drag=true][data-is-dragging] .canvas-node[data-collapsed] .canvas-node-container .canvas-node-content {
|
||||
background-color: transparent;
|
||||
}
|
||||
.canvas-node-interaction-layer[data-target-collapsed] .canvas-node-resizer {
|
||||
pointer-events: none;
|
||||
cursor: inherit;
|
||||
}
|
||||
.canvas-node-interaction-layer[data-target-collapsed] .canvas-node-resizer .canvas-node-connection-point {
|
||||
display: none;
|
||||
pointer-events: none;
|
||||
}
|
||||
.canvas-wrapper[data-allow-floating-edge-creation=true] .canvas.is-connecting .canvas-node:not(.canvas-node-group)::after {
|
||||
all: unset;
|
||||
content: "";
|
||||
z-index: 100;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: max(10px, 100% - 50px * var(--zoom-multiplier) * 2);
|
||||
height: max(10px, 100% - 50px * var(--zoom-multiplier) * 2);
|
||||
transform: translate(-50%, -50%);
|
||||
border-radius: var(--radius-m);
|
||||
outline: calc(4px * var(--zoom-multiplier)) dashed hsla(var(--color-accent-hsl), 0.5);
|
||||
}
|
||||
.canvas-wrapper[data-allow-floating-edge-creation=true] .canvas.is-connecting .canvas-node:not(.canvas-node-group).hovering-floating-edge-zone::after {
|
||||
outline-color: var(--color-accent);
|
||||
outline-style: solid;
|
||||
background-color: hsla(var(--color-accent-hsl), 0.1);
|
||||
}
|
||||
.canvas-wrapper[data-focus-mode-enabled=true] .canvas:has(.canvas-node.is-focused) .canvas-node:not(.is-focused) {
|
||||
filter: blur(5px);
|
||||
}
|
||||
.canvas-wrapper[data-focus-mode-enabled=true] .canvas:has(.canvas-node.is-focused) .canvas-edges {
|
||||
filter: blur(5px);
|
||||
}
|
||||
.canvas-wrapper[data-focus-mode-enabled=true] .canvas:has(.canvas-node.is-focused) .canvas-path-label-wrapper {
|
||||
filter: blur(5px);
|
||||
}
|
||||
.canvas-wrapper.presentation-mode .canvas-controls {
|
||||
visibility: hidden;
|
||||
}
|
||||
.canvas-wrapper.presentation-mode .canvas-card-menu {
|
||||
visibility: hidden;
|
||||
}
|
||||
.canvas-wrapper:not(.presentation-mode) .canvas-node[data-is-start-node=true]::before {
|
||||
content: "Start";
|
||||
position: absolute;
|
||||
top: calc(-1 * var(--size-4-1) * var(--zoom-multiplier));
|
||||
right: 0;
|
||||
transform: translate(0, -100%) scale(var(--zoom-multiplier));
|
||||
transform-origin: bottom right;
|
||||
max-width: calc(100% / var(--zoom-multiplier));
|
||||
padding: var(--size-4-1) var(--size-4-2);
|
||||
font-size: 1em;
|
||||
border-radius: var(--radius-s);
|
||||
color: var(--color-green);
|
||||
background-color: rgba(var(--color-green-rgb), 0.1);
|
||||
}
|
||||
.canvas-node[data-is-portal-loaded=true] {
|
||||
pointer-events: all;
|
||||
}
|
||||
.canvas-node[data-is-portal-loaded=true]:not(.is-focused) {
|
||||
pointer-events: none;
|
||||
}
|
||||
.canvas-node[data-is-portal-loaded=true]:not(.is-focused) .canvas-node-label {
|
||||
pointer-events: all;
|
||||
}
|
||||
.canvas-node[data-is-portal-loaded=true] .canvas-node-container {
|
||||
background-color: transparent;
|
||||
border-style: dashed;
|
||||
}
|
||||
.canvas-node[data-is-portal-loaded=true] .canvas-node-container .canvas-node-content {
|
||||
display: none;
|
||||
}
|
||||
.canvas-node-interaction-layer[data-is-from-portal=true] .canvas-node-resizer {
|
||||
pointer-events: none;
|
||||
cursor: inherit;
|
||||
}
|
||||
.canvas-node-interaction-layer[data-is-from-portal=true] .canvas-node-resizer .canvas-node-connection-point {
|
||||
pointer-events: all;
|
||||
}
|
||||
Vendored
+27
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"renderNullAs": "\\-",
|
||||
"taskCompletionTracking": false,
|
||||
"taskCompletionUseEmojiShorthand": false,
|
||||
"taskCompletionText": "completion",
|
||||
"taskCompletionDateFormat": "yyyy-MM-dd",
|
||||
"recursiveSubTaskCompletion": false,
|
||||
"warnOnEmptyResult": true,
|
||||
"refreshEnabled": true,
|
||||
"refreshInterval": 100,
|
||||
"defaultDateFormat": "yyyy-MM-dd",
|
||||
"defaultDateTimeFormat": "yyyy-MM-dd HH:mm:ss",
|
||||
"maxRecursiveRenderDepth": 4,
|
||||
"tableIdColumnName": "File",
|
||||
"tableGroupColumnName": "Group",
|
||||
"showResultCount": true,
|
||||
"allowHtml": true,
|
||||
"inlineQueryPrefix": "=",
|
||||
"inlineJsQueryPrefix": "$=",
|
||||
"inlineQueriesInCodeblocks": true,
|
||||
"enableInlineDataview": true,
|
||||
"enableDataviewJs": true,
|
||||
"enableInlineDataviewJs": true,
|
||||
"prettyRenderInlineFields": true,
|
||||
"prettyRenderInlineFieldsInLivePreview": true,
|
||||
"dataviewJsKeyword": "dataviewjs"
|
||||
}
|
||||
Vendored
+20876
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"id":"dataview","name":"Dataview","version":"0.5.68","minAppVersion":"0.13.11","description":"Complex data views for the data-obsessed.","author":"Michael Brenan <blacksmithgu@gmail.com>","authorUrl":"https://github.com/blacksmithgu","helpUrl":"https://blacksmithgu.github.io/obsidian-dataview/","isDesktopOnly":false}
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
.block-language-dataview {
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
/*****************/
|
||||
/** Table Views **/
|
||||
/*****************/
|
||||
|
||||
/* List View Default Styling; rendered internally as a table. */
|
||||
.table-view-table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.table-view-table > thead > tr, .table-view-table > tbody > tr {
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.table-view-table > tbody > tr:hover {
|
||||
background-color: var(--table-row-background-hover);
|
||||
}
|
||||
|
||||
.table-view-table > thead > tr > th {
|
||||
font-weight: 700;
|
||||
font-size: larger;
|
||||
border-top: none;
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
border-bottom: solid;
|
||||
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.table-view-table > tbody > tr > td {
|
||||
text-align: left;
|
||||
border: none;
|
||||
font-weight: 400;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.table-view-table ul, .table-view-table ol {
|
||||
margin-block-start: 0.2em !important;
|
||||
margin-block-end: 0.2em !important;
|
||||
}
|
||||
|
||||
/** Rendered value styling for any view. */
|
||||
.dataview-result-list-root-ul {
|
||||
padding: 0em !important;
|
||||
margin: 0em !important;
|
||||
}
|
||||
|
||||
.dataview-result-list-ul {
|
||||
margin-block-start: 0.2em !important;
|
||||
margin-block-end: 0.2em !important;
|
||||
}
|
||||
|
||||
/** Generic grouping styling. */
|
||||
.dataview.result-group {
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
/*******************/
|
||||
/** Inline Fields **/
|
||||
/*******************/
|
||||
|
||||
.dataview.inline-field-key {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
font-family: var(--font-monospace);
|
||||
background-color: var(--background-primary-alt);
|
||||
color: var(--nav-item-color-selected);
|
||||
}
|
||||
|
||||
.dataview.inline-field-value {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
font-family: var(--font-monospace);
|
||||
background-color: var(--background-secondary-alt);
|
||||
color: var(--nav-item-color-selected);
|
||||
}
|
||||
|
||||
.dataview.inline-field-standalone-value {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
font-family: var(--font-monospace);
|
||||
background-color: var(--background-secondary-alt);
|
||||
color: var(--nav-item-color-selected);
|
||||
}
|
||||
|
||||
/***************/
|
||||
/** Task View **/
|
||||
/***************/
|
||||
|
||||
.dataview.task-list-item, .dataview.task-list-basic-item {
|
||||
margin-top: 3px;
|
||||
margin-bottom: 3px;
|
||||
transition: 0.4s;
|
||||
}
|
||||
|
||||
.dataview.task-list-item:hover, .dataview.task-list-basic-item:hover {
|
||||
background-color: var(--text-selection);
|
||||
box-shadow: -40px 0 0 var(--text-selection);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/*****************/
|
||||
/** Error Views **/
|
||||
/*****************/
|
||||
|
||||
div.dataview-error-box {
|
||||
width: 100%;
|
||||
min-height: 150px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 4px dashed var(--background-secondary);
|
||||
}
|
||||
|
||||
.dataview-error-message {
|
||||
color: var(--text-muted);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/*************************/
|
||||
/** Additional Metadata **/
|
||||
/*************************/
|
||||
|
||||
.dataview.small-text {
|
||||
font-size: smaller;
|
||||
color: var(--text-muted);
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.dataview.small-text::before {
|
||||
content: "(";
|
||||
}
|
||||
|
||||
.dataview.small-text::after {
|
||||
content: ")";
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"isBT": false,
|
||||
"isShowNum": false,
|
||||
"linkWords": "",
|
||||
"maxScroll": 50,
|
||||
"version": "0.6.6",
|
||||
"hColor": "",
|
||||
"bColor": "",
|
||||
"hColor1": "#F36208",
|
||||
"hColor2": "#81B300",
|
||||
"hColor3": "#2485E3",
|
||||
"hColor4": "#C32E94",
|
||||
"hColor5": "#13C6C3",
|
||||
"bColor1": "#FFB78B",
|
||||
"bColor2": "#CDF469",
|
||||
"bColor3": "#A0CCF6",
|
||||
"bColor4": "#F0A7D8",
|
||||
"bColor5": "#ADEFEF"
|
||||
}
|
||||
+5005
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"id":"Enhanced-editing",
|
||||
"name":"增强编辑",
|
||||
"version":"0.6.6",
|
||||
"minAppVersion":"0.14.0",
|
||||
"description":"增强大量文本编辑功能,如(允许批量)转换内部链接、转换Markdown或Html语法(支持格式刷)、智能化补充括号、智能化粘贴表格或代码、(批量)增减空行或空格、修复错误语法或标点等。",
|
||||
"author":"obsidian-canzi",
|
||||
"authorUrl":"https://github.com/obsidian-canzi/Enhanced-editing",
|
||||
"isDesktopOnly":false
|
||||
}
|
||||
Vendored
+34
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"tileSets": [
|
||||
{
|
||||
"id": "tencent-vector",
|
||||
"name": "腾讯矢量",
|
||||
"lightTiles": "http://127.0.0.1:18090/tile?z={z}&x={x}&y={y}&type=vector",
|
||||
"darkTiles": "http://127.0.0.1:18090/tile?z={z}&x={x}&y={y}&type=vector"
|
||||
},
|
||||
{
|
||||
"id": "gaode-satellite",
|
||||
"name": "高德卫星影像",
|
||||
"lightTiles": "http://127.0.0.1:18090/tile?z={z}&x={x}&y={y}&type=sate",
|
||||
"darkTiles": "http://127.0.0.1:18090/tile?z={z}&x={x}&y={y}&type=sate"
|
||||
},
|
||||
{
|
||||
"id": "esri-imagery",
|
||||
"name": "ESRI World Imagery",
|
||||
"lightTiles": "http://127.0.0.1:18090/tile?z={z}&x={x}&y={y}&type=esri",
|
||||
"darkTiles": "http://127.0.0.1:18090/tile?z={z}&x={x}&y={y}&type=esri"
|
||||
},
|
||||
{
|
||||
"id": "tencent-traffic",
|
||||
"name": "腾讯路况",
|
||||
"lightTiles": "http://127.0.0.1:18090/tile?z={z}&x={x}&y={y}&type=traffic",
|
||||
"darkTiles": "http://127.0.0.1:18090/tile?z={z}&x={x}&y={y}&type=traffic"
|
||||
},
|
||||
{
|
||||
"id": "openfreemap-bright",
|
||||
"name": "OpenFreeMap 亮色",
|
||||
"lightTiles": "https://tiles.openfreemap.org/styles/bright",
|
||||
"darkTiles": "https://tiles.openfreemap.org/styles/dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
Vendored
+761
File diff suppressed because one or more lines are too long
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"id":"maps","name":"Maps","version":"0.1.6","minAppVersion":"1.10.0","description":"Adds a map layout to bases so you can display notes as an interactive map view.","author":"Obsidian","authorUrl":"https://obsidian.md","fundingUrl":"https://obsidian.md/pricing","isDesktopOnly":false}
|
||||
Vendored
+477
@@ -0,0 +1,477 @@
|
||||
body {
|
||||
--bases-map-embed-height: 400px;
|
||||
--bases-map-marker-background: var(--interactive-accent);
|
||||
--bases-map-marker-icon-color: white;
|
||||
--bases-map-blend-mode: normal;
|
||||
}
|
||||
|
||||
/* Settings styles */
|
||||
.map-tileset-list {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.mobile-option-setting-item-description {
|
||||
font-size: var(--font-smaller);
|
||||
color: var(--text-muted);
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
margin-top: 0.25em;
|
||||
}
|
||||
|
||||
.bases-view[data-view-type="map"] {
|
||||
--bases-embed-border-width: 0px;
|
||||
--bases-view-padding: 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="bases"] {
|
||||
.bases-map {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.bases-map-container {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.bases-map {
|
||||
width: 100%;
|
||||
background-color: var(--background-primary);
|
||||
height: var(--bases-map-embed-height);
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
-webkit-tap-highlight-color: rgb(0, 0, 0, 0);
|
||||
|
||||
canvas {
|
||||
mix-blend-mode: var(--bases-map-blend-mode);
|
||||
}
|
||||
|
||||
&.is-loading {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
&::before {
|
||||
color: var(--text-muted);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bases-map-popup {
|
||||
min-width: 200px;
|
||||
max-width: 300px;
|
||||
|
||||
.bases-map-popup-title {
|
||||
--link-weight: calc(var(--font-weight) + var(--bold-modifier));
|
||||
font-size: var(--font-ui-medium);
|
||||
padding: var(--size-4-2);
|
||||
|
||||
a {
|
||||
color: var(--text-normal);
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
color: var(--text-accent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bases-map-popup-properties {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--size-4-2);
|
||||
}
|
||||
}
|
||||
|
||||
.bases-map-popup-property {
|
||||
font-size: var(--font-ui-small);
|
||||
&:last-child {
|
||||
padding-bottom: var(--size-4-2);
|
||||
}
|
||||
}
|
||||
|
||||
.bases-map-popup-property-label {
|
||||
font-size: var(--font-ui-smaller);
|
||||
color: var(--text-muted);
|
||||
padding: 0 var(--size-4-2);
|
||||
}
|
||||
|
||||
.bases-map-popup-property-value {
|
||||
color: var(--text-normal);
|
||||
word-break: break-word;
|
||||
padding: 0 var(--size-4-2);
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-attrib {
|
||||
background-color: rgba(var(--mono-rgb-0), 0.8);
|
||||
color: var(--text-muted);
|
||||
font-size: var(--font-ui-smaller);
|
||||
padding: 1px 8px;
|
||||
|
||||
a {
|
||||
color: var(--text-muted);
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
color: var(--text-muted);
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
.maplibregl-popup-content {
|
||||
background-color: var(--background-primary);
|
||||
color: var(--text-normal);
|
||||
border-radius: var(--radius-m);
|
||||
box-shadow: var(--shadow-s);
|
||||
border: var(--modal-border-width) solid var(--modal-border-color);
|
||||
}
|
||||
|
||||
.maplibregl-canvas {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-group button.maplibregl-ctrl-compass {
|
||||
touch-action: none;
|
||||
}
|
||||
|
||||
.maplibregl-canvas-container.maplibregl-interactive,
|
||||
.maplibregl-ctrl-group button.maplibregl-ctrl-compass {
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,
|
||||
.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas {
|
||||
touch-action: pan-x pan-y;
|
||||
}
|
||||
|
||||
.maplibregl-canvas-container.maplibregl-touch-drag-pan,
|
||||
.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas {
|
||||
touch-action: pinch-zoom;
|
||||
}
|
||||
|
||||
.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,
|
||||
.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas {
|
||||
touch-action: none;
|
||||
}
|
||||
|
||||
.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures,
|
||||
.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures .maplibregl-canvas {
|
||||
touch-action: pan-x pan-y;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-top-left,
|
||||
.maplibregl-ctrl-top-right,
|
||||
.maplibregl-ctrl-bottom-left,
|
||||
.maplibregl-ctrl-bottom-right {
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
gap: var(--size-4-1);
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-top-left {
|
||||
top: var(--size-4-2);
|
||||
left: var(--size-4-2);
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-top-right {
|
||||
top: var(--size-4-2);
|
||||
right: var(--size-4-2);
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-bottom-left {
|
||||
bottom: var(--size-4-2);
|
||||
left: var(--size-4-2);
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-bottom-right {
|
||||
right: var(--size-4-2);
|
||||
bottom: var(--size-4-2);
|
||||
}
|
||||
|
||||
.maplibregl-ctrl {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl button .maplibregl-ctrl-icon {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl button:disabled {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon {
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-group button:focus:only-child {
|
||||
border-radius: inherit;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon {
|
||||
animation: maplibregl-spin 2s infinite linear;
|
||||
}
|
||||
|
||||
@keyframes maplibregl-spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
a.maplibregl-ctrl-logo {
|
||||
width: 88px;
|
||||
height: 23px;
|
||||
margin: 0 0 -4px -4px;
|
||||
display: block;
|
||||
background-repeat: no-repeat;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
background-image: svg-load("svg/maplibregl-ctrl-logo.svg");
|
||||
}
|
||||
|
||||
a.maplibregl-ctrl-logo.maplibregl-compact {
|
||||
width: 14px;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl.maplibregl-ctrl-attrib {
|
||||
padding: 0 5px;
|
||||
background-color: var(--background-primary);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
@media screen {
|
||||
.maplibregl-ctrl-attrib.maplibregl-compact {
|
||||
min-height: 20px;
|
||||
padding: 2px 24px 2px 0;
|
||||
margin: 10px;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background-color: rgba(var(--mono-rgb-0), 0.2);
|
||||
color: var(--text-faint);
|
||||
border-radius: 12px;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-attrib.maplibregl-compact-show {
|
||||
padding: 2px 28px 2px 8px;
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-top-left > .maplibregl-ctrl-attrib.maplibregl-compact-show,
|
||||
.maplibregl-ctrl-bottom-left > .maplibregl-ctrl-attrib.maplibregl-compact-show {
|
||||
padding: 2px 8px 2px 28px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-attrib-button {
|
||||
display: none;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
background-image: svg-load("svg/maplibregl-ctrl-attrib.svg");
|
||||
background-color: rgb(255, 255, 255, 0.5);
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 12px;
|
||||
outline: none;
|
||||
top: 0;
|
||||
right: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button {
|
||||
appearance: none;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button::-webkit-details-marker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button,
|
||||
.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,
|
||||
.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button {
|
||||
background-color: rgb(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-bottom-right > .maplibregl-ctrl-attrib.maplibregl-compact::after {
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-top-right > .maplibregl-ctrl-attrib.maplibregl-compact::after {
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-top-left > .maplibregl-ctrl-attrib.maplibregl-compact::after {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-bottom-left > .maplibregl-ctrl-attrib.maplibregl-compact::after {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (forced-colors: active) {
|
||||
.maplibregl-ctrl-attrib.maplibregl-compact::after {
|
||||
background-image: svg-load("svg/maplibregl-ctrl-attrib.svg", fill=#fff);
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (forced-colors: active) and (prefers-color-scheme: light) {
|
||||
.maplibregl-ctrl-attrib.maplibregl-compact::after {
|
||||
background-image: svg-load("svg/maplibregl-ctrl-attrib.svg");
|
||||
}
|
||||
}
|
||||
|
||||
.maplibregl-attrib-empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.maplibregl-ctrl-scale {
|
||||
background-color: rgb(255, 255, 255, 0.75);
|
||||
border-width: medium 2px 2px;
|
||||
border-style: none solid solid;
|
||||
border-color: #333;
|
||||
padding: 0 5px;
|
||||
color: #333;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.maplibregl-popup {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
will-change: transform;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.maplibregl-popup-anchor-top,
|
||||
.maplibregl-popup-anchor-top-left,
|
||||
.maplibregl-popup-anchor-top-right {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.maplibregl-popup-anchor-bottom,
|
||||
.maplibregl-popup-anchor-bottom-left,
|
||||
.maplibregl-popup-anchor-bottom-right {
|
||||
flex-direction: column-reverse;
|
||||
}
|
||||
|
||||
.maplibregl-popup-anchor-left {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.maplibregl-popup-anchor-right {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
.maplibregl-popup-close-button {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
border: 0;
|
||||
border-radius: 0 3px 0 0;
|
||||
cursor: pointer;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.maplibregl-popup-close-button:hover {
|
||||
background-color: rgb(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.maplibregl-popup-content {
|
||||
position: relative;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.maplibregl-popup-anchor-top-left .maplibregl-popup-content {
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
|
||||
.maplibregl-popup-anchor-top-right .maplibregl-popup-content {
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
|
||||
.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content {
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content {
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
.maplibregl-popup-track-pointer {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.maplibregl-popup-track-pointer * {
|
||||
pointer-events: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.maplibregl-map:hover .maplibregl-popup-track-pointer {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.maplibregl-map:active .maplibregl-popup-track-pointer {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.maplibregl-marker {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
will-change: transform;
|
||||
transition: opacity 0.2s;
|
||||
}
|
||||
|
||||
.maplibregl-crosshair,
|
||||
.maplibregl-crosshair .maplibregl-interactive,
|
||||
.maplibregl-crosshair .maplibregl-interactive:active {
|
||||
cursor: crosshair;
|
||||
}
|
||||
|
||||
.maplibregl-boxzoom {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
background: var(--background-primary);
|
||||
border: 2px dotted #202020;
|
||||
opacity: 0.5;
|
||||
}
|
||||
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"autoReload": true,
|
||||
"createNewSplitTab": true,
|
||||
"themeDir": "Templates/MarpTheme"
|
||||
}
|
||||
Vendored
+3447
File diff suppressed because one or more lines are too long
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"id":"marp","name":"Marp","version":"1.5.0","minAppVersion":"1.0.0","description":"Plugin for using Marp on Obsidian.","author":"JichouP","authorUrl":"https://github.com/JichouP","isDesktopOnly":true}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"__VERSION__": 2,
|
||||
"release.previous-version": "4.1.5",
|
||||
"release.show-release-notes": true,
|
||||
"playback.default-volume": 100,
|
||||
"playback.speed-step": 0.1,
|
||||
"playback.preserve-pitch": true,
|
||||
"playback.track.default-enabled": false,
|
||||
"playback.track.folder-path": null,
|
||||
"playback.track.default-languages": [],
|
||||
"playback.screenshot.format": "image/jpeg",
|
||||
"playback.screenshot.quality": 0.8,
|
||||
"playback.screenshot.folder-path": null,
|
||||
"note.embed.load-strategy": "eager",
|
||||
"note.embed.handle-hosted": true,
|
||||
"note.embed.handle-direct-url": true,
|
||||
"link.click-behavior": "split",
|
||||
"link.altclick-behavior": "window",
|
||||
"link.handle-hosted": true,
|
||||
"link.handle-direct-url": true,
|
||||
"link.hosted-prefer": "browser",
|
||||
"note.template.timestamp": "\n- {{TIMESTAMP}} ",
|
||||
"note.template.timestamp-offset": 0,
|
||||
"note.template.timestamp-embed": "\n- !{{CLIP}} ",
|
||||
"note.template.timestamp-embed-linktext": "{{TIMESTAMP}}|400",
|
||||
"note.template.screenshot": "\n- !{{SCREENSHOT}} {{TIMESTAMP}} ",
|
||||
"note.template.screenshot-embed": "{{TITLE}}{{DURATION}}|50",
|
||||
"note.template.insert-at": "after-cursor",
|
||||
"media-lib.folder-path": "media-lib",
|
||||
"cache.cover-image.max-size-mb": 100
|
||||
}
|
||||
+1164
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"author":"AidenLx","minAppVersion":"1.8.9","name":"Media Extended","version":"4.1.5","authorUrl":"https://aidenlx.site","fundingUrl":{"GitHub Sponsor":"https://github.com/sponsors/aidenlx"},"description":"Media(Video/Audio) Playback Enhancement for Obsidian.md","id":"media-extended","isDesktopOnly":true}
|
||||
+26
File diff suppressed because one or more lines are too long
+2631
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
{"id":"mermaid-tools","name":"Mermaid Tools","version":"1.3.0","minAppVersion":"1.4.0","description":"Improved Mermaid.js experience for Obsidian: visual toolbar with common elements & more","author":"dartungar","authorUrl":"https://dartungar.com","fundingUrl":"https://www.paypal.com/paypalme/dartungar","isDesktopOnly":false}
|
||||
+149
@@ -0,0 +1,149 @@
|
||||
.mermaid-toolbar-container, .mermaid-toolbar-container * {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
.mermaid-toolbar-top-row {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.mermaid-toolbar-elements-container {
|
||||
padding-top: 1rem;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.mermaid-toolbar-element {
|
||||
font-size: var(--font-ui-small);
|
||||
cursor: pointer;
|
||||
padding: 2px 2px 2px 5px;
|
||||
border-radius: 3px;
|
||||
flex: 1 0 auto;
|
||||
}
|
||||
|
||||
.mermaid-toolbar-element:hover {
|
||||
background-color: var(--interactive-hover);
|
||||
}
|
||||
|
||||
.mermaid-tools-element-category-header::before {
|
||||
content: "▼ ";
|
||||
font-size: 70%;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
.mermaid-tools-element-category-header.collapsed::before {
|
||||
content: "▶ ";
|
||||
font-size: 70%;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
.mermaid-tools-element-container {
|
||||
padding-top: 6px;
|
||||
border-bottom: var(--border-width) solid var(--color-base-35);
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-element-modal > div {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-element-modal label {
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
/* Custom Category Management Styles */
|
||||
.mermaid-tools-category-management {
|
||||
margin-bottom: 2rem;
|
||||
padding: 1rem;
|
||||
border: 1px solid var(--color-base-25);
|
||||
border-radius: 8px;
|
||||
background-color: var(--color-base-00);
|
||||
}
|
||||
|
||||
.mermaid-tools-category-management h3 {
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 0.5rem;
|
||||
color: var(--text-accent);
|
||||
}
|
||||
|
||||
.mermaid-tools-category-management button.mod-cta {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
/* Edit Category Modal Styles */
|
||||
.mermaid-tools-edit-category-modal {
|
||||
min-width: 500px;
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-category-modal .setting-item {
|
||||
padding: 8px 0;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-category-modal .setting-item-info {
|
||||
flex-grow: 1;
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-category-modal .setting-item-name {
|
||||
font-weight: 600;
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-category-modal .setting-item-description {
|
||||
color: var(--text-muted);
|
||||
font-size: var(--font-ui-smaller);
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-category-modal input,
|
||||
.mermaid-tools-edit-category-modal textarea {
|
||||
width: 100%;
|
||||
padding: 4px 8px;
|
||||
border: 1px solid var(--color-base-30);
|
||||
border-radius: 4px;
|
||||
background-color: var(--color-base-00);
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-category-modal input:focus,
|
||||
.mermaid-tools-edit-category-modal textarea:focus {
|
||||
border-color: var(--color-accent);
|
||||
outline: none;
|
||||
box-shadow: 0 0 0 2px var(--color-accent-2);
|
||||
}
|
||||
|
||||
.modal-button-container {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 10px;
|
||||
margin-top: 20px;
|
||||
padding-top: 16px;
|
||||
border-top: 1px solid var(--color-base-25);
|
||||
}
|
||||
|
||||
.modal-button-container button {
|
||||
padding: 6px 16px;
|
||||
border: 1px solid var(--color-base-30);
|
||||
border-radius: 4px;
|
||||
background-color: var(--color-base-10);
|
||||
color: var(--text-normal);
|
||||
cursor: pointer;
|
||||
font-size: var(--font-ui-small);
|
||||
}
|
||||
|
||||
.modal-button-container button:hover {
|
||||
background-color: var(--color-base-20);
|
||||
}
|
||||
|
||||
.modal-button-container button.mod-cta {
|
||||
background-color: var(--color-accent);
|
||||
color: var(--text-on-accent);
|
||||
border-color: var(--color-accent);
|
||||
}
|
||||
|
||||
.modal-button-container button.mod-cta:hover {
|
||||
background-color: var(--color-accent-hover);
|
||||
}
|
||||
Vendored
+25
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"ProgressProperties": {
|
||||
"enabled": false,
|
||||
"properties": []
|
||||
},
|
||||
"IgnoredProperties": {
|
||||
"enabled": false,
|
||||
"properties": []
|
||||
},
|
||||
"AutoProperties": {
|
||||
"enabled": false,
|
||||
"properties": []
|
||||
},
|
||||
"EditMode": {
|
||||
"mode": "All Single",
|
||||
"properties": []
|
||||
},
|
||||
"KanbanHelper": {
|
||||
"enabled": true,
|
||||
"boards": []
|
||||
},
|
||||
"UIElements": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
Vendored
+5538
File diff suppressed because it is too large
Load Diff
+1
@@ -0,0 +1 @@
|
||||
{"id":"metaedit","name":"MetaEdit","version":"1.8.2","minAppVersion":"1.4.1","description":"MetaEdit helps you manage your metadata.","author":"Christian B. B. Houmann","authorUrl":"https://bagerbach.com","isDesktopOnly":false}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
.centerSettingContent {
|
||||
display: grid;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.not-a-button {
|
||||
background: none;
|
||||
color: inherit;
|
||||
border: none;
|
||||
padding: 0;
|
||||
font: inherit;
|
||||
cursor: pointer;
|
||||
outline: inherit;
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"autosuggestToggleLink": true,
|
||||
"autocompleteTriggerPhrase": "@",
|
||||
"isAutosuggestEnabled": true,
|
||||
"format": "YYYY-MM-DD",
|
||||
"timeFormat": "HH:mm",
|
||||
"separator": " ",
|
||||
"weekStart": "locale-default",
|
||||
"modalToggleTime": false,
|
||||
"modalToggleLink": false,
|
||||
"modalMomentFormat": "YYYY-MM-DD HH:mm"
|
||||
}
|
||||
+9560
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"id":"nldates-obsidian","name":"Natural Language Dates","description":"Create date-links based on natural language","version":"0.6.2","author":"Argentina Ortega Sainz","authorUrl":"https://argentinaos.com/","isDesktopOnly":false,"minAppVersion":"1.0.0"}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"includeFirstLineAsNoteHeading": false,
|
||||
"excludeFirstLineInNote": false,
|
||||
"openNewNote": true,
|
||||
"headingFormat": "#",
|
||||
"newFileLocation": 2,
|
||||
"customFolder": "MyNotes",
|
||||
"fileNamePrefix": "",
|
||||
"transcludeByDefault": false,
|
||||
"noteLinkTemplate": "",
|
||||
"refactoredNoteTemplate": "",
|
||||
"normalizeHeaderLevels": false
|
||||
}
|
||||
+6816
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"id":"note-refactor-obsidian","name":"Note Refactor","version":"1.8.2","description":"Extract note content into new notes and split notes","isDesktopOnly":false,"js":"main.js","css":"style.css","author":"lynchjames"}
|
||||
@@ -0,0 +1,7 @@
|
||||
.note-refactor-filename .setting-item-info {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.note-refactor-filename .setting-item-name {
|
||||
padding-top: 10px;
|
||||
}
|
||||
+32
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"id":"obsidian-advanced-uri","name":"Advanced URI","description":"Advanced modes for Obsidian URI","isDesktopOnly":false,"js":"main.js","fundingUrl":"https://ko-fi.com/vinzent","version":"1.46.0","author":"Vinzent","authorUrl":"https://github.com/Vinzent03"}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"clippers": [
|
||||
{
|
||||
"type": "daily",
|
||||
"name": "",
|
||||
"clipperId": "7d99b9d7-0fc4-4cc8-826c-57d3aef58746",
|
||||
"createdAt": "2025-10-04T13:36:43.957Z",
|
||||
"vaultName": "2023card",
|
||||
"notePath": "",
|
||||
"heading": "",
|
||||
"headingLevel": 1,
|
||||
"tags": "clips",
|
||||
"timestampFormat": "HH:mm",
|
||||
"dateFormat": "YYYY-MM-DD",
|
||||
"openOnWrite": false,
|
||||
"position": "append",
|
||||
"entryTemplateLocation": "Templates/Clipping Template.md",
|
||||
"markdownSettings": {
|
||||
"h1": "##",
|
||||
"h2": "##",
|
||||
"h3": "###",
|
||||
"h4": "####",
|
||||
"h5": "#####",
|
||||
"h6": "######"
|
||||
},
|
||||
"advancedStorage": true,
|
||||
"advancedStorageFolder": "clippings",
|
||||
"captureComments": false
|
||||
}
|
||||
],
|
||||
"version": 2
|
||||
}
|
||||
+15896
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"id":"obsidian-clipper","name":"Clipper","version":"1.0.0-beta.9","minAppVersion":"0.15.0","description":"This plugin helps you capture highlights from the web.","author":"John Christopher","authorUrl":"https://github.com/jgchristopher/","fundingUrl":"https://www.buymeacoffee.com/jgchristopher","isDesktopOnly":false}
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Error><Code>AuthenticationFailed</Code><Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
|
||||
RequestId:5b831c36-801e-0056-4963-f410ba000000
|
||||
Time:2025-07-14T02:00:13.5995331Z</Message></Error>
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"domain": "cubox.pro",
|
||||
"apiKey": "akzEwIcniNJ",
|
||||
"folderFilter": [
|
||||
"all_folders"
|
||||
],
|
||||
"typeFilter": [
|
||||
"Article",
|
||||
"Snippet",
|
||||
"Memo",
|
||||
"Image",
|
||||
"Audio",
|
||||
"Video",
|
||||
"File"
|
||||
],
|
||||
"statusFilter": [
|
||||
"annotated",
|
||||
"starred"
|
||||
],
|
||||
"isRead": false,
|
||||
"isStarred": true,
|
||||
"isAnnotated": false,
|
||||
"tagsFilter": [
|
||||
"all_items"
|
||||
],
|
||||
"syncFrequency": 0,
|
||||
"targetFolder": "cubox",
|
||||
"filenameTemplate": "{{{title}}}-{{{create_time}}}",
|
||||
"frontMatterVariables": [
|
||||
"id",
|
||||
"cubox_url",
|
||||
"url",
|
||||
"tags"
|
||||
],
|
||||
"contentTemplate": "# {{{title}}}\n\n{{{description}}}\n\n[Read in Cubox]({{{cubox_url}}}) \n[Read Original]({{{url}}}) \n\n---\n\n{{#highlights.length}}\n## Annotations \n\n{{#highlights}}\n> {{{text}}} \n\n{{#note}}\n{{{note}}}\n{{/note}}\n[Link️]({{{cubox_url}}}) \n\n{{/highlights}}\n{{/highlights.length}}",
|
||||
"highlightInContent": true,
|
||||
"dateFormat": "yyyy-MM-dd",
|
||||
"lastSyncTime": 1766283645451,
|
||||
"lastSyncCardId": "7400425612076125087",
|
||||
"lastCardUpdateTime": "2025-12-17T11:44:00.171+0800",
|
||||
"syncing": false
|
||||
}
|
||||
+131
File diff suppressed because one or more lines are too long
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"id": "cubox-sync",
|
||||
"name": "Cubox",
|
||||
"version": "1.0.6",
|
||||
"minAppVersion": "0.15.0",
|
||||
"description": "Sync your Cubox articles & annotations",
|
||||
"author": "delphi-2015",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
+213
@@ -0,0 +1,213 @@
|
||||
/*
|
||||
|
||||
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.
|
||||
|
||||
*/
|
||||
|
||||
.modal-footer {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
padding: 16px;
|
||||
border-top: 1px solid var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.modal-footer button {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.modal-footer button.mod-cta {
|
||||
background-color: var(--interactive-accent);
|
||||
color: var(--text-on-accent);
|
||||
}
|
||||
|
||||
/* 变量列表样式优化 */
|
||||
.cubox-variables-container {
|
||||
margin: 20px 0;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
.cubox-variables-title {
|
||||
font-weight: 500;
|
||||
margin-bottom: 8px;
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
.cubox-variables-list {
|
||||
margin: 0;
|
||||
padding-left: 15px;
|
||||
list-style-type: disc;
|
||||
}
|
||||
|
||||
.cubox-variables-list li {
|
||||
margin-bottom: 4px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.highlight-sublist {
|
||||
margin-top: 4px;
|
||||
padding-left: 15px;
|
||||
list-style-type: disc;
|
||||
}
|
||||
|
||||
.cubox-reference {
|
||||
margin-top: 10px;
|
||||
font-size: 1.0em;
|
||||
}
|
||||
|
||||
.reference-link {
|
||||
color: var(--text-accent);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.reference-link:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Modal Dialog Styles */
|
||||
.cubox-modal {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.cubox-list-container {
|
||||
flex-grow: 1;
|
||||
overflow-y: auto;
|
||||
padding-top: 20px;
|
||||
padding-right: 10px;
|
||||
overflow-anchor: none;
|
||||
scroll-behavior: auto;
|
||||
height: 100%;
|
||||
max-height: 65vh;
|
||||
}
|
||||
|
||||
/* Setting item styles for modal dialogs */
|
||||
.cubox-list-container .setting-item {
|
||||
position: relative;
|
||||
padding-left: 36px;
|
||||
border-radius: 4px;
|
||||
transition: background-color 0.1s ease;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
min-height: 40px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.cubox-list-container .setting-item:hover {
|
||||
background-color: var(--background-modifier-hover);
|
||||
}
|
||||
|
||||
/* Setting item name styles */
|
||||
.cubox-list-container .setting-item-name {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Custom checkbox styles */
|
||||
.cubox-list-container .setting-item::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border: 1px solid var(--checkbox-border-color, var(--background-modifier-border));
|
||||
border-radius: 3px;
|
||||
background-color: var(--checkbox-color, var(--background-primary));
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* First child checkbox positioning */
|
||||
.cubox-list-container .setting-item:first-child::before {
|
||||
left: 10px;
|
||||
top: 12px;
|
||||
}
|
||||
|
||||
/* Other items checkbox positioning */
|
||||
.cubox-list-container .setting-item:not(:first-child)::before {
|
||||
left: 10px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
/* Selected checkbox state */
|
||||
.cubox-list-container .setting-item.is-selected::before {
|
||||
background-color: var(--checkbox-color-checked, var(--interactive-accent));
|
||||
border-color: var(--checkbox-border-color-checked, var(--interactive-accent));
|
||||
}
|
||||
|
||||
/* Checkmark for selected items */
|
||||
.cubox-list-container .setting-item.is-selected::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 5px;
|
||||
height: 9px;
|
||||
border-right: 2px solid var(--text-on-accent);
|
||||
border-bottom: 2px solid var(--text-on-accent);
|
||||
}
|
||||
|
||||
/* First child checkmark positioning */
|
||||
.cubox-list-container .setting-item:first-child.is-selected::after {
|
||||
left: 14px;
|
||||
top: 13px;
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
/* Other items checkmark positioning */
|
||||
.cubox-list-container .setting-item:not(:first-child).is-selected::after {
|
||||
left: 14px;
|
||||
top: 50%;
|
||||
transform: translateY(-60%) rotate(45deg);
|
||||
}
|
||||
|
||||
/* First item special styling */
|
||||
.cubox-list-container .setting-item:first-child {
|
||||
margin-top: 0;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.cubox-list-container .setting-item:first-child .setting-item-name {
|
||||
margin-top: 0;
|
||||
padding-top: 0;
|
||||
position: relative;
|
||||
top: 6px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Disabled state styling */
|
||||
.cubox-list-container .setting-item.is-disabled {
|
||||
opacity: 0.3;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.cubox-list-container .setting-item.is-disabled::before {
|
||||
background-color: var(--background-primary);
|
||||
border-color: var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.cubox-list-container .setting-item.is-disabled::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 8px;
|
||||
height: 2px;
|
||||
background-color: var(--text-muted);
|
||||
left: 14px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* Consistent line height for all items */
|
||||
.cubox-list-container .setting-item-heading,
|
||||
.cubox-list-container .setting-item-name {
|
||||
line-height: normal;
|
||||
margin: auto 0;
|
||||
}
|
||||
|
||||
/* Override first row bold font for type modal */
|
||||
.type-list-container .setting-item:first-child .setting-item-name {
|
||||
font-weight: normal;
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"frames": [
|
||||
{
|
||||
"url": "https://forum.obsidian.md/",
|
||||
"displayName": "Obsidian Forum",
|
||||
"icon": "edit",
|
||||
"hideOnMobile": true,
|
||||
"addRibbonIcon": true,
|
||||
"openInCenter": true,
|
||||
"zoomLevel": 1,
|
||||
"forceIframe": false,
|
||||
"customCss": "",
|
||||
"customJs": ""
|
||||
},
|
||||
{
|
||||
"url": "https://dida365.com/webapp/#q/all/kanban",
|
||||
"displayName": "滴答清单",
|
||||
"icon": "",
|
||||
"hideOnMobile": true,
|
||||
"addRibbonIcon": false,
|
||||
"openInCenter": false,
|
||||
"zoomLevel": 1,
|
||||
"forceIframe": false,
|
||||
"customCss": "",
|
||||
"customJs": ""
|
||||
},
|
||||
{
|
||||
"url": "https://chat.deepseek.com/",
|
||||
"displayName": "deepseek",
|
||||
"icon": "eye",
|
||||
"hideOnMobile": true,
|
||||
"addRibbonIcon": true,
|
||||
"openInCenter": false,
|
||||
"zoomLevel": 1,
|
||||
"forceIframe": false,
|
||||
"customCss": "",
|
||||
"customJs": ""
|
||||
}
|
||||
],
|
||||
"padding": 5
|
||||
}
|
||||
+655
@@ -0,0 +1,655 @@
|
||||
/*
|
||||
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||||
if you want to view the source, please visit the github repository of this plugin
|
||||
*/
|
||||
var __create = Object.create;
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __getProtoOf = Object.getPrototypeOf;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
||||
var __export = (target, all) => {
|
||||
__markAsModule(target);
|
||||
for (var name in all)
|
||||
__defProp(target, name, { get: all[name], enumerable: true });
|
||||
};
|
||||
var __reExport = (target, module2, desc) => {
|
||||
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
||||
for (let key of __getOwnPropNames(module2))
|
||||
if (!__hasOwnProp.call(target, key) && key !== "default")
|
||||
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
||||
}
|
||||
return target;
|
||||
};
|
||||
var __toModule = (module2) => {
|
||||
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
||||
};
|
||||
var __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());
|
||||
});
|
||||
};
|
||||
|
||||
// src/main.ts
|
||||
__export(exports, {
|
||||
default: () => CustomFramesPlugin
|
||||
});
|
||||
var import_obsidian4 = __toModule(require("obsidian"));
|
||||
|
||||
// src/frame.ts
|
||||
var import_obsidian = __toModule(require("obsidian"));
|
||||
|
||||
// src/settings.ts
|
||||
var defaultSettings = {
|
||||
frames: [],
|
||||
padding: 5
|
||||
};
|
||||
var presets = {
|
||||
"obsidian": {
|
||||
url: "https://forum.obsidian.md/",
|
||||
displayName: "Obsidian Forum",
|
||||
icon: "edit",
|
||||
hideOnMobile: true,
|
||||
addRibbonIcon: true,
|
||||
openInCenter: true,
|
||||
zoomLevel: 1,
|
||||
forceIframe: false,
|
||||
customCss: "",
|
||||
customJs: ""
|
||||
},
|
||||
"detexify": {
|
||||
url: "https://detexify.kirelabs.org/classify.html",
|
||||
displayName: "Detexify",
|
||||
icon: "type",
|
||||
hideOnMobile: true,
|
||||
addRibbonIcon: true,
|
||||
openInCenter: false,
|
||||
zoomLevel: 0.95,
|
||||
forceIframe: false,
|
||||
customCss: `/* hide info clutter and ad banner */
|
||||
#classify--info-area,
|
||||
.adsbygoogle {
|
||||
display: none !important
|
||||
}`,
|
||||
customJs: ""
|
||||
},
|
||||
"calendar": {
|
||||
url: "https://calendar.google.com/calendar",
|
||||
displayName: "Google Calendar",
|
||||
icon: "calendar",
|
||||
hideOnMobile: true,
|
||||
addRibbonIcon: true,
|
||||
openInCenter: true,
|
||||
zoomLevel: 1,
|
||||
forceIframe: false,
|
||||
customCss: `/* hide the menu bar "Calendar" text and remove minimum width */
|
||||
div[style*="min-width: 238px"] {
|
||||
min-width: 0 !important;
|
||||
padding-right: 0 !important;
|
||||
}
|
||||
div[style*="min-width: 238px"] span[role*="heading"] {
|
||||
display: none !important;
|
||||
}`,
|
||||
customJs: ""
|
||||
},
|
||||
"keep": {
|
||||
url: "https://keep.google.com",
|
||||
displayName: "Google Keep",
|
||||
icon: "files",
|
||||
hideOnMobile: true,
|
||||
addRibbonIcon: false,
|
||||
openInCenter: false,
|
||||
zoomLevel: 1,
|
||||
forceIframe: false,
|
||||
customCss: `/* hide the menu bar, the "Keep" text and the Google Apps button */
|
||||
html > body > div:nth-child(2) > div:nth-child(2) > div:first-child,
|
||||
html > body > div:first-child > header:first-child > div > div:first-child > div > div:first-child > a:first-child > span,
|
||||
html > body > div:first-child > header:first-child > div:nth-child(2) > div:first-child > div:first-child,
|
||||
html > body > div:first-child > header:first-child > div:nth-child(2) > div:nth-child(3) > div:first-child > div:first-child > div:first-child {
|
||||
display: none !important;
|
||||
}
|
||||
html > body > div:first-child > header:first-child > div > div:first-child > div > div:first-child > a:first-child {
|
||||
cursor: default;
|
||||
}`,
|
||||
customJs: ""
|
||||
},
|
||||
"todoist": {
|
||||
url: "https://todoist.com",
|
||||
displayName: "Todoist",
|
||||
icon: "list-checks",
|
||||
hideOnMobile: true,
|
||||
addRibbonIcon: false,
|
||||
openInCenter: false,
|
||||
zoomLevel: 1,
|
||||
forceIframe: false,
|
||||
customCss: `/* hide the help, home, search, and productivity overview buttons, create extra space, and prevent toast pop-up from acting weird */
|
||||
[aria-label="Go to Home view"], #quick_find, [aria-label="Productivity"], [aria-label="Help & Feedback"] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.view_content {
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
.view_header {
|
||||
padding-left: 15px;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.undo_toast {
|
||||
width: 95%;
|
||||
}`,
|
||||
customJs: ""
|
||||
},
|
||||
"notion": {
|
||||
url: "https://www.notion.so/",
|
||||
displayName: "Notion",
|
||||
icon: "box",
|
||||
hideOnMobile: true,
|
||||
addRibbonIcon: true,
|
||||
openInCenter: true,
|
||||
zoomLevel: 1,
|
||||
forceIframe: false,
|
||||
customCss: "",
|
||||
customJs: ""
|
||||
},
|
||||
"twitter": {
|
||||
url: "https://twitter.com",
|
||||
displayName: "Twitter",
|
||||
icon: "twitter",
|
||||
hideOnMobile: true,
|
||||
addRibbonIcon: false,
|
||||
openInCenter: false,
|
||||
zoomLevel: 1,
|
||||
forceIframe: false,
|
||||
customCss: "",
|
||||
customJs: ""
|
||||
},
|
||||
"tasks": {
|
||||
url: "https://tasks.google.com/embed/?origin=https://calendar.google.com&fullWidth=1",
|
||||
displayName: "Google Tasks",
|
||||
icon: "list-checks",
|
||||
hideOnMobile: true,
|
||||
addRibbonIcon: false,
|
||||
openInCenter: false,
|
||||
zoomLevel: 1,
|
||||
forceIframe: false,
|
||||
customCss: "",
|
||||
customJs: ""
|
||||
},
|
||||
"readwise-daily-review": {
|
||||
"url": "https://readwise.io/dailyreview",
|
||||
"displayName": "Readwise Daily Review",
|
||||
"icon": "highlighter",
|
||||
"hideOnMobile": true,
|
||||
"addRibbonIcon": false,
|
||||
"openInCenter": false,
|
||||
"zoomLevel": 1,
|
||||
"forceIframe": false,
|
||||
"customCss": ".fixed-nav {\n display: none !important;\n}",
|
||||
"customJs": ""
|
||||
}
|
||||
};
|
||||
function getIcon(settings) {
|
||||
return settings.icon ? `lucide-${settings.icon}` : "documents";
|
||||
}
|
||||
function getId(settings) {
|
||||
return settings.displayName.toLowerCase().replace(/\s/g, "-");
|
||||
}
|
||||
|
||||
// src/frame.ts
|
||||
var CustomFrame = class {
|
||||
constructor(settings, data) {
|
||||
this.settings = settings;
|
||||
this.data = data;
|
||||
}
|
||||
create(parent, additionalStyle = void 0, urlSuffix = void 0) {
|
||||
let style = `padding: ${this.settings.padding}px;`;
|
||||
if (additionalStyle)
|
||||
style += additionalStyle;
|
||||
if (import_obsidian.Platform.isDesktopApp && !this.data.forceIframe) {
|
||||
let frameDoc = parent.doc;
|
||||
this.frame = frameDoc.createElement("webview");
|
||||
this.frame.partition = "persist:vault-" + app.appId;
|
||||
parent.appendChild(this.frame);
|
||||
this.frame.setAttribute("allowpopups", "");
|
||||
this.frame.addEventListener("dom-ready", () => {
|
||||
this.frame.setZoomFactor(this.data.zoomLevel);
|
||||
this.frame.insertCSS(this.data.customCss);
|
||||
this.frame.executeJavaScript(this.data.customJs);
|
||||
});
|
||||
this.frame.addEventListener("destroyed", () => {
|
||||
if (frameDoc != parent.doc) {
|
||||
this.frame.detach();
|
||||
this.create(parent, additionalStyle, urlSuffix);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.frame = parent.doc.createElement("iframe");
|
||||
parent.appendChild(this.frame);
|
||||
this.frame.setAttribute("sandbox", "allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts allow-top-navigation-by-user-activation allow-downloads");
|
||||
this.frame.setAttribute("allow", "encrypted-media; fullscreen; oversized-images; picture-in-picture; sync-xhr; geolocation;");
|
||||
style += `transform: scale(${this.data.zoomLevel}); transform-origin: 0 0;`;
|
||||
}
|
||||
this.frame.addClass("custom-frames-frame");
|
||||
this.frame.addClass(`custom-frames-${getId(this.data)}`);
|
||||
this.frame.setAttribute("style", style);
|
||||
let src = new URL(this.data.url);
|
||||
if (urlSuffix) {
|
||||
let suffix = new URL(urlSuffix, src.origin);
|
||||
suffix.searchParams.forEach((value, key) => {
|
||||
src.searchParams.set(key, value);
|
||||
});
|
||||
if (suffix.pathname !== "/") {
|
||||
src.pathname += suffix.pathname;
|
||||
}
|
||||
src.hash = suffix.hash || src.hash;
|
||||
}
|
||||
this.frame.setAttribute("src", src.toString());
|
||||
}
|
||||
refresh() {
|
||||
if (this.frame instanceof HTMLIFrameElement) {
|
||||
this.frame.contentWindow.location.reload();
|
||||
} else {
|
||||
this.frame.reload();
|
||||
}
|
||||
}
|
||||
return() {
|
||||
if (this.frame instanceof HTMLIFrameElement) {
|
||||
this.frame.contentWindow.open(this.data.url);
|
||||
} else {
|
||||
this.frame.loadURL(this.data.url);
|
||||
}
|
||||
}
|
||||
goBack() {
|
||||
if (this.frame instanceof HTMLIFrameElement) {
|
||||
this.frame.contentWindow.history.back();
|
||||
} else {
|
||||
this.frame.goBack();
|
||||
}
|
||||
}
|
||||
goForward() {
|
||||
if (this.frame instanceof HTMLIFrameElement) {
|
||||
this.frame.contentWindow.history.forward();
|
||||
} else {
|
||||
this.frame.goForward();
|
||||
}
|
||||
}
|
||||
toggleDevTools() {
|
||||
if (!(this.frame instanceof HTMLIFrameElement)) {
|
||||
if (!this.frame.isDevToolsOpened()) {
|
||||
this.frame.openDevTools();
|
||||
} else {
|
||||
this.frame.closeDevTools();
|
||||
}
|
||||
}
|
||||
}
|
||||
getCurrentUrl() {
|
||||
return this.frame instanceof HTMLIFrameElement ? this.frame.contentWindow.location.href : this.frame.getURL();
|
||||
}
|
||||
focus() {
|
||||
if (this.frame instanceof HTMLIFrameElement) {
|
||||
this.frame.contentWindow.focus();
|
||||
} else {
|
||||
this.frame.focus();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// src/settings-tab.ts
|
||||
var import_obsidian2 = __toModule(require("obsidian"));
|
||||
var CustomFramesSettingTab = class extends import_obsidian2.PluginSettingTab {
|
||||
constructor(app2, plugin) {
|
||||
super(app2, plugin);
|
||||
this.plugin = plugin;
|
||||
}
|
||||
display() {
|
||||
this.containerEl.empty();
|
||||
this.containerEl.createEl("h2", { text: "Custom Frames Settings" });
|
||||
this.containerEl.createEl("p", {
|
||||
text: "Please note that Obsidian has to be restarted or reloaded for most of these settings to take effect.",
|
||||
cls: "mod-warning"
|
||||
});
|
||||
new import_obsidian2.Setting(this.containerEl).setName("Frame Padding").setDesc("The padding that should be left around the inside of custom frame panes, in pixels.").addText((t) => {
|
||||
t.inputEl.type = "number";
|
||||
t.setValue(String(this.plugin.settings.padding));
|
||||
t.onChange((v) => __async(this, null, function* () {
|
||||
this.plugin.settings.padding = v.length ? Number(v) : defaultSettings.padding;
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
for (let frame of this.plugin.settings.frames) {
|
||||
let heading = this.containerEl.createEl("h3", { text: frame.displayName || "Unnamed Frame" });
|
||||
let toggle = new import_obsidian2.ButtonComponent(this.containerEl).setButtonText("Show Settings").setClass("custom-frames-show").onClick(() => __async(this, null, function* () {
|
||||
content.hidden = !content.hidden;
|
||||
toggle.setButtonText(content.hidden ? "Show Settings" : "Hide Settings");
|
||||
}));
|
||||
let content = this.containerEl.createDiv();
|
||||
content.hidden = true;
|
||||
new import_obsidian2.Setting(content).setName("Display Name").setDesc("The display name that this frame should have.").addText((t) => {
|
||||
t.setValue(frame.displayName);
|
||||
t.onChange((v) => __async(this, null, function* () {
|
||||
frame.displayName = v;
|
||||
heading.setText(frame.displayName || "Unnamed Frame");
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
new import_obsidian2.Setting(content).setName("Icon").setDesc(createFragment((f) => {
|
||||
f.createSpan({ text: "The icon that this frame's pane should have. The names of any " });
|
||||
f.createEl("a", { text: "Lucide icons", href: "https://lucide.dev/" });
|
||||
f.createSpan({ text: " can be used." });
|
||||
})).addText((t) => {
|
||||
t.setValue(frame.icon);
|
||||
t.onChange((v) => __async(this, null, function* () {
|
||||
frame.icon = v;
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
new import_obsidian2.Setting(content).setName("URL").setDesc("The URL that should be opened in this frame.").addText((t) => {
|
||||
t.setValue(frame.url);
|
||||
t.onChange((v) => __async(this, null, function* () {
|
||||
frame.url = v;
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
new import_obsidian2.Setting(content).setName("Disable on Mobile").setDesc("Custom Frames is a lot more restricted on mobile devices and doesn't allow for the same types of content to be displayed. If a frame doesn't work as expected on mobile, it can be disabled.").addToggle((t) => {
|
||||
t.setValue(frame.hideOnMobile);
|
||||
t.onChange((v) => __async(this, null, function* () {
|
||||
frame.hideOnMobile = v;
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
new import_obsidian2.Setting(content).setName("Add Ribbon Icon").setDesc("Whether a button to open this frame should be added to the ribbon.").addToggle((t) => {
|
||||
t.setValue(frame.addRibbonIcon);
|
||||
t.onChange((v) => __async(this, null, function* () {
|
||||
frame.addRibbonIcon = v;
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
new import_obsidian2.Setting(content).setName("Open in Center").setDesc("Whether this frame should be opened in the unpinned center editor rather than one of the panes on the side. This is useful for sites that don't work well in a narrow view, or sites that don't require a note to be open when viewed.").addToggle((t) => {
|
||||
t.setValue(frame.openInCenter);
|
||||
t.onChange((v) => __async(this, null, function* () {
|
||||
frame.openInCenter = v;
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
new import_obsidian2.Setting(content).setName("Force iframe").setDesc(createFragment((f) => {
|
||||
f.createSpan({ text: "Whether this frame should use iframes on desktop as opposed to Electron webviews." });
|
||||
f.createEl("br");
|
||||
f.createEl("em", { text: "Only enable this setting if the frame is causing issues or frequent crashes. This setting causes all Desktop-only settings to be ignored." });
|
||||
})).addToggle((t) => {
|
||||
t.setValue(frame.forceIframe);
|
||||
t.onChange((v) => __async(this, null, function* () {
|
||||
frame.forceIframe = v;
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
new import_obsidian2.Setting(content).setName("Page Zoom").setDesc("The zoom that this frame's page should be displayed with, as a percentage.").addText((t) => {
|
||||
t.inputEl.type = "number";
|
||||
t.setValue(String(frame.zoomLevel * 100));
|
||||
t.onChange((v) => __async(this, null, function* () {
|
||||
frame.zoomLevel = v.length ? Number(v) / 100 : 1;
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
new import_obsidian2.Setting(content).setName("Additional CSS").setDesc(createFragment((f) => {
|
||||
f.createSpan({ text: "A snippet of additional CSS that should be applied to this frame." });
|
||||
f.createEl("br");
|
||||
f.createEl("em", { text: "Note that this is only applied on Desktop." });
|
||||
})).addTextArea((t) => {
|
||||
t.inputEl.rows = 5;
|
||||
t.inputEl.cols = 50;
|
||||
t.setValue(frame.customCss);
|
||||
t.onChange((v) => __async(this, null, function* () {
|
||||
frame.customCss = v;
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
new import_obsidian2.Setting(content).setName("Additional JavaScript").setDesc(createFragment((f) => {
|
||||
f.createSpan({ text: "A snippet of additional JavaScript that should be applied to this frame." });
|
||||
f.createEl("br");
|
||||
f.createEl("em", { text: "Note that this is only applied on Desktop." });
|
||||
})).addTextArea((t) => {
|
||||
t.inputEl.rows = 5;
|
||||
t.inputEl.cols = 50;
|
||||
t.setValue(frame.customJs);
|
||||
t.onChange((v) => __async(this, null, function* () {
|
||||
frame.customJs = v;
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
new import_obsidian2.ButtonComponent(content).setButtonText("Remove Frame").onClick(() => __async(this, null, function* () {
|
||||
this.plugin.settings.frames.remove(frame);
|
||||
yield this.plugin.saveSettings();
|
||||
this.display();
|
||||
}));
|
||||
}
|
||||
this.containerEl.createEl("hr");
|
||||
this.containerEl.createEl("p", { text: `Create a new frame, either from a preset shipped with the plugin, or a custom one that you can edit yourself. Each frame's pane can be opened using the "Custom Frames: Open" command.` });
|
||||
let addDiv = this.containerEl.createDiv();
|
||||
let dropdown = new import_obsidian2.DropdownComponent(addDiv);
|
||||
dropdown.addOption("new", "Custom");
|
||||
for (let [key, value] of Object.entries(presets).sort((a, b) => a[1].displayName.localeCompare(b[1].displayName)))
|
||||
dropdown.addOption(key, value.displayName);
|
||||
new import_obsidian2.ButtonComponent(addDiv).setButtonText("Add Frame").setClass("custom-frames-add").onClick(() => __async(this, null, function* () {
|
||||
let option = dropdown.getValue();
|
||||
if (option == "new") {
|
||||
this.plugin.settings.frames.push({
|
||||
url: "",
|
||||
displayName: "New Frame",
|
||||
icon: "",
|
||||
hideOnMobile: true,
|
||||
addRibbonIcon: false,
|
||||
openInCenter: false,
|
||||
zoomLevel: 1,
|
||||
forceIframe: false,
|
||||
customCss: "",
|
||||
customJs: ""
|
||||
});
|
||||
} else {
|
||||
this.plugin.settings.frames.push(presets[option]);
|
||||
}
|
||||
yield this.plugin.saveSettings();
|
||||
this.display();
|
||||
}));
|
||||
let disclaimer = this.containerEl.createEl("p", { cls: "mod-warning" });
|
||||
disclaimer.createSpan({ text: "Please be advised that, when adding a site as a custom frame, you potentially expose personal information you enter to other plugins you have installed. For more information, see " });
|
||||
disclaimer.createEl("a", {
|
||||
text: "this discussion",
|
||||
href: "https://github.com/Ellpeck/ObsidianCustomFrames/issues/54#issuecomment-1210879685",
|
||||
cls: "mod-warning"
|
||||
});
|
||||
disclaimer.createSpan({ text: "." });
|
||||
this.containerEl.createEl("hr");
|
||||
this.containerEl.createEl("p", { text: "Need help using the plugin? Feel free to join the Discord server!" });
|
||||
this.containerEl.createEl("a", { href: "https://link.ellpeck.de/discordweb" }).createEl("img", {
|
||||
attr: { src: "https://ellpeck.de/res/discord-wide.png" },
|
||||
cls: "custom-frames-support"
|
||||
});
|
||||
this.containerEl.createEl("p", { text: "If you like this plugin and want to support its development, you can do so through my website by clicking this fancy image!" });
|
||||
this.containerEl.createEl("a", { href: "https://ellpeck.de/support" }).createEl("img", {
|
||||
attr: { src: "https://ellpeck.de/res/generalsupport-wide.png" },
|
||||
cls: "custom-frames-support"
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// src/view.ts
|
||||
var import_obsidian3 = __toModule(require("obsidian"));
|
||||
var _CustomFrameView = class extends import_obsidian3.ItemView {
|
||||
constructor(leaf, settings, data, name) {
|
||||
super(leaf);
|
||||
this.data = data;
|
||||
this.name = name;
|
||||
this.frame = new CustomFrame(settings, data);
|
||||
this.navigation = data.openInCenter;
|
||||
for (let action of _CustomFrameView.actions)
|
||||
this.addAction(action.icon, action.name, () => action.action(this));
|
||||
}
|
||||
onload() {
|
||||
this.contentEl.empty();
|
||||
this.contentEl.addClass("custom-frames-view");
|
||||
this.frame.create(this.contentEl);
|
||||
}
|
||||
onPaneMenu(menu, source) {
|
||||
super.onPaneMenu(menu, source);
|
||||
for (let action of _CustomFrameView.actions) {
|
||||
menu.addItem((i) => {
|
||||
i.setTitle(action.name);
|
||||
i.setIcon(action.icon);
|
||||
i.onClick(() => action.action(this));
|
||||
});
|
||||
}
|
||||
}
|
||||
getViewType() {
|
||||
return this.name;
|
||||
}
|
||||
getDisplayText() {
|
||||
return this.data.displayName;
|
||||
}
|
||||
getIcon() {
|
||||
return getIcon(this.data);
|
||||
}
|
||||
focus() {
|
||||
this.frame.focus();
|
||||
}
|
||||
};
|
||||
var CustomFrameView = _CustomFrameView;
|
||||
CustomFrameView.actions = [
|
||||
{
|
||||
name: "Return to original page",
|
||||
icon: "home",
|
||||
action: (v) => v.frame.return()
|
||||
},
|
||||
{
|
||||
name: "Open dev tools",
|
||||
icon: "binary",
|
||||
action: (v) => v.frame.toggleDevTools()
|
||||
},
|
||||
{
|
||||
name: "Copy link",
|
||||
icon: "link",
|
||||
action: (v) => navigator.clipboard.writeText(v.frame.getCurrentUrl())
|
||||
},
|
||||
{
|
||||
name: "Open in browser",
|
||||
icon: "globe",
|
||||
action: (v) => open(v.frame.getCurrentUrl())
|
||||
},
|
||||
{
|
||||
name: "Refresh",
|
||||
icon: "refresh-cw",
|
||||
action: (v) => v.frame.refresh()
|
||||
},
|
||||
{
|
||||
name: "Go forward",
|
||||
icon: "arrow-right",
|
||||
action: (v) => v.frame.goForward()
|
||||
},
|
||||
{
|
||||
name: "Go back",
|
||||
icon: "arrow-left",
|
||||
action: (v) => v.frame.goBack()
|
||||
}
|
||||
];
|
||||
|
||||
// src/main.ts
|
||||
var CustomFramesPlugin = class extends import_obsidian4.Plugin {
|
||||
onload() {
|
||||
return __async(this, null, function* () {
|
||||
yield this.loadSettings();
|
||||
for (let frame of this.settings.frames) {
|
||||
if (!frame.url || !frame.displayName)
|
||||
continue;
|
||||
let name = `custom-frames-${getId(frame)}`;
|
||||
if (import_obsidian4.Platform.isMobileApp && frame.hideOnMobile) {
|
||||
console.log(`Skipping frame ${name} which is hidden on mobile`);
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
console.log(`Registering frame ${name} for URL ${frame.url}`);
|
||||
this.registerView(name, (l) => new CustomFrameView(l, this.settings, frame, name));
|
||||
this.addCommand({
|
||||
id: `open-${name}`,
|
||||
name: `Open ${frame.displayName}`,
|
||||
callback: () => this.openLeaf(name, frame.openInCenter, false)
|
||||
});
|
||||
if (frame.addRibbonIcon)
|
||||
this.addRibbonIcon(getIcon(frame), `Open ${frame.displayName}`, (e) => this.openLeaf(name, frame.openInCenter, import_obsidian4.Platform.isMacOS ? e.metaKey : e.ctrlKey));
|
||||
} catch (e) {
|
||||
console.error(`Couldn't register frame ${name}, is there already one with the same name?`);
|
||||
}
|
||||
}
|
||||
this.addSettingTab(new CustomFramesSettingTab(this.app, this));
|
||||
this.registerMarkdownCodeBlockProcessor("custom-frames", (s, e) => {
|
||||
e.empty();
|
||||
e.addClass("custom-frames-view-file");
|
||||
let frameMatch = /frame:([^\n]+)/gi.exec(s);
|
||||
let frameName = frameMatch && frameMatch[1].trim();
|
||||
if (!frameName) {
|
||||
e.createSpan({ text: "Couldn't parse frame name" });
|
||||
return;
|
||||
}
|
||||
let data = this.settings.frames.find((f) => f.displayName == frameName);
|
||||
if (!data) {
|
||||
e.createSpan({ text: `Couldn't find a frame with name ${frameName}` });
|
||||
return;
|
||||
}
|
||||
if (import_obsidian4.Platform.isMobileApp && data.hideOnMobile) {
|
||||
e.createSpan({ text: `${frameName} is hidden on mobile` });
|
||||
return;
|
||||
}
|
||||
let styleMatch = /style:([^\n]+)/gi.exec(s);
|
||||
let style = styleMatch && styleMatch[1].trim();
|
||||
style || (style = "height: 600px;");
|
||||
let urlSuffixMatch = /urlsuffix:([^\n]+)/gi.exec(s);
|
||||
let urlSuffix = urlSuffixMatch && urlSuffixMatch[1].trim();
|
||||
urlSuffix || (urlSuffix = "");
|
||||
let frame = new CustomFrame(this.settings, data);
|
||||
frame.create(e, style, urlSuffix);
|
||||
});
|
||||
});
|
||||
}
|
||||
loadSettings() {
|
||||
return __async(this, null, function* () {
|
||||
this.settings = Object.assign({}, defaultSettings, yield this.loadData());
|
||||
});
|
||||
}
|
||||
saveSettings() {
|
||||
return __async(this, null, function* () {
|
||||
yield this.saveData(this.settings);
|
||||
});
|
||||
}
|
||||
openLeaf(name, center, split) {
|
||||
return __async(this, null, function* () {
|
||||
let leaf;
|
||||
if (center) {
|
||||
leaf = this.app.workspace.getLeaf(split);
|
||||
yield leaf.setViewState({ type: name, active: true });
|
||||
} else {
|
||||
if (!this.app.workspace.getLeavesOfType(name).length)
|
||||
yield this.app.workspace.getRightLeaf(false).setViewState({ type: name, active: true });
|
||||
leaf = this.app.workspace.getLeavesOfType(name)[0];
|
||||
this.app.workspace.revealLeaf(leaf);
|
||||
}
|
||||
if (leaf.view instanceof CustomFrameView)
|
||||
leaf.view.focus();
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1 @@
|
||||
{"id":"obsidian-custom-frames","name":"Custom Frames","version":"2.5.0","minAppVersion":"1.2.0","description":"A plugin that turns web apps into panes using iframes with custom styling. Also comes with presets for Google Keep, Todoist and more.","author":"Ellpeck","authorUrl":"https://ellpeck.de","fundingUrl":"https://ellpeck.de/support","isDesktopOnly":false}
|
||||
@@ -0,0 +1,30 @@
|
||||
.custom-frames-view {
|
||||
padding: 0 !important;
|
||||
overflow: hidden !important;
|
||||
}
|
||||
|
||||
.custom-frames-view-file {
|
||||
padding: 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.custom-frames-frame {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: none;
|
||||
background-color: white;
|
||||
background-clip: content-box;
|
||||
}
|
||||
|
||||
.custom-frames-add {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.custom-frames-show {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.custom-frames-support {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"name": "Markdown"
|
||||
},
|
||||
{
|
||||
"name": "Markdown (Hugo)"
|
||||
},
|
||||
{
|
||||
"name": "Html"
|
||||
},
|
||||
{
|
||||
"name": "TextBundle"
|
||||
},
|
||||
{
|
||||
"name": "Typst"
|
||||
},
|
||||
{
|
||||
"name": "PDF"
|
||||
},
|
||||
{
|
||||
"name": "Word (.docx)"
|
||||
},
|
||||
{
|
||||
"name": "OpenOffice"
|
||||
},
|
||||
{
|
||||
"name": "RTF"
|
||||
},
|
||||
{
|
||||
"name": "Epub"
|
||||
},
|
||||
{
|
||||
"name": "Latex"
|
||||
},
|
||||
{
|
||||
"name": "Media Wiki"
|
||||
},
|
||||
{
|
||||
"name": "reStructuredText"
|
||||
},
|
||||
{
|
||||
"name": "Textile"
|
||||
},
|
||||
{
|
||||
"name": "OPML"
|
||||
},
|
||||
{
|
||||
"name": "Bibliography"
|
||||
},
|
||||
{
|
||||
"name": "PowerPoint (.pptx)"
|
||||
}
|
||||
],
|
||||
"pandocPath": {
|
||||
"win32": "D:\\Applications\\Scoop\\apps\\pandoc\\current\\pandoc.exe"
|
||||
},
|
||||
"defaultExportDirectoryMode": "Same",
|
||||
"openExportedFile": true,
|
||||
"env": {},
|
||||
"showExportProgressBar": true,
|
||||
"lastEditName": "Word (.docx)"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
-- credits to tarleb — StackExchange: https://tex.stackexchange.com/questions/392070/pandoc-markdown-create-self-contained-bib-file-from-cited-references
|
||||
function Pandoc(d)
|
||||
d.meta.references = pandoc.utils.references(d)
|
||||
d.meta.bibliography = nil
|
||||
return d
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
package.path=package.path..";" ..debug.getinfo(1).source:match("(.*[/\\])"):sub(2) .. "?.lua"
|
||||
|
||||
Mode='hugo'
|
||||
|
||||
require('markdown')
|
||||
@@ -0,0 +1,237 @@
|
||||
package.path=debug.getinfo(1).source:gsub('@',''):sub(0):match('(.*[/\\])'):sub(0) .. '?.lua' .. ';' .. package.path
|
||||
|
||||
require("polyfill")
|
||||
local url = require('url')
|
||||
|
||||
local pandoc=pandoc
|
||||
local PANDOC_STATE=PANDOC_STATE
|
||||
|
||||
PANDOC_VERSION:must_be_at_least '3.1.7'
|
||||
|
||||
os.text = pandoc.text
|
||||
|
||||
local PATH = pandoc.path
|
||||
local doc_dir = nil
|
||||
local media_dir = nil
|
||||
|
||||
if Mode == nil then
|
||||
Mode = 'default'
|
||||
end
|
||||
|
||||
-- print("Mode: "..Mode)
|
||||
|
||||
if PANDOC_STATE.output_file then
|
||||
local output_file = PANDOC_STATE.output_file
|
||||
doc_dir = PATH.directory(output_file)
|
||||
if PANDOC_WRITER_OPTIONS.variables["media_dir"] then
|
||||
media_dir = tostring(PANDOC_WRITER_OPTIONS.variables["media_dir"])
|
||||
else
|
||||
media_dir = PATH.split_extension(output_file)
|
||||
if Mode ~= 'hugo' then
|
||||
media_dir = media_dir .. '-media'
|
||||
end
|
||||
end
|
||||
end
|
||||
assert(doc_dir, "doc_dir is nil")
|
||||
assert(media_dir, "media_dir is nil")
|
||||
|
||||
|
||||
local function get_absolute_path(file_path)
|
||||
if PATH.is_absolute(file_path) then
|
||||
return file_path
|
||||
end
|
||||
for _, dir in pairs(PANDOC_STATE.resource_path) do
|
||||
local full_path = PATH.join({dir, file_path})
|
||||
if os.exists(full_path) then
|
||||
return full_path
|
||||
end
|
||||
end
|
||||
for _, file in pairs(PANDOC_STATE.input_files) do
|
||||
if not PATH.is_absolute(file) then
|
||||
file = PATH.join({pandoc.system.get_working_directory(), file_path})
|
||||
end
|
||||
local dir = PATH.directory(file)
|
||||
local full_path = PATH.join({dir, file_path})
|
||||
if os.exists(full_path) then
|
||||
return full_path
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
local function get_output_file(file_path)
|
||||
if media_dir then
|
||||
local new_file_name = pandoc.utils.sha1(file_path)
|
||||
local _, new_file_ext = PATH.split_extension(file_path)
|
||||
file_path = new_file_name .. new_file_ext
|
||||
local full_path = PATH.join({media_dir, file_path})
|
||||
return full_path
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
local function extract_media(file_path)
|
||||
os.mkdir(media_dir)
|
||||
file_path = url.decode(file_path)
|
||||
local abs_path = get_absolute_path(file_path)
|
||||
local file = get_output_file(file_path)
|
||||
if abs_path and file then
|
||||
if not os.exists(file) then
|
||||
os.copy(abs_path, file)
|
||||
end
|
||||
local rel_path = PATH.make_relative(file, doc_dir, false)
|
||||
local parts = PATH.split(rel_path)
|
||||
for i,v in ipairs(parts) do
|
||||
parts[i] = url.encode(v)
|
||||
end
|
||||
local encoded_rel_path = table.concat(parts, "/")
|
||||
if Mode == 'hugo' then
|
||||
encoded_rel_path = '../' .. encoded_rel_path
|
||||
end
|
||||
return encoded_rel_path
|
||||
end
|
||||
end
|
||||
|
||||
local function raw(s)
|
||||
return pandoc.RawInline('markdown', s)
|
||||
end
|
||||
|
||||
function Image(el)
|
||||
local src = extract_media(el.src)
|
||||
if src then
|
||||
el.src = src
|
||||
end
|
||||
return el
|
||||
end
|
||||
|
||||
function Space()
|
||||
return raw(' ')
|
||||
end
|
||||
|
||||
function SoftBreak()
|
||||
return raw('\n')
|
||||
end
|
||||
|
||||
function RawInline(el)
|
||||
if el.format == "html" then
|
||||
el.format = 'markdown'
|
||||
el.text = string.gsub(el.text, '<img[^>]+>', function(img)
|
||||
return string.gsub(img, 'src="([^"]+)"', function(url)
|
||||
if string.find(url, '^[Hh][Tt][Tt][Pp][Ss]?://') == nil then
|
||||
local extract_media_url = extract_media(url)
|
||||
if extract_media_url then
|
||||
return 'src="' .. extract_media_url .. '"'
|
||||
end
|
||||
return '123'
|
||||
end
|
||||
return 'src="' .. url .. '"'
|
||||
end)
|
||||
end)
|
||||
end
|
||||
return el
|
||||
end
|
||||
|
||||
function RawBlock(el)
|
||||
if el.format == "html" then
|
||||
el.format = 'markdown'
|
||||
end
|
||||
return el
|
||||
end
|
||||
|
||||
function Math(el)
|
||||
if Mode == 'hugo' then
|
||||
if el.mathtype == 'DisplayMath' then
|
||||
return raw('{{< mathjax >}}\n$$' .. el.text .. '$$\n{{</mathjax >}}')
|
||||
else
|
||||
el.text = string.gsub(el.text, '\\[\\{\\}]', function (v)
|
||||
return '\\' .. v
|
||||
end)
|
||||
el.text = string.gsub(el.text, '_', function (v)
|
||||
return '\\' .. v
|
||||
end)
|
||||
end
|
||||
end
|
||||
return el
|
||||
end
|
||||
|
||||
local function headerLink(input)
|
||||
-- github style section link
|
||||
return "#"..input:gsub(' ', '-')
|
||||
end
|
||||
|
||||
|
||||
local function insertLink(content, linkDescription)
|
||||
local descriptionText = table.concat(linkDescription, "")
|
||||
|
||||
if string.find(descriptionText, '|') then
|
||||
local target, desc = descriptionText:match("(.*)|(.*)")
|
||||
table.insert(content, pandoc.Link(desc, headerLink(target)))
|
||||
else
|
||||
table.insert(content, pandoc.Link(descriptionText, headerLink(descriptionText)))
|
||||
end
|
||||
end
|
||||
|
||||
function Para(el)
|
||||
local content = el.content
|
||||
content = ProcessMath(content)
|
||||
content = ProcessInternalLinks(content)
|
||||
el.content = content
|
||||
return el
|
||||
end
|
||||
|
||||
function ProcessMath(elements)
|
||||
local content = {}
|
||||
local in_display_math = false
|
||||
for _, item in pairs(elements) do
|
||||
if item.t == 'Str'and item.text == "$$" then
|
||||
in_display_math = not in_display_math
|
||||
else
|
||||
if in_display_math then
|
||||
if item.t == 'RawInline' and item.format == 'tex' then
|
||||
local n = pandoc.Math('DisplayMath', '\n' .. item.text .. '\n')
|
||||
table.insert(content, Math(n))
|
||||
else
|
||||
table.insert(content, item)
|
||||
end
|
||||
else
|
||||
table.insert(content, item)
|
||||
end
|
||||
end
|
||||
end
|
||||
return content
|
||||
end
|
||||
|
||||
function ProcessInternalLinks(elements)
|
||||
local content = {}
|
||||
local in_section_link = false
|
||||
local linkDescription = {}
|
||||
|
||||
for _, item in pairs(elements) do
|
||||
if item.t == 'Str' and string.starts_with(item.text, '[[#') then
|
||||
in_section_link = true
|
||||
table.insert(linkDescription, string.sub(item.text, 4))
|
||||
elseif in_section_link then
|
||||
if string.ends_with(item.text, ']]') then
|
||||
table.insert(linkDescription, string.sub(item.text, 1, -3))
|
||||
insertLink(content, linkDescription)
|
||||
in_section_link = false
|
||||
linkDescription = {}
|
||||
else
|
||||
table.insert(linkDescription, item.text)
|
||||
end
|
||||
else
|
||||
table.insert(content, item)
|
||||
end
|
||||
end
|
||||
return content
|
||||
end
|
||||
|
||||
function Plain(el)
|
||||
el.content = ProcessInternalLinks(el.content)
|
||||
return el
|
||||
end
|
||||
|
||||
function Pandoc(el)
|
||||
return el
|
||||
end
|
||||
@@ -0,0 +1,68 @@
|
||||
traverse = 'topdown'
|
||||
|
||||
math_block_text = nil
|
||||
function process(el)
|
||||
|
||||
-- MathBlock start or end
|
||||
if el.t == 'Str' and el.text == '$$' then
|
||||
if math_block_text == nil then -- start
|
||||
math_block_text = ''
|
||||
else -- end
|
||||
local math_block = pandoc.Math('DisplayMath', '\n' .. math_block_text .. '\n')
|
||||
math_block_text = nil
|
||||
return math_block
|
||||
end
|
||||
return {}
|
||||
end
|
||||
|
||||
if math_block_text then
|
||||
if (el.t == 'RawInline' or el.t == 'RawBlock') and el.format == 'tex' then
|
||||
math_block_text = math_block_text .. el.text
|
||||
return {}
|
||||
elseif el.t == 'Str' then
|
||||
math_block_text = math_block_text .. el.text
|
||||
return {}
|
||||
elseif el.t == 'SoftBreak' or el.t == 'BulletList' then
|
||||
return {}
|
||||
end
|
||||
end
|
||||
return el
|
||||
end
|
||||
|
||||
function RawInline(el)
|
||||
return process(el)
|
||||
end
|
||||
|
||||
function RawBlock(el)
|
||||
return process(el)
|
||||
end
|
||||
|
||||
function Str(el)
|
||||
return process(el)
|
||||
end
|
||||
|
||||
function SoftBreak(el)
|
||||
return process(el)
|
||||
end
|
||||
|
||||
function Header(el)
|
||||
return process(el)
|
||||
end
|
||||
|
||||
function Para(el)
|
||||
return process(el)
|
||||
end
|
||||
|
||||
function Plain(el)
|
||||
return process(el)
|
||||
end
|
||||
|
||||
function BulletList(el)
|
||||
return process(el)
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
-- minimum supported version for full environment
|
||||
-- support is 3.8.unkown yet to be released but probably 3
|
||||
local environment_fully_supported_version = pandoc.types.Version('3.8.3')
|
||||
local environment_partially_supported_version = pandoc.types.Version('3.8.0')
|
||||
local is_partially_supported = PANDOC_VERSION >= environment_partially_supported_version
|
||||
local problamatic_environments = {
|
||||
displaymath = true,
|
||||
math = true,
|
||||
equation = true,
|
||||
["equation*"] = true,
|
||||
gather = true,
|
||||
["gather*"] = true,
|
||||
multline = true,
|
||||
["multline*"] = true,
|
||||
eqnarray = true,
|
||||
["eqnarray*"] = true,
|
||||
align = true,
|
||||
["align*"] = true,
|
||||
alignat = true,
|
||||
["alignat*"] = true,
|
||||
flalign = true,
|
||||
["flalign*"] = true,
|
||||
}
|
||||
if is_partially_supported then
|
||||
return {
|
||||
{
|
||||
Math = function(elem)
|
||||
if elem.text:find("^%s*\\begin{") ~= nil then
|
||||
local replacement = pandoc.text:gsub(elem.text, "^%s*\\begin{(.-)}", "\\begin{%1}"):gsub("\\end{(.-)}%s*$", "\\end{%1}")
|
||||
return pandoc.Math(replacement, elem.mathtype)
|
||||
else
|
||||
return elem
|
||||
end
|
||||
end,
|
||||
}
|
||||
}
|
||||
elseif not environment_fully_supported_version then
|
||||
return {
|
||||
{
|
||||
Math = function(elem)
|
||||
local result = elem.text:match("^%s*\\begin{(%a+%*?)}")
|
||||
if result ~= nil and problamatic_environments[result] ~= nil then
|
||||
return pandoc.RawInline('tex', elem.text)
|
||||
else
|
||||
return elem
|
||||
end
|
||||
end,
|
||||
}
|
||||
}
|
||||
end
|
||||
@@ -0,0 +1,61 @@
|
||||
os.platform = nil
|
||||
if os.platform == nil then
|
||||
local libExt = package.cpath:match("%p[\\|/]?\\.%p(%a+)")
|
||||
if libExt == 'dll' then
|
||||
os.platform = "Windows"
|
||||
elseif libExt == 'so' then
|
||||
os.platform = "Linux"
|
||||
elseif libExt == 'dylib' then
|
||||
os.platform = "MacOS"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
os.copy = function(src, dest)
|
||||
if os.platform == "Windows" then
|
||||
src = string.gsub(src, "/", "\\")
|
||||
src = os.text.toencoding(src)
|
||||
dest = os.text.toencoding(dest)
|
||||
os.execute('copy "' .. src .. '" "' .. dest .. '" >NUL')
|
||||
else
|
||||
os.execute('cp "' .. src .. '" "' .. dest .. '"')
|
||||
end
|
||||
end
|
||||
|
||||
os.mkdir = function(dir)
|
||||
if os.exists(dir) then
|
||||
return
|
||||
end
|
||||
if os.platform == "Windows" then
|
||||
dir = os.text.toencoding(dir)
|
||||
os.execute('mkdir "' .. dir .. '"')
|
||||
else
|
||||
os.execute('mkdir -p "' .. dir .. '"')
|
||||
end
|
||||
end
|
||||
|
||||
os.exists = function(path)
|
||||
if os.platform == "Windows" then
|
||||
path = string.gsub(path, "/", "\\")
|
||||
path = os.text.toencoding(path)
|
||||
local _, _, code = os.execute('if exist "' .. path .. '" (exit 0) else (exit 1)')
|
||||
return code == 0
|
||||
else
|
||||
local _, _, code = os.execute('test -e "' .. path .. '"')
|
||||
return code == 0
|
||||
end
|
||||
end
|
||||
|
||||
string.starts_with = function(str, start)
|
||||
return str:sub(1, #start) == start
|
||||
end
|
||||
|
||||
string.ends_with = function(str, ending)
|
||||
return ending == "" or str:sub(-#ending) == ending
|
||||
end
|
||||
|
||||
|
||||
return {
|
||||
os = os,
|
||||
string = string
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
local function encode (str)
|
||||
str = string.gsub (str, "([^0-9a-zA-Z !'()*._~-])", -- locale independent
|
||||
function (c) return string.format ("%%%02X", string.byte(c)) end)
|
||||
str = string.gsub (str, " ", "%%20")
|
||||
return str
|
||||
end
|
||||
|
||||
|
||||
local function decode (str)
|
||||
str = string.gsub (str, "%%20", " ")
|
||||
str = string.gsub (str, "%%(%x%x)", function(h) return string.char(tonumber(h,16)) end)
|
||||
return str
|
||||
end
|
||||
|
||||
return {
|
||||
encode = encode,
|
||||
decode = decode
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"id":"obsidian-enhancing-export","name":"Enhancing Export","version":"1.10.11","minAppVersion":"1.6.3","description":"This is a enhancing export plugin for Obsidian. It allows to export to formats like Html, DOCX, ePub and PDF or Markdown(Hugo) etc.","author":"YISH","authorUrl":"https://github.com/mokeyish","isDesktopOnly":true}
|
||||
@@ -0,0 +1 @@
|
||||
.setting-item.ex-setting-item{border-top:unset;padding-top:0}*[hidden]{display:none}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,373 @@
|
||||
% partial rewrite of the LaTeX2e package for submissions to the
|
||||
% Conference on Neural Information Processing Systems (NeurIPS):
|
||||
%
|
||||
% - uses more LaTeX conventions
|
||||
% - line numbers at submission time replaced with aligned numbers from
|
||||
% lineno package
|
||||
% - \nipsfinalcopy replaced with [final] package option
|
||||
% - automatically loads times package for authors
|
||||
% - loads natbib automatically; this can be suppressed with the
|
||||
% [nonatbib] package option
|
||||
% - adds foot line to first page identifying the conference
|
||||
% - adds preprint option for submission to e.g. arXiv
|
||||
% - conference acronym modified
|
||||
%
|
||||
% Roman Garnett (garnett@wustl.edu) and the many authors of
|
||||
% nips15submit_e.sty, including MK and drstrip@sandia
|
||||
%
|
||||
% last revision: March 2023
|
||||
|
||||
\NeedsTeXFormat{LaTeX2e}
|
||||
\ProvidesPackage{neurips}[2023/03/31 NeurIPS 2023 submission/camera-ready style file]
|
||||
|
||||
% declare final option, which creates camera-ready copy
|
||||
\newif\if@neuripsfinal\@neuripsfinalfalse
|
||||
\DeclareOption{final}{
|
||||
\@neuripsfinaltrue
|
||||
}
|
||||
|
||||
% declare nonatbib option, which does not load natbib in case of
|
||||
% package clash (users can pass options to natbib via
|
||||
% \PassOptionsToPackage)
|
||||
\newif\if@natbib\@natbibtrue
|
||||
\DeclareOption{nonatbib}{
|
||||
\@natbibfalse
|
||||
}
|
||||
|
||||
% declare preprint option, which creates a preprint version ready for
|
||||
% upload to, e.g., arXiv
|
||||
\newif\if@preprint\@preprintfalse
|
||||
\DeclareOption{preprint}{
|
||||
\@preprinttrue
|
||||
}
|
||||
|
||||
\ProcessOptions\relax
|
||||
|
||||
% determine whether this is an anonymized submission
|
||||
\newif\if@submission\@submissiontrue
|
||||
\if@neuripsfinal\@submissionfalse\fi
|
||||
\if@preprint\@submissionfalse\fi
|
||||
|
||||
% fonts
|
||||
\renewcommand{\rmdefault}{ptm}
|
||||
\renewcommand{\sfdefault}{phv}
|
||||
|
||||
% change this every year for notice string at bottom
|
||||
\newcommand{\@neuripsordinal}{}
|
||||
\newcommand{\@neuripsyear}{\the\year}
|
||||
\newcommand{\@neuripslocation}{}
|
||||
|
||||
% acknowledgments
|
||||
\usepackage{environ}
|
||||
\newcommand{\acksection}{\section*{Acknowledgments and Disclosure of Funding}}
|
||||
\NewEnviron{ack}{%
|
||||
\acksection
|
||||
\BODY
|
||||
}
|
||||
|
||||
|
||||
% load natbib unless told otherwise
|
||||
\if@natbib
|
||||
\RequirePackage{natbib}
|
||||
\fi
|
||||
|
||||
% set page geometry
|
||||
\usepackage[verbose=true,letterpaper]{geometry}
|
||||
\AtBeginDocument{
|
||||
\newgeometry{
|
||||
textheight=9in,
|
||||
textwidth=5.5in,
|
||||
top=1in,
|
||||
headheight=12pt,
|
||||
headsep=25pt,
|
||||
footskip=30pt
|
||||
}
|
||||
\@ifpackageloaded{fullpage}
|
||||
{\PackageWarning{neurips_2023}{fullpage package not allowed! Overwriting formatting.}}
|
||||
{}
|
||||
}
|
||||
|
||||
\widowpenalty=10000
|
||||
\clubpenalty=10000
|
||||
\flushbottom
|
||||
\sloppy
|
||||
|
||||
|
||||
% font sizes with reduced leading
|
||||
\renewcommand{\normalsize}{%
|
||||
\@setfontsize\normalsize\@xpt\@xipt
|
||||
\abovedisplayskip 7\p@ \@plus 2\p@ \@minus 5\p@
|
||||
\abovedisplayshortskip \z@ \@plus 3\p@
|
||||
\belowdisplayskip \abovedisplayskip
|
||||
\belowdisplayshortskip 4\p@ \@plus 3\p@ \@minus 3\p@
|
||||
}
|
||||
\normalsize
|
||||
\renewcommand{\small}{%
|
||||
\@setfontsize\small\@ixpt\@xpt
|
||||
\abovedisplayskip 6\p@ \@plus 1.5\p@ \@minus 4\p@
|
||||
\abovedisplayshortskip \z@ \@plus 2\p@
|
||||
\belowdisplayskip \abovedisplayskip
|
||||
\belowdisplayshortskip 3\p@ \@plus 2\p@ \@minus 2\p@
|
||||
}
|
||||
\renewcommand{\footnotesize}{\@setfontsize\footnotesize\@ixpt\@xpt}
|
||||
\renewcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt}
|
||||
\renewcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt}
|
||||
\renewcommand{\large}{\@setfontsize\large\@xiipt{14}}
|
||||
\renewcommand{\Large}{\@setfontsize\Large\@xivpt{16}}
|
||||
\renewcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{20}}
|
||||
\renewcommand{\huge}{\@setfontsize\huge\@xxpt{23}}
|
||||
\renewcommand{\Huge}{\@setfontsize\Huge\@xxvpt{28}}
|
||||
|
||||
% sections with less space
|
||||
\providecommand{\section}{}
|
||||
\renewcommand{\section}{%
|
||||
\@startsection{section}{1}{\z@}%
|
||||
{-2.0ex \@plus -0.5ex \@minus -0.2ex}%
|
||||
{ 1.5ex \@plus 0.3ex \@minus 0.2ex}%
|
||||
{\large\bf\raggedright}%
|
||||
}
|
||||
\providecommand{\subsection}{}
|
||||
\renewcommand{\subsection}{%
|
||||
\@startsection{subsection}{2}{\z@}%
|
||||
{-1.8ex \@plus -0.5ex \@minus -0.2ex}%
|
||||
{ 0.8ex \@plus 0.2ex}%
|
||||
{\normalsize\bf\raggedright}%
|
||||
}
|
||||
\providecommand{\subsubsection}{}
|
||||
\renewcommand{\subsubsection}{%
|
||||
\@startsection{subsubsection}{3}{\z@}%
|
||||
{-1.5ex \@plus -0.5ex \@minus -0.2ex}%
|
||||
{ 0.5ex \@plus 0.2ex}%
|
||||
{\normalsize\bf\raggedright}%
|
||||
}
|
||||
\providecommand{\paragraph}{}
|
||||
\renewcommand{\paragraph}{%
|
||||
\@startsection{paragraph}{4}{\z@}%
|
||||
{1.5ex \@plus 0.5ex \@minus 0.2ex}%
|
||||
{-1em}%
|
||||
{\normalsize\bf}%
|
||||
}
|
||||
\providecommand{\subparagraph}{}
|
||||
\renewcommand{\subparagraph}{%
|
||||
\@startsection{subparagraph}{5}{\z@}%
|
||||
{1.5ex \@plus 0.5ex \@minus 0.2ex}%
|
||||
{-1em}%
|
||||
{\normalsize\bf}%
|
||||
}
|
||||
\providecommand{\subsubsubsection}{}
|
||||
\renewcommand{\subsubsubsection}{%
|
||||
\vskip5pt{\noindent\normalsize\rm\raggedright}%
|
||||
}
|
||||
|
||||
% float placement
|
||||
\renewcommand{\topfraction }{0.85}
|
||||
\renewcommand{\bottomfraction }{0.4}
|
||||
\renewcommand{\textfraction }{0.1}
|
||||
\renewcommand{\floatpagefraction}{0.7}
|
||||
|
||||
\newlength{\@neuripsabovecaptionskip}\setlength{\@neuripsabovecaptionskip}{7\p@}
|
||||
\newlength{\@neuripsbelowcaptionskip}\setlength{\@neuripsbelowcaptionskip}{\z@}
|
||||
|
||||
\setlength{\abovecaptionskip}{\@neuripsabovecaptionskip}
|
||||
\setlength{\belowcaptionskip}{\@neuripsbelowcaptionskip}
|
||||
|
||||
% swap above/belowcaptionskip lengths for tables
|
||||
\renewenvironment{table}
|
||||
{\setlength{\abovecaptionskip}{\@neuripsbelowcaptionskip}%
|
||||
\setlength{\belowcaptionskip}{\@neuripsabovecaptionskip}%
|
||||
\@float{table}}
|
||||
{\end@float}
|
||||
|
||||
% footnote formatting
|
||||
\setlength{\footnotesep }{6.65\p@}
|
||||
\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
|
||||
\renewcommand{\footnoterule}{\kern-3\p@ \hrule width 12pc \kern 2.6\p@}
|
||||
\setcounter{footnote}{0}
|
||||
|
||||
% paragraph formatting
|
||||
\setlength{\parindent}{\z@}
|
||||
\setlength{\parskip }{5.5\p@}
|
||||
|
||||
% list formatting
|
||||
\setlength{\topsep }{4\p@ \@plus 1\p@ \@minus 2\p@}
|
||||
\setlength{\partopsep }{1\p@ \@plus 0.5\p@ \@minus 0.5\p@}
|
||||
\setlength{\itemsep }{2\p@ \@plus 1\p@ \@minus 0.5\p@}
|
||||
\setlength{\parsep }{2\p@ \@plus 1\p@ \@minus 0.5\p@}
|
||||
\setlength{\leftmargin }{3pc}
|
||||
\setlength{\leftmargini }{\leftmargin}
|
||||
\setlength{\leftmarginii }{2em}
|
||||
\setlength{\leftmarginiii}{1.5em}
|
||||
\setlength{\leftmarginiv }{1.0em}
|
||||
\setlength{\leftmarginv }{0.5em}
|
||||
\def\@listi {\leftmargin\leftmargini}
|
||||
\def\@listii {\leftmargin\leftmarginii
|
||||
\labelwidth\leftmarginii
|
||||
\advance\labelwidth-\labelsep
|
||||
\topsep 2\p@ \@plus 1\p@ \@minus 0.5\p@
|
||||
\parsep 1\p@ \@plus 0.5\p@ \@minus 0.5\p@
|
||||
\itemsep \parsep}
|
||||
\def\@listiii{\leftmargin\leftmarginiii
|
||||
\labelwidth\leftmarginiii
|
||||
\advance\labelwidth-\labelsep
|
||||
\topsep 1\p@ \@plus 0.5\p@ \@minus 0.5\p@
|
||||
\parsep \z@
|
||||
\partopsep 0.5\p@ \@plus 0\p@ \@minus 0.5\p@
|
||||
\itemsep \topsep}
|
||||
\def\@listiv {\leftmargin\leftmarginiv
|
||||
\labelwidth\leftmarginiv
|
||||
\advance\labelwidth-\labelsep}
|
||||
\def\@listv {\leftmargin\leftmarginv
|
||||
\labelwidth\leftmarginv
|
||||
\advance\labelwidth-\labelsep}
|
||||
\def\@listvi {\leftmargin\leftmarginvi
|
||||
\labelwidth\leftmarginvi
|
||||
\advance\labelwidth-\labelsep}
|
||||
|
||||
% create title
|
||||
\providecommand{\maketitle}{}
|
||||
\renewcommand{\maketitle}{%
|
||||
\par
|
||||
\begingroup
|
||||
\renewcommand{\thefootnote}{\fnsymbol{footnote}}
|
||||
% for perfect author name centering
|
||||
\renewcommand{\@makefnmark}{\hbox to \z@{$^{\@thefnmark}$\hss}}
|
||||
% The footnote-mark was overlapping the footnote-text,
|
||||
% added the following to fix this problem (MK)
|
||||
\long\def\@makefntext##1{%
|
||||
\parindent 1em\noindent
|
||||
\hbox to 1.8em{\hss $\m@th ^{\@thefnmark}$}##1
|
||||
}
|
||||
\thispagestyle{empty}
|
||||
\@maketitle
|
||||
\@thanks
|
||||
\@notice
|
||||
\endgroup
|
||||
\let\maketitle\relax
|
||||
\let\thanks\relax
|
||||
}
|
||||
|
||||
% rules for title box at top of first page
|
||||
\newcommand{\@toptitlebar}{
|
||||
\hrule height 4\p@
|
||||
\vskip 0.25in
|
||||
\vskip -\parskip%
|
||||
}
|
||||
\newcommand{\@bottomtitlebar}{
|
||||
\vskip 0.29in
|
||||
\vskip -\parskip
|
||||
\hrule height 1\p@
|
||||
\vskip 0.09in%
|
||||
}
|
||||
|
||||
% create title (includes both anonymized and non-anonymized versions)
|
||||
\providecommand{\@maketitle}{}
|
||||
\renewcommand{\@maketitle}{%
|
||||
\vbox{%
|
||||
\hsize\textwidth
|
||||
\linewidth\hsize
|
||||
\vskip 0.1in
|
||||
\@toptitlebar
|
||||
\centering
|
||||
{\LARGE\bf \@title\par}
|
||||
\@bottomtitlebar
|
||||
\if@submission
|
||||
\begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}
|
||||
Anonymous Author(s) \\
|
||||
Affiliation \\
|
||||
Address \\
|
||||
\texttt{email} \\
|
||||
\end{tabular}%
|
||||
\else
|
||||
\def\And{%
|
||||
\end{tabular}\hfil\linebreak[0]\hfil%
|
||||
\begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\ignorespaces%
|
||||
}
|
||||
\def\AND{%
|
||||
\end{tabular}\hfil\linebreak[4]\hfil%
|
||||
\begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\ignorespaces%
|
||||
}
|
||||
\begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\@author\end{tabular}%
|
||||
\fi
|
||||
\vskip 0.3in \@minus 0.1in
|
||||
}
|
||||
}
|
||||
|
||||
% add conference notice to bottom of first page
|
||||
\newcommand{\ftype@noticebox}{8}
|
||||
\newcommand{\@notice}{%
|
||||
% give a bit of extra room back to authors on first page
|
||||
\enlargethispage{2\baselineskip}%
|
||||
\@float{noticebox}[b]%
|
||||
\footnotesize\@noticestring%
|
||||
\end@float%
|
||||
}
|
||||
|
||||
% abstract styling
|
||||
\renewenvironment{abstract}%
|
||||
{%
|
||||
\vskip 0.075in%
|
||||
\centerline%
|
||||
{\large\bf Abstract}%
|
||||
\vspace{0.5ex}%
|
||||
\begin{quote}%
|
||||
}
|
||||
{
|
||||
\par%
|
||||
\end{quote}%
|
||||
\vskip 1ex%
|
||||
}
|
||||
|
||||
% handle tweaks for camera-ready copy vs. submission copy
|
||||
\if@preprint
|
||||
\newcommand{\@noticestring}{%
|
||||
Preprint. Under review.%
|
||||
}
|
||||
\else
|
||||
\if@neuripsfinal
|
||||
\newcommand{\@noticestring}{%
|
||||
(\@neuripsyear) \@title
|
||||
}
|
||||
\else
|
||||
\newcommand{\@noticestring}{%
|
||||
(\@neuripsyear) \@title %
|
||||
}
|
||||
|
||||
% hide the acknowledgements
|
||||
\NewEnviron{hide}{}
|
||||
\let\ack\hide
|
||||
\let\endack\endhide
|
||||
|
||||
% line numbers for submission
|
||||
\RequirePackage{lineno}
|
||||
\linenumbers
|
||||
|
||||
% fix incompatibilities between lineno and amsmath, if required, by
|
||||
% transparently wrapping linenomath environments around amsmath
|
||||
% environments
|
||||
\AtBeginDocument{%
|
||||
\@ifpackageloaded{amsmath}{%
|
||||
\newcommand*\patchAmsMathEnvironmentForLineno[1]{%
|
||||
\expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname
|
||||
\expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname
|
||||
\renewenvironment{#1}%
|
||||
{\linenomath\csname old#1\endcsname}%
|
||||
{\csname oldend#1\endcsname\endlinenomath}%
|
||||
}%
|
||||
\newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{%
|
||||
\patchAmsMathEnvironmentForLineno{#1}%
|
||||
\patchAmsMathEnvironmentForLineno{#1*}%
|
||||
}%
|
||||
\patchBothAmsMathEnvironmentsForLineno{equation}%
|
||||
\patchBothAmsMathEnvironmentsForLineno{align}%
|
||||
\patchBothAmsMathEnvironmentsForLineno{flalign}%
|
||||
\patchBothAmsMathEnvironmentsForLineno{alignat}%
|
||||
\patchBothAmsMathEnvironmentsForLineno{gather}%
|
||||
\patchBothAmsMathEnvironmentsForLineno{multline}%
|
||||
}
|
||||
{}
|
||||
}
|
||||
\fi
|
||||
\fi
|
||||
|
||||
|
||||
\endinput
|
||||
@@ -0,0 +1,187 @@
|
||||
% This template was tested with Pandoc 3.4 and pandoc-crossref v0.3.18.0. It should be backwards compatible with older version of pandoc..
|
||||
\documentclass{article}
|
||||
|
||||
|
||||
% if you need to pass options to natbib, use, e.g.:
|
||||
% \PassOptionsToPackage{numbers, compress}{natbib}
|
||||
% before loading neurips_2023
|
||||
|
||||
|
||||
% ready for submission
|
||||
\usepackage[final,nonatbib]{neurips}
|
||||
|
||||
|
||||
% to compile a preprint version, e.g., for submission to arXiv, add add the
|
||||
% [preprint] option:
|
||||
% \usepackage[preprint]{neurips_2023}
|
||||
|
||||
|
||||
% to compile a camera-ready version, add the [final] option, e.g.:
|
||||
% \usepackage[final]{neurips_2023}
|
||||
|
||||
|
||||
% to avoid loading the natbib package, add option nonatbib:
|
||||
% \usepackage[nonatbib]{neurips_2023}
|
||||
|
||||
|
||||
\usepackage[utf8]{inputenc} % allow utf-8 input
|
||||
\usepackage[T1]{fontenc} % use 8-bit T1 fonts
|
||||
\usepackage{hyperref} % hyperlinks
|
||||
\usepackage{url} % simple URL typesetting
|
||||
\usepackage{booktabs} % professional-quality tables
|
||||
\usepackage{amsfonts} % blackboard math symbols
|
||||
\usepackage{nicefrac} % compact symbols for 1/2, etc.
|
||||
\usepackage{microtype} % microtypography
|
||||
\usepackage{xcolor} % colors
|
||||
\usepackage{graphicx}
|
||||
\usepackage{longtable} % Add support for Pandoc's longtable if needed
|
||||
\usepackage{array} % For table alignment improvements
|
||||
\usepackage{amsmath}
|
||||
\usepackage{textcomp}
|
||||
\setlength{\LTcapwidth}{\textwidth} % To make captions fit within page width
|
||||
|
||||
\makeatletter
|
||||
\newsavebox\pandoc@box
|
||||
\newcommand*\pandocbounded[1]{% scales image to fit in text height/width
|
||||
\sbox\pandoc@box{#1}%
|
||||
\Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}%
|
||||
\Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}%
|
||||
\ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both
|
||||
\ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}%
|
||||
\else\usebox{\pandoc@box}%
|
||||
\fi%
|
||||
}
|
||||
\makeatother
|
||||
\makeatletter
|
||||
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
|
||||
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
|
||||
\makeatother
|
||||
% Scale images if necessary, so that they will not overflow the page
|
||||
% margins by default, and it is still possible to overwrite the defaults
|
||||
% using explicit options in \includegraphics[width, height, ...]{}
|
||||
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
|
||||
% Set default figure placement to htbp
|
||||
\makeatletter
|
||||
\def\fps@figure{htbp}
|
||||
\makeatother
|
||||
|
||||
$if(csl-refs)$
|
||||
% definitions for citeproc citations
|
||||
\NewDocumentCommand\citeproctext{}{}
|
||||
\NewDocumentCommand\citeproc{mm}{%
|
||||
\begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
|
||||
\makeatletter
|
||||
% allow citations to break across lines
|
||||
\let\@cite@ofmt\@firstofone
|
||||
% avoid brackets around text for \cite:
|
||||
\def\@biblabel#1{}
|
||||
\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
|
||||
\makeatother
|
||||
\newlength{\cslhangindent}
|
||||
\setlength{\cslhangindent}{1.5em}
|
||||
\newlength{\csllabelwidth}
|
||||
\setlength{\csllabelwidth}{3em}
|
||||
\newenvironment{CSLReferences}[2] % #1 hanging-indent, #2 entry-spacing
|
||||
{\begin{list}{}{%
|
||||
\setlength{\itemindent}{0pt}
|
||||
\setlength{\leftmargin}{0pt}
|
||||
\setlength{\parsep}{0pt}
|
||||
% turn on hanging indent if param 1 is 1
|
||||
\ifodd #1
|
||||
\setlength{\leftmargin}{\cslhangindent}
|
||||
\setlength{\itemindent}{-1\cslhangindent}
|
||||
\fi
|
||||
% set entry spacing
|
||||
\setlength{\itemsep}{#2\baselineskip}}}
|
||||
{\end{list}}
|
||||
\usepackage{calc}
|
||||
\newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
|
||||
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
|
||||
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
|
||||
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
|
||||
$endif$
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
\title{$title$}
|
||||
|
||||
|
||||
% Iterate through the authors except last to add \And.
|
||||
|
||||
\author{%
|
||||
$for(authors/allbutlast)$
|
||||
$authors.name$\\$authors.affiliation$\\$authors.institution$\\$authors.email$\\$authors.address$ \And
|
||||
$endfor$
|
||||
$for(authors/last)$
|
||||
$authors.name$\\$authors.affiliation$\\$authors.institution$\\$authors.email$\\$authors.address$
|
||||
$endfor$
|
||||
}
|
||||
|
||||
% \author{%
|
||||
% David S.~Hippocampus \\
|
||||
% Department of Computer Science\\
|
||||
% Cranberry-Lemon University\\
|
||||
% Pittsburgh, PA 15213 \\
|
||||
% \texttt{hippo@cs.cranberry-lemon.edu} \\
|
||||
% % examples of more authors
|
||||
% % \And
|
||||
% % Coauthor \\
|
||||
% % Affiliation \\
|
||||
% % Address \\
|
||||
% % \texttt{email} \\
|
||||
% % \AND
|
||||
% % Coauthor \\
|
||||
% % Affiliation \\
|
||||
% % Address \\
|
||||
% % \texttt{email} \\
|
||||
% % \And
|
||||
% % Coauthor \\
|
||||
% % Affiliation \\
|
||||
% % Address \\
|
||||
% % \texttt{email} \\
|
||||
% % \And
|
||||
% % Coauthor \\
|
||||
% % Affiliation \\
|
||||
% % Address \\
|
||||
% % \texttt{email} \\
|
||||
% }
|
||||
|
||||
|
||||
\begin{document}
|
||||
|
||||
|
||||
\maketitle
|
||||
|
||||
|
||||
\begin{abstract}
|
||||
$if(abstract)$
|
||||
$abstract$
|
||||
$else$
|
||||
Add your abstract at the beginning of your markdown file like this
|
||||
\begin{verbatim}
|
||||
---
|
||||
title: "Your Title"
|
||||
abstract: "your abstract here"
|
||||
authors:
|
||||
- name: Leonardo V. Castorina
|
||||
affiliation: School of Informatics
|
||||
institution: University of Edinburgh
|
||||
email: justanemail@domain.ext
|
||||
address: Edinburgh
|
||||
- name: Coauthor
|
||||
affiliation: Affiliation
|
||||
institution: Institution
|
||||
email: coauthor@example.com
|
||||
address: Address
|
||||
---
|
||||
\end{verbatim}
|
||||
This is called YAML frontmatter. If you set your abstract correctly you should not see this message.
|
||||
$endif$
|
||||
\end{abstract}
|
||||
|
||||
|
||||
$body$
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
\end{document}
|
||||
+208703
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"id":"obsidian-excalidraw-plugin","name":"Excalidraw","version":"2.18.1","minAppVersion":"1.5.7","description":"An Obsidian plugin to edit and view Excalidraw drawings","author":"Zsolt Viczian","authorUrl":"https://excalidraw-obsidian.online","fundingUrl":"https://ko-fi.com/zsolt","helpUrl":"https://github.com/zsviczian/obsidian-excalidraw-plugin#readme","isDesktopOnly":false}
|
||||
File diff suppressed because one or more lines are too long
+57
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"commitMessage": "chore(vault): backup {{date}}",
|
||||
"commitDateFormat": "YYYY-MM-DD HH:mm:ss",
|
||||
"autoSaveInterval": 15,
|
||||
"autoPushInterval": 0,
|
||||
"autoPullInterval": 30,
|
||||
"autoPullOnBoot": true,
|
||||
"disablePush": false,
|
||||
"pullBeforePush": true,
|
||||
"disablePopups": false,
|
||||
"disablePopupsForNoChanges": false,
|
||||
"listChangedFilesInMessageBody": false,
|
||||
"showStatusBar": true,
|
||||
"updateSubmodules": false,
|
||||
"syncMethod": "rebase",
|
||||
"customMessageOnAutoBackup": false,
|
||||
"autoBackupAfterFileChange": true,
|
||||
"treeStructure": false,
|
||||
"refreshSourceControl": true,
|
||||
"differentIntervalCommitAndPush": false,
|
||||
"changedFilesInStatusBar": false,
|
||||
"showedMobileNotice": true,
|
||||
"refreshSourceControlTimer": 7000,
|
||||
"showBranchStatusBar": true,
|
||||
"setLastSaveToLastCommit": true,
|
||||
"submoduleRecurseCheckout": false,
|
||||
"gitDir": "",
|
||||
"showFileMenu": true,
|
||||
"authorInHistoryView": "hide",
|
||||
"dateInHistoryView": false,
|
||||
"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"
|
||||
},
|
||||
"autoCommitMessage": "chore(vault): backup {{date}}"
|
||||
}
|
||||
+424
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"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.35.2"}
|
||||
@@ -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"
|
||||
+629
@@ -0,0 +1,629 @@
|
||||
@keyframes loading {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="git-view"] .button-border {
|
||||
border: 2px solid var(--interactive-accent);
|
||||
border-radius: var(--radius-s);
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="git-view"] .view-content {
|
||||
padding-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%;
|
||||
}
|
||||
|
||||
.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);
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-d-none {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-wrapper {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-header {
|
||||
background-color: var(--background-primary);
|
||||
border-bottom: 1px solid var(--interactive-accent);
|
||||
font-family: var(--font-monospace);
|
||||
height: 35px;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-header,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats {
|
||||
font-size: 14px;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-lines-added {
|
||||
border: 1px solid #b4e2b4;
|
||||
border-radius: 5px 0 0 5px;
|
||||
color: #399839;
|
||||
padding: 2px;
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-lines-deleted {
|
||||
border: 1px solid #e9aeae;
|
||||
border-radius: 0 5px 5px 0;
|
||||
color: #c33;
|
||||
margin-left: 1px;
|
||||
padding: 2px;
|
||||
text-align: left;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-name-wrapper {
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
font-size: 15px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-name {
|
||||
overflow-x: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-wrapper {
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: 3px;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse {
|
||||
-webkit-box-pack: end;
|
||||
-ms-flex-pack: end;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: 3px;
|
||||
cursor: pointer;
|
||||
display: none;
|
||||
font-size: 12px;
|
||||
justify-content: flex-end;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse.d2h-selected {
|
||||
background-color: #c8e1ff;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse-input {
|
||||
margin: 0 4px 0 0;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-diff-table {
|
||||
border-collapse: collapse;
|
||||
font-family: Menlo, Consolas, monospace;
|
||||
font-size: 13px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-files-diff {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-diff {
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-side-diff {
|
||||
display: inline-block;
|
||||
margin-bottom: -8px;
|
||||
margin-right: -4px;
|
||||
overflow-x: scroll;
|
||||
overflow-y: hidden;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line {
|
||||
padding: 0 8em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line {
|
||||
display: inline-block;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line {
|
||||
padding: 0 4.5em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-ctn {
|
||||
word-wrap: normal;
|
||||
background: none;
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
-webkit-user-select: text;
|
||||
-moz-user-select: text;
|
||||
-ms-user-select: text;
|
||||
user-select: text;
|
||||
vertical-align: middle;
|
||||
white-space: pre;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
|
||||
.theme-light
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-code-side-line
|
||||
del {
|
||||
background-color: #ffb6ba;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
|
||||
.theme-dark
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-code-side-line
|
||||
del {
|
||||
background-color: #8d232881;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins {
|
||||
border-radius: 0.2em;
|
||||
display: inline-block;
|
||||
margin-top: -1px;
|
||||
text-decoration: none;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
|
||||
.theme-light
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-code-side-line
|
||||
ins {
|
||||
background-color: #97f295;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
|
||||
.theme-dark
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-code-side-line
|
||||
ins {
|
||||
background-color: #1d921996;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix {
|
||||
word-wrap: normal;
|
||||
background: none;
|
||||
display: inline;
|
||||
padding: 0;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .line-num1 {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .line-num1,
|
||||
.workspace-leaf-content[data-type="diff-view"] .line-num2 {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
padding: 0 0.5em;
|
||||
text-overflow: ellipsis;
|
||||
width: 3.5em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .line-num2 {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber {
|
||||
background-color: var(--background-primary);
|
||||
border: solid var(--background-modifier-border);
|
||||
border-width: 0 1px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: var(--text-muted);
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
text-align: right;
|
||||
width: 7.5em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber:after {
|
||||
content: "\200b";
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber {
|
||||
background-color: var(--background-primary);
|
||||
border: solid var(--background-modifier-border);
|
||||
border-width: 0 1px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: var(--text-muted);
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
padding: 0 0.5em;
|
||||
position: absolute;
|
||||
text-align: right;
|
||||
text-overflow: ellipsis;
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-diff-tbody tr {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber:after {
|
||||
content: "\200b";
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-emptyplaceholder,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder {
|
||||
background-color: var(--background-primary);
|
||||
border-color: var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber {
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-del {
|
||||
background-color: #fee8e9;
|
||||
border-color: #e9aeae;
|
||||
}
|
||||
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-ins {
|
||||
background-color: #dfd;
|
||||
border-color: #b4e2b4;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-del {
|
||||
background-color: #521b1d83;
|
||||
border-color: #691d1d73;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-ins {
|
||||
background-color: rgba(30, 71, 30, 0.5);
|
||||
border-color: #13501381;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-info {
|
||||
background-color: var(--background-primary);
|
||||
border-color: var(--background-modifier-border);
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
.theme-light
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-file-diff
|
||||
.d2h-del.d2h-change {
|
||||
background-color: #fdf2d0;
|
||||
}
|
||||
|
||||
.theme-dark
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-file-diff
|
||||
.d2h-del.d2h-change {
|
||||
background-color: #55492480;
|
||||
}
|
||||
|
||||
.theme-light
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-file-diff
|
||||
.d2h-ins.d2h-change {
|
||||
background-color: #ded;
|
||||
}
|
||||
|
||||
.theme-dark
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-file-diff
|
||||
.d2h-ins.d2h-change {
|
||||
background-color: rgba(37, 78, 37, 0.418);
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a {
|
||||
color: #3572b0;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-file-list-wrapper
|
||||
a:visited {
|
||||
color: #3572b0;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-header {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-title {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-line {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list {
|
||||
display: block;
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li {
|
||||
border-bottom: 1px solid var(--background-modifier-border);
|
||||
margin: 0;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-switch {
|
||||
cursor: pointer;
|
||||
display: none;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-icon {
|
||||
fill: currentColor;
|
||||
margin-right: 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-deleted {
|
||||
color: #c33;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-added {
|
||||
color: #399839;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-changed {
|
||||
color: #d0b44c;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-moved {
|
||||
color: #3572b0;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-tag {
|
||||
background-color: var(--background-primary);
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
font-size: 10px;
|
||||
margin-left: 5px;
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-deleted-tag {
|
||||
border: 2px solid #c33;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-added-tag {
|
||||
border: 1px solid #399839;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-changed-tag {
|
||||
border: 1px solid #d0b44c;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-moved-tag {
|
||||
border: 1px solid #3572b0;
|
||||
}
|
||||
|
||||
/* ====================== Line Authoring Information ====================== */
|
||||
|
||||
.cm-gutterElement.obs-git-blame-gutter {
|
||||
/* Add background color to spacing inbetween and around the gutter for better aesthetics */
|
||||
border-width: 0px 2px 0.2px 2px;
|
||||
border-style: solid;
|
||||
border-color: var(--background-secondary);
|
||||
background-color: var(--background-secondary);
|
||||
}
|
||||
|
||||
.cm-gutterElement.obs-git-blame-gutter > div,
|
||||
.line-author-settings-preview {
|
||||
/* delegate text color to settings */
|
||||
color: var(--obs-git-gutter-text);
|
||||
font-family: monospace;
|
||||
height: 100%; /* ensure, that age-based background color occupies entire parent */
|
||||
text-align: right;
|
||||
padding: 0px 6px 0px 6px;
|
||||
white-space: pre; /* Keep spaces and do not collapse them. */
|
||||
}
|
||||
|
||||
@media (max-width: 800px) {
|
||||
/* hide git blame gutter not to superpose text */
|
||||
.cm-gutterElement.obs-git-blame-gutter {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.git-unified-diff-view,
|
||||
.git-split-diff-view .cm-deletedLine .cm-changedText {
|
||||
background-color: #ee443330;
|
||||
}
|
||||
|
||||
.git-unified-diff-view,
|
||||
.git-split-diff-view .cm-insertedLine .cm-changedText {
|
||||
background-color: #22bb2230;
|
||||
}
|
||||
|
||||
.git-obscure-prompt[git-is-obscured="true"] #git-show-password:after {
|
||||
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg>');
|
||||
}
|
||||
|
||||
.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after {
|
||||
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye-off"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"></path><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"></path><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"></path><path d="m2 2 20 20"></path></svg>');
|
||||
}
|
||||
|
||||
/* Override styling of Codemirror merge view "collapsed lines" indicator */
|
||||
.git-split-diff-view .ͼ2 .cm-collapsedLines {
|
||||
background: var(--interactive-normal);
|
||||
border-radius: var(--radius-m);
|
||||
color: var(--text-accent);
|
||||
font-size: var(--font-small);
|
||||
padding: var(--size-4-1) var(--size-4-1);
|
||||
}
|
||||
.git-split-diff-view .ͼ2 .cm-collapsedLines:hover {
|
||||
background: var(--interactive-hover);
|
||||
color: var(--text-accent-hover);
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"viewMode": "Pin",
|
||||
"viewImageInEditor": true,
|
||||
"viewImageInCPB": true,
|
||||
"viewImageWithLink": true,
|
||||
"viewImageOther": true,
|
||||
"pinMaximum": 3,
|
||||
"pinCoverMode": true,
|
||||
"imageMoveSpeed": 10,
|
||||
"imgTipToggle": true,
|
||||
"imgFullScreenMode": "FIT",
|
||||
"imgViewBackgroundColor": "#00000000",
|
||||
"imageBorderToggle": false,
|
||||
"imageBorderWidth": "medium",
|
||||
"imageBorderStyle": "solid",
|
||||
"imageBorderColor": "red",
|
||||
"galleryNavbarToggle": true,
|
||||
"galleryNavbarDefaultColor": "#0000001A",
|
||||
"galleryNavbarHoverColor": "#0000004D",
|
||||
"galleryImgBorderActive": true,
|
||||
"galleryImgBorderActiveColor": "#FF0000",
|
||||
"moveTheImageHotkey": "NONE",
|
||||
"switchTheImageHotkey": "CTRL",
|
||||
"doubleClickToolbar": "toolbar_full_screen",
|
||||
"viewTriggerHotkey": "NONE"
|
||||
}
|
||||
+3292
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"id": "obsidian-image-toolkit",
|
||||
"name": "Image Toolkit",
|
||||
"version": "1.4.3",
|
||||
"minAppVersion": "1.8.7",
|
||||
"description": "Click images to preview with zoom, move, rotate, flip, invert, and copy.",
|
||||
"author": "Xiangru",
|
||||
"authorUrl": "https://github.com/sissilab",
|
||||
"isDesktopOnly": true
|
||||
}
|
||||
+747
@@ -0,0 +1,747 @@
|
||||
body {
|
||||
--layer-image-toolkit-popup: 1024;
|
||||
--layer-image-toolkit-player: 1025;
|
||||
--layer-image-toolkit-notice: 1026;
|
||||
--layer-menu: 1027;
|
||||
}
|
||||
|
||||
.menu {
|
||||
z-index: var(--layer-menu);
|
||||
}
|
||||
|
||||
.notice-container {
|
||||
z-index: var(--layer-image-toolkit-notice);
|
||||
}
|
||||
|
||||
.oit li::before {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.image-toolkit-img-invert {
|
||||
filter: invert(1) hue-rotate(180deg);
|
||||
mix-blend-mode: screen;
|
||||
}
|
||||
|
||||
.oit-normal {
|
||||
position: fixed;
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: rgba(0, 0, 0, .6);
|
||||
z-index: var(--layer-image-toolkit-popup);
|
||||
display: none;
|
||||
}
|
||||
|
||||
.oit-pin {
|
||||
position: fixed;
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
z-index: var(--layer-image-toolkit-popup);
|
||||
display: none;
|
||||
}
|
||||
|
||||
.oit .oit-img-container {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.oit .oit-img-container .oit-img-view {
|
||||
max-height: none;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.oit-pin .oit-img-container .oit-img-view {
|
||||
position: fixed;
|
||||
pointer-events: auto;
|
||||
box-shadow: 0 0 5px;
|
||||
}
|
||||
|
||||
.oit-pin .oit-img-container .oit-img-view:hover {
|
||||
box-shadow: 0 0 6px #55acc6;
|
||||
}
|
||||
|
||||
.oit .img-default-background {
|
||||
background-position: 0 0, 5px 5px !important;
|
||||
background-size: 10px 10px !important;
|
||||
background-image: linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee 100%), linear-gradient(45deg, #eee 25%, #fff 25%, #fff 75%, #eee 75%, #eee 100%) !important;
|
||||
}
|
||||
|
||||
.oit .oit-img-container .oit-img-view:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.oit-normal .img-close {
|
||||
position: absolute;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
top: 0;
|
||||
right: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.oit .oit-img-tip {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
font-size: 12px;
|
||||
line-height: 20px;
|
||||
height: 20px;
|
||||
width: 50px;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
background-color: rgba(0, 0, 0, .4);
|
||||
pointer-events: none;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/*region img-player*/
|
||||
.oit .img-player {
|
||||
display: none;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
cursor: none;
|
||||
background-color: #000;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.oit .img-player > img {
|
||||
display: inline;
|
||||
float: none;
|
||||
padding: 0;
|
||||
max-height: none;
|
||||
transform: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
/*endregion*/
|
||||
|
||||
.oit-normal .oit-img-footer {
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
bottom: 5px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
/*region oit-img-title*/
|
||||
.oit-normal .oit-img-footer .oit-img-title {
|
||||
font-size: 12px;
|
||||
line-height: 1;
|
||||
display: inline-block;
|
||||
max-width: 90%;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
margin: 5px;
|
||||
opacity: .8;
|
||||
color: #fff;
|
||||
/* filter: alpha(opacity=80) */
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-title:hover {
|
||||
/* opacity: 1; */
|
||||
color: #fff;
|
||||
font-size: 15px;
|
||||
background-color: rgba(0, 0, 0, .3);
|
||||
border-radius: 8px;
|
||||
line-height: 1.5;
|
||||
/* filter: alpha(opacity=100) */
|
||||
}
|
||||
/*endregion*/
|
||||
|
||||
/*region toolbar*/
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar {
|
||||
width: 385px;
|
||||
height: 30px;
|
||||
margin: 0 auto 5px;
|
||||
padding: 3px 0;
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar:hover {
|
||||
background-color: rgba(0, 0, 0, .3);
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar > li {
|
||||
float: left;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
margin: 0 5px;
|
||||
padding: 0;
|
||||
line-height: 0;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar > li:hover {
|
||||
animation: bounce .5s cubic-bezier(0.51, 0.23, 0.02, 0.96)
|
||||
}
|
||||
|
||||
@keyframes bounce {
|
||||
0% {
|
||||
transform: scale(1, 1);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: scale(0.85, 1.1) translateY(-5px);
|
||||
}
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_zoom_to_100::before,
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_zoom_in::before,
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_zoom_out::before,
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_full_screen::before,
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_refresh::before,
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_rotate_left::before,
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_rotate_right::before,
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_scale_x::before,
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_scale_y::before,
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_invert_color::before,
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_copy::before {
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
display: block;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
color: transparent;
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAAAZCAYAAAASRcpqAAAAAXNSR0IArs4c6QAADgJJREFUeF7tXHnQftUc/3z+YJC9KVuWsZOlIiopTYakZZpIJSUiS6JkLKGFYkJJRJsKpUVEhYpItiZFUtknJGQXmRHzMZ/H97xz3vuce++5z3ufX696z8wz77zPc+75nnPu93zO57ucQ6yUlRlYmYGVGRhhBjhCG7e7JiQd2Bw0yanv2iZmqc/f7iZ8ZcBznwFJDwPwopKgWt3uBBNJ6wJYH8DjADwFwFMBfAPAtwB8H8B5JP+01JFKenkM5EEA/HH73wXwVZJnLrV9Pz+WjACCAwp9WpvkNX19lfR8AGcU6h1U89IkPQHAzgAeCuCxANYGcHl8rgZwLckL+/rR97uk7QA8EYDl+bO63weAryd5JG/qa6f0u6S7A9gwPhvE399Gu1cBuIbkZ2dp+9Z8RtKTALwXwNFj6W3L/J1BcoexxirpwwBe0dHegSQP6pPXCiaS3gng9QDuFI3cEkDyNAB3iO9+AsCL4JQ+QS2T4oX1RgB+CW3FC+RTNQttVchogImB7mjLJemFVlUkPSMqvgqA58ClE0wkPQDA3gBeA+DOPYLeRtLvb6EEmB4DYE+Sx0o6DID7sQvJH6eKku4N4H0AXtwj45cA3k3SilhdJG0D4HAA3gm7yknWv3yzkvQQAF+JTWb3aqGroGK8048BeGCI22EegCLJG5F15swxACVrz93erKnHkhTzvVnfNBbBRJJ32MckJQfwNQCXkLxFkoHk6fFJ1P4Ukrv0CWso90cBJIXwznqld6TYnbzjPh7ARrEr+tFjSe55a8vIwMRAMvNLzZUi2mkFE0meDyuRWYjLFwGcDMC7uYt3ei+0TQBsH999Mhbjb/x/1u+JHElelAaTBQWStHEsdLNRl8sCLK+L/+8K4MkAzCaeHd+ZnW5V814kHQrgzVH3gmC3Zrp/ie/uB8AsNYGt5e9L0mzIY/D3CUx6lbumT2PUkeTxfwLAPRrtjQoojYVvUUsClKw9sw6z7XHBRNKXAGwO4DsAduui7vFyzUruD2Avkh+qeTmNSZnslKXnJHkHPhHAC+L3k0hW7UjzkpEtSitzYhaDXmoDSMxsvECKYNIAEpt/R3TteJK82K0cW8Zi3Z3kFX1gImnXAI7VAFwK4F1dpoYkA/tbwiw1M+szmb3DubjtI0ka7IpF0rYBOjar/2GAIXnqMgaTNLap8fTNS816CSBNjMT/psU/M6A0gMSs2jo4HphIsgPGVO0sks8bMNBfAVjLNjZJ+1JaS24m1E60JO+C3o1dvDhMgW8VGTmYmBIOpZ3N+tkCmQKTYIHfBrDe0F0o6+cvALwMgM1T7z5TzASAfWM2PZKiHkryX33vvwF0Bh+Dy1SRdC6A5wL4Msln9rUbi+eOAVbJP2Wb/kfLlJkkJuW/kzkO/9Ig87dtXhobo30lZqi5327WzSzpQmJ8rWAC4PyMjeZdvS5t8Au7STj2TCfvZqZBckKPa0o4aq8AcAHJRH9LSmUaa8ZjJvMRkq/MK0nybvqGMGkW7VySPHk2q0y51yP55xbF7ZTRA0K1MjYleXFqqxZQ2upJWofk95p9k7Rv+C+qTYnGfL4HwH4A/gjggy1g8nYABycgGeqbagDKtiQ/1+iD37HZ1w8AbE0ymUw1qpWbZ67/VgD2Bdkxv2zMnEwPrJ8LgF01wJ5KTSAxK20JAlQBiqTjAbw01tKCDvcwk9TLkl/QQDQBpRxMXh0KVxVVKCh+msh1SwsjdpvEfK4kuU5HG6Vd+i4RSfAuuiPJ01vApFNGD5hUyWiR2+kYqwWcTDHvA8CsxL6Q7Ul+ehblzDz1Zhre7ZvMJDU703uP92rH8JEAfhbs1KaJgcDzeW2YQq8l+YEZx5BAfkGpbw9gIin3Ky74XzoiiieSfEnbHAfwO6DRVhZFJLPIo58xG2pjLlNgkhBrK5LnhTKYJWzZfHGS7LE2Xd01/SbpheGEajVDJB0B4HUlVhLyOpFd0gkAPFknkNyjZVF3yuhT5hoZHS/LgLIWSTuOFxVJZmQ/r/XAz+ofCEXbtNDHRMVLYFLacezwbvVr5O1Lulc40K0XG5I0CBpM7L+xE9VmsE3gIpsszFViqM2f0hiKzCQcoeeUlL5nE0k0f0H3+/SkRfdGYyaSdgSQ5n+RI7cDTNytnUie1tO/Equ7iaQDIZPSAJK9epjLFJjYTHEEZbVkL0tyRMcx/wmDsYCgWemlHpCBiXMRHJF5P8l9WgaTIgivJjkJqUraCcCjsvrJ5kxfnZpCl5IcqnYcv5XmZlGKLhnN7g2SMYuizfJMAMqNNfkrmRLYCW7HcFvZg+QJkuzY7gr/7kfSIeKqIsmOeOe/2Fl6XLzbxBKrHefxnPvl/rWVs0k6D2ahxFydHRGVqR20axAZcP8VwDYkHb0cXJpO7sENxAMRnrcJ4vyuKV9UD5jYnLQZPpX/lZ7r81U2gMQ+mjWHgkkxnuw4cwYm3nltm9luc77APjlr6YtJt4QjE8C0zf0CcNTs1qtCxqxKsiqek2SfUQ7Oi8TmeQRZvkupa5eRnJgrNUXSm6z4AI4iabPHG4WB3xvAIBNHkv12rblHhVwI1/1MluPRm2BVGFNyaDp/ZjtHwGrG3QC0UZhJxkqcuLkJyb+3yGnrYpGd1IBJE0i8kWXrrtrMsfPVWa5mJk5Qm5QcTBoDcj6Dw8ETypTZY87+s/9lqlSyhhVmMlSLl0H9EtCXgH0eXc3kjNX8TA7eEZlJAqXjSDrvZlHpYSau25ZmMGm3jZlIWgOA/SM3OlG0IbYrD2XKzEme/81JXhTK4QQ1JxctQqT4zenVtqXckEOkKU28dReSZPprX8dUJCcAqdZnsj9JJ0CVAKtTRp+2ZT6TVhl9bSz19x7GcDXJ3y9VxtjPZyZoiZksmJxjyw29aTIT61Ep78Xsuy0fZjkxEyfA2QdZnLcKMCkmkfYxE0lmlmaYpWJ/inFg0RGKsEamwCTZt5M8/FDo3SIU63j5AnWMMK29uxPPcNRPQODwn/MKSgs91XEuygYk/5lX6kJ2SfcMu81RoPVJ2qE5WEaXMtfKmMeCSG1KsoPaTuS2cg5Jm5hVJRjjml3p/n7XQ44DtMx7co6XfCbFzaNqAFGpr4+3MZ9JyssprqUKMCmmElSAycTl0OdTaaxZA/QUmPhMhr3wj5jBG24q5nMfl5O0B79Ywp5PeSank7THeqFIemS0Yyehw4z5b0lZO1P3+2T0gEmVjI7x2ae0RilsKembAK7vi+Y0FKUUZbl4SC5In6kxBjWPELDNZIftS9Ec2/4bk7x5CIBkAFvli7itRHMkHRIJe53mSsdcOulw/+bvqwxMLDgL795A0gfLqkpQHdfduS+c2FgsW5B0Zl1naTzTezp3VcgovKhR8kyyvqe8kJNJ9h26awPvFPL078V5k/QcAJ8H4IXuBe+FP6hkfe7KM5kpjyUSIg1UzllxmsIXBnVuFVYeA5hjHaZo1vkkt2gDhY6hFdMzVimYxECSvXZ9hMlalStzuvnRaqeVJOexOJfAxebTYaVdK1jGqdnBr3/7FDPJ//TpyDxlNDNWaxPSOjJgFzJqc4WMU8LO4Wh1anfNgyQf47dJdBpJh+DbQCe98856pYcbi70rA3YmsJLkXAsz2MGHSft0ZOzfRwQTH5+wlWCf5dTx/x4zx8ETuxCmolHZc10n3Jdu5uQTKyllw6bF7qsGrvK5m0i7dz6KzaHktHLnvAueS3LrmpckKTl8Xd2A5U/z1LBPsTrW7pKy8P4A4OEknRPQWeYhY95ncxpg4oQvH/F3MtignT0DrptJ+vBea5HkA3WTRDNnQZP0NQe9JTYTn5N6cCkfIjWQnc1xKr0THS/pbfx/TNmmc4pmeIH4kOCyK5nDfLSzOZKc4+PjFC6rN65iSGZfaS4OJ+lwfLFIcgjd/se2Mi6YWEqAhhf8szoEG0Rsn10oyZmHPopdvbtFwpoH3nWfiamzj60bTNIx/J+Go+jXfZo1towcTOZxari5u8VC96lqJwXaHHFor+h8jvfmqJqTBn35kMtGJH3auLM0Lm3y5Uq+E6V18UryQVCnezsnZMip4b85i5nkWR0K7ysQ0n0rrjbqUf6+uRj6e2bmTz06xJnZfFiSr5jwsQoX3zszuTeog5n8juR9h/Y/1U/+tSF9LkZzOl6soyf++NYt//VCNlP5YeFQV6Kkx5P0SdWqEhf3uG2fPJ4oZ9zV4Vj3RSkNu3GozDTOPhqfJO0tY8nIXuRc7jMpUeUw97xTJVPFC9EOXe/0KdPRZ3h8gMtszsXAY0f2kAObzVvgDCYe50KadYCaI3/J0V59CLFxn4kzNb04EiNyn31vi/uQMqyXPZDE4vaJaI9l9PtMJPk0d8oo9+bptefs2OZtf76aIjGZ3vVQqjB3MBnaqyyXZGbHYZfMBqBMpVUP7W/LpOaXES2S0dgVRr9pLWMIU7uxJJ+afUfPGG8A4FybQ/Lkw9p5CSZkM8d5Dl1l3jeteXE6Z2VZmjbNiZHki6k+nu53GZNNSbIT1qe7E9vMxZt1HkwyXdFR+6qn6i07MAmkth3tHBXfVZkuNpp5kIUX58Xu8JlPH1df5DykAwFaUzI6KKZtzfxId1Fcx8nNKp+IJJud6V7WdEerTUD7m/w5ZggbaZuTiPLYSe7U/EcHY5znHbBmWO6/d15HMZZt1KZjzuw4NYOcyx2wcWbH/i1/DLKXjnEHcxqPpOSIH7JUXHdvkkfN7XZ6Sb4iwMlSy+7eiaEzVQCzldvplzqJK88vyxmIzXJI35yRPbn0fW5gMqQ3K3VXZmBlBv7/Z+C/kQ6WkguncSQAAAAASUVORK5CYII=);
|
||||
background-repeat: no-repeat
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_zoom_to_100::before {
|
||||
content: 'Zoom to Actual Size';
|
||||
background-position: 0 0
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_zoom_in::before {
|
||||
content: 'Zoom In';
|
||||
background-position: -25px 0
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_zoom_out::before {
|
||||
content: 'Zoom Out';
|
||||
background-position: -50px 0
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_full_screen::before {
|
||||
content: 'Full Screen';
|
||||
background-position: -75px 0
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_refresh::before {
|
||||
content: 'Refresh';
|
||||
background-position: -100px 0
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_rotate_left::before {
|
||||
content: 'Rotate Left';
|
||||
background-position: -125px 0
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_rotate_right::before {
|
||||
content: 'Rotate Right';
|
||||
background-position: -150px 0
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_scale_x::before {
|
||||
content: 'Scale x';
|
||||
background-position: -175px 0
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_scale_y::before {
|
||||
content: 'Scale y';
|
||||
background-position: -200px 0
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_invert_color::before {
|
||||
content: 'Invert color';
|
||||
background-position: -225px 0
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_copy::before {
|
||||
content: 'Copy';
|
||||
background-position: -250px 0
|
||||
}
|
||||
/*endregion*/
|
||||
|
||||
/*region gallery-navbar*/
|
||||
.oit-normal .oit-img-footer .gallery-navbar {
|
||||
position: relative;
|
||||
flex: 0 0 auto;
|
||||
overflow: hidden;
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
margin-top: 20px;
|
||||
background-color: rgba(0, 0, 0, .1);
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .gallery-navbar:hover {
|
||||
background-color: rgba(0, 0, 0, .8);
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .gallery-navbar .gallery-list {
|
||||
display: flex;
|
||||
transform: translateX(0px);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .gallery-navbar .gallery-list .gallery-active {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .gallery-navbar .gallery-list .img-border-active {
|
||||
margin-top: 1px;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: red;
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .gallery-navbar .gallery-list > li {
|
||||
width: 48px;
|
||||
height: 58px;
|
||||
opacity: .3;
|
||||
color: transparent;
|
||||
margin: 2px 1px;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
/* transition: all 100ms linear; */
|
||||
}
|
||||
|
||||
.oit-normal .oit-img-footer .gallery-navbar .gallery-list img {
|
||||
width: 46px;
|
||||
height: 56px;
|
||||
}
|
||||
/*endregion*/
|
||||
|
||||
.hotkeys-settings-plus {
|
||||
margin: 0 10px;
|
||||
font-size: x-large;
|
||||
}
|
||||
|
||||
/*region pickr*/
|
||||
.pcr-app .pcr-swatches > button {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/*! Pickr 1.8.2 MIT | https://github.com/Simonwep/pickr */
|
||||
.pickr {
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
transform: translateY(0)
|
||||
}
|
||||
|
||||
.pickr * {
|
||||
box-sizing: border-box;
|
||||
outline: none;
|
||||
border: none;
|
||||
-webkit-appearance: none
|
||||
}
|
||||
|
||||
.pickr .pcr-button {
|
||||
position: relative;
|
||||
height: 2em;
|
||||
width: 2em;
|
||||
padding: 0.5em;
|
||||
cursor: pointer;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;
|
||||
border-radius: .15em;
|
||||
background: url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" stroke="%2342445A" stroke-width="5px" stroke-linecap="round"><path d="M45,45L5,5"></path><path d="M45,5L5,45"></path></svg>') no-repeat center;
|
||||
background-size: 0;
|
||||
transition: all 0.3s
|
||||
}
|
||||
|
||||
.pickr .pcr-button::before {
|
||||
position: absolute;
|
||||
content: '';
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');
|
||||
background-size: .5em;
|
||||
border-radius: .15em;
|
||||
z-index: -1
|
||||
}
|
||||
|
||||
.pickr .pcr-button::before {
|
||||
z-index: initial
|
||||
}
|
||||
|
||||
.pickr .pcr-button::after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
transition: background 0.3s;
|
||||
background: var(--pcr-color);
|
||||
border-radius: .15em
|
||||
}
|
||||
|
||||
.pickr .pcr-button.clear {
|
||||
background-size: 70%
|
||||
}
|
||||
|
||||
.pickr .pcr-button.clear::before {
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
.pickr .pcr-button.clear:focus {
|
||||
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px var(--pcr-color)
|
||||
}
|
||||
|
||||
.pickr .pcr-button.disabled {
|
||||
cursor: not-allowed
|
||||
}
|
||||
|
||||
.pickr *, .pcr-app * {
|
||||
box-sizing: border-box;
|
||||
outline: none;
|
||||
border: none;
|
||||
-webkit-appearance: none
|
||||
}
|
||||
|
||||
.pickr input:focus, .pickr input.pcr-active, .pickr button:focus, .pickr button.pcr-active, .pcr-app input:focus, .pcr-app input.pcr-active, .pcr-app button:focus, .pcr-app button.pcr-active {
|
||||
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px var(--pcr-color)
|
||||
}
|
||||
|
||||
.pickr .pcr-palette, .pickr .pcr-slider, .pcr-app .pcr-palette, .pcr-app .pcr-slider {
|
||||
transition: box-shadow 0.3s
|
||||
}
|
||||
|
||||
.pickr .pcr-palette:focus, .pickr .pcr-slider:focus, .pcr-app .pcr-palette:focus, .pcr-app .pcr-slider:focus {
|
||||
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(0, 0, 0, 0.25)
|
||||
}
|
||||
|
||||
.pcr-app {
|
||||
position: fixed;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
z-index: 10000;
|
||||
border-radius: 0.1em;
|
||||
background: #fff;
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
transition: opacity 0.3s, visibility 0s 0.3s;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;
|
||||
box-shadow: 0 0.15em 1.5em 0 rgba(0, 0, 0, 0.1), 0 0 1em 0 rgba(0, 0, 0, 0.03);
|
||||
left: 0;
|
||||
top: 0
|
||||
}
|
||||
|
||||
.pcr-app.visible {
|
||||
transition: opacity 0.3s;
|
||||
visibility: visible;
|
||||
opacity: 1
|
||||
}
|
||||
|
||||
.pcr-app .pcr-swatches {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 0.75em
|
||||
}
|
||||
|
||||
.pcr-app .pcr-swatches.pcr-last {
|
||||
margin: 0
|
||||
}
|
||||
|
||||
@supports (display: grid) {
|
||||
.pcr-app .pcr-swatches {
|
||||
display: grid;
|
||||
align-items: center;
|
||||
grid-template-columns: repeat(auto-fit, 1.75em)
|
||||
}
|
||||
}
|
||||
|
||||
.pcr-app .pcr-swatches > button {
|
||||
font-size: 1em;
|
||||
position: relative;
|
||||
width: calc(1.75em - 10px);
|
||||
height: calc(1.75em - 10px);
|
||||
border-radius: 0.15em;
|
||||
cursor: pointer;
|
||||
margin: 2.5px;
|
||||
flex-shrink: 0;
|
||||
justify-self: center;
|
||||
transition: all 0.15s;
|
||||
overflow: hidden;
|
||||
background: transparent;
|
||||
z-index: 1
|
||||
}
|
||||
|
||||
.pcr-app .pcr-swatches > button::before {
|
||||
position: absolute;
|
||||
content: '';
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');
|
||||
background-size: 6px;
|
||||
border-radius: .15em;
|
||||
z-index: -1
|
||||
}
|
||||
|
||||
.pcr-app .pcr-swatches > button::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: var(--pcr-color);
|
||||
border: 1px solid rgba(0, 0, 0, 0.05);
|
||||
border-radius: 0.15em;
|
||||
box-sizing: border-box
|
||||
}
|
||||
|
||||
.pcr-app .pcr-swatches > button:hover {
|
||||
filter: brightness(1.05)
|
||||
}
|
||||
|
||||
.pcr-app .pcr-swatches > button:not(.pcr-active) {
|
||||
box-shadow: none
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
margin: 0 -0.2em 0 -0.2em
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction > * {
|
||||
margin: 0 0.2em
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction input {
|
||||
letter-spacing: 0.07em;
|
||||
font-size: 0.75em;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
color: #75797e;
|
||||
background: #f1f3f4;
|
||||
border-radius: .15em;
|
||||
transition: all 0.15s;
|
||||
padding: 0.45em 0.5em;
|
||||
margin-top: 0.75em
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction input:hover {
|
||||
filter: brightness(0.975)
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction input:focus {
|
||||
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(66, 133, 244, 0.75)
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction .pcr-result {
|
||||
color: #75797e;
|
||||
text-align: left;
|
||||
flex: 1 1 8em;
|
||||
min-width: 8em;
|
||||
transition: all 0.2s;
|
||||
border-radius: .15em;
|
||||
background: #f1f3f4;
|
||||
cursor: text
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction .pcr-result::-moz-selection {
|
||||
background: #4285f4;
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction .pcr-result::selection {
|
||||
background: #4285f4;
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction .pcr-type.active {
|
||||
color: #fff;
|
||||
background: #4285f4
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction .pcr-save, .pcr-app .pcr-interaction .pcr-cancel, .pcr-app .pcr-interaction .pcr-clear {
|
||||
color: #fff;
|
||||
width: auto
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction .pcr-save, .pcr-app .pcr-interaction .pcr-cancel, .pcr-app .pcr-interaction .pcr-clear {
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction .pcr-save:hover, .pcr-app .pcr-interaction .pcr-cancel:hover, .pcr-app .pcr-interaction .pcr-clear:hover {
|
||||
filter: brightness(0.925)
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction .pcr-save {
|
||||
background: #4285f4
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction .pcr-clear, .pcr-app .pcr-interaction .pcr-cancel {
|
||||
background: #f44250
|
||||
}
|
||||
|
||||
.pcr-app .pcr-interaction .pcr-clear:focus, .pcr-app .pcr-interaction .pcr-cancel:focus {
|
||||
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(244, 66, 80, 0.75)
|
||||
}
|
||||
|
||||
.pcr-app .pcr-selection .pcr-picker {
|
||||
position: absolute;
|
||||
height: 18px;
|
||||
width: 18px;
|
||||
border: 2px solid #fff;
|
||||
border-radius: 100%;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none
|
||||
}
|
||||
|
||||
.pcr-app .pcr-selection .pcr-color-palette, .pcr-app .pcr-selection .pcr-color-chooser, .pcr-app .pcr-selection .pcr-color-opacity {
|
||||
position: relative;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
cursor: grab;
|
||||
cursor: -webkit-grab
|
||||
}
|
||||
|
||||
.pcr-app .pcr-selection .pcr-color-palette:active, .pcr-app .pcr-selection .pcr-color-chooser:active, .pcr-app .pcr-selection .pcr-color-opacity:active {
|
||||
cursor: grabbing;
|
||||
cursor: -webkit-grabbing
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] {
|
||||
width: 14.25em;
|
||||
max-width: 95vw
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-swatches {
|
||||
margin-top: .6em;
|
||||
padding: 0 .6em
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-interaction {
|
||||
padding: 0 .6em .6em .6em
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection {
|
||||
display: grid;
|
||||
grid-gap: .6em;
|
||||
grid-template-columns: 1fr 4fr;
|
||||
grid-template-rows: 5fr auto auto;
|
||||
align-items: center;
|
||||
height: 10.5em;
|
||||
width: 100%;
|
||||
align-self: flex-start
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview {
|
||||
grid-area: 2 / 1 / 4 / 1;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
margin-left: .6em
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-last-color {
|
||||
display: none
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-current-color {
|
||||
position: relative;
|
||||
background: var(--pcr-color);
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
border-radius: 50em;
|
||||
overflow: hidden
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-current-color::before {
|
||||
position: absolute;
|
||||
content: '';
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');
|
||||
background-size: .5em;
|
||||
border-radius: .15em;
|
||||
z-index: -1
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette {
|
||||
grid-area: 1 / 1 / 2 / 3;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette .pcr-palette {
|
||||
border-radius: .15em;
|
||||
width: 100%;
|
||||
height: 100%
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette .pcr-palette::before {
|
||||
position: absolute;
|
||||
content: '';
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');
|
||||
background-size: .5em;
|
||||
border-radius: .15em;
|
||||
z-index: -1
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser {
|
||||
grid-area: 2 / 2 / 2 / 2
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity {
|
||||
grid-area: 3 / 2 / 3 / 2
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser, .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity {
|
||||
height: 0.5em;
|
||||
margin: 0 .6em
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-picker, .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-picker {
|
||||
top: 50%;
|
||||
transform: translateY(-50%)
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-slider, .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-slider {
|
||||
flex-grow: 1;
|
||||
border-radius: 50em
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-slider {
|
||||
background: linear-gradient(to right, red, #ff0, lime, cyan, blue, #f0f, red)
|
||||
}
|
||||
|
||||
.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-slider {
|
||||
background: linear-gradient(to right, transparent, black), url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');
|
||||
background-size: 100%, 0.25em
|
||||
}
|
||||
/*endregion*/
|
||||
+149
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"id":"obsidian-kanban","name":"Kanban","version":"2.0.49","minAppVersion":"1.0.0","description":"Create markdown-backed Kanban boards in Obsidian.","author":"mgmeyers","authorUrl":"https://github.com/mgmeyers/obsidian-kanban","helpUrl":"https://publish.obsidian.md/kanban/Obsidian+Kanban+Plugin","isDesktopOnly":false}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+15603
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"id":"obsidian-latex-suite","name":"Latex Suite","version":"1.9.8","minAppVersion":"1.0.0","description":"Make typesetting LaTeX math as fast as handwriting through snippets, text expansion, and editor enhancements","author":"artisticat","authorUrl":"https://github.com/artisticat1","fundingUrl":"https://ko-fi.com/artisticat","isDesktopOnly":false}
|
||||
+235
@@ -0,0 +1,235 @@
|
||||
/* Settings panel */
|
||||
|
||||
.setting-item.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.setting-item.setting-item-heading .latex-suite-settings-icon {
|
||||
margin-right: var(--size-4-2);
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.setting-item.setting-item-heading:has(.latex-suite-settings-icon) {
|
||||
border-bottom: 1px solid var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.setting-item.setting-item-heading:has(.latex-suite-settings-icon) + .setting-item {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.setting-item.setting-item-heading:has(.latex-suite-settings-icon) ~ .setting-item:not(.setting-item-heading), .latex-suite-snippet-variables-setting + .setting-item-control {
|
||||
width: calc(100% - 26px);
|
||||
margin-left: 26px;
|
||||
}
|
||||
|
||||
.latex-suite-snippet-variables-setting .setting-item-control {
|
||||
height: 120px;
|
||||
}
|
||||
|
||||
.latex-suite-snippet-variables-setting .setting-item-control textarea {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.snippets-text-area, .latex-suite-snippet-variables-setting {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.snippets-text-area .setting-item-info, .latex-suite-snippet-variables-setting .setting-item-info {
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.snippets-text-area .setting-item-control {
|
||||
flex-direction: column;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
.snippets-editor-wrapper {
|
||||
width: 100%;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.snippets-editor-wrapper .cm-editor {
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: 4px;
|
||||
font-size: var(--font-inputs);
|
||||
height: 20em;
|
||||
outline: none !important;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.snippets-editor-wrapper .cm-line, .snippets-editor-wrapper .cm-lineNumbers {
|
||||
font-family: var(--font-monospace);
|
||||
}
|
||||
|
||||
.snippets-footer {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.snippets-editor-validity {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.snippets-editor-validity-indicator {
|
||||
color: white;
|
||||
display: inline-block;
|
||||
border-radius: 1em;
|
||||
margin-right: 10px;
|
||||
cursor: default;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.snippets-editor-validity-indicator svg {
|
||||
width: 16px !important;
|
||||
height: 16px !important;
|
||||
}
|
||||
|
||||
.snippets-editor-validity-indicator:hover {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.snippets-editor-validity-indicator.valid {
|
||||
background-color: var(--color-green);
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.snippets-editor-validity-indicator.invalid {
|
||||
background-color: var(--color-red);
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.snippets-editor-buttons {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.latex-suite-confirmation-modal .setting-item {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.search-input-container input.latex-suite-location-input-el {
|
||||
width: initial;
|
||||
}
|
||||
|
||||
/*
|
||||
Snippet color classes.
|
||||
*/
|
||||
|
||||
/* These extra selectors enforce their color on all children, because CodeMirror does weird nesting of spans when
|
||||
nesting multiple decorations. */
|
||||
|
||||
.latex-suite-snippet-placeholder {
|
||||
border-radius: 2px;
|
||||
background-color: var(--placeholder-bg);
|
||||
outline: var(--placeholder-outline) solid 1px;
|
||||
}
|
||||
|
||||
.latex-suite-snippet-placeholder-0, span.latex-suite-snippet-placeholder-0 span {
|
||||
--placeholder-bg: #87cefa2e;
|
||||
--placeholder-outline: #87cefa6e;
|
||||
}
|
||||
|
||||
.theme-dark .latex-suite-snippet-placeholder-0, span.latex-suite-snippet-placeholder-0 span {
|
||||
--placeholder-outline: #87cefa43;
|
||||
}
|
||||
|
||||
.latex-suite-snippet-placeholder-1, span.latex-suite-snippet-placeholder-1 span {
|
||||
--placeholder-bg: #ffa50033;
|
||||
--placeholder-outline: #ffa5006b;
|
||||
}
|
||||
|
||||
.theme-dark .latex-suite-snippet-placeholder-1, span.latex-suite-snippet-placeholder-1 span {
|
||||
--placeholder-outline: #ffa5004d;
|
||||
}
|
||||
|
||||
.latex-suite-snippet-placeholder-2, span.latex-suite-snippet-placeholder-2 span {
|
||||
--placeholder-bg: #00ff0022;
|
||||
--placeholder-outline: #00ff0060;
|
||||
}
|
||||
|
||||
.theme-dark .latex-suite-snippet-placeholder-2, span.latex-suite-snippet-placeholder-2 span {
|
||||
--placeholder-outline: #00ff003d;
|
||||
}
|
||||
|
||||
|
||||
/* Conceal */
|
||||
|
||||
span.cm-math.cm-concealed-bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.cm-math.cm-concealed-underline {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
span.cm-math.cm-concealed-mathrm, sub.cm-math.cm-concealed-mathrm {
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
|
||||
/* Conceal superscripts without changing line height */
|
||||
sup.cm-math {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
sup.cm-math, sub.cm-math {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
|
||||
/* Inline math tooltip styling */
|
||||
|
||||
.theme-light .cm-tooltip.cm-tooltip-cursor {
|
||||
box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.028), 0px 3.4px 6.7px rgba(0, 0, 0, .042), 0px 5px 20px rgba(0, 0, 0, .07);
|
||||
}
|
||||
|
||||
.theme-dark .cm-tooltip.cm-tooltip-cursor {
|
||||
box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1),
|
||||
0px 3.4px 6.7px rgba(0, 0, 0, 0.15),
|
||||
0px 0px 30px rgba(0, 0, 0, 0.27);
|
||||
}
|
||||
|
||||
|
||||
/* Highlight brackets */
|
||||
.theme-light .latex-suite-highlighted-bracket, .theme-light .latex-suite-highlighted-bracket [class^="latex-suite-color-bracket-"] {
|
||||
background-color: hsl(var(--accent-h), var(--accent-s), 40%, 0.3);
|
||||
}
|
||||
|
||||
.theme-dark .latex-suite-highlighted-bracket, .theme-dark .latex-suite-highlighted-bracket [class^="latex-suite-color-bracket-"] {
|
||||
background-color: hsl(var(--accent-h), var(--accent-s), 70%, 0.6);
|
||||
}
|
||||
|
||||
|
||||
/* Color matching brackets */
|
||||
|
||||
.theme-light .latex-suite-color-bracket-0, .theme-light .latex-suite-color-bracket-0 .cm-bracket {
|
||||
color: #527aff;
|
||||
}
|
||||
|
||||
.theme-dark .latex-suite-color-bracket-0, .theme-dark .latex-suite-color-bracket-0 .cm-bracket {
|
||||
color: #47b8ff;
|
||||
}
|
||||
|
||||
.theme-light .latex-suite-color-bracket-1, .theme-light .latex-suite-color-bracket-1 .cm-bracket {
|
||||
color: #ff50b7;
|
||||
}
|
||||
|
||||
.theme-dark .latex-suite-color-bracket-1, .theme-dark .latex-suite-color-bracket-1 .cm-bracket {
|
||||
color: #ff55cd;
|
||||
}
|
||||
|
||||
.theme-light .latex-suite-color-bracket-2, .theme-light .latex-suite-color-bracket-2 .cm-bracket {
|
||||
color: #69ba00;
|
||||
}
|
||||
|
||||
.theme-dark .latex-suite-color-bracket-2, .theme-dark .latex-suite-color-bracket-2 .cm-bracket {
|
||||
color: #73ff63;
|
||||
}
|
||||
|
||||
/* .latex-suite-color-bracket-3 {
|
||||
color: #8de15c;
|
||||
} */
|
||||
+101
@@ -0,0 +1,101 @@
|
||||
{
|
||||
"mapMarkers": [
|
||||
{
|
||||
"id": "kyoto",
|
||||
"lastAccessed": 1763017532392,
|
||||
"markers": [
|
||||
{
|
||||
"id": "ID_886a5a494a3b",
|
||||
"type": "default",
|
||||
"loc": [
|
||||
35.05306927554334,
|
||||
135.7276932225072
|
||||
],
|
||||
"layer": "real",
|
||||
"mutable": true,
|
||||
"command": false,
|
||||
"percent": null,
|
||||
"description": null,
|
||||
"minZoom": null,
|
||||
"maxZoom": null,
|
||||
"tooltip": "hover"
|
||||
},
|
||||
{
|
||||
"id": "ID_383828298ba8",
|
||||
"type": "default",
|
||||
"loc": [
|
||||
35.01782969969814,
|
||||
135.7695581651632
|
||||
],
|
||||
"layer": "real",
|
||||
"mutable": true,
|
||||
"command": false,
|
||||
"percent": null,
|
||||
"description": null,
|
||||
"minZoom": null,
|
||||
"maxZoom": null,
|
||||
"tooltip": "hover"
|
||||
},
|
||||
{
|
||||
"id": "ID_ab080aaa08a8",
|
||||
"type": "default",
|
||||
"loc": [
|
||||
35.011643471558244,
|
||||
135.72529113563354
|
||||
],
|
||||
"layer": "real",
|
||||
"mutable": true,
|
||||
"command": false,
|
||||
"percent": null,
|
||||
"description": null,
|
||||
"minZoom": null,
|
||||
"maxZoom": null,
|
||||
"tooltip": "hover"
|
||||
}
|
||||
],
|
||||
"overlays": [],
|
||||
"shapes": [],
|
||||
"files": [
|
||||
"References/武汉市硚口区古田街道罗家墩122号.md",
|
||||
"References/西安市航天大道1199号大华公园世家5街区.md",
|
||||
"References/丈八东路8号通信学院家属院.md",
|
||||
"Templates/City Template.md"
|
||||
]
|
||||
}
|
||||
],
|
||||
"defaultMarker": {
|
||||
"type": "default",
|
||||
"iconName": "map-marker",
|
||||
"color": "#dddddd",
|
||||
"transform": {
|
||||
"size": 6,
|
||||
"x": 0,
|
||||
"y": -2
|
||||
}
|
||||
},
|
||||
"markerIcons": [],
|
||||
"color": "#dddddd",
|
||||
"lat": 39.983334,
|
||||
"long": -82.98333,
|
||||
"notePreview": false,
|
||||
"layerMarkers": true,
|
||||
"previousVersion": "6.0.5",
|
||||
"version": {
|
||||
"major": 6,
|
||||
"minor": 0,
|
||||
"patch": 5
|
||||
},
|
||||
"warnedAboutMapMarker": false,
|
||||
"copyOnClick": false,
|
||||
"displayMarkerTooltips": "hover",
|
||||
"displayOverlayTooltips": true,
|
||||
"configDirectory": null,
|
||||
"mapViewEnabled": true,
|
||||
"mapViewParameters": {},
|
||||
"enableDraw": true,
|
||||
"defaultUnitType": "imperial",
|
||||
"defaultTile": "https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png",
|
||||
"defaultTileDark": "https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png",
|
||||
"defaultAttribution": "© <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors © <a href=\"https://carto.com/attributions\">CARTO</a>",
|
||||
"defaultTileSubdomains": "a,b,c,d"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user