Compare commits

...

3 Commits

Author SHA1 Message Date
9ad397cb00 vault backup: 2023-05-26 09:10:44 2023-05-26 09:10:44 +02:00
83b51075e9 vault backup: 2023-05-26 08:45:39 2023-05-26 08:45:39 +02:00
3d0413c838 vault backup: 2023-04-28 10:19:20 2023-04-28 10:19:20 +02:00
46 changed files with 18783 additions and 6366 deletions

View File

@@ -23,222 +23,750 @@ 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
jhoQABINFo8wPYliUZxj6GhZgmAPGkAAFKXEIIqk1pFAkWqeHsFOIbazHHhBcG4D
0wpUFmaZFjqiuerTVV7tU63OAALU6JxAAErcHjzAJh+OBkOL4nFmCYFiaQAAUmMQ
sOLcEuNoUNiIzkMR4g1HYfBJJDJjc+YpOluAOu0NeXYsIAQRtjTSSpIyQoZrqeXC
g+qnWpKkhk91xaA7jzDfkv1LrySRxKfckN84fVlETpGze0aGnpybJnHUExt4ds7P
uNlq7ppqW05UTcc1eTzVW/y3dAqWlLbpy5I8xkFomV6KeDaZ7zLKPPJZYKsp5lWe
KTMKo1Sl01NwMY2hO3ZllJMGR1VMzZ2LaW9AHcPRd19NW4Miy63D2jI23JA7Cx9o
vNABU61FTmagft+t9lDuqudasNsvh/EuNE6dXU2rfAXRwR+z9UDCVhBOW4lyvljR
3qm7QN5pRpktD24+Z0uiF2mOaMYFHIA3P6j8oR1IZrztJq/Say7prfzmoeRaFWAE
/kivd/z5qopQ+Ak9oLwUwK2g+bTMMb19bvfCjrmDkUvrRZMfFhCKUQ1IUtj9xnTN
AtPvuzaj4+AvhPX+388C0AeMJag9697z1Ptemi19k2CGfpxT+ih4GQ4AZYSShhyL
IjvBG0DYBwOCKg3S4gYiMaYbUYhymGHUGoa5ehnlN2S04d5touD+iXsiqlaUYd5H
yXEEA6SlbkBaWtfpdBimTL+WsoZad5laWMs5nvD2rDYAcN4dFQRmCRHxakfaEHCd
Pmi17MwHgWotWEF7IqwYuADiITgIhLUUItyDGcUJgJ5Fi2QEtaiFO9YivQk+PWP2
zQvsKu4HMAZQUZgKJcSRBAu6RvsYkAMZgPB9gWsIAMfVvxcCyhYnAFi+xky7l+BE
zruCYTeA1eJYlnionhJcgO5bNjJB9X1Z4ZJs76ajYy8pca84Jrc0mxzjSXMzXs1m
xT/r0AqeRGpxLVzslE+bHpoNMdHlXNMzU8z9SBSxus2KfM29uz5ZTMabs3SM3cB4
zzGpvM+XGb0/z/TbPOjLbPEtIVfMT29PWrLlz4utsSysjtay0vdt7TF7LZVdm0h4
gaTqmyIq6nzIF4LNbQvloiz3QMMuB7hjiwVBLzbeBZsLThXU9Yj5NgOf2wdQDgUd
Ac4eRzwQwJDepM2U5nz3NnYGDdVzKt1eXSiTCY5mHDS/u1xFs2uvbgBb187x61pQ
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
AA==
```
%%

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,520 @@
---
excalidraw-plugin: parsed
tags: [excalidraw]
---
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==
# Text Elements
%%
# Drawing
```compressed-json
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
```
%%

View File

@@ -16,7 +16,7 @@
"starred": true,
"markdown-importer": true,
"zk-prefixer": true,
"random-note": false,
"random-note": true,
"outline": true,
"word-count": true,
"slides": true,
@@ -25,5 +25,6 @@
"file-recovery": true,
"publish": false,
"sync": false,
"canvas": true
"canvas": true,
"bookmarks": true
}

View File

@@ -13,9 +13,10 @@
"note-composer",
"command-palette",
"editor-status",
"starred",
"bookmarks",
"markdown-importer",
"zk-prefixer",
"random-note",
"outline",
"word-count",
"slides",

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"id": "dataview",
"name": "Dataview",
"version": "0.5.55",
"version": "0.5.56",
"minAppVersion": "0.13.11",
"description": "Complex data views for the data-obsessed.",
"author": "Michael Brenan <blacksmithgu@gmail.com>",

View File

@@ -2,7 +2,7 @@
"userAdmonitions": {},
"syntaxHighlight": false,
"copyButton": false,
"version": "9.2.1",
"version": "9.3.1",
"autoCollapse": false,
"defaultCollapseType": "open",
"injectColor": true,

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"id": "obsidian-admonition",
"name": "Admonition",
"version": "9.2.1",
"version": "9.3.1",
"minAppVersion": "1.1.0",
"description": "Enhanced callouts for Obsidian.md",
"author": "Jeremy Valentine",

File diff suppressed because one or more lines are too long

View File

@@ -2719,6 +2719,7 @@ okładkami
obszaru
ostrzegawczym
operacyjny
otwierający
GoTo
GS
Gl
@@ -10757,6 +10758,8 @@ sneaky
stałego
sposoby
siebie
szyfrowy
sekwencji
JQ
Js
JX
@@ -14670,6 +14673,7 @@ QCk
QMOa
QkWB
Qfb
QJanSuhM
fVVhM
fW
fci
@@ -25337,6 +25341,7 @@ CTR
Critical
Cewki
Częstotliwość
Całki
ExtGState
Eu
EV
@@ -34687,6 +34692,7 @@ dwa
detal
detali
daleko
drzwi
YI
YT
Yv
@@ -42726,6 +42732,7 @@ układu
użyciu
uncertainty
ułożone
uofhl
Mh
MediaBox
MI
@@ -54687,6 +54694,7 @@ woltomierza
wyznaczenia
wykorzystano
wykryją
wykryciu
pDJ
parenleftbigg
parenrightbigg
@@ -61340,6 +61348,7 @@ Zakładając
Zaprojektować
Załóż
Zadanie
Zamek
mD
ma
mj

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"id": "obsidian-desmos",
"name": "Desmos",
"version": "0.6.5",
"version": "0.6.6",
"minAppVersion": "0.9.12",
"description": "Embed Desmos graphs into your notes",
"author": "Nigecat"

View File

@@ -210052,10 +210052,11 @@
}
},
"defaultTrayMode": false,
"previousRelease": "1.8.21",
"previousRelease": "1.9.2",
"showReleaseNotes": true,
"showNewVersionNotification": true,
"mathjaxSourceURL": "https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js",
"latexBoilerplate": "\\color{blue}",
"taskboneEnabled": false,
"taskboneAPIkey": "",
"pinnedScripts": [],
@@ -210371,5 +210372,11 @@
}
}
],
"numberOfCustomPens": 0
"numberOfCustomPens": 0,
"pdfScale": 4,
"pdfBorderBox": true,
"pdfGapSize": 20,
"pdfLockAfterImport": true,
"pdfNumColumns": 1,
"pdfImportScale": 0.3
}

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"id": "obsidian-excalidraw-plugin",
"name": "Excalidraw",
"version": "1.8.21",
"version": "1.9.2",
"minAppVersion": "1.1.6",
"description": "An Obsidian plugin to edit and view Excalidraw drawings",
"author": "Zsolt Viczian",

View File

@@ -340,4 +340,8 @@ div.excalidraw-draginfo {
background: var(--color-base-40);
display: block;
border-radius: 5px;
}
.excalidraw [data-radix-popper-content-wrapper] {
position: absolute !important;
}

View File

@@ -26,5 +26,30 @@
"submoduleRecurseCheckout": false,
"gitDir": "",
"showFileMenu": true,
"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": "vault backup: {{date}}"
}

File diff suppressed because it is too large Load Diff

View File

@@ -5,5 +5,5 @@
"isDesktopOnly": false,
"fundingUrl": "https://ko-fi.com/vinzent",
"js": "main.js",
"version": "2.19.0"
"version": "2.20.0"
}

View File

@@ -55,7 +55,9 @@
display: flex;
align-items: center;
justify-content: center;
width: 11px;
}
.git-tools .type[data-type="M"] {
color: orange;
}
@@ -482,4 +484,24 @@
.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. */
}

View File

@@ -19,7 +19,8 @@
"bottom": 2,
"left": 2
},
"emojiStyle": "none"
"emojiStyle": "none",
"iconInTabsEnabled": false
},
"Fizyka": "FasGear",
"AMiAL": "RiCalculatorLine",

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"id": "obsidian-icon-folder",
"name": "Icon Folder",
"version": "1.7.0",
"version": "2.0.1",
"minAppVersion": "0.9.12",
"description": "This plugin allows to add an emoji or an icon to a folder or file.",
"author": "Florian Woelki",

View File

@@ -1,209 +1,213 @@
{
"ruleConfigs": {
"Escape YAML Special Characters": {
"Escapes colons with a space after them (: ), single quotes ('), and double quotes (\") in YAML.": false,
"Try to Escape Single Line Arrays": false
},
"Format Tags in YAML": {
"Remove Hashtags from tags in the YAML frontmatter, as they make the tags there invalid.": false
},
"Format Yaml Array": {
"Allows for the formatting of regular yaml arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific yaml formats. Note that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array.": false,
"Format yaml aliases section": true,
"Format yaml tags section": true,
"Default yaml array section style": "single-line",
"Format yaml array sections": true,
"Force key values to be single-line arrays": "",
"Force key values to be multi-line arrays": ""
},
"Insert YAML attributes": {
"Inserts the given YAML attributes into the YAML frontmatter. Put each attribute on a single line.": false,
"Text to insert": "aliases: \ntags: "
},
"Move Tags to Yaml": {
"Move all tags to Yaml frontmatter of the document.": false,
"Tags to ignore": "",
"Body tag operation": "Nothing"
},
"Remove YAML Keys": {
"Removes the YAML keys specified": false,
"YAML Keys to Remove": ""
},
"YAML Key Sort": {
"Sorts the YAML keys based on the order and priority specified. Note: may remove blank lines as well.": false,
"YAML Key Priority Sort Order": "",
"Priority Keys at Start of YAML": true,
"YAML Sort Order for Other Keys": "None"
},
"YAML Timestamp": {
"Keep track of the date the file was last edited in the YAML front matter. Gets dates from file metadata.": false,
"Date Created": true,
"Date Created Key": "date created",
"Date Modified": true,
"Date Modified Key": "date modified",
"Format": "dddd, MMMM Do YYYY, h:mm:ss a"
},
"YAML Title": {
"Inserts the title of the file into the YAML frontmatter. Gets the title from the first H1 or filename if there is no H1.": false,
"Title Key": "title"
},
"YAML Title Alias": {
"Inserts the title of the file into the YAML frontmatter's aliases section. Gets the title from the first H1 or filename.": false,
"Preserve existing aliases section style": true,
"Keep alias that matches the filename": false,
"Use the YAML key `linter-yaml-title-alias` to help with filename and heading changes": true
},
"Capitalize Headings": {
"Headings should be formatted with capitalization": true,
"Style": "Title Case",
"Ignore Cased Words": true,
"Ignore Words": "macOS, iOS, iPhone, iPad, JavaScript, TypeScript, AppleScript",
"Lowercase Words": "via, a, an, the, and, or, but, for, nor, so, yet, at, by, in, of, on, to, up, as, is, if, it, for, to, with, without, into, onto, per"
},
"File Name Heading": {
"Inserts the file name as a H1 heading if no H1 heading exists.": true
},
"Header Increment": {
"Heading levels should only increment by one level at a time": true
},
"Footnote after Punctuation": {
"Ensures that footnote references are placed after punctuation, not before.": true
},
"Move Footnotes to the bottom": {
"Move all footnotes to the bottom of the document.": true
},
"Re-Index Footnotes": {
"Re-indexes footnote keys and footnote, based on the order of occurrence (NOTE: This rule deliberately does *not* preserve the relation between key and footnote, to be able to re-index duplicate keys.)": false
},
"Convert Bullet List Markers": {
"Converts common bullet list marker symbols to markdown list markers.": true
},
"Emphasis Style": {
"Makes sure the emphasis style is consistent.": true,
"Style": "consistent"
},
"No Bare URLs": {
"Encloses bare URLs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes.": true
},
"Ordered List Style": {
"Makes sure that ordered lists follow the style specified. Note that 2 spaces or 1 tab is considered to be an indentation level.": true,
"Number Style": "ascending",
"Ordered List Indicator End Style": "."
},
"Proper Ellipsis": {
"Replaces three consecutive dots with an ellipsis.": true
},
"Remove Consecutive List Markers": {
"Removes consecutive list markers. Useful when copy-pasting list items.": true
},
"Remove Empty List Markers": {
"Removes empty list markers, i.e. list items without content.": true
},
"Remove Hyphenated Line Breaks": {
"Removes hyphenated line breaks. Useful when pasting text from textbooks.": true
},
"Remove Multiple Spaces": {
"Removes two or more consecutive spaces. Ignores spaces at the beginning and ending of the line. ": false
},
"Strong Style": {
"Makes sure the strong style is consistent.": false,
"Style": "consistent"
},
"Two Spaces Between Lines with Content": {
"Makes sure that two spaces are added to the ends of lines with content continued on the next line for paragraphs, blockquotes, and list items": false
},
"Unordered List Style": {
"Makes sure that unordered lists follow the style specified.": true,
"List item style": "-"
},
"Compact YAML": {
"Removes leading and trailing blank lines in the YAML front matter.": false,
"Inner New Lines": false
},
"Consecutive blank lines": {
"There should be at most one consecutive blank line.": false
},
"Convert Spaces to Tabs": {
"Converts leading spaces to tabs.": false,
"Tabsize": 4
},
"Empty Line Around Blockquotes": {
"Ensures that there is an empty line around blockquotes unless they start or end a document. **Note that an empty line is either one less level of nesting for blockquotes or a newline character.**": false
},
"Empty Line Around Code Fences": {
"Ensures that there is an empty line around code fences unless they start or end a document.": false
},
"Empty Line Around Tables": {
"Ensures that there is an empty line around github flavored tables unless they start or end a document.": true
},
"Heading blank lines": {
"All headings have a blank line both before and after (except where the heading is at the beginning or end of the document).": false,
"Bottom": true,
"Empty Line Between Yaml and Header": true
},
"Line Break at Document End": {
"Ensures that there is exactly one line break at the end of a document.": false
},
"Paragraph blank lines": {
"All paragraphs should have exactly one blank line both before and after.": false
},
"Remove Empty Lines Between List Markers and Checklists": {
"There should not be any empty lines between list markers and checklists.": false
},
"Remove link spacing": {
"Removes spacing around link text.": false
},
"Remove Space around Fullwidth Characters": {
"Ensures that fullwidth characters are not followed by whitespace (either single spaces or a tab). Note that this may causes issues with markdown format in some cases.": false
},
"Space after list markers": {
"There should be a single space after list markers and checkboxes.": false
"escape-yaml-special-characters": {
"enabled": false,
"try-to-escape-single-line-arrays": false
},
"Trailing spaces": {
"Removes extra spaces after every line.": false,
"Two Space Linebreak": false
"force-yaml-escape": {
"enabled": false,
"force-yaml-escape-keys": ""
},
"Force YAML Escape": {
"Escapes the values for the specified YAML keys.": false,
"Force YAML Escape on Keys": ""
"format-tags-in-yaml": {
"enabled": false
},
"Empty Line Around Math Blocks": {
"Ensures that there is an empty line around math blocks using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math.": true
"format-yaml-array": {
"enabled": false,
"alias-key": true,
"tag-key": true,
"default-array-style": "single-line",
"default-array-keys": true,
"force-single-line-array-style": "",
"force-multi-line-array-style": ""
},
"Move Math Block Indicators to Their Own Line": {
"Move all starting and ending math block indicators to their own lines using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math.": false
"insert-yaml-attributes": {
"enabled": false,
"text-to-insert": "aliases: \ntags: "
},
"Add Blockquote Indentation on Paste": {
"Adds blockquotes to all but the first line, when the cursor is in a blockquote/callout line during pasting": false
"move-tags-to-yaml": {
"enabled": false,
"how-to-handle-existing-tags": "Nothing",
"tags-to-ignore": ""
},
"Prevent Double Checklist Indicator on Paste": {
"Removes starting checklist indicator from the text to paste if the line the cursor is on in the file has a checklist indicator": false
"remove-yaml-keys": {
"enabled": false,
"yaml-keys-to-remove": ""
},
"Prevent Double List Item Indicator on Paste": {
"Removes starting list indicator from the text to paste if the line the cursor is on in the file has a list indicator": false
"yaml-key-sort": {
"enabled": false,
"yaml-key-priority-sort-order": "",
"priority-keys-at-start-of-yaml": true,
"yaml-sort-order-for-other-keys": "None"
},
"Proper Ellipsis on Paste": {
"Replaces three consecutive dots with an ellipsis even if they have a space between them in the text to paste": false
"yaml-timestamp": {
"enabled": false,
"date-created": true,
"date-created-key": "date created",
"force-retention-of-create-value": false,
"date-modified": true,
"date-modified-key": "date modified",
"format": "dddd, MMMM Do YYYY, h:mm:ss a"
},
"Remove Hyphens on Paste": {
"Removes hyphens from the text to paste": false
"yaml-title": {
"enabled": false,
"title-key": "title",
"mode": "first-h1-or-filename-if-h1-missing"
},
"Remove Leading or Trailing Whitespace on Paste": {
"Removes any leading non-tab whitespace and all trailing whitespace for the text to paste": false
"yaml-title-alias": {
"enabled": false,
"preserve-existing-alias-section-style": true,
"keep-alias-that-matches-the-filename": false,
"use-yaml-key-to-keep-track-of-old-filename-or-heading": true
},
"Remove Leftover Footnotes from Quote on Paste": {
"Removes any leftover footnote references for the text to paste": false
"capitalize-headings": {
"enabled": true,
"style": "Title Case",
"ignore-case-words": true,
"ignore-words": "macOS, iOS, iPhone, iPad, JavaScript, TypeScript, AppleScript",
"lowercase-words": "via, a, an, the, and, or, but, for, nor, so, yet, at, by, in, of, on, to, up, as, is, if, it, for, to, with, without, into, onto, per"
},
"Remove Multiple Blank Lines on Paste": {
"Condenses multiple blank lines down into one blank line for the text to paste": false
"file-name-heading": {
"enabled": true
},
"Space between Chinese Japanese or Korean and English or numbers": {
"Ensures that Chinese, Japanese, or Korean and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)": false
"header-increment": {
"enabled": true,
"start-at-h2": false
},
"footnote-after-punctuation": {
"enabled": true
},
"move-footnotes-to-the-bottom": {
"enabled": true
},
"re-index-footnotes": {
"enabled": false
},
"convert-bullet-list-markers": {
"enabled": true
},
"emphasis-style": {
"enabled": true,
"style": "consistent"
},
"no-bare-urls": {
"enabled": true
},
"ordered-list-style": {
"enabled": true,
"number-style": "ascending",
"list-end-style": "."
},
"proper-ellipsis": {
"enabled": true
},
"remove-consecutive-list-markers": {
"enabled": true
},
"remove-empty-list-markers": {
"enabled": true
},
"remove-hyphenated-line-breaks": {
"enabled": true
},
"remove-multiple-spaces": {
"enabled": false
},
"strong-style": {
"enabled": false,
"style": "consistent"
},
"two-spaces-between-lines-with-content": {
"enabled": false
},
"unordered-list-style": {
"enabled": true,
"list-style": "-"
},
"compact-yaml": {
"enabled": false,
"inner-new-lines": false
},
"consecutive-blank-lines": {
"enabled": false
},
"convert-spaces-to-tabs": {
"enabled": false,
"tabsize": 4
},
"empty-line-around-blockquotes": {
"enabled": false
},
"empty-line-around-code-fences": {
"enabled": false
},
"empty-line-around-math-blocks": {
"enabled": true
},
"empty-line-around-tables": {
"enabled": true
},
"heading-blank-lines": {
"enabled": false,
"bottom": true,
"empty-line-after-yaml": true
},
"line-break-at-document-end": {
"enabled": false
},
"move-math-block-indicators-to-their-own-line": {
"enabled": false
},
"paragraph-blank-lines": {
"enabled": false
},
"remove-empty-lines-between-list-markers-and-checklists": {
"enabled": false
},
"remove-link-spacing": {
"enabled": false
},
"space-after-list-markers": {
"enabled": false
},
"space-between-chinese-japanese-or-korean-and-english-or-numbers": {
"enabled": false
},
"trailing-spaces": {
"enabled": false,
"twp-space-line-break": false
},
"add-blockquote-indentation-on-paste": {
"enabled": false
},
"prevent-double-checklist-indicator-on-paste": {
"enabled": false
},
"prevent-double-list-item-indicator-on-paste": {
"enabled": false
},
"proper-ellipsis-on-paste": {
"enabled": false
},
"remove-hyphens-on-paste": {
"enabled": false
},
"remove-leading-or-trailing-whitespace-on-paste": {
"enabled": false
},
"remove-leftover-footnotes-from-quote-on-paste": {
"enabled": false
},
"remove-multiple-blank-lines-on-paste": {
"enabled": false
}
},
"lintOnSave": false,
"recordLintOnSaveLogs": false,
"displayChanged": true,
"settingsConvertedToConfigKeyValues": true,
"foldersToIgnore": [],
"linterLocale": "system-default",
"logLevel": 4,

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"id": "obsidian-linter",
"name": "Linter",
"version": "1.10.3",
"version": "1.15.1",
"minAppVersion": "0.15.6",
"description": "Formats and styles your notes. It can be used to format YAML tags, aliases, arrays, and metadata; footnotes; headings; spacing; math blocks; regular markdown contents like list, italics, and bold styles; and more with the use of custom rule options as well.",
"author": "Victor Tao",

View File

@@ -54,7 +54,7 @@
background-color: var(--interactive-accent) !important;
color: var(--text-on-accent);
padding: 4px 9px !important;
max-width: 200px !important;
max-width: 100% !important;
border: 1px solid var(--background-modifier-border);
border-radius: 8px 8px 2px 2px;
border-bottom: 0px;

View File

@@ -0,0 +1,12 @@
{
"styleLists": true,
"debug": false,
"stickCursor": "bullet-and-checkbox",
"betterEnter": true,
"betterTab": true,
"selectAll": true,
"listLines": false,
"listLineAction": "toggle-folding",
"dnd": true,
"previousRelease": "4.7.1"
}

File diff suppressed because one or more lines are too long

View File

@@ -1,8 +1,8 @@
{
"id": "obsidian-outliner",
"name": "Outliner",
"version": "4.3.0",
"minAppVersion": "1.0.0",
"version": "4.7.1",
"minAppVersion": "1.1.16",
"description": "Work with your lists like in Workflowy or RoamResearch.",
"author": "Viacheslav Slinko",
"authorUrl": "https://github.com/vslinko",

View File

@@ -1,14 +1,13 @@
/* lists */
/* lists and bullets */
.outliner-plugin-better-lists .cm-s-obsidian .HyperMD-list-line {
padding-top: 0.4em;
}
/* bullets */
.outliner-plugin-better-bullets .cm-formatting-list-ul {
.outliner-plugin-better-lists .cm-formatting-list-ul {
margin-right: 0.3em;
}
.outliner-plugin-better-bullets .list-bullet::after {
.outliner-plugin-better-lists .list-bullet::after {
width: 0.4em;
height: 0.4em;
background-color: var(--text-muted);
@@ -69,3 +68,38 @@
.cm-indent::before {
content: none;
}
/* drag-n-drop */
.outliner-plugin-dropping-line {
background-color: hsla(var(--interactive-accent-hsl), 0.4);
}
.outliner-plugin-dragging-line {
opacity: 0.5;
background-color: hsla(var(--interactive-accent-hsl), 0.2);
}
.outliner-plugin-drop-zone {
width: 300px;
height: 4px;
background: var(--color-accent);
z-index: 999;
position: absolute;
pointer-events: none;
}
.outliner-plugin-drop-zone-padding {
position: absolute;
height: 4px;
}
body.outliner-plugin-dnd:not(.outliner-plugin-dragging) .cm-formatting-list,
body.outliner-plugin-dnd:not(.outliner-plugin-dragging)
.cm-fold-indicator
.collapse-indicator {
cursor: grab !important;
}
html body.outliner-plugin-dnd.outliner-plugin-dragging {
cursor: grabbing !important;
}

View File

@@ -3737,9 +3737,18 @@ class CSSSettingsManager {
Object.keys(config).forEach((settingId) => {
const setting = config[settingId];
if (setting.type === SettingType.CLASS_TOGGLE) {
if (this.getSetting(section, settingId)) {
document.body.classList.remove(setting.id);
}
document.body.classList.remove(setting.id);
}
else if (setting.type === SettingType.CLASS_SELECT) {
const multiToggle = setting;
multiToggle.options.forEach((v) => {
if (typeof v === 'string') {
document.body.classList.remove(v);
}
else {
document.body.classList.remove(v.value);
}
});
}
});
});
@@ -3819,16 +3828,22 @@ class CSSSettingsManager {
setSetting(sectionId, settingId, value) {
this.settings[`${sectionId}@@${settingId}`] = value;
this.save();
this.removeClasses();
this.initClasses();
}
setSettings(settings) {
Object.keys(settings).forEach((id) => {
this.settings[id] = settings[id];
});
this.removeClasses();
this.initClasses();
return this.save();
}
clearSetting(sectionId, settingId) {
delete this.settings[`${sectionId}@@${settingId}`];
this.save();
this.removeClasses();
this.initClasses();
}
clearSection(sectionId) {
Object.keys(this.settings).forEach((key) => {
@@ -3838,6 +3853,8 @@ class CSSSettingsManager {
}
});
this.save();
this.removeClasses();
this.initClasses();
}
export(section, config) {
new ExportModal(this.plugin.app, this.plugin, section, config).open();
@@ -8027,13 +8044,6 @@ function createDescription(description, def, defLabel) {
}
return fragment;
}
let timer;
function customDebounce(cb, timeout = 300) {
clearTimeout(timer);
timer = setTimeout(() => {
cb();
}, timeout);
}
var fuzzysort = createCommonjsModule(function (module) {
((root, UMD) => {
@@ -8579,16 +8589,28 @@ var fuzzysort = createCommonjsModule(function (module) {
// TODO: (perf) prepareSearch seems slow
});
class AbstractSettingComponent {
constructor(sectionId, sectionName, setting, settingsManager, isView) {
class AbstractSettingComponent extends obsidian.Component {
constructor(parent, sectionId, sectionName, setting, settingsManager, isView) {
super();
this.childEl = null;
this.parent = parent;
this.sectionId = sectionId;
this.sectionName = sectionName;
this.setting = setting;
this.settingsManager = settingsManager;
this.isView = isView;
this.onInit();
}
onInit() { }
get containerEl() {
return this.parent instanceof HTMLElement
? this.parent
: this.parent.childEl;
}
onload() {
this.render();
}
onunload() {
this.destroy();
}
/**
* Matches the Component against `str`. A perfect match returns 0, no match returns negative infinity.
*
@@ -8614,10 +8636,10 @@ class AbstractSettingComponent {
const resetTooltip = 'Restore default';
class ClassToggleSettingComponent extends AbstractSettingComponent {
render(containerEl) {
render() {
const title = getTitle(this.setting);
const description = getDescription(this.setting);
this.settingEl = new obsidian.Setting(containerEl);
this.settingEl = new obsidian.Setting(this.containerEl);
this.settingEl.setName(title);
this.settingEl.setDesc(description !== null && description !== void 0 ? description : '');
this.settingEl.addToggle((toggle) => {
@@ -8625,12 +8647,6 @@ class ClassToggleSettingComponent extends AbstractSettingComponent {
toggle.setValue(value !== undefined ? !!value : !!this.setting.default);
toggle.onChange((value) => {
this.settingsManager.setSetting(this.sectionId, this.setting.id, value);
if (value) {
document.body.classList.add(this.setting.id);
}
else {
document.body.classList.remove(this.setting.id);
}
});
this.toggleComponent = toggle;
});
@@ -8639,12 +8655,6 @@ class ClassToggleSettingComponent extends AbstractSettingComponent {
b.onClick(() => {
const value = !!this.setting.default;
this.toggleComponent.setValue(value);
if (value) {
document.body.classList.add(this.setting.id);
}
else {
document.body.classList.remove(this.setting.id);
}
this.settingsManager.clearSetting(this.sectionId, this.setting.id);
});
b.setTooltip(resetTooltip);
@@ -8658,7 +8668,7 @@ class ClassToggleSettingComponent extends AbstractSettingComponent {
}
class ClassMultiToggleSettingComponent extends AbstractSettingComponent {
render(containerEl) {
render() {
const title = getTitle(this.setting);
const description = getDescription(this.setting);
if (typeof this.setting.default !== 'string') {
@@ -8666,7 +8676,7 @@ class ClassMultiToggleSettingComponent extends AbstractSettingComponent {
}
let prevValue = this.getPreviousValue();
const defaultLabel = this.getDefaultOptionLabel();
this.settingEl = new obsidian.Setting(containerEl);
this.settingEl = new obsidian.Setting(this.containerEl);
this.settingEl.setName(title);
this.settingEl.setDesc(createDescription(description, this.setting.default, defaultLabel));
this.settingEl.addDropdown((dropdown) => {
@@ -8684,12 +8694,6 @@ class ClassMultiToggleSettingComponent extends AbstractSettingComponent {
dropdown.setValue(prevValue);
dropdown.onChange((value) => {
this.settingsManager.setSetting(this.sectionId, this.setting.id, value);
if (value !== 'none') {
document.body.classList.add(value);
}
if (prevValue) {
document.body.classList.remove(prevValue);
}
prevValue = value;
});
this.dropdownComponent = dropdown;
@@ -8697,14 +8701,7 @@ class ClassMultiToggleSettingComponent extends AbstractSettingComponent {
this.settingEl.addExtraButton((b) => {
b.setIcon('reset');
b.onClick(() => {
const value = this.setting.default || 'none';
this.dropdownComponent.setValue(this.setting.default || 'none');
if (value !== 'none') {
document.body.classList.add(value);
}
if (prevValue) {
document.body.classList.remove(prevValue);
}
this.settingsManager.clearSetting(this.sectionId, this.setting.id);
});
b.setTooltip(resetTooltip);
@@ -8749,13 +8746,13 @@ class ClassMultiToggleSettingComponent extends AbstractSettingComponent {
}
class VariableTextSettingComponent extends AbstractSettingComponent {
render(containerEl) {
render() {
const title = getTitle(this.setting);
const description = getDescription(this.setting);
if (typeof this.setting.default !== 'string') {
return console.error(`${t('Error:')} ${title} ${t('missing default value')}`);
}
this.settingEl = new obsidian.Setting(containerEl);
this.settingEl = new obsidian.Setting(this.containerEl);
this.settingEl.setName(title);
this.settingEl.setDesc(createDescription(description, this.setting.default));
this.settingEl.addText((text) => {
@@ -8787,13 +8784,13 @@ class VariableTextSettingComponent extends AbstractSettingComponent {
}
class VariableNumberSettingComponent extends AbstractSettingComponent {
render(containerEl) {
render() {
const title = getTitle(this.setting);
const description = getDescription(this.setting);
if (typeof this.setting.default !== 'number') {
return console.error(`${t('Error:')} ${title} ${t('missing default value')}`);
}
this.settingEl = new obsidian.Setting(containerEl);
this.settingEl = new obsidian.Setting(this.containerEl);
this.settingEl.setName(title);
this.settingEl.setDesc(createDescription(description, this.setting.default.toString(10)));
this.settingEl.addText((text) => {
@@ -8823,13 +8820,13 @@ class VariableNumberSettingComponent extends AbstractSettingComponent {
}
class VariableNumberSliderSettingComponent extends AbstractSettingComponent {
render(containerEl) {
render() {
const title = getTitle(this.setting);
const description = getDescription(this.setting);
if (typeof this.setting.default !== 'number') {
return console.error(`${t('Error:')} ${title} ${t('missing default value')}`);
}
this.settingEl = new obsidian.Setting(containerEl);
this.settingEl = new obsidian.Setting(this.containerEl);
this.settingEl.setName(title);
this.settingEl.setDesc(createDescription(description, this.setting.default.toString(10)));
this.settingEl.addSlider((slider) => {
@@ -8860,14 +8857,14 @@ class VariableNumberSliderSettingComponent extends AbstractSettingComponent {
}
class VariableSelectSettingComponent extends AbstractSettingComponent {
render(containerEl) {
render() {
const title = getTitle(this.setting);
const description = getDescription(this.setting);
if (typeof this.setting.default !== 'string') {
return console.error(`${t('Error:')} ${title} ${t('missing default value')}`);
}
const defaultLabel = this.getDefaultOptionLabel();
this.settingEl = new obsidian.Setting(containerEl);
this.settingEl = new obsidian.Setting(this.containerEl);
this.settingEl.setName(title);
this.settingEl.setDesc(createDescription(description, this.setting.default, defaultLabel));
this.settingEl.addDropdown((dropdown) => {
@@ -8932,7 +8929,7 @@ var pickr_min = createCommonjsModule(function (module, exports) {
var Pickr = /*@__PURE__*/getDefaultExportFromCjs(pickr_min);
class VariableColorSettingComponent extends AbstractSettingComponent {
render(containerEl) {
render() {
var _a;
const title = getTitle(this.setting);
const description = getDescription(this.setting);
@@ -8954,16 +8951,16 @@ class VariableColorSettingComponent extends AbstractSettingComponent {
if (value !== undefined) {
swatches.push(value);
}
this.settingEl = new obsidian.Setting(containerEl);
this.settingEl = new obsidian.Setting(this.containerEl);
this.settingEl.setName(title);
this.settingEl.setDesc(createDescription(description, this.setting.default));
// fix, so that the color is correctly shown before the color picker has been opened
const defaultColor = value !== undefined ? value : this.setting.default;
containerEl.style.setProperty('--pcr-color', defaultColor);
this.containerEl.style.setProperty('--pcr-color', defaultColor);
this.pickr = Pickr.create(getPickrSettings({
isView: this.isView,
el: this.settingEl.controlEl.createDiv({ cls: 'picker' }),
containerEl: containerEl,
containerEl: this.containerEl,
swatches: swatches,
opacity: this.setting.opacity,
defaultColor: defaultColor,
@@ -8977,7 +8974,9 @@ class VariableColorSettingComponent extends AbstractSettingComponent {
});
this.pickr.on('show', () => {
const { result } = this.pickr.getRoot().interaction;
requestAnimationFrame(() => requestAnimationFrame(() => result.select()));
activeWindow.requestAnimationFrame(() => {
activeWindow.requestAnimationFrame(() => result.select());
});
});
this.pickr.on('cancel', onPickrCancel);
this.settingEl.addExtraButton((b) => {
@@ -8999,7 +8998,7 @@ class VariableColorSettingComponent extends AbstractSettingComponent {
}
class VariableThemedColorSettingComponent extends AbstractSettingComponent {
render(containerEl) {
render() {
const title = getTitle(this.setting);
const description = getDescription(this.setting);
if (typeof this.setting['default-light'] !== 'string' ||
@@ -9028,7 +9027,7 @@ class VariableThemedColorSettingComponent extends AbstractSettingComponent {
if (valueDark !== undefined) {
swatchesDark.push(valueDark);
}
this.settingEl = new obsidian.Setting(containerEl);
this.settingEl = new obsidian.Setting(this.containerEl);
this.settingEl.setName(title);
// Construct description
this.settingEl.descEl.createSpan({}, (span) => {
@@ -9051,9 +9050,9 @@ class VariableThemedColorSettingComponent extends AbstractSettingComponent {
cls: 'themed-color-wrapper',
});
// Create light color picker
this.createColorPickerLight(wrapper, containerEl, swatchesLight, valueLight, idLight);
this.createColorPickerLight(wrapper, this.containerEl, swatchesLight, valueLight, idLight);
// Create dark color picker
this.createColorPickerDark(wrapper, containerEl, swatchesDark, valueDark, idDark);
this.createColorPickerDark(wrapper, this.containerEl, swatchesDark, valueDark, idDark);
this.settingEl.settingEl.dataset.id = this.setting.id;
}
destroy() {
@@ -9081,7 +9080,7 @@ class VariableThemedColorSettingComponent extends AbstractSettingComponent {
}));
this.pickrLight.on('show', () => {
const { result } = this.pickrLight.getRoot().interaction;
requestAnimationFrame(() => requestAnimationFrame(() => result.select()));
activeWindow.requestAnimationFrame(() => activeWindow.requestAnimationFrame(() => result.select()));
});
this.pickrLight.on('save', (color, instance) => this.onSave(idLight, color, instance));
this.pickrLight.on('cancel', onPickrCancel);
@@ -9110,7 +9109,7 @@ class VariableThemedColorSettingComponent extends AbstractSettingComponent {
}));
this.pickrDark.on('show', () => {
const { result } = this.pickrDark.getRoot().interaction;
requestAnimationFrame(() => requestAnimationFrame(() => result.select()));
activeWindow.requestAnimationFrame(() => activeWindow.requestAnimationFrame(() => result.select()));
});
this.pickrDark.on('save', (color, instance) => this.onSave(idDark, color, instance));
this.pickrDark.on('cancel', onPickrCancel);
@@ -9132,17 +9131,17 @@ class VariableThemedColorSettingComponent extends AbstractSettingComponent {
}
class InfoTextSettingComponent extends AbstractSettingComponent {
render(containerEl) {
render() {
const title = getTitle(this.setting);
const description = getDescription(this.setting);
this.settingEl = new obsidian.Setting(containerEl);
this.settingEl = new obsidian.Setting(this.containerEl);
this.settingEl.setClass('style-settings-info-text');
if (title) {
this.settingEl.setName(title);
}
if (description) {
if (this.setting.markdown) {
obsidian.MarkdownRenderer.renderMarkdown(description, this.settingEl.descEl, '', undefined);
obsidian.MarkdownRenderer.renderMarkdown(description, this.settingEl.descEl, '', this);
this.settingEl.descEl.addClass('style-settings-markdown');
}
else {
@@ -9157,52 +9156,84 @@ class InfoTextSettingComponent extends AbstractSettingComponent {
}
}
function createSettingComponent(sectionId, sectionName, setting, settingsManager, isView) {
function createSettingComponent(parent, sectionId, sectionName, setting, settingsManager, isView) {
if (setting.type === SettingType.HEADING) {
return new HeadingSettingComponent(sectionId, sectionName, setting, settingsManager, isView);
return new HeadingSettingComponent(parent, sectionId, sectionName, setting, settingsManager, isView);
}
else if (setting.type === SettingType.INFO_TEXT) {
return new InfoTextSettingComponent(sectionId, sectionName, setting, settingsManager, isView);
return new InfoTextSettingComponent(parent, sectionId, sectionName, setting, settingsManager, isView);
}
else if (setting.type === SettingType.CLASS_TOGGLE) {
return new ClassToggleSettingComponent(sectionId, sectionName, setting, settingsManager, isView);
return new ClassToggleSettingComponent(parent, sectionId, sectionName, setting, settingsManager, isView);
}
else if (setting.type === SettingType.CLASS_SELECT) {
return new ClassMultiToggleSettingComponent(sectionId, sectionName, setting, settingsManager, isView);
return new ClassMultiToggleSettingComponent(parent, sectionId, sectionName, setting, settingsManager, isView);
}
else if (setting.type === SettingType.VARIABLE_TEXT) {
return new VariableTextSettingComponent(sectionId, sectionName, setting, settingsManager, isView);
return new VariableTextSettingComponent(parent, sectionId, sectionName, setting, settingsManager, isView);
}
else if (setting.type === SettingType.VARIABLE_NUMBER) {
return new VariableNumberSettingComponent(sectionId, sectionName, setting, settingsManager, isView);
return new VariableNumberSettingComponent(parent, sectionId, sectionName, setting, settingsManager, isView);
}
else if (setting.type === SettingType.VARIABLE_NUMBER_SLIDER) {
return new VariableNumberSliderSettingComponent(sectionId, sectionName, setting, settingsManager, isView);
return new VariableNumberSliderSettingComponent(parent, sectionId, sectionName, setting, settingsManager, isView);
}
else if (setting.type === SettingType.VARIABLE_SELECT) {
return new VariableSelectSettingComponent(sectionId, sectionName, setting, settingsManager, isView);
return new VariableSelectSettingComponent(parent, sectionId, sectionName, setting, settingsManager, isView);
}
else if (setting.type === SettingType.VARIABLE_COLOR) {
return new VariableColorSettingComponent(sectionId, sectionName, setting, settingsManager, isView);
return new VariableColorSettingComponent(parent, sectionId, sectionName, setting, settingsManager, isView);
}
else if (setting.type === SettingType.VARIABLE_THEMED_COLOR) {
return new VariableThemedColorSettingComponent(sectionId, sectionName, setting, settingsManager, isView);
return new VariableThemedColorSettingComponent(parent, sectionId, sectionName, setting, settingsManager, isView);
}
else {
return undefined;
}
}
function buildSettingComponentTree(opts) {
const { containerEl, isView, sectionId, settings, settingsManager, sectionName, } = opts;
const root = new HeadingSettingComponent(containerEl, sectionId, sectionName, settings[0], settingsManager, isView);
let currentHeading = root;
for (const setting of settings.splice(1)) {
if (setting.type === 'heading') {
const newHeading = setting;
if (newHeading.level < currentHeading.setting.level) {
while (newHeading.level < currentHeading.setting.level) {
currentHeading = currentHeading.parent;
}
if (currentHeading.setting.id === root.setting.id) {
currentHeading = currentHeading.addSettingChild(newHeading);
}
else {
currentHeading = currentHeading.parent.addSettingChild(newHeading);
}
}
else if (newHeading.level === currentHeading.setting.level) {
currentHeading = currentHeading.parent.addSettingChild(newHeading);
}
else {
currentHeading = currentHeading.addSettingChild(newHeading);
}
}
else {
currentHeading.addSettingChild(setting);
}
}
return root;
}
class HeadingSettingComponent extends AbstractSettingComponent {
onInit() {
constructor() {
super(...arguments);
this.children = [];
this.filteredChildren = [];
this.filterMode = false;
this.filterResultCount = 0;
}
render(containerEl) {
render() {
const title = getTitle(this.setting);
const description = getDescription(this.setting);
this.settingEl = new obsidian.Setting(containerEl);
this.settingEl = new obsidian.Setting(this.containerEl);
this.settingEl.setHeading();
this.settingEl.setClass('style-settings-heading');
this.settingEl.setName(title);
@@ -9214,28 +9245,28 @@ class HeadingSettingComponent extends AbstractSettingComponent {
});
obsidian.setIcon(iconContainer, 'right-triangle');
this.settingEl.nameEl.prepend(iconContainer);
if (this.filterMode) {
this.settingEl.nameEl.createSpan({
cls: 'style-settings-filter-result-count',
text: `${this.filterResultCount} Results`,
});
}
this.resultsEl = this.settingEl.nameEl.createSpan({
cls: 'style-settings-filter-result-count',
text: this.filterMode ? `${this.filterResultCount} Results` : undefined,
});
this.settingEl.settingEl.addEventListener('click', () => {
this.toggleVisible();
});
this.addResetButton();
this.addExportButton();
this.childEl = containerEl.createDiv({ cls: 'style-settings-container' });
this.childEl = this.containerEl.createDiv({
cls: 'style-settings-container',
});
this.setCollapsed(this.setting.collapsed);
}
destroy() {
var _a;
if (!this.setting.collapsed) {
this.destroyChildren();
}
this.removeChildren();
(_a = this.settingEl) === null || _a === void 0 ? void 0 : _a.settingEl.remove();
this.childEl.remove();
}
filter(filterString) {
var _a;
this.filteredChildren = [];
this.filterResultCount = 0;
for (const child of this.children) {
@@ -9254,10 +9285,18 @@ class HeadingSettingComponent extends AbstractSettingComponent {
}
}
this.filterMode = true;
this.setting.collapsed = false;
if (this.filterResultCount) {
this.setCollapsed(false);
}
else {
this.setCollapsed(true);
}
this.renderChildren();
(_a = this.resultsEl) === null || _a === void 0 ? void 0 : _a.setText(`${this.filterResultCount} Results`);
return this.filterResultCount;
}
clearFilter() {
var _a;
this.filteredChildren = [];
for (const child of this.children) {
if (child.setting.type === SettingType.HEADING) {
@@ -9265,36 +9304,37 @@ class HeadingSettingComponent extends AbstractSettingComponent {
}
}
this.filterMode = false;
this.setting.collapsed = true;
this.setCollapsed(true);
this.renderChildren();
(_a = this.resultsEl) === null || _a === void 0 ? void 0 : _a.empty();
}
renderChildren() {
this.destroyChildren();
this.removeChildren();
if (this.filterMode) {
for (const child of this.filteredChildren) {
child.render(this.childEl);
this.addChild(child);
}
}
else {
for (const child of this.children) {
child.render(this.childEl);
this.addChild(child);
}
}
}
destroyChildren() {
var _a;
removeChildren() {
for (const child of this.children) {
child.destroy();
this.removeChild(child);
}
(_a = this.childEl) === null || _a === void 0 ? void 0 : _a.empty();
}
toggleVisible() {
this.setCollapsed(!this.setting.collapsed);
}
setCollapsed(collapsed) {
var _a;
this.setting.collapsed = collapsed;
this.settingEl.settingEl.toggleClass('is-collapsed', collapsed);
(_a = this.settingEl) === null || _a === void 0 ? void 0 : _a.settingEl.toggleClass('is-collapsed', collapsed);
if (collapsed) {
this.destroyChildren();
this.removeChildren();
}
else {
this.renderChildren();
@@ -9322,14 +9362,11 @@ class HeadingSettingComponent extends AbstractSettingComponent {
});
});
}
addChild(child) {
const newSettingComponent = createSettingComponent(this.sectionId, this.sectionName, child, this.settingsManager, this.isView);
addSettingChild(child) {
const newSettingComponent = createSettingComponent(this, this.sectionId, this.sectionName, child, this.settingsManager, this.isView);
if (!newSettingComponent) {
return undefined;
}
if (newSettingComponent.setting.type === SettingType.HEADING) {
newSettingComponent.parent = this;
}
this.children.push(newSettingComponent);
return newSettingComponent;
}
@@ -9344,40 +9381,10 @@ class HeadingSettingComponent extends AbstractSettingComponent {
return children;
}
}
function buildSettingComponentTree(opts) {
const { isView, sectionId, settings, settingsManager, sectionName } = opts;
const root = new HeadingSettingComponent(sectionId, sectionName, settings[0], settingsManager, isView);
let currentHeading = root;
for (const setting of settings.splice(1)) {
if (setting.type === 'heading') {
const newHeading = setting;
if (newHeading.level < currentHeading.setting.level) {
while (newHeading.level < currentHeading.setting.level) {
currentHeading = currentHeading.parent;
}
if (currentHeading.setting.id === root.setting.id) {
currentHeading = currentHeading.addChild(newHeading);
}
else {
currentHeading = currentHeading.parent.addChild(newHeading);
}
}
else if (newHeading.level === currentHeading.setting.level) {
currentHeading = currentHeading.parent.addChild(newHeading);
}
else {
currentHeading = currentHeading.addChild(newHeading);
}
}
else {
currentHeading.addChild(setting);
}
}
return root;
}
class SettingsMarkup {
class SettingsMarkup extends obsidian.Component {
constructor(app, plugin, containerEl, isView) {
super();
this.settingsComponentTrees = [];
this.filterString = '';
this.settings = [];
@@ -9387,23 +9394,31 @@ class SettingsMarkup {
this.containerEl = containerEl;
this.isView = !!isView;
}
onload() {
this.display();
}
onunload() {
this.settingsComponentTrees = [];
}
display() {
this.generate(this.settings);
}
removeChildren() {
for (const settingsComponentTree of this.settingsComponentTrees) {
this.removeChild(settingsComponentTree);
}
}
/**
* Recursively destroys all setting elements.
*/
cleanup() {
var _a;
for (const settingsComponentTree of this.settingsComponentTrees) {
settingsComponentTree.destroy();
}
this.removeChildren();
(_a = this.settingsContainerEl) === null || _a === void 0 ? void 0 : _a.empty();
}
setSettings(settings, errorList) {
this.settings = settings;
this.errorList = errorList;
this.plugin.settingsManager.setConfig(settings);
if (this.containerEl.parentNode) {
this.generate(settings);
}
@@ -9479,17 +9494,15 @@ class SettingsMarkup {
// move the search component from the back to the front
setting.nameEl.appendChild(setting.controlEl.lastChild);
searchComponent.setValue(this.filterString);
searchComponent.onChange((value) => {
customDebounce(() => {
this.filterString = value;
if (value) {
this.filter();
}
else {
this.clearFilter();
}
}, 250);
});
searchComponent.onChange(obsidian.debounce((value) => {
this.filterString = value;
if (value) {
this.filter();
}
else {
this.clearFilter();
}
}, 250, true));
searchComponent.setPlaceholder('Search Style Settings...');
});
this.settingsContainerEl = containerEl.createDiv();
@@ -9504,20 +9517,21 @@ class SettingsMarkup {
collapsed: (_a = s.collapsed) !== null && _a !== void 0 ? _a : true,
resetFn: () => {
plugin.settingsManager.clearSection(s.id);
this.generate(this.settings);
this.rerender();
},
},
...s.settings,
];
try {
const settingsComponentTree = buildSettingComponentTree({
containerEl: this.settingsContainerEl,
isView: this.isView,
sectionId: s.id,
sectionName: s.name,
settings: options,
settingsManager: plugin.settingsManager,
});
settingsComponentTree.render(this.settingsContainerEl);
this.addChild(settingsComponentTree);
this.settingsComponentTrees.push(settingsComponentTree);
}
catch (e) {
@@ -9529,39 +9543,45 @@ class SettingsMarkup {
* Recursively filter all setting elements based on `filterString` and then re-renders.
*/
filter() {
this.cleanup();
for (const settingsComponentTree of this.settingsComponentTrees) {
settingsComponentTree.filter(this.filterString);
settingsComponentTree.render(this.settingsContainerEl);
}
}
/**
* Recursively clears the filter and then re-renders.
*/
clearFilter() {
this.cleanup();
for (const settingsComponentTree of this.settingsComponentTrees) {
settingsComponentTree.clearFilter();
settingsComponentTree.render(this.settingsContainerEl);
}
}
rerender() {
for (const settingsComponentTree of this.settingsComponentTrees) {
settingsComponentTree.render(this.settingsContainerEl);
}
this.cleanup();
this.display();
}
}
class CSSSettingsTab extends obsidian.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.settingsMarkup = new SettingsMarkup(app, plugin, this.containerEl);
this.plugin = plugin;
}
setSettings(settings, errorList) {
this.settings = settings;
this.errorList = errorList;
if (this.settingsMarkup) {
this.settingsMarkup.setSettings(settings, errorList);
}
}
display() {
this.settingsMarkup.display();
this.settingsMarkup = this.plugin.addChild(new SettingsMarkup(this.app, this.plugin, this.containerEl));
if (this.settings) {
this.settingsMarkup.setSettings(this.settings, this.errorList);
}
}
hide() {
this.settingsMarkup.cleanup();
this.plugin.removeChild(this.settingsMarkup);
this.settingsMarkup = null;
}
}
@@ -9570,7 +9590,22 @@ class SettingsView extends obsidian.ItemView {
constructor(plugin, leaf) {
super(leaf);
this.plugin = plugin;
this.settingsMarkup = new SettingsMarkup(plugin.app, plugin, this.contentEl, true);
}
setSettings(settings, errorList) {
this.settings = settings;
this.errorList = errorList;
if (this.settingsMarkup) {
this.settingsMarkup.setSettings(settings, errorList);
}
}
onload() {
this.settingsMarkup = this.addChild(new SettingsMarkup(this.plugin.app, this.plugin, this.contentEl, true));
if (this.settings) {
this.settingsMarkup.setSettings(this.settings, this.errorList);
}
}
onunload() {
this.settingsMarkup = null;
}
getViewType() {
return viewType;
@@ -9581,16 +9616,6 @@ class SettingsView extends obsidian.ItemView {
getDisplayText() {
return 'Style Settings';
}
onOpen() {
return __awaiter(this, void 0, void 0, function* () {
return this.settingsMarkup.display();
});
}
onClose() {
return __awaiter(this, void 0, void 0, function* () {
return this.settingsMarkup.cleanup();
});
}
}
class CSSSettingsPlugin extends obsidian.Plugin {
@@ -9625,6 +9650,13 @@ class CSSSettingsPlugin extends obsidian.Plugin {
this.darkEl = document.body.createDiv('theme-dark style-settings-ref');
document.body.classList.add('css-settings-manager');
this.parseCSS();
this.app.workspace.onLayoutReady(() => {
if (this.settingsList) {
this.app.workspace.getLeavesOfType(viewType).forEach((leaf) => {
leaf.view.setSettings(this.settingsList, this.errorList);
});
}
});
});
}
getCSSVar(id) {
@@ -9635,15 +9667,16 @@ class CSSSettingsPlugin extends obsidian.Plugin {
}
parseCSS() {
clearTimeout(this.debounceTimer);
this.settingsList = [];
this.errorList = [];
// remove registered theme commands (sadly undocumented API)
for (const command of this.commandList) {
// @ts-ignore
this.app.commands.removeCommand(command.id);
}
this.commandList = [];
this.debounceTimer = window.setTimeout(() => {
this.debounceTimer = activeWindow.setTimeout(() => {
this.settingsList = [];
this.errorList = [];
// remove registered theme commands (sadly undocumented API)
for (const command of this.commandList) {
// @ts-ignore
this.app.commands.removeCommand(command.id);
}
this.commandList = [];
this.settingsManager.removeClasses();
const styleSheets = document.styleSheets;
for (let i = 0, len = styleSheets.length; i < len; i++) {
const sheet = styleSheets.item(i);
@@ -9651,10 +9684,11 @@ class CSSSettingsPlugin extends obsidian.Plugin {
}
// compatability with Settings Search Plugin
this.registerSettingsToSettingsSearch();
this.settingsTab.settingsMarkup.setSettings(this.settingsList, this.errorList);
this.settingsTab.setSettings(this.settingsList, this.errorList);
this.app.workspace.getLeavesOfType(viewType).forEach((leaf) => {
leaf.view.settingsMarkup.setSettings(this.settingsList, this.errorList);
leaf.view.setSettings(this.settingsList, this.errorList);
});
this.settingsManager.setConfig(this.settingsList);
this.settingsManager.initClasses();
this.registerSettingCommands();
}, 100);
@@ -9775,12 +9809,6 @@ class CSSSettingsPlugin extends obsidian.Plugin {
callback: () => {
const value = !this.settingsManager.getSetting(section.id, setting.id);
this.settingsManager.setSetting(section.id, setting.id, value);
if (value) {
document.body.classList.add(setting.id);
}
else {
document.body.classList.remove(setting.id);
}
this.settingsTab.settingsMarkup.rerender();
for (const leaf of this.app.workspace.getLeavesOfType(viewType)) {
leaf.view.settingsMarkup.rerender();
@@ -9795,7 +9823,6 @@ class CSSSettingsPlugin extends obsidian.Plugin {
this.darkEl = null;
document.body.classList.remove('css-settings-manager');
this.settingsManager.cleanup();
this.settingsTab.settingsMarkup.cleanup();
this.deactivateView();
this.unregisterSettingsFromSettingsSearch();
}
@@ -9810,7 +9837,7 @@ class CSSSettingsPlugin extends obsidian.Plugin {
type: viewType,
active: true,
});
leaf.view.settingsMarkup.setSettings(this.settingsList, this.errorList);
leaf.view.setSettings(this.settingsList, this.errorList);
});
}
}

View File

@@ -1,7 +1,7 @@
{
"id": "obsidian-style-settings",
"name": "Style Settings",
"version": "1.0.3",
"version": "1.0.5",
"minAppVersion": "0.11.5",
"description": "Offers controls for adjusting theme, plugin, and snippet CSS variables.",
"author": "mgmeyers",

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"id": "quick-latex",
"name": "Quick Latex for Obsidian",
"version": "2.5.1",
"version": "2.6.1",
"minAppVersion": "0.9.12",
"description": "Speedup latex math typing with auto fraction, align block shortcut, matrix shortcut...etc",
"author": "joeyuping",

View File

@@ -4,59 +4,22 @@
"type": "split",
"children": [
{
"id": "3337825d2a9e4220",
"id": "0b7e99e39d69488e",
"type": "tabs",
"children": [
{
"id": "c40318d9980bd958",
"id": "4f3b7a6eabb0779a",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "EiM/EiM.md",
"mode": "source",
"source": false
}
}
},
{
"id": "1983f0e31a4107d2",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "EiM/Ćwiczenia/2. Charakterystyki.md",
"mode": "source",
"source": false
}
}
},
{
"id": "a1b988384588e7c5",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "AiSD/Ćwiczenia/2. Ćwiczenia.md",
"mode": "source",
"source": false
}
}
},
{
"id": "db8c5f3feee6da98",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "EiM/Wykłady/1. Wstęp.md",
"file": "AMiAL/AMiAL.md",
"mode": "source",
"source": false
}
}
}
],
"currentTab": 1
]
}
],
"direction": "vertical"
@@ -101,6 +64,14 @@
"type": "starred",
"state": {}
}
},
{
"id": "562379ddd83ebec1",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {}
}
}
]
}
@@ -122,7 +93,7 @@
"state": {
"type": "backlink",
"state": {
"file": "EiM/Ćwiczenia/2. Charakterystyki.md",
"file": "AMiAL/AMiAL.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
@@ -139,7 +110,7 @@
"state": {
"type": "outgoing-link",
"state": {
"file": "EiM/Ćwiczenia/2. Charakterystyki.md",
"file": "AMiAL/AMiAL.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
}
@@ -162,7 +133,7 @@
"state": {
"type": "outline",
"state": {
"file": "EiM/Ćwiczenia/2. Charakterystyki.md"
"file": "AMiAL/AMiAL.md"
}
}
},
@@ -243,42 +214,43 @@
"audio-recorder:Start/stop recording": false,
"3d-graph:3D Graph": false,
"juggl:Juggl global graph": false,
"obsidian-excalidraw-plugin:Create new drawing": false,
"breadcrumbs:Breadcrumbs Visualisation": false
"random-note:Open random note": false,
"breadcrumbs:Breadcrumbs Visualisation": false,
"obsidian-excalidraw-plugin:Create new drawing": false
}
},
"active": "1983f0e31a4107d2",
"active": "4f3b7a6eabb0779a",
"lastOpenFiles": [
"AiSD/AiSD.md",
"TC/Wykład/8. Przerzutniki.md",
"TC/Wykład/7..md",
"TC/Wykład/3. ?.md",
"TC/Ćwiczenia/aaa.md",
"TC/Ćwiczenia/Ćwiczenia.md",
"TC/TC.md",
"EiM/Ćwiczenia/Analiza stałoprądowa.md",
"!Załączniki/Analiza stałoprądowa 2023-05-09 13.50.06.excalidraw.md",
"AMiAL/Ćwiczenia/Zadania/Całki/Zadanie 1.md",
"AMiAL/Ćwiczenia/Zadania/Całki/Zadanie 2.md",
"AMiAL/!Materiały/calki_1.pdf",
"AMiAL/AMiAL.md",
"Elektrotechnika/Ćwiczenia/20230428101941.md",
"!Załączniki/20230428101941 2023-04-28 10.39.09.excalidraw.md",
"!Załączniki/20230428101941 2023-04-28 10.22.19.excalidraw.md",
"AMiAL/Ćwiczenia/2 SEM/20230303081617.md",
"EiM/EiM.md",
"TC/Ćwiczenia/Untitled.md",
"TC/Wykład/0. Wstęp.md",
"TC/Wykład/Wykład.md",
"TC/Ćwiczenia/1. Algebra Boola.md",
"TC/Ćwiczenia/2. Realizacja układów na stykach.md",
"TC/Ćwiczenia/3. Układy iteracyjne.md",
"TC/Laboratorium/Laboratorium.md",
"!Załączniki/2. Charakterystyki 2023-04-25 13.49.32.excalidraw.md",
"EiM/Ćwiczenia/2. Charakterystyki.md",
"EiM/EiM.md",
"TIiK/Ćwiczenia/1. Logarytmy.md",
"TIiK/Wykład/4..md",
"AiSD/Ćwiczenia/2. Ćwiczenia.md",
"AiSD/Ćwiczenia/3. Złożoność i czynnik sumacyjny.md",
"AiSD/AiSD.md",
"AMiAL/AMiAL.md",
"AMiAL/Ćwiczenia/Zadania/Całki/Zadanie 5.md",
"TC/TC.md",
"TC/Wykład/6. Układy Sekwencyjne.md",
"TC/Wykład/Wykład.md",
"TC/Ćwiczenia/Untitled.md",
"EiM/Wykłady/1. Wstęp.md",
"TIiK/Wykład/2..md",
"TIiK/Wykład/3. Łańcuchy markowa.md",
"TIiK/Wykład/Wykład.md",
"TIiK/Ćwiczenia/2. Markow.md",
"TIiK/TIiK.md",
"TC/Ćwiczenia/Ćwiczenia.md",
"EiM/Ćwiczenia/Ćwiczenia.md",
"!Załączniki/Untitled 2023-04-19 10.28.44.excalidraw.md",
"TC/ALGEBRA BOOLOWSKA.md",
"TC/Ćwiczenia/2. Realizacja układów na stykach.md",
"EiM/Ćwiczenia/1. Miernictwo.md",
"!Załączniki/Recording 20230418135018.webm",
"!Załączniki/Recording 20230418134959.webm",
"EiM/Ćwiczenia",
"AMiAL/!Materiały/calki_1.pdf",
"AMiAL/!Materiały/w0_intro.pdf",
"!Załączniki/Excalidraw/Scripts/Downloaded/Normalize Selected Arrows.svg",
"!Załączniki/Excalidraw/Scripts/Downloaded/Fixed inner distance.svg",

View File

@@ -56,9 +56,22 @@ $$
\begin{gather}
\int\frac{x^{2}-x-2}{\sqrt[3]{x^{2}}}dx=\int\frac{x^{2}-x-2}{x^{\frac{2}{3}}}dx=\int \frac{x^{2}}{x^{\frac{2}{3}}}dx-\int \frac{x}{x^{\frac{2}{3}}}dx-\int \frac{2}{x^{\frac{2}{3}}}dx=\\
=
=\int x^{\frac{4}{3}}dx- \int x^{\frac{1}{3}}dx - \int \frac{2}{x^{\frac{2}{3}}}dx= \frac{3x^{\frac{7}{3}}}{7}- \frac{3x^{\frac{4}{3}}}{4}-2\cdot3x^\frac{1}{3}+C=\\
=\frac{3x^{2}\sqrt[3]{x}}{7} - \frac{3x\sqrt[3]{x}}{4} -6 \sqrt[3]{x}+C
\end{gather}
$$
## 15.
$$\begin{gather}
\int \frac{(x+\sqrt{x})(\sqrt{x}+\sqrt[4]{x})(\sqrt{x}-\sqrt[4]{x})}{x}dx=\int \frac{(x+\sqrt{x})(x - \sqrt{x})}{x}dx= \\
= \int\frac{x^{2}-x}{x}dx=\int x-1dx = \frac{x^{2}}{2}-x+C
\end{gather}$$
## 16.
$$
\int\frac{\sqrt{x+2\sqrt{x}+1}}{x}dx=\int \frac{x^{\frac{1}{2}}+1}{x}dx= \int \frac{x^{\frac{1}{2}}}{x}+\int \frac{1}{x}dx=2x^{\frac{1}{2}}+\ln|x|+C
$$
## 17.
$$\int \frac{\sqrt[3]{x}-1}{\sqrt[6]{x}-1}dx=\int\frac{x^{\frac{1}{3}}-1}{x^{\frac{1}{6}}-1}dx=\int\frac{x^{\frac{1}{3}}}{x^{\frac{1}{6}}-1}-\int\frac{1}{x^{\frac{1}{6}}-1}=$$
## 18.
$$\int (4^{x}+2^{-x})dx=\frac{4x}{\ln 4}+ \int (\frac{1}{2})^{x}dx=\frac{4^{x}}{\ln 4}+\frac{(\frac{1}{2})^{x}}{\ln \frac{1}{2}}+c$$

View File

@@ -0,0 +1,3 @@
# Obliczyć całki.
## 1.
$$\int x \cos x dx=\sin x +C$$

View File

@@ -1,3 +1,5 @@
![[2. Charakterystyki 2023-04-25 13.49.32.excalidraw]]
$K(j\omega) = \frac{U_o}{U_i}= \frac{1}{1+\frac{j\omega}{\omega_{g}}}$
## Narysuj charakterystykę częstotliwościową

View File

@@ -0,0 +1,2 @@
![[Analiza stałoprądowa 2023-05-09 13.50.06.excalidraw]]

View File

@@ -0,0 +1,10 @@
| |S|jω|
|-|-|-|
|R|R|R|
|L|Z$_L$=sL|Z$_L$=jωL|
![[20230428101941 2023-04-28 10.22.19.excalidraw]]
![[20230428101941 2023-04-28 10.39.09.excalidraw]]

View File

@@ -0,0 +1,14 @@
|q→Q|D|T|SR|JK|
|---|-|-|--|--|
|0→0|0|0|0-|0-|
|0→1|**1**|1|10|1-|
|1→0|0|1|01|-1|
|1→1|1|0|-0|-0|
D - \[$\mathbb{1},\ 1$\]
T - \[$\mathbb{0},\ \mathbb{1}$\]
S - \[$\mathbb{1},\ (1)$\]
R - \[$\mathbb{0},\ 0$\]
J - \[$\mathbb{1},\ (\mathbb{0},\ 1)$\]
K - \[$\mathbb{0},\ (\mathbb{1},\ 0)$\]

1
TC/Ćwiczenia/aaa.md Normal file
View File

@@ -0,0 +1 @@
Zamek szyfrowy otwierający drzwi po wykryciu sekwencji na a i ab