From fc080f785be9fc50d13f4b183e5f528960b796b1 Mon Sep 17 00:00:00 2001 From: zadam Date: Thu, 1 Dec 2022 13:07:23 +0100 Subject: [PATCH] moving components to its own directory --- .../{services => components}/app_context.js | 75 ++++++++++--------- .../app/{widgets => components}/component.js | 0 .../{services => components}/entrypoints.js | 18 ++--- .../main_tree_executors.js | 8 +- .../mobile_screen_switcher.js | 4 +- .../{services => components}/note_context.js | 16 ++-- .../root_command_executor.js | 12 +-- .../app/components/shortcut_component.js | 19 +++++ .../{services => components}/tab_manager.js | 14 ++-- .../app/{services => components}/zoom.js | 8 +- src/public/app/desktop.js | 4 +- src/public/app/menus/link_context_menu.js | 2 +- src/public/app/menus/tree_context_menu.js | 2 +- src/public/app/mobile.js | 4 +- src/public/app/services/branches.js | 2 +- src/public/app/services/dialog.js | 2 +- src/public/app/services/file_watcher.js | 2 +- src/public/app/services/froca.js | 2 +- src/public/app/services/froca_updater.js | 2 +- .../app/services/frontend_script_api.js | 2 +- src/public/app/services/glob.js | 2 +- src/public/app/services/hoisted_note.js | 2 +- src/public/app/services/import.js | 2 +- src/public/app/services/keyboard_actions.js | 10 +-- src/public/app/services/link.js | 2 +- src/public/app/services/note_autocomplete.js | 2 +- src/public/app/services/note_create.js | 2 +- src/public/app/services/protected_session.js | 2 +- src/public/app/services/server.js | 2 +- src/public/app/services/shortcuts.js | 4 +- src/public/app/services/tree.js | 2 +- src/public/app/services/ws.js | 2 +- src/public/app/widgets/basic_widget.js | 2 +- src/public/app/widgets/buttons/calendar.js | 2 +- src/public/app/widgets/buttons/edit_button.js | 2 +- .../buttons/open_note_button_widget.js | 2 +- .../widgets/containers/launcher_container.js | 2 +- .../containers/split_note_container.js | 2 +- .../app/widgets/dialogs/branch_prefix.js | 2 +- src/public/app/widgets/dialogs/clone_to.js | 2 +- .../app/widgets/dialogs/jump_to_note.js | 2 +- .../app/widgets/dialogs/markdown_import.js | 2 +- .../app/widgets/dialogs/note_revisions.js | 2 +- src/public/app/widgets/dialogs/note_source.js | 2 +- .../app/widgets/dialogs/options/appearance.js | 2 +- .../app/widgets/dialogs/recent_changes.js | 2 +- src/public/app/widgets/find_in_html.js | 2 +- .../mobile_widgets/mobile_detail_menu.js | 2 +- .../app/widgets/note_context_aware_widget.js | 2 +- src/public/app/widgets/note_detail.js | 2 +- src/public/app/widgets/note_map.js | 2 +- src/public/app/widgets/note_title.js | 2 +- src/public/app/widgets/note_tree.js | 2 +- src/public/app/widgets/quick_search.js | 2 +- .../ribbon_widgets/search_definition.js | 2 +- .../search_options/abstract_search_option.js | 2 +- src/public/app/widgets/tab_row.js | 2 +- .../type_widgets/abstract_text_type_widget.js | 2 +- .../type_widgets/editable_code_buttons.js | 2 +- .../app/widgets/type_widgets/editable_text.js | 2 +- src/public/app/widgets/type_widgets/empty.js | 2 +- .../app/widgets/type_widgets/relation_map.js | 2 +- .../app/widgets/type_widgets/type_widget.js | 4 +- src/routes/api/keys.js | 16 +--- src/services/special_notes.js | 4 +- 65 files changed, 160 insertions(+), 156 deletions(-) rename src/public/app/{services => components}/app_context.js (80%) rename src/public/app/{widgets => components}/component.js (100%) rename src/public/app/{services => components}/entrypoints.js (93%) rename src/public/app/{services => components}/main_tree_executors.js (90%) rename src/public/app/{widgets/mobile_widgets => components}/mobile_screen_switcher.js (90%) rename src/public/app/{services => components}/note_context.js (94%) rename src/public/app/{services => components}/root_command_executor.js (91%) create mode 100644 src/public/app/components/shortcut_component.js rename src/public/app/{services => components}/tab_manager.js (98%) rename src/public/app/{services => components}/zoom.js (90%) diff --git a/src/public/app/services/app_context.js b/src/public/app/components/app_context.js similarity index 80% rename from src/public/app/services/app_context.js rename to src/public/app/components/app_context.js index 510f1eb52..cf068c333 100644 --- a/src/public/app/services/app_context.js +++ b/src/public/app/components/app_context.js @@ -1,24 +1,25 @@ -import froca from "./froca.js"; -import bundleService from "./bundle.js"; +import froca from "../services/froca.js"; +import bundleService from "../services/bundle.js"; import RootCommandExecutor from "./root_command_executor.js"; import Entrypoints from "./entrypoints.js"; -import options from "./options.js"; -import utils from "./utils.js"; -import zoomService from "./zoom.js"; +import options from "../services/options.js"; +import utils from "../services/utils.js"; +import zoomComponent from "./zoom.js"; import TabManager from "./tab_manager.js"; -import treeService from "./tree.js"; -import Component from "../widgets/component.js"; -import keyboardActionsService from "./keyboard_actions.js"; -import MobileScreenSwitcherExecutor from "../widgets/mobile_widgets/mobile_screen_switcher.js"; +import treeService from "../services/tree.js"; +import Component from "./component.js"; +import keyboardActionsService from "../services/keyboard_actions.js"; +import MobileScreenSwitcherExecutor from "./mobile_screen_switcher.js"; import MainTreeExecutors from "./main_tree_executors.js"; -import toast from "./toast.js"; +import toast from "../services/toast.js"; class AppContext extends Component { constructor(isMainWindow) { super(); this.isMainWindow = isMainWindow; - this.executors = []; + // non-widget/layout components needed for the application + this.components = []; this.beforeUnloadListeners = []; } @@ -27,7 +28,9 @@ class AppContext extends Component { } async start() { - this.showWidgets(); + this.initComponents(); + + this.renderWidgets(); await Promise.all([froca.initializedPromise, options.initializedPromise]); @@ -36,7 +39,30 @@ class AppContext extends Component { setTimeout(() => bundleService.executeStartupBundles(), 2000); } - showWidgets() { + initComponents() { + this.tabManager = new TabManager(); + + this.components = [ + this.tabManager, + new RootCommandExecutor(), + new Entrypoints(), + new MainTreeExecutors() + ]; + + if (utils.isMobile()) { + this.components.push(new MobileScreenSwitcherExecutor()); + } + + for (const component of this.components) { + this.child(component); + } + + if (utils.isElectron()) { + this.child(zoomComponent); + } + } + + renderWidgets() { const rootWidget = this.layout.getRootWidget(this); const $renderedWidget = rootWidget.render(); @@ -52,29 +78,8 @@ class AppContext extends Component { component.triggerCommand(commandName, {$el: $(this)}); }); - this.tabManager = new TabManager(); - - this.executors = [ - this.tabManager, - new RootCommandExecutor(), - new Entrypoints(), - new MainTreeExecutors() - ]; - - if (utils.isMobile()) { - this.executors.push(new MobileScreenSwitcherExecutor()); - } - this.child(rootWidget); - for (const executor of this.executors) { - this.child(executor); - } - - if (utils.isElectron()) { - this.child(zoomService); - } - this.triggerEvent('initialRenderComplete'); } @@ -85,7 +90,7 @@ class AppContext extends Component { /** @returns {Promise} */ triggerCommand(name, data = {}) { - for (const executor of this.executors) { + for (const executor of this.components) { const fun = executor[name + "Command"]; if (fun) { diff --git a/src/public/app/widgets/component.js b/src/public/app/components/component.js similarity index 100% rename from src/public/app/widgets/component.js rename to src/public/app/components/component.js diff --git a/src/public/app/services/entrypoints.js b/src/public/app/components/entrypoints.js similarity index 93% rename from src/public/app/services/entrypoints.js rename to src/public/app/components/entrypoints.js index c9eaa867c..a93d972e9 100644 --- a/src/public/app/services/entrypoints.js +++ b/src/public/app/components/entrypoints.js @@ -1,13 +1,13 @@ -import utils from "./utils.js"; -import dateNoteService from "./date_notes.js"; -import protectedSessionHolder from './protected_session_holder.js'; -import server from "./server.js"; +import utils from "../services/utils.js"; +import dateNoteService from "../services/date_notes.js"; +import protectedSessionHolder from '../services/protected_session_holder.js'; +import server from "../services/server.js"; import appContext from "./app_context.js"; -import Component from "../widgets/component.js"; -import toastService from "./toast.js"; -import ws from "./ws.js"; -import bundleService from "./bundle.js"; -import froca from "./froca.js"; +import Component from "./component.js"; +import toastService from "../services/toast.js"; +import ws from "../services/ws.js"; +import bundleService from "../services/bundle.js"; +import froca from "../services/froca.js"; export default class Entrypoints extends Component { constructor() { diff --git a/src/public/app/services/main_tree_executors.js b/src/public/app/components/main_tree_executors.js similarity index 90% rename from src/public/app/services/main_tree_executors.js rename to src/public/app/components/main_tree_executors.js index 239dba8b9..d12d308dc 100644 --- a/src/public/app/services/main_tree_executors.js +++ b/src/public/app/components/main_tree_executors.js @@ -1,8 +1,8 @@ import appContext from "./app_context.js"; -import noteCreateService from "./note_create.js"; -import treeService from "./tree.js"; -import hoistedNoteService from "./hoisted_note.js"; -import Component from "../widgets/component.js"; +import noteCreateService from "../services/note_create.js"; +import treeService from "../services/tree.js"; +import hoistedNoteService from "../services/hoisted_note.js"; +import Component from "./component.js"; /** * This class contains command executors which logically belong to the NoteTree widget, but for better user experience diff --git a/src/public/app/widgets/mobile_widgets/mobile_screen_switcher.js b/src/public/app/components/mobile_screen_switcher.js similarity index 90% rename from src/public/app/widgets/mobile_widgets/mobile_screen_switcher.js rename to src/public/app/components/mobile_screen_switcher.js index f8ef3723e..22808a620 100644 --- a/src/public/app/widgets/mobile_widgets/mobile_screen_switcher.js +++ b/src/public/app/components/mobile_screen_switcher.js @@ -1,4 +1,4 @@ -import Component from "../component.js"; +import Component from "./component.js"; export default class MobileScreenSwitcherExecutor extends Component { setActiveScreenCommand({screen}) { @@ -12,4 +12,4 @@ export default class MobileScreenSwitcherExecutor extends Component { initialRenderCompleteEvent() { this.setActiveScreenCommand({screen: 'tree'}); } -} \ No newline at end of file +} diff --git a/src/public/app/services/note_context.js b/src/public/app/components/note_context.js similarity index 94% rename from src/public/app/services/note_context.js rename to src/public/app/components/note_context.js index 9025884ac..7a05ad499 100644 --- a/src/public/app/services/note_context.js +++ b/src/public/app/components/note_context.js @@ -1,12 +1,12 @@ -import protectedSessionHolder from "./protected_session_holder.js"; -import server from "./server.js"; -import utils from "./utils.js"; +import protectedSessionHolder from "../services/protected_session_holder.js"; +import server from "../services/server.js"; +import utils from "../services/utils.js"; import appContext from "./app_context.js"; -import treeService from "./tree.js"; -import Component from "../widgets/component.js"; -import froca from "./froca.js"; -import hoistedNoteService from "./hoisted_note.js"; -import options from "./options.js"; +import treeService from "../services/tree.js"; +import Component from "./component.js"; +import froca from "../services/froca.js"; +import hoistedNoteService from "../services/hoisted_note.js"; +import options from "../services/options.js"; class NoteContext extends Component { /** diff --git a/src/public/app/services/root_command_executor.js b/src/public/app/components/root_command_executor.js similarity index 91% rename from src/public/app/services/root_command_executor.js rename to src/public/app/components/root_command_executor.js index 5513ce640..0e96e70c5 100644 --- a/src/public/app/services/root_command_executor.js +++ b/src/public/app/components/root_command_executor.js @@ -1,11 +1,11 @@ -import Component from "../widgets/component.js"; +import Component from "./component.js"; import appContext from "./app_context.js"; import dateNoteService from "../services/date_notes.js"; import treeService from "../services/tree.js"; -import openService from "./open.js"; -import protectedSessionService from "./protected_session.js"; -import options from "./options.js"; -import froca from "./froca.js"; +import openService from "../services/open.js"; +import protectedSessionService from "../services/protected_session.js"; +import options from "../services/options.js"; +import froca from "../services/froca.js"; export default class RootCommandExecutor extends Component { editReadOnlyNoteCommand() { @@ -46,7 +46,7 @@ export default class RootCommandExecutor extends Component { openNoteExternallyCommand() { const noteId = appContext.tabManager.getActiveContextNoteId(); const mime = appContext.tabManager.getActiveContextNoteMime() - + if (noteId) { openService.openNoteExternally(noteId, mime); } diff --git a/src/public/app/components/shortcut_component.js b/src/public/app/components/shortcut_component.js new file mode 100644 index 000000000..59ba34ff4 --- /dev/null +++ b/src/public/app/components/shortcut_component.js @@ -0,0 +1,19 @@ +import appContext from "./app_context.js"; +import shortcutService from "../services/shortcuts.js"; +import server from "../services/server.js"; +import Component from "./component.js"; + +export default class ShortcutComponent extends Component { + constructor() { + server.get('keyboard-shortcuts-for-notes').then(shortcutAttributes => { + for (const attr in shortcutAttributes) { + bindNoteShortcutHandler(attr); + } + } + + bindNoteShortcutHandler(attr) { + const handler = async () => appContext.tabManager.getActiveContext().setNote(attr.noteId); + + shortcutService.bindGlobalShortcut(attr.value, handler, attr.attributeId); + } +} diff --git a/src/public/app/services/tab_manager.js b/src/public/app/components/tab_manager.js similarity index 98% rename from src/public/app/services/tab_manager.js rename to src/public/app/components/tab_manager.js index f5fcf2279..30c1e0d4e 100644 --- a/src/public/app/services/tab_manager.js +++ b/src/public/app/components/tab_manager.js @@ -1,10 +1,10 @@ -import Component from "../widgets/component.js"; -import SpacedUpdate from "./spaced_update.js"; -import server from "./server.js"; -import options from "./options.js"; -import froca from "./froca.js"; -import treeService from "./tree.js"; -import utils from "./utils.js"; +import Component from "./component.js"; +import SpacedUpdate from "../services/spaced_update.js"; +import server from "../services/server.js"; +import options from "../services/options.js"; +import froca from "../services/froca.js"; +import treeService from "../services/tree.js"; +import utils from "../services/utils.js"; import NoteContext from "./note_context.js"; import appContext from "./app_context.js"; import Mutex from "../utils/mutex.js"; diff --git a/src/public/app/services/zoom.js b/src/public/app/components/zoom.js similarity index 90% rename from src/public/app/services/zoom.js rename to src/public/app/components/zoom.js index e435ac970..89ffdf965 100644 --- a/src/public/app/services/zoom.js +++ b/src/public/app/components/zoom.js @@ -1,11 +1,11 @@ -import options from "./options.js"; -import Component from "../widgets/component.js"; +import options from "../services/options.js"; +import Component from "./component.js"; import utils from "../services/utils.js"; const MIN_ZOOM = 0.5; const MAX_ZOOM = 2.0; -class ZoomService extends Component { +class ZoomComponent extends Component { constructor() { super(); @@ -59,6 +59,6 @@ class ZoomService extends Component { } } -const zoomService = new ZoomService(); +const zoomService = new ZoomComponent(); export default zoomService; diff --git a/src/public/app/desktop.js b/src/public/app/desktop.js index f1f7da792..21403bbb8 100644 --- a/src/public/app/desktop.js +++ b/src/public/app/desktop.js @@ -1,4 +1,4 @@ -import appContext from "./services/app_context.js"; +import appContext from "./components/app_context.js"; import utils from './services/utils.js'; import noteTooltipService from './services/note_tooltip.js'; import bundleService from "./services/bundle.js"; @@ -7,7 +7,7 @@ import macInit from './services/mac_init.js'; import contextMenu from "./menus/context_menu.js"; import DesktopLayout from "./layouts/desktop_layout.js"; import glob from "./services/glob.js"; -import zoomService from './services/zoom.js'; +import zoomService from './components/zoom.js'; bundleService.getWidgetBundlesByParent().then(widgetBundles => { appContext.setLayout(new DesktopLayout(widgetBundles)); diff --git a/src/public/app/menus/link_context_menu.js b/src/public/app/menus/link_context_menu.js index f586e1e82..76debd781 100644 --- a/src/public/app/menus/link_context_menu.js +++ b/src/public/app/menus/link_context_menu.js @@ -1,5 +1,5 @@ import contextMenu from "./context_menu.js"; -import appContext from "../services/app_context.js"; +import appContext from "../components/app_context.js"; function openContextMenu(notePath, e) { contextMenu.show({ diff --git a/src/public/app/menus/tree_context_menu.js b/src/public/app/menus/tree_context_menu.js index f491be9e7..98ebebadc 100644 --- a/src/public/app/menus/tree_context_menu.js +++ b/src/public/app/menus/tree_context_menu.js @@ -3,7 +3,7 @@ import froca from "../services/froca.js"; import clipboard from '../services/clipboard.js'; import noteCreateService from "../services/note_create.js"; import contextMenu from "./context_menu.js"; -import appContext from "../services/app_context.js"; +import appContext from "../components/app_context.js"; import noteTypesService from "../services/note_types.js"; export default class TreeContextMenu { diff --git a/src/public/app/mobile.js b/src/public/app/mobile.js index 1e7533168..1e2a366fa 100644 --- a/src/public/app/mobile.js +++ b/src/public/app/mobile.js @@ -1,8 +1,8 @@ -import appContext from "./services/app_context.js"; +import appContext from "./components/app_context.js"; import MobileLayout from "./layouts/mobile_layout.js"; import glob from "./services/glob.js"; glob.setupGlobs(); appContext.setLayout(new MobileLayout()); -appContext.start(); \ No newline at end of file +appContext.start(); diff --git a/src/public/app/services/branches.js b/src/public/app/services/branches.js index a89f269a7..0df8e454c 100644 --- a/src/public/app/services/branches.js +++ b/src/public/app/services/branches.js @@ -4,7 +4,7 @@ import toastService from "./toast.js"; import froca from "./froca.js"; import hoistedNoteService from "./hoisted_note.js"; import ws from "./ws.js"; -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; async function moveBeforeBranch(branchIdsToMove, beforeBranchId) { branchIdsToMove = filterRootNote(branchIdsToMove); diff --git a/src/public/app/services/dialog.js b/src/public/app/services/dialog.js index 9a401e52f..325a65146 100644 --- a/src/public/app/services/dialog.js +++ b/src/public/app/services/dialog.js @@ -1,4 +1,4 @@ -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; async function info(message) { return new Promise(res => diff --git a/src/public/app/services/file_watcher.js b/src/public/app/services/file_watcher.js index b42eeb365..74d135b73 100644 --- a/src/public/app/services/file_watcher.js +++ b/src/public/app/services/file_watcher.js @@ -1,5 +1,5 @@ import ws from "./ws.js"; -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; const fileModificationStatus = {}; diff --git a/src/public/app/services/froca.js b/src/public/app/services/froca.js index e06386772..34ff49c59 100644 --- a/src/public/app/services/froca.js +++ b/src/public/app/services/froca.js @@ -2,7 +2,7 @@ import Branch from "../entities/branch.js"; import NoteShort from "../entities/note_short.js"; import Attribute from "../entities/attribute.js"; import server from "./server.js"; -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; import NoteComplement from "../entities/note_complement.js"; /** diff --git a/src/public/app/services/froca_updater.js b/src/public/app/services/froca_updater.js index 17347704b..3e130d89b 100644 --- a/src/public/app/services/froca_updater.js +++ b/src/public/app/services/froca_updater.js @@ -76,7 +76,7 @@ async function processEntityChanges(entityChanges) { noteAttributeCache.invalidate(); } - const appContext = (await import("./app_context.js")).default; + const appContext = (await import("../components/app_context.js")).default; await appContext.triggerEvent('entitiesReloaded', {loadResults}); } } diff --git a/src/public/app/services/frontend_script_api.js b/src/public/app/services/frontend_script_api.js index 2eea0abb5..fd0368e31 100644 --- a/src/public/app/services/frontend_script_api.js +++ b/src/public/app/services/frontend_script_api.js @@ -9,7 +9,7 @@ import dateNotesService from './date_notes.js'; import searchService from './search.js'; import CollapsibleWidget from '../widgets/collapsible_widget.js'; import ws from "./ws.js"; -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; import NoteContextAwareWidget from "../widgets/note_context_aware_widget.js"; import BasicWidget from "../widgets/basic_widget.js"; import SpacedUpdate from "./spaced_update.js"; diff --git a/src/public/app/services/glob.js b/src/public/app/services/glob.js index 780818f7e..94153fed9 100644 --- a/src/public/app/services/glob.js +++ b/src/public/app/services/glob.js @@ -1,5 +1,5 @@ import utils from "./utils.js"; -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; import server from "./server.js"; import libraryLoader from "./library_loader.js"; import ws from "./ws.js"; diff --git a/src/public/app/services/hoisted_note.js b/src/public/app/services/hoisted_note.js index 361276c86..dd8d63c35 100644 --- a/src/public/app/services/hoisted_note.js +++ b/src/public/app/services/hoisted_note.js @@ -1,4 +1,4 @@ -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; import treeService from "./tree.js"; import dialogService from "./dialog.js"; import froca from "./froca.js"; diff --git a/src/public/app/services/import.js b/src/public/app/services/import.js index db9dad903..83211b0bf 100644 --- a/src/public/app/services/import.js +++ b/src/public/app/services/import.js @@ -2,7 +2,7 @@ import toastService from "./toast.js"; import server from "./server.js"; import ws from "./ws.js"; import utils from "./utils.js"; -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; export async function uploadFiles(parentNoteId, files, options) { if (files.length === 0) { diff --git a/src/public/app/services/keyboard_actions.js b/src/public/app/services/keyboard_actions.js index 6c7670092..3048a6524 100644 --- a/src/public/app/services/keyboard_actions.js +++ b/src/public/app/services/keyboard_actions.js @@ -1,5 +1,5 @@ import server from "./server.js"; -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; import shortcutService from "./shortcuts.js"; const keyboardActionRepo = {}; @@ -44,14 +44,6 @@ getActionsForScope("window").then(actions => { } }); -server.get('keyboard-shortcuts-for-notes').then(shortcutForNotes => { - for (const shortcut in shortcutForNotes) { - shortcutService.bindGlobalShortcut(shortcut, async () => { - appContext.tabManager.getActiveContext().setNote(shortcutForNotes[shortcut]); - }); - } -}); - function setElementActionHandler($el, actionName, handler) { keyboardActionsLoaded.then(() => { const action = keyboardActionRepo[actionName]; diff --git a/src/public/app/services/link.js b/src/public/app/services/link.js index d586cc678..95065ee33 100644 --- a/src/public/app/services/link.js +++ b/src/public/app/services/link.js @@ -1,6 +1,6 @@ import treeService from './tree.js'; import linkContextMenuService from "../menus/link_context_menu.js"; -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; import froca from "./froca.js"; import utils from "./utils.js"; diff --git a/src/public/app/services/note_autocomplete.js b/src/public/app/services/note_autocomplete.js index c84a41dd3..a0dd30fa9 100644 --- a/src/public/app/services/note_autocomplete.js +++ b/src/public/app/services/note_autocomplete.js @@ -1,5 +1,5 @@ import server from "./server.js"; -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; import utils from './utils.js'; import noteCreateService from './note_create.js'; import treeService from './tree.js'; diff --git a/src/public/app/services/note_create.js b/src/public/app/services/note_create.js index 39eced7f4..f246abae1 100644 --- a/src/public/app/services/note_create.js +++ b/src/public/app/services/note_create.js @@ -1,4 +1,4 @@ -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; import utils from "./utils.js"; import protectedSessionHolder from "./protected_session_holder.js"; import server from "./server.js"; diff --git a/src/public/app/services/protected_session.js b/src/public/app/services/protected_session.js index 13d80b502..ac0d6e18d 100644 --- a/src/public/app/services/protected_session.js +++ b/src/public/app/services/protected_session.js @@ -2,7 +2,7 @@ import server from './server.js'; import protectedSessionHolder from './protected_session_holder.js'; import toastService from "./toast.js"; import ws from "./ws.js"; -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; import froca from "./froca.js"; import utils from "./utils.js"; import options from "./options.js"; diff --git a/src/public/app/services/server.js b/src/public/app/services/server.js index ff2bc14a7..e18663c61 100644 --- a/src/public/app/services/server.js +++ b/src/public/app/services/server.js @@ -3,7 +3,7 @@ import utils from './utils.js'; const REQUEST_LOGGING_ENABLED = false; async function getHeaders(headers) { - const appContext = (await import('./app_context.js')).default; + const appContext = (await import('../components/app_context.js')).default; const activeNoteContext = appContext.tabManager ? appContext.tabManager.getActiveContext() : null; // headers need to be lowercase because node.js automatically converts them to lower case diff --git a/src/public/app/services/shortcuts.js b/src/public/app/services/shortcuts.js index a38476ee6..55d7a9c90 100644 --- a/src/public/app/services/shortcuts.js +++ b/src/public/app/services/shortcuts.js @@ -1,7 +1,7 @@ import utils from "./utils.js"; function bindGlobalShortcut(keyboardShortcut, handler, namespace = null) { - bindElShortcut($(document), keyboardShortcut, handler); + bindElShortcut($(document), keyboardShortcut, handler, namespace); } function bindElShortcut($el, keyboardShortcut, handler, namespace = null) { @@ -19,7 +19,7 @@ function bindElShortcut($el, keyboardShortcut, handler, namespace = null) { // method can be called to remove the shortcut (e.g. when keyboardShortcut label is deleted) if (keyboardShortcut) { - $el.on(eventName, keyboardShortcut, e => { + $el.bind(eventName, keyboardShortcut, e => { handler(e); e.preventDefault(); diff --git a/src/public/app/services/tree.js b/src/public/app/services/tree.js index 6657c864c..d68d689c6 100644 --- a/src/public/app/services/tree.js +++ b/src/public/app/services/tree.js @@ -3,7 +3,7 @@ import utils from './utils.js'; import server from './server.js'; import froca from './froca.js'; import hoistedNoteService from '../services/hoisted_note.js'; -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; /** * @return {string|null} diff --git a/src/public/app/services/ws.js b/src/public/app/services/ws.js index 6dd34c1c6..4ae29c014 100644 --- a/src/public/app/services/ws.js +++ b/src/public/app/services/ws.js @@ -3,7 +3,7 @@ import toastService from "./toast.js"; import server from "./server.js"; import options from "./options.js"; import frocaUpdater from "./froca_updater.js"; -import appContext from "./app_context.js"; +import appContext from "../components/app_context.js"; const messageHandlers = []; diff --git a/src/public/app/widgets/basic_widget.js b/src/public/app/widgets/basic_widget.js index 4aa752667..e8de53066 100644 --- a/src/public/app/widgets/basic_widget.js +++ b/src/public/app/widgets/basic_widget.js @@ -1,4 +1,4 @@ -import Component from "./component.js"; +import Component from "../components/component.js"; class BasicWidget extends Component { constructor() { diff --git a/src/public/app/widgets/buttons/calendar.js b/src/public/app/widgets/buttons/calendar.js index 6a4bb489d..2f9056b95 100644 --- a/src/public/app/widgets/buttons/calendar.js +++ b/src/public/app/widgets/buttons/calendar.js @@ -2,7 +2,7 @@ import libraryLoader from "../../services/library_loader.js"; import utils from "../../services/utils.js"; import dateNoteService from "../../services/date_notes.js"; import server from "../../services/server.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import RightDropdownButtonWidget from "./right_dropdown_button.js"; import toastService from "../../services/toast.js"; diff --git a/src/public/app/widgets/buttons/edit_button.js b/src/public/app/widgets/buttons/edit_button.js index b723cdb99..0b22c31c6 100644 --- a/src/public/app/widgets/buttons/edit_button.js +++ b/src/public/app/widgets/buttons/edit_button.js @@ -1,5 +1,5 @@ import ButtonWidget from "./button_widget.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import attributeService from "../../services/attributes.js"; import protectedSessionHolder from "../../services/protected_session_holder.js"; diff --git a/src/public/app/widgets/buttons/open_note_button_widget.js b/src/public/app/widgets/buttons/open_note_button_widget.js index 0a3fb81fb..6bef9b6cf 100644 --- a/src/public/app/widgets/buttons/open_note_button_widget.js +++ b/src/public/app/widgets/buttons/open_note_button_widget.js @@ -1,5 +1,5 @@ import ButtonWidget from "./button_widget.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import froca from "../../services/froca.js"; // FIXME: this widget might not be useful anymore diff --git a/src/public/app/widgets/containers/launcher_container.js b/src/public/app/widgets/containers/launcher_container.js index 331cc1352..7048c550d 100644 --- a/src/public/app/widgets/containers/launcher_container.js +++ b/src/public/app/widgets/containers/launcher_container.js @@ -2,7 +2,7 @@ import FlexContainer from "./flex_container.js"; import froca from "../../services/froca.js"; import ButtonWidget from "../buttons/button_widget.js"; import CalendarWidget from "../buttons/calendar.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import SpacerWidget from "../spacer.js"; import BookmarkButtons from "../bookmark_buttons.js"; import ProtectedSessionStatusWidget from "../buttons/protected_session_status.js"; diff --git a/src/public/app/widgets/containers/split_note_container.js b/src/public/app/widgets/containers/split_note_container.js index 71e595847..dc3ff22c1 100644 --- a/src/public/app/widgets/containers/split_note_container.js +++ b/src/public/app/widgets/containers/split_note_container.js @@ -1,5 +1,5 @@ import FlexContainer from "./flex_container.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; export default class SplitNoteContainer extends FlexContainer { constructor(widgetFactory) { diff --git a/src/public/app/widgets/dialogs/branch_prefix.js b/src/public/app/widgets/dialogs/branch_prefix.js index 52a2763e4..ec07bc116 100644 --- a/src/public/app/widgets/dialogs/branch_prefix.js +++ b/src/public/app/widgets/dialogs/branch_prefix.js @@ -4,7 +4,7 @@ import froca from "../../services/froca.js"; import toastService from "../../services/toast.js"; import utils from "../../services/utils.js"; import BasicWidget from "../basic_widget.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; let branchId; diff --git a/src/public/app/widgets/dialogs/clone_to.js b/src/public/app/widgets/dialogs/clone_to.js index f8ad4d1da..124945d1a 100644 --- a/src/public/app/widgets/dialogs/clone_to.js +++ b/src/public/app/widgets/dialogs/clone_to.js @@ -4,7 +4,7 @@ import treeService from "../../services/tree.js"; import toastService from "../../services/toast.js"; import froca from "../../services/froca.js"; import branchService from "../../services/branches.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import BasicWidget from "../basic_widget.js"; const TPL = ` diff --git a/src/public/app/widgets/dialogs/jump_to_note.js b/src/public/app/widgets/dialogs/jump_to_note.js index 68d2ec2f4..6bc5c1b24 100644 --- a/src/public/app/widgets/dialogs/jump_to_note.js +++ b/src/public/app/widgets/dialogs/jump_to_note.js @@ -1,6 +1,6 @@ import noteAutocompleteService from '../../services/note_autocomplete.js'; import utils from "../../services/utils.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import BasicWidget from "../basic_widget.js"; import shortcutService from "../../services/shortcuts.js"; diff --git a/src/public/app/widgets/dialogs/markdown_import.js b/src/public/app/widgets/dialogs/markdown_import.js index 67d74bff6..2fe59dd0b 100644 --- a/src/public/app/widgets/dialogs/markdown_import.js +++ b/src/public/app/widgets/dialogs/markdown_import.js @@ -1,7 +1,7 @@ import libraryLoader from "../../services/library_loader.js"; import toastService from "../../services/toast.js"; import utils from "../../services/utils.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import BasicWidget from "../basic_widget.js"; import shortcutService from "../../services/shortcuts.js"; diff --git a/src/public/app/widgets/dialogs/note_revisions.js b/src/public/app/widgets/dialogs/note_revisions.js index 9560ad575..8d71e4f1e 100644 --- a/src/public/app/widgets/dialogs/note_revisions.js +++ b/src/public/app/widgets/dialogs/note_revisions.js @@ -1,7 +1,7 @@ import utils from '../../services/utils.js'; import server from '../../services/server.js'; import toastService from "../../services/toast.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import libraryLoader from "../../services/library_loader.js"; import openService from "../../services/open.js"; import protectedSessionHolder from "../../services/protected_session_holder.js"; diff --git a/src/public/app/widgets/dialogs/note_source.js b/src/public/app/widgets/dialogs/note_source.js index 37e675b3b..c44e59d9b 100644 --- a/src/public/app/widgets/dialogs/note_source.js +++ b/src/public/app/widgets/dialogs/note_source.js @@ -1,4 +1,4 @@ -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import BasicWidget from "../basic_widget.js"; import utils from "../../services/utils.js"; diff --git a/src/public/app/widgets/dialogs/options/appearance.js b/src/public/app/widgets/dialogs/options/appearance.js index d8be2d073..65deeaa31 100644 --- a/src/public/app/widgets/dialogs/options/appearance.js +++ b/src/public/app/widgets/dialogs/options/appearance.js @@ -1,6 +1,6 @@ import server from "../../../services/server.js"; import utils from "../../../services/utils.js"; -import appContext from "../../../services/app_context.js"; +import appContext from "../../../components/app_context.js"; import OptionsTab from "./options_tab.js"; const FONT_FAMILIES = [ diff --git a/src/public/app/widgets/dialogs/recent_changes.js b/src/public/app/widgets/dialogs/recent_changes.js index c9e5d3510..b6320d76b 100644 --- a/src/public/app/widgets/dialogs/recent_changes.js +++ b/src/public/app/widgets/dialogs/recent_changes.js @@ -3,7 +3,7 @@ import utils from '../../services/utils.js'; import server from '../../services/server.js'; import treeService from "../../services/tree.js"; import froca from "../../services/froca.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import hoistedNoteService from "../../services/hoisted_note.js"; import BasicWidget from "../basic_widget.js"; import dialogService from "../../services/dialog.js"; diff --git a/src/public/app/widgets/find_in_html.js b/src/public/app/widgets/find_in_html.js index 25e40c394..48ca2cb9a 100644 --- a/src/public/app/widgets/find_in_html.js +++ b/src/public/app/widgets/find_in_html.js @@ -3,7 +3,7 @@ // for consistency import libraryLoader from "../services/library_loader.js"; import utils from "../services/utils.js"; -import appContext from "../services/app_context.js"; +import appContext from "../components/app_context.js"; const FIND_RESULT_SELECTED_CSS_CLASSNAME = "ck-find-result_selected"; const FIND_RESULT_CSS_CLASSNAME = "ck-find-result"; diff --git a/src/public/app/widgets/mobile_widgets/mobile_detail_menu.js b/src/public/app/widgets/mobile_widgets/mobile_detail_menu.js index c4518a856..88b31cba5 100644 --- a/src/public/app/widgets/mobile_widgets/mobile_detail_menu.js +++ b/src/public/app/widgets/mobile_widgets/mobile_detail_menu.js @@ -1,5 +1,5 @@ import BasicWidget from "../basic_widget.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import contextMenu from "../../menus/context_menu.js"; import noteCreateService from "../../services/note_create.js"; import branchService from "../../services/branches.js"; diff --git a/src/public/app/widgets/note_context_aware_widget.js b/src/public/app/widgets/note_context_aware_widget.js index 38729be5a..0d96abff7 100644 --- a/src/public/app/widgets/note_context_aware_widget.js +++ b/src/public/app/widgets/note_context_aware_widget.js @@ -1,5 +1,5 @@ import BasicWidget from "./basic_widget.js"; -import appContext from "../services/app_context.js"; +import appContext from "../components/app_context.js"; export default class NoteContextAwareWidget extends BasicWidget { isNoteContext(ntxId) { diff --git a/src/public/app/widgets/note_detail.js b/src/public/app/widgets/note_detail.js index 570b8eb32..0b22dd563 100644 --- a/src/public/app/widgets/note_detail.js +++ b/src/public/app/widgets/note_detail.js @@ -3,7 +3,7 @@ import protectedSessionHolder from "../services/protected_session_holder.js"; import SpacedUpdate from "../services/spaced_update.js"; import server from "../services/server.js"; import libraryLoader from "../services/library_loader.js"; -import appContext from "../services/app_context.js"; +import appContext from "../components/app_context.js"; import keyboardActionsService from "../services/keyboard_actions.js"; import noteCreateService from "../services/note_create.js"; import attributeService from "../services/attributes.js"; diff --git a/src/public/app/widgets/note_map.js b/src/public/app/widgets/note_map.js index 779d2c885..ecff45b48 100644 --- a/src/public/app/widgets/note_map.js +++ b/src/public/app/widgets/note_map.js @@ -2,7 +2,7 @@ import libraryLoader from "../services/library_loader.js"; import server from "../services/server.js"; import attributeService from "../services/attributes.js"; import hoistedNoteService from "../services/hoisted_note.js"; -import appContext from "../services/app_context.js"; +import appContext from "../components/app_context.js"; import NoteContextAwareWidget from "./note_context_aware_widget.js"; import linkContextMenuService from "../menus/link_context_menu.js"; diff --git a/src/public/app/widgets/note_title.js b/src/public/app/widgets/note_title.js index 5df6fbf29..ce33def91 100644 --- a/src/public/app/widgets/note_title.js +++ b/src/public/app/widgets/note_title.js @@ -2,7 +2,7 @@ import NoteContextAwareWidget from "./note_context_aware_widget.js"; import protectedSessionHolder from "../services/protected_session_holder.js"; import server from "../services/server.js"; import SpacedUpdate from "../services/spaced_update.js"; -import appContext from "../services/app_context.js"; +import appContext from "../components/app_context.js"; import branchService from "../services/branches.js"; import shortcutService from "../services/shortcuts.js"; diff --git a/src/public/app/widgets/note_tree.js b/src/public/app/widgets/note_tree.js index 3228088bf..4043aa1fa 100644 --- a/src/public/app/widgets/note_tree.js +++ b/src/public/app/widgets/note_tree.js @@ -9,7 +9,7 @@ import NoteContextAwareWidget from "./note_context_aware_widget.js"; import server from "../services/server.js"; import noteCreateService from "../services/note_create.js"; import toastService from "../services/toast.js"; -import appContext from "../services/app_context.js"; +import appContext from "../components/app_context.js"; import keyboardActionsService from "../services/keyboard_actions.js"; import clipboard from "../services/clipboard.js"; import protectedSessionService from "../services/protected_session.js"; diff --git a/src/public/app/widgets/quick_search.js b/src/public/app/widgets/quick_search.js index e6167f1ce..e275756b1 100644 --- a/src/public/app/widgets/quick_search.js +++ b/src/public/app/widgets/quick_search.js @@ -3,7 +3,7 @@ import server from "../services/server.js"; import linkService from "../services/link.js"; import froca from "../services/froca.js"; import utils from "../services/utils.js"; -import appContext from "../services/app_context.js"; +import appContext from "../components/app_context.js"; import shortcutService from "../services/shortcuts.js"; const TPL = ` diff --git a/src/public/app/widgets/ribbon_widgets/search_definition.js b/src/public/app/widgets/ribbon_widgets/search_definition.js index 3c1451313..4b6c1d785 100644 --- a/src/public/app/widgets/ribbon_widgets/search_definition.js +++ b/src/public/app/widgets/ribbon_widgets/search_definition.js @@ -13,7 +13,7 @@ import OrderBy from "../search_options/order_by.js"; import SearchScript from "../search_options/search_script.js"; import Limit from "../search_options/limit.js"; import Debug from "../search_options/debug.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import bulkActionService from "../../services/bulk_action.js"; const TPL = ` diff --git a/src/public/app/widgets/search_options/abstract_search_option.js b/src/public/app/widgets/search_options/abstract_search_option.js index 6103f9dde..daf76fb73 100644 --- a/src/public/app/widgets/search_options/abstract_search_option.js +++ b/src/public/app/widgets/search_options/abstract_search_option.js @@ -1,6 +1,6 @@ import server from "../../services/server.js"; import ws from "../../services/ws.js"; -import Component from "../component.js"; +import Component from "../../components/component.js"; import utils from "../../services/utils.js"; export default class AbstractSearchOption extends Component { diff --git a/src/public/app/widgets/tab_row.js b/src/public/app/widgets/tab_row.js index b9e566228..17fdb7305 100644 --- a/src/public/app/widgets/tab_row.js +++ b/src/public/app/widgets/tab_row.js @@ -2,7 +2,7 @@ import BasicWidget from "./basic_widget.js"; import contextMenu from "../menus/context_menu.js"; import utils from "../services/utils.js"; import keyboardActionService from "../services/keyboard_actions.js"; -import appContext from "../services/app_context.js"; +import appContext from "../components/app_context.js"; import froca from "../services/froca.js"; import attributeService from "../services/attributes.js"; diff --git a/src/public/app/widgets/type_widgets/abstract_text_type_widget.js b/src/public/app/widgets/type_widgets/abstract_text_type_widget.js index 1e8049b0d..3477e3790 100644 --- a/src/public/app/widgets/type_widgets/abstract_text_type_widget.js +++ b/src/public/app/widgets/type_widgets/abstract_text_type_widget.js @@ -1,5 +1,5 @@ import TypeWidget from "./type_widget.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import froca from "../../services/froca.js"; import linkService from "../../services/link.js"; import noteContentRenderer from "../../services/note_content_renderer.js"; diff --git a/src/public/app/widgets/type_widgets/editable_code_buttons.js b/src/public/app/widgets/type_widgets/editable_code_buttons.js index 006ace51f..0c8fafd43 100644 --- a/src/public/app/widgets/type_widgets/editable_code_buttons.js +++ b/src/public/app/widgets/type_widgets/editable_code_buttons.js @@ -1,6 +1,6 @@ import server from "../../services/server.js"; import ws from "../../services/ws.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import toastService from "../../services/toast.js"; import treeService from "../../services/tree.js"; import NoteContextAwareWidget from "../note_context_aware_widget.js"; diff --git a/src/public/app/widgets/type_widgets/editable_text.js b/src/public/app/widgets/type_widgets/editable_text.js index 181311e3b..856273e3c 100644 --- a/src/public/app/widgets/type_widgets/editable_text.js +++ b/src/public/app/widgets/type_widgets/editable_text.js @@ -8,7 +8,7 @@ import treeService from "../../services/tree.js"; import noteCreateService from "../../services/note_create.js"; import AbstractTextTypeWidget from "./abstract_text_type_widget.js"; import link from "../../services/link.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; const ENABLE_INSPECTOR = false; diff --git a/src/public/app/widgets/type_widgets/empty.js b/src/public/app/widgets/type_widgets/empty.js index 7df7a9d08..0eed0373f 100644 --- a/src/public/app/widgets/type_widgets/empty.js +++ b/src/public/app/widgets/type_widgets/empty.js @@ -1,6 +1,6 @@ import noteAutocompleteService from '../../services/note_autocomplete.js'; import TypeWidget from "./type_widget.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import searchService from "../../services/search.js"; const TPL = ` diff --git a/src/public/app/widgets/type_widgets/relation_map.js b/src/public/app/widgets/type_widgets/relation_map.js index 4625f3672..acc687c37 100644 --- a/src/public/app/widgets/type_widgets/relation_map.js +++ b/src/public/app/widgets/type_widgets/relation_map.js @@ -5,7 +5,7 @@ import contextMenu from "../../menus/context_menu.js"; import toastService from "../../services/toast.js"; import attributeAutocompleteService from "../../services/attribute_autocomplete.js"; import TypeWidget from "./type_widget.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; import utils from "../../services/utils.js"; import froca from "../../services/froca.js"; import dialogService from "../../services/dialog.js"; diff --git a/src/public/app/widgets/type_widgets/type_widget.js b/src/public/app/widgets/type_widgets/type_widget.js index f3dd88317..434ba2176 100644 --- a/src/public/app/widgets/type_widgets/type_widget.js +++ b/src/public/app/widgets/type_widgets/type_widget.js @@ -1,5 +1,5 @@ import NoteContextAwareWidget from "../note_context_aware_widget.js"; -import appContext from "../../services/app_context.js"; +import appContext from "../../components/app_context.js"; export default class TypeWidget extends NoteContextAwareWidget { // for overriding @@ -40,7 +40,7 @@ export default class TypeWidget extends NoteContextAwareWidget { /** * @returns {Promise|*} promise resolving content or directly the content - */ + */ getContent() {} focus() {} diff --git a/src/routes/api/keys.js b/src/routes/api/keys.js index ea793c50f..14bd42d64 100644 --- a/src/routes/api/keys.js +++ b/src/routes/api/keys.js @@ -10,20 +10,8 @@ function getKeyboardActions() { function getShortcutsForNotes() { const attrs = becca.findAttributes('label', 'keyboardShortcut'); - const map = {}; - - for (const attr of attrs) { - const note = becca.getNote(attr.noteId); - - if (note?.type === 'launcher') { - // launchers have different handling - continue; - } - - map[attr.value] = attr.noteId; - } - - return map; + // launchers have different handling + return attrs.filter(attr => becca.getNote(attr.noteId)?.type !== 'launcher'); } module.exports = { diff --git a/src/services/special_notes.js b/src/services/special_notes.js index d3522a8ad..8f595f727 100644 --- a/src/services/special_notes.js +++ b/src/services/special_notes.js @@ -337,9 +337,9 @@ const launchers = [ { id: 'lb_jumpto', command: 'jumpToNote', title: 'Jump to note', icon: 'bx bx-send', isVisible: true }, { id: 'lb_notemap', targetNoteId: 'globalnotemap', title: 'Note map', icon: 'bx bx-map-alt', isVisible: true }, { id: 'lb_calendar', builtinWidget: 'calendar', title: 'Calendar', icon: 'bx bx-calendar', isVisible: true }, - { id: 'lb_spacer1', builtinWidget: 'spacer', title: 'Spacer', isVisible: true, baseSize: 50, growthFactor: 0 }, + { id: 'lb_spacer1', builtinWidget: 'spacer', title: 'Spacer', isVisible: true, baseSize: "50", growthFactor: "0" }, { id: 'lb_bookmarks', builtinWidget: 'bookmarks', title: 'Bookmarks', icon: 'bx bx-bookmark', isVisible: true }, - { id: 'lb_spacer2', builtinWidget: 'spacer', title: 'Spacer', isVisible: true, baseSize: 0, growthFactor: 1 }, + { id: 'lb_spacer2', builtinWidget: 'spacer', title: 'Spacer', isVisible: true, baseSize: "0", growthFactor: "1" }, { id: 'lb_protectedsession', builtinWidget: 'protectedSession', title: 'Protected session', icon: 'bx bx bx-shield-quarter', isVisible: true }, { id: 'lb_syncstatus', builtinWidget: 'syncStatus', title: 'Sync status', icon: 'bx bx-wifi', isVisible: true },