diff --git a/apps/build-docs/package.json b/apps/build-docs/package.json
index b60c7b6a0..0ec82b83a 100644
--- a/apps/build-docs/package.json
+++ b/apps/build-docs/package.json
@@ -9,7 +9,7 @@
"keywords": [],
"author": "Elian Doran ",
"license": "AGPL-3.0-only",
- "packageManager": "pnpm@10.23.0",
+ "packageManager": "pnpm@10.24.0",
"devDependencies": {
"@redocly/cli": "2.12.0",
"archiver": "7.0.1",
diff --git a/apps/client/package.json b/apps/client/package.json
index fdd23fb28..95b8ca1f3 100644
--- a/apps/client/package.json
+++ b/apps/client/package.json
@@ -77,7 +77,7 @@
"@types/reveal.js": "5.2.1",
"@types/tabulator-tables": "6.3.0",
"copy-webpack-plugin": "13.0.1",
- "happy-dom": "20.0.10",
+ "happy-dom": "20.0.11",
"script-loader": "0.7.2",
"vite-plugin-static-copy": "3.1.4"
}
diff --git a/apps/client/src/desktop.ts b/apps/client/src/desktop.ts
index cca6c8c0f..6462c1338 100644
--- a/apps/client/src/desktop.ts
+++ b/apps/client/src/desktop.ts
@@ -58,6 +58,7 @@ function initOnElectron() {
initDarkOrLightMode(style);
initTransparencyEffects(style, currentWindow);
+ initFullScreenDetection(currentWindow);
if (options.get("nativeTitleBarVisible") !== "true") {
initTitleBarButtons(style, currentWindow);
@@ -87,6 +88,11 @@ function initTitleBarButtons(style: CSSStyleDeclaration, currentWindow: Electron
}
}
+function initFullScreenDetection(currentWindow: Electron.BrowserWindow) {
+ currentWindow.on("enter-full-screen", () => document.body.classList.add("full-screen"));
+ currentWindow.on("leave-full-screen", () => document.body.classList.remove("full-screen"));
+}
+
function initTransparencyEffects(style: CSSStyleDeclaration, currentWindow: Electron.BrowserWindow) {
if (window.glob.platform === "win32") {
const material = style.getPropertyValue("--background-material");
diff --git a/apps/client/src/menus/context_menu.ts b/apps/client/src/menus/context_menu.ts
index 3be7155aa..6bd9de9e4 100644
--- a/apps/client/src/menus/context_menu.ts
+++ b/apps/client/src/menus/context_menu.ts
@@ -75,10 +75,7 @@ class ContextMenu {
if (this.isMobile) {
this.$cover.on("click", () => this.hide());
} else {
- $(document).on("click", (e) => {
- console.log("Hide due to clickus")
- this.hide()
- });
+ $(document).on("click", (e) => this.hide());
}
}
diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css
index d49a14f7e..342cd671a 100644
--- a/apps/client/src/stylesheets/style.css
+++ b/apps/client/src/stylesheets/style.css
@@ -2009,7 +2009,7 @@ body.electron.platform-darwin:not(.native-titlebar) .tab-row-container {
-webkit-app-region: drag;
}
-body.electron.platform-darwin:not(.native-titlebar) #tab-row-left-spacer {
+body.electron.platform-darwin:not(.native-titlebar):not(.full-screen) #tab-row-left-spacer {
width: 80px;
}
diff --git a/apps/client/src/translations/cn/translation.json b/apps/client/src/translations/cn/translation.json
index b15d407dd..75efb4b7c 100644
--- a/apps/client/src/translations/cn/translation.json
+++ b/apps/client/src/translations/cn/translation.json
@@ -1702,7 +1702,7 @@
"paste": "粘贴",
"paste-as-plain-text": "以纯文本粘贴",
"search_online": "用 {{searchEngine}} 搜索 \"{{term}}\"",
- "search_in_trilium": "在 Trilium 中查找搜索 \"{{term}}\""
+ "search_in_trilium": "在 Trilium 中搜索「{{term}}」"
},
"image_context_menu": {
"copy_reference_to_clipboard": "复制引用到剪贴板",
diff --git a/apps/client/src/translations/cs/translation.json b/apps/client/src/translations/cs/translation.json
index 165b4f239..3c758f16b 100644
--- a/apps/client/src/translations/cs/translation.json
+++ b/apps/client/src/translations/cs/translation.json
@@ -43,7 +43,7 @@
"link_title_arbitrary": "titulek odkazu může být změněn libovolně"
},
"branch_prefix": {
- "prefix": "Prefix: ",
+ "prefix": "Předpona: ",
"save": "Uložit",
"edit_branch_prefix": "Upravit prefix větve",
"edit_branch_prefix_multiple": "Upravit prefix větve pro {{count}} větví",
@@ -68,20 +68,54 @@
},
"confirm": {
"cancel": "Zrušit",
- "ok": "OK"
+ "ok": "OK",
+ "confirmation": "Potvrzení",
+ "are_you_sure_remove_note": "Opravdu chcete odstranit poznámku „{{title}}“ z mapy vztahů?",
+ "if_you_dont_check": "Pokud tuto možnost nezaškrtnete, poznámka bude odstraněna pouze z mapy vztahů.",
+ "also_delete_note": "Odstraňte také poznámku"
},
"delete_notes": {
"cancel": "Zrušit",
"ok": "OK",
- "close": "Zavřít"
+ "close": "Zavřít",
+ "delete_notes_preview": "Odstranit náhled poznámek",
+ "delete_all_clones_description": "Odstraňte také všechny klony (lze vrátit zpět v nedávných změnách)",
+ "erase_notes_description": "Normální (měkké) smazání pouze označí poznámky jako smazané a lze je během určité doby obnovit (v dialogovém okně posledních změn). Zaškrtnutím této možnosti se poznámky okamžitě vymažou a nebude možné je obnovit.",
+ "erase_notes_warning": "Trvale smažte poznámky (nelze vrátit zpět), včetně všech klonů. Tím se vynutí opětovné načtení aplikace.",
+ "notes_to_be_deleted": "Následující poznámky budou smazány ({{notesCount}})",
+ "no_note_to_delete": "Žádná poznámka nebude smazána (pouze klony).",
+ "broken_relations_to_be_deleted": "Následující vazby budou přerušeny a smazány ({{relationCount}})",
+ "deleted_relation_text": "Poznámka {{- note}} (bude smazána) je odkazována vazbou {{- relation}} pocházející z {{- source}}."
},
"export": {
- "close": "Zavřít"
+ "close": "Zavřít",
+ "export_note_title": "Exportovat poznámku",
+ "export_type_subtree": "Tato poznámka a všechny její odvozené poznámky",
+ "format_html": "HTML – doporučeno, protože zachovává veškeré formátování",
+ "format_html_zip": "HTML v archivu ZIP – toto se doporučuje, protože se tak zachová veškeré formátování.",
+ "format_markdown": "Markdown – zachovává většinu formátování.",
+ "format_opml": "OPML – formát pro výměnu osnov pouze pro text. Formátování, obrázky a soubory nejsou zahrnuty.",
+ "opml_version_1": "OPML v1.0 – pouze prostý text",
+ "opml_version_2": "OPML v2.0 – umožňuje také HTML",
+ "export_type_single": "Pouze tato poznámka bez jejích potomků",
+ "export": "Exportovat",
+ "choose_export_type": "Nejprve vyberte typ exportu",
+ "export_status": "Stav exportu",
+ "export_in_progress": "Export probíhá: {{progressCount}}",
+ "export_finished_successfully": "Export byl úspěšně dokončen.",
+ "format_pdf": "PDF – pro tisk nebo sdílení.",
+ "share-format": "HTML pro publikování na webu – používá stejný motiv jako sdílené poznámky, ale lze jej publikovat jako statický web."
},
"clone_to": {
"clone_notes_to": "Klonovat poznámky do...",
"help_on_links": "Nápověda k odkazům",
"notes_to_clone": "Poznámky na klonování",
- "search_for_note_by_its_name": "hledat poznámku dle jejího názvu"
+ "search_for_note_by_its_name": "hledat poznámku dle jejího názvu",
+ "prefix_optional": "Předpona (volitelná)",
+ "target_parent_note": "Zaměřit rodičovskou poznámku",
+ "cloned_note_prefix_title": "Klonovaná poznámka se zobrazí ve stromu poznámek s danou předponou",
+ "clone_to_selected_note": "Klonovat vybranou poznámku",
+ "no_path_to_clone_to": "Žádná cest pro klonování.",
+ "note_cloned": "Poznámka: „{{clonedTitle}}“ bylo naklonováno do „{{targetTitle}}“"
}
}
diff --git a/apps/client/src/translations/de/translation.json b/apps/client/src/translations/de/translation.json
index 7393c15ba..20b776e74 100644
--- a/apps/client/src/translations/de/translation.json
+++ b/apps/client/src/translations/de/translation.json
@@ -769,7 +769,8 @@
"geo-map": "Weltkarte",
"board": "Tafel",
"include_archived_notes": "Zeige archivierte Notizen",
- "presentation": "Präsentation"
+ "presentation": "Präsentation",
+ "expand_all_levels": "Alle Ebenen erweitern"
},
"edited_notes": {
"no_edited_notes_found": "An diesem Tag wurden noch keine Notizen bearbeitet...",
diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json
index bacd7dc95..53427faae 100644
--- a/apps/client/src/translations/en/translation.json
+++ b/apps/client/src/translations/en/translation.json
@@ -1727,7 +1727,8 @@
"refresh-saved-search-results": "Refresh saved search results",
"create-child-note": "Create child note",
"unhoist": "Unhoist",
- "toggle-sidebar": "Toggle sidebar"
+ "toggle-sidebar": "Toggle sidebar",
+ "dropping-not-allowed": "Dropping notes into this location is not allowed."
},
"title_bar_buttons": {
"window-on-top": "Keep Window on Top"
@@ -1830,7 +1831,8 @@
"duplicate-launcher": "Duplicate launcher "
},
"editable-text": {
- "auto-detect-language": "Auto-detected"
+ "auto-detect-language": "Auto-detected",
+ "keeps-crashing": "Editing component keeps crashing. Please try restarting Trilium. If problem persists, consider creating a bug report."
},
"highlighting": {
"title": "Code Blocks",
diff --git a/apps/client/src/translations/ja/translation.json b/apps/client/src/translations/ja/translation.json
index aec16110a..d8677c305 100644
--- a/apps/client/src/translations/ja/translation.json
+++ b/apps/client/src/translations/ja/translation.json
@@ -541,7 +541,11 @@
"geo-map": "ジオマップ",
"board": "ボード",
"include_archived_notes": "アーカイブされたノートを表示",
- "presentation": "プレゼンテーション"
+ "presentation": "プレゼンテーション",
+ "expand_tooltip": "このコレクションの直下の子(1階層下)を展開します。その他のオプションについては、右側の矢印を押してください。",
+ "expand_first_level": "直下の子を展開",
+ "expand_nth_level": "{{depth}} 階層下まで展開",
+ "expand_all_levels": "すべての階層を展開"
},
"note_types": {
"geo-map": "ジオマップ",
diff --git a/apps/client/src/translations/tw/translation.json b/apps/client/src/translations/tw/translation.json
index 289cd4607..5b4fb2295 100644
--- a/apps/client/src/translations/tw/translation.json
+++ b/apps/client/src/translations/tw/translation.json
@@ -1661,7 +1661,7 @@
"paste": "貼上",
"paste-as-plain-text": "以純文字貼上",
"search_online": "用 {{searchEngine}} 搜尋 \"{{term}}\"",
- "search_in_trilium": "在 Trilium 中搜尋 \"{{term}}\""
+ "search_in_trilium": "在 Trilium 中搜尋「{{term}}」"
},
"image_context_menu": {
"copy_reference_to_clipboard": "複製引用到剪貼簿",
diff --git a/apps/client/src/widgets/note_tree.ts b/apps/client/src/widgets/note_tree.ts
index 49eb4dcac..5d15fccd8 100644
--- a/apps/client/src/widgets/note_tree.ts
+++ b/apps/client/src/widgets/note_tree.ts
@@ -508,7 +508,7 @@ export default class NoteTreeWidget extends NoteContextAwareWidget {
(data.hitMode === "over" && node.data.noteType === "search") ||
(["after", "before"].includes(data.hitMode) && (node.data.noteId === hoistedNoteService.getHoistedNoteId() || node.getParent().data.noteType === "search"))
) {
- await dialogService.info("Dropping notes into this location is not allowed.");
+ await dialogService.info(t("note_tree.dropping-not-allowed"));
return;
}
diff --git a/apps/client/src/widgets/type_widgets/text/EditableText.tsx b/apps/client/src/widgets/type_widgets/text/EditableText.tsx
index 828989671..5e3d06a76 100644
--- a/apps/client/src/widgets/type_widgets/text/EditableText.tsx
+++ b/apps/client/src/widgets/type_widgets/text/EditableText.tsx
@@ -17,6 +17,7 @@ import TouchBar, { TouchBarButton, TouchBarGroup, TouchBarSegmentedControl } fro
import { RefObject } from "preact";
import { buildSelectedBackgroundColor } from "../../../components/touch_bar";
import { deferred } from "@triliumnext/commons";
+import { t } from "../../../services/i18n";
/**
* The editor can operate into two distinct modes:
@@ -279,7 +280,7 @@ function onWatchdogStateChange(watchdog: EditorWatchdog) {
logError(`CKEditor crash logs: ${JSON.stringify(watchdog.crashes, null, 4)}`);
if (currentState === "crashedPermanently") {
- dialog.info(`Editing component keeps crashing. Please try restarting Trilium. If problem persists, consider creating a bug report.`);
+ dialog.info(t("editable-text.keeps-crashing"));
watchdog.editor?.enableReadOnlyMode("crashed-editor");
}
}
diff --git a/apps/desktop/package.json b/apps/desktop/package.json
index 0753e7bb3..755e48032 100644
--- a/apps/desktop/package.json
+++ b/apps/desktop/package.json
@@ -35,7 +35,7 @@
"@triliumnext/commons": "workspace:*",
"@triliumnext/server": "workspace:*",
"copy-webpack-plugin": "13.0.1",
- "electron": "38.7.1",
+ "electron": "38.7.2",
"@electron-forge/cli": "7.10.2",
"@electron-forge/maker-deb": "7.10.2",
"@electron-forge/maker-dmg": "7.10.2",
diff --git a/apps/edit-docs/package.json b/apps/edit-docs/package.json
index 9aa8ebe82..54723b27c 100644
--- a/apps/edit-docs/package.json
+++ b/apps/edit-docs/package.json
@@ -12,7 +12,7 @@
"@triliumnext/desktop": "workspace:*",
"@types/fs-extra": "11.0.4",
"copy-webpack-plugin": "13.0.1",
- "electron": "38.7.1",
+ "electron": "38.7.2",
"fs-extra": "11.3.2"
},
"scripts": {
diff --git a/apps/server/package.json b/apps/server/package.json
index a7b34797a..5cf4c1809 100644
--- a/apps/server/package.json
+++ b/apps/server/package.json
@@ -80,7 +80,7 @@
"debounce": "3.0.0",
"debug": "4.4.3",
"ejs": "3.1.10",
- "electron": "38.7.1",
+ "electron": "38.7.2",
"electron-debug": "4.1.0",
"electron-window-state": "5.0.3",
"escape-html": "1.0.3",
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Keyboard Shortcuts.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Keyboard Shortcuts.html
index a9c2d7c65..c50cd159a 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Keyboard Shortcuts.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Keyboard Shortcuts.html
@@ -5,69 +5,50 @@
Keyboard shortcuts. Using global: prefix, you can assign a shortcut
which will work even without Trilium being in focus (requires app restart
to take effect).
+Tree
+See the corresponding section: Keyboard shortcuts
+
Note navigation
- ↑ , ↓ - go up/down in the
- list of notes, Ctrl + Shift + ↑ and Ctrl + Shift + ↓ work
- also from editor
- ← , → - collapse/expand node
- Alt + ← , Alt + → -
+ Alt + ← , Alt + → –
go back / forwards in the history
- Ctrl + J - show "Jump to" dialog
+ Ctrl + J – show "Jump to" dialog
- Ctrl + . - scroll to current note (useful when you
+ Ctrl + . – scroll to current note (useful when you
scroll away from your note or your focus is currently in the editor)
- Backspace - jumps to parent note
- Alt + C - collapse whole note tree
- Alt + - (alt with minus sign) - collapse subtree (if
- some subtree takes too much space on tree pane you can collapse it)
- you can define a label #keyboardShortcut with
- e.g. value Ctrl + I . Pressing this keyboard combination
- will then bring you to the note on which it is defined. Note that Trilium
- must be reloaded/restarted (Ctrl + R ) for changes to
- be in effect.
+ Backspace – jumps to parent note
+ Alt + C – collapse whole note tree
+ Alt + - (alt with minus sign) – collapse subtree (if
+ some subtree takes too much space on tree pane you can collapse it)
+ you can define a label #keyboardShortcut with
+ e.g. value Ctrl + I . Pressing this keyboard combination
+ will then bring you to the note on which it is defined. Note that Trilium
+ must be reloaded/restarted (Ctrl + R ) for changes to
+ be in effect.
See demo of some of these features in note navigation .
Tabs
- Ctrl + 🖱 Left click - (or middle mouse click) on note
+ Ctrl + 🖱 Left click – (or middle mouse click) on note
link opens note in a new tab
Only in desktop (electron build):
- Ctrl + T - opens empty tab
- Ctrl + W - closes active tab
- Ctrl + Tab - activates next tab
- Ctrl + Shift + Tab - activates previous tab
+ Ctrl + T – opens empty tab
+ Ctrl + W – closes active tab
+ Ctrl + Tab – activates next tab
+ Ctrl + Shift + Tab – activates previous tab
Creating notes
- CTRL+O - creates new note after the current note
- CTRL+P - creates new sub-note into current note
- F2 - edit prefix of current
- note clone
-
-Moving / cloning notes
-
- Ctrl + ↑ , Ctrl + ↓ -
- move note up/down in the note list
- Ctrl + ← - move note up in the note tree
- Ctrl +→ - move note down in the note
- tree
- Shift +↑ , Shift +↓ -
- multi-select note above/below
- Ctrl +A - select all notes in the current level
- Shift +🖱 Left click - multi select note which you
- clicked on
- Ctrl +C - copies current note (or current selection)
- into clipboard (used for cloning
-
- Ctrl +X - cuts current (or current selection) note
- into clipboard (used for moving notes)
- Ctrl +V - pastes note(s) as sub-note into current
- note (which is either move or clone depending on whether it was copied
- or cut into clipboard)
- Del - delete note / sub-tree
+ CTRL +O – creates new note after the current note
+ CTRL +P – creates new sub-note into current note
+ F2 – edit Branch prefix of
+ current note clone
Editing notes
@@ -77,30 +58,32 @@
class="reference-link" href="#root/_help_QrtTYPmdd1qq">Markdown-like formatting.
- Enter in tree pane switches from tree pane into note title.
+ Enter in tree pane switches from tree pane into note title.
Enter from note title switches focus to text editor. Ctrl +. switches
back from editor to tree pane.
- Ctrl +. - jump away from the editor to tree pane and
+ Ctrl +. – jump away from the editor to tree pane and
scroll to current note
Runtime shortcuts
These are hooked in Electron to be similar to native browser keyboard
shortcuts.
- F5 , Ctrl -R - reloads Trilium front-end
- Ctrl +Shift +I - show developer tools
- Ctrl +F - show search dialog
- Ctrl +- - zoom out
- Ctrl += - zoom in
+ F5 , Ctrl +R – reloads Trilium front-end
+ Ctrl +Shift +I – show developer tools
+ Ctrl +F – show search dialog
+ Ctrl +- – zoom out
+ Ctrl += – zoom in
Other
- Alt +O - show SQL console (use only if you know what
+ Alt + O – show SQL console (use only if you know what
you're doing)
- Alt +M - distraction-free mode - display only note
+ Alt + M – distraction-free mode - display only note
editor, everything else is hidden
- F11 - toggle full screen
- Ctrl + S - toggle search form
+ F11 – toggle full screen
+ Ctrl + S – toggle search form
in tree pane
- Alt +A - show note attributes dialog
+ Alt +A – show note attributes dialog
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Keyboard shortcuts.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Keyboard shortcuts.html
index befdaae03..833792e85 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Keyboard shortcuts.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Keyboard shortcuts.html
@@ -1,33 +1,53 @@
The Note Tree comes
with multiple keyboard shortcuts to make editing faster:
+Navigation within the tree
- Opening notes:
-
- Click to open the note in the current tab.
- Ctrl +Click or Middle click to open the note
- in a new tab.
- Ctrl +Right click to open the note in Quick edit .
-
-
- Navigation within the tree:
-
- Up and Down to navigate between notes.
- Left to collapse a note, or Right to expand it.
-
-
- Clipboard management:
-
- Ctrl +C to copy a note.
- Ctrl +X to cut a note.
- Ctrl +V to paste it somewhere.
-
-
- For Multiple selection :
-
- Alt +Click to add a single note to the current selection.
- Shift +Click to select a range of notes, starting
- from the current note (the highlighted one) to the one that is being clicked.
-
-
+ ↑ and ↑ to navigate between
+ notes.
+ ← to collapse a note with children, or → to
+ expand it.
+ ← on a note with no children to navigate to its
+ parent.
+
+Opening notes
+
+ Click to open the note in the current tab.
+ Ctrl +Click or Middle click to open the note
+ in a new tab.
+ Ctrl +Right click to open the note in Quick edit .
+
+Clipboard management
+
+ Ctrl +C to copy one or more notes based on selection
+ (see Cloning Notes ).
+ Ctrl +X to cut one or more notes (for moving them).
+ Ctrl +V to paste them somewhere (which results in
+ a copy or move based on the shortcut used).
+
+Moving notes
+
+ Ctrl + ↑ , Ctrl + ↓ -
+ move note up/down in the note list.
+ Ctrl + ← - move note up in the note tree.
+ Ctrl +→ - move note down in the note
+ tree.
+ Del - deletes note and optionally its subtree (asked in the
+ dialog).
+
+Multiple selection
+See Multiple selection for
+ more information about how selection works.
+
+ Alt +Click – add a single note to the current selection.
+ Shift +Click – select a range of notes, starting from
+ the current note (the highlighted one) to the one that is being clicked.
+ Shift +↑ , Shift +↓ –
+ multi-select not above/below.
+ Ctrl +A – select all notes in the current level
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/List View.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/List View.html
index 6ff3dc0a4..034f3c653 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/List View.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/List View.html
@@ -12,9 +12,9 @@
as a single continuous document.
Interaction
- Each note can be expanded or collapsed by clicking on the arrow to the
+ Each note can be expanded or collapsed by clicking on the arrow to the
left of the title.
- In the Ribbon ,
+ In the Ribbon ,
in the Collection tab there are options to expand and to collapse
all notes easily.
@@ -25,16 +25,15 @@
If exported to PDF within the desktop application, there is additional
functionality:
- The table of contents of the PDF will reflect the structure of the notes.
- Reference and inline links to other notes within the same hierarchy will
+ The table of contents of the PDF will reflect the structure of the notes.
+ Reference and inline links to other notes within the same hierarchy will
be functional (will jump to the corresponding page). If a link refers to
a note that is not in the printed hierarchy, it will be unlinked.
Expanding and collapsing multiple notes at once
Apart from individually expanding or collapsing notes, it's also possible
to expand or collapse them all at once. To do so, go to the Collection Properties tab
- in the Ribbon and
+ in the Ribbon and
look for the corresponding button.
By default, the Expand button will only expand the direct children
(first level) of the collection. Starting with v0.100.0, it's possible
@@ -45,7 +44,7 @@
By design, the UI provides only a handful of levels of depth for expanding
notes (direct children, 2-5, all levels). It's also possible to specify
- any desired depth by manually setting the corresponding label .
+ any desired depth by manually setting the corresponding label .
For example: #expanded=100 to expand up to 100 levels of depth.
diff --git a/apps/server/src/assets/translations/cs/server.json b/apps/server/src/assets/translations/cs/server.json
index 958fe4ce4..3ffbc78ca 100644
--- a/apps/server/src/assets/translations/cs/server.json
+++ b/apps/server/src/assets/translations/cs/server.json
@@ -61,7 +61,32 @@
"run-active-note": "Spustit aktivní kód JavaScript (frontend/backend) poznámky",
"open-dev-tools": "Otevřít vývojářské nástroje",
"zoom-out": "Oddálit",
- "zoom-in": "Přiblížit"
+ "zoom-in": "Přiblížit",
+ "text-note-operations": "Operace textových poznámek",
+ "show-cheatsheet": "Zobrazit modal s běžnými operacemi klávesnice",
+ "add-new-label": "Vytvořít nový štítek",
+ "insert-date-and-time-to-text": "Vložit do textu současné datum a čas",
+ "dialogs": "Dialogy",
+ "show-revisions": "Ukázat dialog „Revize poznámky“",
+ "add-link-to-text": "Otevřít dialog pro přidání odkazu do textu",
+ "follow-link-under-cursor": "Následujte odkaz, na kterém je umístěna kurzorová šipka",
+ "paste-markdown-into-text": "Vložit Markdown ze schránky do poznámky",
+ "cut-into-note": "Vyjmout výběr z aktuální poznámky a vytvořit podpoznámku s vybraným textem",
+ "add-include-note-to-text": "Otevřít dialog pro vložení poznámky",
+ "attributes-labels-and-relations": "Atributy (štítky a vazby)",
+ "create-new-relation": "Vytvořit novou vazbu",
+ "ribbon-tabs": "Karty pásu záložek",
+ "print-active-note": "Vytiskonout aktiivní poznámku",
+ "render-active-note": "Vykreslit (znovu vykreslit) aktivní poznámku",
+ "open-note-externally": "Otevřít poznámku jako soubor ve výchozí aplikaci",
+ "reload-frontend-app": "Znovu načíst frontend",
+ "unhoist": "Odpojit všude",
+ "note-navigation": "Navigace v poznámce",
+ "reset-zoom-level": "Resetovat úroveň přiblížení",
+ "copy-without-formatting": "Kopírovat vybraný text bez formátování",
+ "force-save-revision": "Vynutit vytvoření / uložení nové revize aktivní poznámky",
+ "export-as-pdf": "Exportovat současnou poznámku jako PDF",
+ "toggle-zen-mode": "Zapnout/vypnout režim zen (minimalistické uživatelské rozhraní pro soustředěnější úpravy)"
},
"keyboard_action_names": {
"jump-to-note": "Přejít na...",
@@ -73,6 +98,15 @@
"edit-note-title": "Upravit nadpis poznámky",
"clone-notes-to": "Klonovat poznámku do",
"move-notes-to": "Přemístit poznámku do",
- "copy-notes-to-clipboard": "Kopírovat poznámky do schránky"
+ "copy-notes-to-clipboard": "Kopírovat poznámky do schránky",
+ "back-in-note-history": "Zpět v historii poznámky",
+ "forward-in-note-history": "Vpřed v historii poznámky",
+ "command-palette": "Paleta příkazů",
+ "scroll-to-active-note": "Posunout na aktivní poznámku",
+ "search-in-subtree": "Hledat v podstromu",
+ "expand-subtree": "Otevřít podstrom",
+ "collapse-tree": "Zavřít strom",
+ "collapse-subtree": "Zavřít podstrom",
+ "sort-child-notes": "Seřadit dceřiné poznámky"
}
}
diff --git a/apps/server/src/assets/translations/de/server.json b/apps/server/src/assets/translations/de/server.json
index 04305f27a..49a192acc 100644
--- a/apps/server/src/assets/translations/de/server.json
+++ b/apps/server/src/assets/translations/de/server.json
@@ -257,7 +257,8 @@
"ai-llm-title": "AI/LLM",
"localization": "Sprache & Region",
"inbox-title": "Posteingang",
- "zen-mode": "Zen-Modus"
+ "zen-mode": "Zen-Modus",
+ "command-palette": "Befehlspalette öffnen"
},
"notes": {
"new-note": "Neue Notiz",
diff --git a/apps/website/src/translations/cs/translation.json b/apps/website/src/translations/cs/translation.json
index 9ed2d35ff..ed8241175 100644
--- a/apps/website/src/translations/cs/translation.json
+++ b/apps/website/src/translations/cs/translation.json
@@ -50,6 +50,90 @@
"canvas_description": "Uspořádejte tvary, obrázky a text na nekonečném plátně pomocí stejné technologie, jaká se používá na webu excalidraw.com. Ideální pro diagramy, náčrtky a vizuální plánování.",
"mermaid_title": "Mermaid diagramy",
"mermaid_description": "Vytvářejte diagramy, jako jsou vývojové diagramy, diagramy tříd a sekvencí, Ganttovy diagramy a mnoho dalších, pomocí syntaxe Mermaid.",
- "mindmap_title": "Myšlenková mapa"
+ "mindmap_title": "Myšlenková mapa",
+ "mindmap_description": "Zorganizujte si myšlenky vizuálně nebo uspořádejte brainstorming.",
+ "others_list": "a další: <0>mapa poznámek0>, <1>mapa vztahů1>, <2>uložená vyhledávání2>, <3>zobrazení poznámky3> a <4>webové zobrazení4>."
+ },
+ "extensibility_benefits": {
+ "title": "Sdílení a rozšiřitelnost",
+ "import_export_title": "Import/export",
+ "import_export_description": "Snadná interakce s jinými aplikacemi pomocí formátů Markdown, ENEX a OML.",
+ "share_title": "Sdílet poznámky na webu",
+ "share_description": "Pokud máte server, můžete jej použít ke sdílení části svých poznámek s ostatními lidmi.",
+ "scripting_title": "Pokročilé skriptování",
+ "scripting_description": "Vytvořte si vlastní integrace v rámci Trilium pomocí přizpůsobených widgetů nebo logiky na straně serveru.",
+ "api_title": "REST API",
+ "api_description": "Komunikujte s Trilium programově pomocí jeho vestavěného REST API."
+ },
+ "collections": {
+ "title": "Kolekce",
+ "calendar_title": "Kalendář",
+ "calendar_description": "Organizujte své osobní nebo pracovní události pomocí kalendáře, který podporuje celodenní i vícedenní události. Zobrazte si své události na první pohled v týdenním, měsíčním a ročním přehledu. Snadná interakce pro přidávání nebo přetahování událostí.",
+ "table_title": "Tabulka",
+ "table_description": "Zobrazujte a upravujte informace o poznámkách v tabulkové struktuře s různými typy sloupců, jako jsou text, čísla, zaškrtávací políčka, datum a čas, odkazy a barvy, a podporou vztahů. Volitelně můžete poznámky zobrazit v hierarchické struktuře stromu uvnitř tabulky.",
+ "board_title": "Kanbanová tabule",
+ "board_description": "Uspořádejte si úkoly nebo stav projektu do tabule Kanban, kde můžete snadno vytvářet nové položky a sloupce a jednoduše měnit jejich stav přetahováním po tabuli.",
+ "geomap_title": "Geomapa",
+ "geomap_description": "Naplánujte si dovolenou nebo si označte místa, která vás zajímají, přímo na geografické mapě pomocí přizpůsobitelných značek. Zobrazte zaznamenané trasy GPX a sledujte itineráře.",
+ "presentation_title": "Prezentace",
+ "presentation_description": "Uspořádejte informace do snímků a prezentujte je na celé obrazovce s plynulými přechody. Snímky lze také exportovat do formátu PDF pro snadné sdílení."
+ },
+ "faq": {
+ "title": "Často kladené otázky",
+ "mobile_question": "Existuje mobilní aplikace?",
+ "mobile_answer": "V současné době neexistuje žádná oficiální mobilní aplikace. Pokud však máte instanci serveru, můžete k ní přistupovat pomocí webového prohlížeče a dokonce ji nainstalovat jako PWA. Pro Android existuje neoficiální aplikace s názvem TriliumDroid, která funguje i offline (stejně jako desktopový klient).",
+ "database_question": "Kde jsou má data uložena?",
+ "database_answer": "Všechny vaše poznámky budou uloženy v databázi SQLite ve složce aplikace. Důvodem, proč Trilium používá databázi namísto prostých textových souborů, je jak výkon, tak i skutečnost, že některé funkce by byly mnohem obtížnější implementovat, například klony (stejná poznámka na více místech ve stromu). Chcete-li najít složku aplikace, stačí přejít do okna O aplikaci.",
+ "server_question": "Potřebuju server pro používání Trilium?",
+ "server_answer": "Ne, server umožňuje přístup přes webový prohlížeč a spravuje synchronizaci, pokud máte více zařízení. Chcete-li začít, stačí si stáhnout desktopovou aplikaci a začít ji používat.",
+ "scaling_question": "Jak dobře se aplikace přizpůsobuje velkému množství poznámek?",
+ "scaling_answer": "V závislosti na použití by aplikace měla být schopna bez problémů zpracovat alespoň 100 000 poznámek. Upozorňujeme, že proces synchronizace může někdy selhat, pokud nahráváte mnoho velkých souborů (1 GB na soubor), protože Trilium je spíše aplikací pro správu znalostí než úložištěm souborů (jako například NextCloud).",
+ "network_share_question": "Mohu sdílet svou databázi přes síťový disk?",
+ "network_share_answer": "Ne, sdílení databáze SQLite přes síťový disk obecně není dobrý nápad. I když to někdy může fungovat, existuje riziko, že se databáze poškodí kvůli nedokonalému zamykání souborů v síti.",
+ "security_question": "Jak jsou má data chráněna?",
+ "security_answer": "Ve výchozím nastavení nejsou poznámky šifrovány a lze je číst přímo z databáze. Jakmile je poznámka označena jako šifrovaná, je zašifrována pomocí AES-128-CBC."
+ },
+ "final_cta": {
+ "title": "Jste připraveni začít používat Trilium Notes?",
+ "description": "Vytvořte si svou osobní znalostní bázi s výkonnými funkcemi a plným soukromím.",
+ "get_started": "Začít"
+ },
+ "components": {
+ "link_learn_more": "Zjistit více..."
+ },
+ "download_now": {
+ "text": "Stáhnout nyní ",
+ "platform_big": "v{{version}} pro{{platform}}",
+ "platform_small": "pro {{platform}}",
+ "linux_big": "v{{version}} pro Linux",
+ "linux_small": "pro Linux",
+ "more_platforms": "Další platformy a nastavení serveru"
+ },
+ "header": {
+ "get-started": "Začít",
+ "documentation": "Dokumentace",
+ "support-us": "Podpořte nás"
+ },
+ "footer": {
+ "copyright_and_the": " a ",
+ "copyright_community": "komunita"
+ },
+ "social_buttons": {
+ "github": "GitHub",
+ "github_discussions": "GitHub diskuze",
+ "matrix": "Matrix",
+ "reddit": "Reddit"
+ },
+ "support_us": {
+ "title": "Podpořte nás",
+ "financial_donations_title": "Finanční dary",
+ "financial_donations_description": "Trilium je vyvíjeno a udržováno díky stovkám hodin práce. Vaše podpora zajišťuje, že zůstane open-source, vylepšuje jeho funkce a pokrývá náklady, jako je hosting.",
+ "financial_donations_cta": "Zvažte podporu hlavního vývojáře ( eliandoran) aplikace prostřednictvím:",
+ "github_sponsors": "Sponzoři GitHubu",
+ "paypal": "PayPal",
+ "buy_me_a_coffee": "Buy Me A Coffee"
+ },
+ "contribute": {
+ "title": "Další způsoby, jak přispět"
}
}
diff --git a/docs/Developer Guide/Developer Guide/Documentation.md b/docs/Developer Guide/Developer Guide/Documentation.md
index 4092f4004..9fb14206e 100644
--- a/docs/Developer Guide/Developer Guide/Documentation.md
+++ b/docs/Developer Guide/Developer Guide/Documentation.md
@@ -1,5 +1,5 @@
# Documentation
-There are multiple types of documentation for Trilium:
+There are multiple types of documentation for Trilium:
* The _User Guide_ represents the user-facing documentation. This documentation can be browsed by users directly from within Trilium, by pressing F1 .
* The _Developer's Guide_ represents a set of Markdown documents that present the internals of Trilium, for developers.
diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json
index 96ac8d3a1..2d8e47cb5 100644
--- a/docs/User Guide/!!!meta.json
+++ b/docs/User Guide/!!!meta.json
@@ -2380,13 +2380,6 @@
"isInheritable": false,
"position": 20
},
- {
- "type": "relation",
- "name": "internalLink",
- "value": "yTjUdsOi4CIE",
- "isInheritable": false,
- "position": 30
- },
{
"type": "label",
"name": "iconClass",
@@ -2400,6 +2393,20 @@
"value": "keyboard-shortcuts",
"isInheritable": false,
"position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "IakOLONlIfGI",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "yTjUdsOi4CIE",
+ "isInheritable": false,
+ "position": 60
}
],
"format": "markdown",
@@ -5211,13 +5218,6 @@
"isInheritable": false,
"position": 20
},
- {
- "type": "relation",
- "name": "internalLink",
- "value": "IakOLONlIfGI",
- "isInheritable": false,
- "position": 30
- },
{
"type": "relation",
"name": "internalLink",
@@ -5259,6 +5259,20 @@
"value": "bx bxs-keyboard",
"isInheritable": false,
"position": 80
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "DvdZhoQZY9Yd",
+ "isInheritable": false,
+ "position": 90
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "TBwsyfadTA18",
+ "isInheritable": false,
+ "position": 100
}
],
"format": "markdown",
@@ -10576,6 +10590,13 @@
"isInheritable": false,
"position": 30
},
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "HI6GBBIduIgv",
+ "isInheritable": false,
+ "position": 40
+ },
{
"type": "label",
"name": "iconClass",
@@ -10589,13 +10610,6 @@
"value": "list",
"isInheritable": false,
"position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "HI6GBBIduIgv",
- "isInheritable": false,
- "position": 40
}
],
"format": "markdown",
diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Keyboard Shortcuts.md b/docs/User Guide/User Guide/Basic Concepts and Features/Keyboard Shortcuts.md
index 6b6ed97ca..13259152f 100644
--- a/docs/User Guide/User Guide/Basic Concepts and Features/Keyboard Shortcuts.md
+++ b/docs/User Guide/User Guide/Basic Concepts and Features/Keyboard Shortcuts.md
@@ -3,49 +3,38 @@ This is supposed to be a complete list of keyboard shortcuts. Note that some of
It is also possible to configure most keyboard shortcuts in Options -> Keyboard shortcuts. Using `global:` prefix, you can assign a shortcut which will work even without Trilium being in focus (requires app restart to take effect).
+## Tree
+
+See the corresponding section: Keyboard shortcuts
+
## Note navigation
-* ↑ , ↓ - go up/down in the list of notes, Ctrl + Shift + ↑ and Ctrl + Shift + ↓ work also from editor
-* ← , → - collapse/expand node
-* Alt + ← , Alt + → - go back / forwards in the history
-* Ctrl + J - show ["Jump to" dialog](Navigation/Note%20Navigation.md)
-* Ctrl + . - scroll to current note (useful when you scroll away from your note or your focus is currently in the editor)
-* Backspace - jumps to parent note
-* Alt + C - collapse whole note tree
-* Alt + - (alt with minus sign) - collapse subtree (if some subtree takes too much space on tree pane you can collapse it)
+* Alt + ← , Alt + → – go back / forwards in the history
+* Ctrl + J – show ["Jump to" dialog](Navigation/Note%20Navigation.md)
+* Ctrl + . – scroll to current note (useful when you scroll away from your note or your focus is currently in the editor)
+* Backspace – jumps to parent note
+* Alt + C – collapse whole note tree
+* Alt + - (alt with minus sign) – collapse subtree (if some subtree takes too much space on tree pane you can collapse it)
* you can define a [label](../Advanced%20Usage/Attributes.md) `#keyboardShortcut` with e.g. value Ctrl + I . Pressing this keyboard combination will then bring you to the note on which it is defined. Note that Trilium must be reloaded/restarted (Ctrl + R ) for changes to be in effect.
See demo of some of these features in [note navigation](Navigation/Note%20Navigation.md).
## Tabs
-* Ctrl + 🖱 Left click - (or middle mouse click) on note link opens note in a new tab
+* Ctrl + 🖱 Left click – (or middle mouse click) on note link opens note in a new tab
Only in desktop (electron build):
-* Ctrl + T - opens empty tab
-* Ctrl + W - closes active tab
-* Ctrl + Tab - activates next tab
-* Ctrl + Shift + Tab - activates previous tab
+* Ctrl + T – opens empty tab
+* Ctrl + W – closes active tab
+* Ctrl + Tab – activates next tab
+* Ctrl + Shift + Tab – activates previous tab
## Creating notes
-* `CTRL+O` - creates new note after the current note
-* `CTRL+P` - creates new sub-note into current note
-* `F2` - edit [prefix](Navigation/Note%20Navigation.md) of current note clone
-
-## Moving / cloning notes
-
-* Ctrl + ↑ , Ctrl + ↓ - move note up/down in the note list
-* Ctrl + ← - move note up in the note tree
-* Ctrl +→ - move note down in the note tree
-* Shift +↑ , Shift `+`↓ - multi-select note above/below
-* Ctrl +A - select all notes in the current level
-* Shift +🖱 Left click - multi select note which you clicked on
-* Ctrl +C - copies current note (or current selection) into clipboard (used for [cloning](Notes/Cloning%20Notes.md)
-* Ctrl +X - cuts current (or current selection) note into clipboard (used for moving notes)
-* Ctrl +V - pastes note(s) as sub-note into current note (which is either move or clone depending on whether it was copied or cut into clipboard)
-* Del - delete note / sub-tree
+* CTRL +O – creates new note after the current note
+* CTRL +P – creates new sub-note into current note
+* F2 – edit Branch prefix of current note clone
## Editing notes
@@ -53,22 +42,22 @@ Only in desktop (electron build):
> For keyboard shortcuts specific to Text notes, refer to Keyboard shortcuts and Markdown-like formatting .
* Enter in tree pane switches from tree pane into note title. Enter from note title switches focus to text editor. Ctrl +. switches back from editor to tree pane.
-* Ctrl +. - jump away from the editor to tree pane and scroll to current note
+* Ctrl +. – jump away from the editor to tree pane and scroll to current note
## Runtime shortcuts
These are hooked in Electron to be similar to native browser keyboard shortcuts.
-* F5 , Ctrl \-R - reloads Trilium front-end
-* Ctrl +Shift +I - show developer tools
-* Ctrl +F - show search dialog
-* Ctrl +- - zoom out
-* Ctrl += - zoom in
+* F5 , Ctrl +R – reloads Trilium front-end
+* Ctrl +Shift +I – show developer tools
+* Ctrl +F – show search dialog
+* Ctrl +- – zoom out
+* Ctrl += – zoom in
## Other
-* Alt +O - show SQL console (use only if you know what you're doing)
-* Alt +M - distraction-free mode - display only note editor, everything else is hidden
-* F11 - toggle full screen
-* Ctrl + S - toggle [search](Navigation/Search.md) form in tree pane
-* Alt +A - show note [attributes](../Advanced%20Usage/Attributes.md) dialog
\ No newline at end of file
+* Alt + O – show SQL console (use only if you know what you're doing)
+* Alt + M – distraction-free mode - display only note editor, everything else is hidden
+* F11 – toggle full screen
+* Ctrl + S – toggle [search](Navigation/Search.md) form in tree pane
+* Alt +A – show note [attributes](../Advanced%20Usage/Attributes.md) dialog
\ No newline at end of file
diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Keyboard shortcuts.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Keyboard shortcuts.md
index ffcb3fc0b..89e5e72c8 100644
--- a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Keyboard shortcuts.md
+++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Keyboard shortcuts.md
@@ -1,17 +1,36 @@
# Keyboard shortcuts
The Note Tree comes with multiple keyboard shortcuts to make editing faster:
-* Opening notes:
- * Click to open the note in the current tab.
- * Ctrl +Click or Middle click to open the note in a new tab.
- * Ctrl +Right click to open the note in Quick edit .
-* Navigation within the tree:
- * Up and Down to navigate between notes.
- * Left to collapse a note, or Right to expand it.
-* Clipboard management:
- * Ctrl +C to copy a note.
- * Ctrl +X to cut a note.
- * Ctrl +V to paste it somewhere.
-* For Multiple selection :
- * Alt +Click to add a single note to the current selection.
- * Shift +Click to select a range of notes, starting from the current note (the highlighted one) to the one that is being clicked.
\ No newline at end of file
+## Navigation within the tree
+
+* ↑ and ↑ to navigate between notes.
+* ← to collapse a note with children, or → to expand it.
+* ← on a note with no children to navigate to its parent.
+
+## Opening notes
+
+* Click to open the note in the current tab.
+* Ctrl +Click or Middle click to open the note in a new tab.
+* Ctrl +Right click to open the note in Quick edit .
+
+## Clipboard management
+
+* Ctrl +C to copy one or more notes based on selection (see Cloning Notes ).
+* Ctrl +X to cut one or more notes (for moving them).
+* Ctrl +V to paste them somewhere (which results in a copy or move based on the shortcut used).
+
+## Moving notes
+
+* Ctrl + ↑ , Ctrl + ↓ - move note up/down in the note list.
+* Ctrl + ← - move note up in the note tree.
+* Ctrl +→ - move note down in the note tree.
+* Del - deletes note and optionally its subtree (asked in the dialog).
+
+## Multiple selection
+
+See Multiple selection for more information about how selection works.
+
+* Alt +Click – add a single note to the current selection.
+* Shift +Click – select a range of notes, starting from the current note (the highlighted one) to the one that is being clicked.
+* Shift +↑ , Shift +↓ – multi-select not above/below.
+* Ctrl +A – select all notes in the current level
\ No newline at end of file
diff --git a/package.json b/package.json
index d37409141..6578c9c77 100644
--- a/package.json
+++ b/package.json
@@ -84,7 +84,7 @@
"url": "https://github.com/TriliumNext/Trilium/issues"
},
"homepage": "https://triliumnotes.org",
- "packageManager": "pnpm@10.23.0",
+ "packageManager": "pnpm@10.24.0",
"pnpm": {
"patchedDependencies": {
"@ckeditor/ckeditor5-mention": "patches/@ckeditor__ckeditor5-mention.patch",
diff --git a/packages/ckeditor5/src/plugins/move_block_updown.ts b/packages/ckeditor5/src/plugins/move_block_updown.ts
index 2c6e7dc80..f2f9c7193 100644
--- a/packages/ckeditor5/src/plugins/move_block_updown.ts
+++ b/packages/ckeditor5/src/plugins/move_block_updown.ts
@@ -2,9 +2,14 @@
* https://github.com/TriliumNext/Trilium/issues/1002
*/
-import { Command, ModelDocumentSelection, ModelElement, ModelNode, Plugin, ModelRange } from 'ckeditor5';
-export default class MoveBlockUpDownPlugin extends Plugin {
+import { Command, ModelDocumentSelection, ModelElement, ModelNode, Plugin, ModelRange, _isMac, Editor } from 'ckeditor5';
+const keyMap = {
+ ArrowUp: 'moveBlockUp',
+ ArrowDown: 'moveBlockDown'
+};
+
+export default class MoveBlockUpDownPlugin extends Plugin {
init() {
const editor = this.editor;
@@ -21,17 +26,14 @@ export default class MoveBlockUpDownPlugin extends Plugin {
const domRoot = editor.editing.view.getDomRoot();
if (!domRoot) return;
+ const isMac = _isMac(navigator.userAgent.toLowerCase());
const handleKeydown = (e: KeyboardEvent) => {
- const keyMap = {
- ArrowUp: 'moveBlockUp',
- ArrowDown: 'moveBlockDown'
- };
-
const command = keyMap[e.key];
- const isCtrl = e.ctrlKey || e.metaKey;
- const hasModifier = (isCtrl || e.altKey) && !(isCtrl && e.altKey);
+ if (!command) return;
+ const isOnlyMeta = (!e.ctrlKey && !e.altKey && e.metaKey);
+ const isOnlyAlt = (!e.ctrlKey && e.altKey && !e.metaKey);
- if (command && hasModifier) {
+ if ((!isMac && isOnlyMeta) || isOnlyAlt) {
e.preventDefault();
e.stopImmediatePropagation();
editor.execute(command);
@@ -100,8 +102,7 @@ abstract class MoveBlockUpDownCommand extends Command {
}
writer.setSelection(range);
this.editor.editing.view.focus();
-
- this.scrollToSelection();
+ scrollToSelection(this.editor);
});
}
@@ -129,13 +130,6 @@ abstract class MoveBlockUpDownCommand extends Command {
// Deduplicate adjacent duplicates (e.g., nested selections resolving to same block)
return resolved.filter((blk, idx) => idx === 0 || blk !== resolved[idx - 1]);
}
-
- scrollToSelection() {
- // Ensure scroll happens in sync with DOM updates
- requestAnimationFrame(() => {
- this.editor.editing.view.scrollToTheSelection();
- });
- };
}
class MoveBlockUpCommand extends MoveBlockUpDownCommand {
@@ -162,3 +156,10 @@ class MoveBlockDownCommand extends MoveBlockUpDownCommand {
return "after" as const;
}
}
+
+function scrollToSelection(editor: Editor) {
+ // Ensure scroll happens in sync with DOM updates
+ requestAnimationFrame(() => {
+ editor.editing.view.scrollToTheSelection();
+ });
+};
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1d86d008b..e7bf70a30 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -90,7 +90,7 @@ importers:
version: 7.0.1(eslint@9.39.1(jiti@2.6.1))
happy-dom:
specifier: ~20.0.0
- version: 20.0.10
+ version: 20.0.11
http-server:
specifier: 14.1.1
version: 14.1.1
@@ -129,7 +129,7 @@ importers:
version: 4.5.4(@types/node@24.10.1)(rollup@4.52.0)(typescript@5.9.3)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
vitest:
specifier: 4.0.14
- version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
apps/build-docs:
devDependencies:
@@ -339,8 +339,8 @@ importers:
specifier: 13.0.1
version: 13.0.1(webpack@5.101.3(esbuild@0.27.0))
happy-dom:
- specifier: 20.0.10
- version: 20.0.10
+ specifier: 20.0.11
+ version: 20.0.11
script-loader:
specifier: 0.7.2
version: 0.7.2
@@ -367,7 +367,7 @@ importers:
dependencies:
'@electron/remote':
specifier: 2.1.3
- version: 2.1.3(electron@38.7.1)
+ version: 2.1.3(electron@38.7.2)
better-sqlite3:
specifier: 12.4.6
version: 12.4.6
@@ -424,8 +424,8 @@ importers:
specifier: 13.0.1
version: 13.0.1(webpack@5.101.3(esbuild@0.27.0))
electron:
- specifier: 38.7.1
- version: 38.7.1
+ specifier: 38.7.2
+ version: 38.7.2
prebuild-install:
specifier: 7.1.3
version: 7.1.3
@@ -480,8 +480,8 @@ importers:
specifier: 13.0.1
version: 13.0.1(webpack@5.101.3(esbuild@0.27.0))
electron:
- specifier: 38.7.1
- version: 38.7.1
+ specifier: 38.7.2
+ version: 38.7.2
fs-extra:
specifier: 11.3.2
version: 11.3.2
@@ -506,7 +506,7 @@ importers:
version: 7.1.1
'@electron/remote':
specifier: 2.1.3
- version: 2.1.3(electron@38.7.1)
+ version: 2.1.3(electron@38.7.2)
'@preact/preset-vite':
specifier: 2.10.2
version: 2.10.2(@babel/core@7.28.0)(preact@10.27.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
@@ -649,8 +649,8 @@ importers:
specifier: 3.1.10
version: 3.1.10
electron:
- specifier: 38.7.1
- version: 38.7.1
+ specifier: 38.7.2
+ version: 38.7.2
electron-debug:
specifier: 4.1.0
version: 4.1.0
@@ -840,7 +840,7 @@ importers:
version: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
vitest:
specifier: 4.0.14
- version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
packages/ckeditor5:
dependencies:
@@ -931,7 +931,7 @@ importers:
version: 2.0.0(typescript@5.9.3)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
vitest:
specifier: 4.0.14
- version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
webdriverio:
specifier: 9.20.1
version: 9.20.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)
@@ -991,7 +991,7 @@ importers:
version: 2.0.0(typescript@5.9.3)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
vitest:
specifier: 4.0.14
- version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
webdriverio:
specifier: 9.20.1
version: 9.20.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)
@@ -1051,7 +1051,7 @@ importers:
version: 2.0.0(typescript@5.9.3)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
vitest:
specifier: 4.0.14
- version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
webdriverio:
specifier: 9.20.1
version: 9.20.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)
@@ -1118,7 +1118,7 @@ importers:
version: 2.0.0(typescript@5.9.3)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
vitest:
specifier: 4.0.14
- version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
webdriverio:
specifier: 9.20.1
version: 9.20.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)
@@ -1185,7 +1185,7 @@ importers:
version: 2.0.0(typescript@5.9.3)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
vitest:
specifier: 4.0.14
- version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
webdriverio:
specifier: 9.20.1
version: 9.20.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)
@@ -2336,11 +2336,11 @@ packages:
engines: {node: '>=14.14'}
hasBin: true
- '@emnapi/core@1.7.0':
- resolution: {integrity: sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw==}
+ '@emnapi/core@1.7.1':
+ resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==}
- '@emnapi/runtime@1.7.0':
- resolution: {integrity: sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==}
+ '@emnapi/runtime@1.7.1':
+ resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
'@emnapi/wasi-threads@1.1.0':
resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
@@ -5448,6 +5448,9 @@ packages:
'@types/node@20.19.24':
resolution: {integrity: sha512-FE5u0ezmi6y9OZEzlJfg37mqqf6ZDSF2V/NLjUyGrR9uTZ7Sb9F7bLNZ03S4XVUNRWGA7Ck4c1kK+YnuWjl+DA==}
+ '@types/node@20.19.25':
+ resolution: {integrity: sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==}
+
'@types/node@22.15.21':
resolution: {integrity: sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==}
@@ -5463,6 +5466,9 @@ packages:
'@types/node@22.18.8':
resolution: {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==}
+ '@types/node@22.19.1':
+ resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==}
+
'@types/node@24.10.1':
resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==}
@@ -7242,6 +7248,9 @@ packages:
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+ csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+
custom-event@1.0.1:
resolution: {integrity: sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==}
@@ -7827,8 +7836,8 @@ packages:
resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==}
engines: {node: '>=8.0.0'}
- electron@38.7.1:
- resolution: {integrity: sha512-mdFVpL80nZvIvajtl1Xz+2Q/a9tFGVnPO0YW/N+MqQUyZG8D9r3wrWoaEVBXTc1jI+Vkg77Eqqwh5FLiaYRI+A==}
+ electron@38.7.2:
+ resolution: {integrity: sha512-BcjR0IHqp3uv4ytVQwW2/9zAWo17Rjwrydn6RS+g+vqhpcPTzmBHDCHKaEcqheSl/7zzKPgFZdvT21BoSfrxRQ==}
engines: {node: '>= 12.20.55'}
hasBin: true
@@ -8807,8 +8816,8 @@ packages:
engines: {node: '>=0.4.7'}
hasBin: true
- happy-dom@20.0.10:
- resolution: {integrity: sha512-6umCCHcjQrhP5oXhrHQQvLB0bwb1UzHAHdsXy+FjtKoYjUhmNZsQL8NivwM1vDvNEChJabVrUYxUnp/ZdYmy2g==}
+ happy-dom@20.0.11:
+ resolution: {integrity: sha512-QsCdAUHAmiDeKeaNojb1OHOPF7NjcWPBR7obdu3NwH2a/oyQaLg5d0aaCy/9My6CdPChYF07dvz5chaXBGaD4g==}
engines: {node: '>=20.0.0'}
has-bigints@1.1.0:
@@ -15769,6 +15778,8 @@ snapshots:
'@ckeditor/ckeditor5-core': 47.2.0
'@ckeditor/ckeditor5-utils': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-code-block@47.2.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)':
dependencies:
@@ -16029,6 +16040,8 @@ snapshots:
'@ckeditor/ckeditor5-utils': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
es-toolkit: 1.39.5
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-editor-multi-root@47.2.0':
dependencies:
@@ -16051,6 +16064,8 @@ snapshots:
'@ckeditor/ckeditor5-table': 47.2.0
'@ckeditor/ckeditor5-utils': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-emoji@47.2.0':
dependencies:
@@ -16076,8 +16091,6 @@ snapshots:
'@ckeditor/ckeditor5-core': 47.2.0
'@ckeditor/ckeditor5-engine': 47.2.0
'@ckeditor/ckeditor5-utils': 47.2.0
- transitivePeerDependencies:
- - supports-color
'@ckeditor/ckeditor5-essentials@47.2.0':
dependencies:
@@ -16537,6 +16550,8 @@ snapshots:
'@ckeditor/ckeditor5-ui': 47.2.0
'@ckeditor/ckeditor5-utils': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-restricted-editing@47.2.0':
dependencies:
@@ -17381,9 +17396,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@electron/remote@2.1.3(electron@38.7.1)':
+ '@electron/remote@2.1.3(electron@38.7.2)':
dependencies:
- electron: 38.7.1
+ electron: 38.7.2
'@electron/universal@2.0.2':
dependencies:
@@ -17407,13 +17422,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@emnapi/core@1.7.0':
+ '@emnapi/core@1.7.1':
dependencies:
'@emnapi/wasi-threads': 1.1.0
tslib: 2.8.1
optional: true
- '@emnapi/runtime@1.7.0':
+ '@emnapi/runtime@1.7.1':
dependencies:
tslib: 2.8.1
optional: true
@@ -18122,7 +18137,7 @@ snapshots:
'@inquirer/figures': 1.0.13
'@inquirer/type': 2.0.0
'@types/mute-stream': 0.0.4
- '@types/node': 22.18.13
+ '@types/node': 22.19.1
'@types/wrap-ansi': 3.0.0
ansi-escapes: 4.3.2
cli-width: 4.1.0
@@ -18700,8 +18715,8 @@ snapshots:
'@napi-rs/wasm-runtime@1.0.7':
dependencies:
- '@emnapi/core': 1.7.0
- '@emnapi/runtime': 1.7.0
+ '@emnapi/core': 1.7.1
+ '@emnapi/runtime': 1.7.1
'@tybys/wasm-util': 0.10.1
optional: true
@@ -20706,7 +20721,7 @@ snapshots:
'@types/mute-stream@0.0.4':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 22.19.1
'@types/node-forge@1.3.14':
dependencies:
@@ -20718,6 +20733,10 @@ snapshots:
dependencies:
undici-types: 6.21.0
+ '@types/node@20.19.25':
+ dependencies:
+ undici-types: 6.21.0
+
'@types/node@22.15.21':
dependencies:
undici-types: 6.21.0
@@ -20738,6 +20757,10 @@ snapshots:
dependencies:
undici-types: 6.21.0
+ '@types/node@22.19.1':
+ dependencies:
+ undici-types: 6.21.0
+
'@types/node@24.10.1':
dependencies:
undici-types: 7.16.0
@@ -20761,7 +20784,7 @@ snapshots:
'@types/react@19.1.7':
dependencies:
- csstype: 3.1.3
+ csstype: 3.2.3
optional: true
'@types/readdir-glob@1.1.5':
@@ -20887,7 +20910,7 @@ snapshots:
'@types/yauzl@2.10.3':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 22.18.13
optional: true
'@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
@@ -21117,7 +21140,7 @@ snapshots:
'@vitest/browser-webdriverio@4.0.14(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.14)(webdriverio@9.20.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))':
dependencies:
'@vitest/browser': 4.0.14(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.14)
- vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
webdriverio: 9.20.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)
transitivePeerDependencies:
- bufferutil
@@ -21134,7 +21157,7 @@ snapshots:
pngjs: 7.0.0
sirv: 3.0.2
tinyrainbow: 3.0.3
- vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)
transitivePeerDependencies:
- bufferutil
@@ -21153,7 +21176,7 @@ snapshots:
magicast: 0.5.1
obug: 2.1.1
tinyrainbow: 3.0.3
- vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
@@ -21170,7 +21193,7 @@ snapshots:
obug: 2.1.1
std-env: 3.10.0
tinyrainbow: 3.0.3
- vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
optionalDependencies:
'@vitest/browser': 4.0.14(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.14)
transitivePeerDependencies:
@@ -21220,7 +21243,7 @@ snapshots:
sirv: 3.0.2
tinyglobby: 0.2.15
tinyrainbow: 3.0.3
- vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
'@vitest/utils@4.0.14':
dependencies:
@@ -23086,6 +23109,9 @@ snapshots:
csstype@3.1.3: {}
+ csstype@3.2.3:
+ optional: true
+
custom-event@1.0.1: {}
cytoscape-cose-bilkent@4.1.0(cytoscape@3.31.2):
@@ -23747,7 +23773,7 @@ snapshots:
- supports-color
optional: true
- electron@38.7.1:
+ electron@38.7.2:
dependencies:
'@electron/get': 2.0.3
'@types/node': 22.18.13
@@ -25186,9 +25212,9 @@ snapshots:
optionalDependencies:
uglify-js: 3.19.3
- happy-dom@20.0.10:
+ happy-dom@20.0.11:
dependencies:
- '@types/node': 20.19.24
+ '@types/node': 20.19.25
'@types/whatwg-mimetype': 3.0.2
whatwg-mimetype: 3.0.0
@@ -31767,7 +31793,7 @@ snapshots:
tsx: 4.20.6
yaml: 2.8.1
- vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1):
+ vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.14)(@vitest/ui@4.0.14)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1):
dependencies:
'@vitest/expect': 4.0.14
'@vitest/mocker': 4.0.14(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
@@ -31794,7 +31820,7 @@ snapshots:
'@types/node': 24.10.1
'@vitest/browser-webdriverio': 4.0.14(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.14)(webdriverio@9.20.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))
'@vitest/ui': 4.0.14(vitest@4.0.14)
- happy-dom: 20.0.10
+ happy-dom: 20.0.11
jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
transitivePeerDependencies:
- jiti