From 2beaaa95bf4684f42c1727d40ebec4d1fcb8927e Mon Sep 17 00:00:00 2001 From: Panagiotis Papadopoulos Date: Sun, 2 Mar 2025 20:47:57 +0100 Subject: [PATCH] chore(prettier): fix code style --- bin/generate-openapi.ts | 46 ++-- e2e/i18n.spec.ts | 6 +- e2e/layout/tab_bar.spec.ts | 4 +- e2e/note_types/code.spec.ts | 8 +- e2e/note_types/mermaid.spec.ts | 10 +- e2e/note_types/text.spec.ts | 6 +- e2e/support/app.ts | 18 +- playwright.config.ts | 120 ++++----- spec/etapi/app_info.ts | 2 +- spec/etapi/backup.ts | 2 +- spec/etapi/import.ts | 2 +- spec/etapi/notes.ts | 2 +- src/becca/entities/btask.ts | 2 +- src/public/app/components/app_context.ts | 30 ++- src/public/app/entities/fnote.ts | 20 +- src/public/app/layouts/desktop_layout.js | 2 +- src/public/app/login.ts | 20 +- src/public/app/menus/launcher_context_menu.ts | 4 +- .../app/services/attribute_parser.spec.ts | 3 +- src/public/app/services/attribute_renderer.ts | 2 +- src/public/app/services/library_loader.ts | 4 +- src/public/app/services/link.ts | 4 +- src/public/app/services/note_list_renderer.ts | 2 +- src/public/app/services/note_tooltip.ts | 4 +- src/public/app/services/utils.ts | 16 +- src/public/app/share.ts | 2 +- src/public/app/types-fancytree.d.ts | 6 +- src/public/app/types-lib.d.ts | 4 +- src/public/app/widgets/bookmark_buttons.ts | 2 +- .../widgets/buttons/attachments_actions.ts | 7 +- .../widgets/containers/ribbon_container.ts | 10 +- src/public/app/widgets/dialogs/export.ts | 2 +- src/public/app/widgets/dialogs/revisions.ts | 3 +- .../floating_buttons/geo_map_button.ts | 2 +- .../widgets/floating_buttons/help_button.ts | 6 +- .../widgets/floating_buttons/zpetne_odkazy.ts | 2 +- src/public/app/widgets/geo_map.ts | 35 ++- src/public/app/widgets/mermaid.ts | 2 +- src/public/app/widgets/note_detail.ts | 15 +- src/public/app/widgets/note_map.ts | 18 +- src/public/app/widgets/note_title.ts | 2 +- src/public/app/widgets/note_tree.ts | 16 +- .../app/widgets/protected_note_switch.ts | 2 +- .../widgets/ribbon_widgets/book_properties.ts | 2 +- .../app/widgets/ribbon_widgets/note_map.ts | 2 +- .../app/widgets/ribbon_widgets/note_paths.ts | 3 +- .../widgets/ribbon_widgets/note_properties.ts | 5 +- .../widgets/ribbon_widgets/similar_notes.ts | 1 - src/public/app/widgets/switch.ts | 2 +- src/public/app/widgets/sync_status.ts | 5 +- src/public/app/widgets/tab_row.ts | 2 +- src/public/app/widgets/template_switch.ts | 4 +- src/public/app/widgets/toc.ts | 10 +- .../widgets/type_widgets/attachment_detail.ts | 4 +- .../widgets/type_widgets/attachment_list.ts | 2 +- src/public/app/widgets/type_widgets/book.ts | 4 +- src/public/app/widgets/type_widgets/canvas.ts | 10 +- .../widgets/type_widgets/ckeditor/toolbars.ts | 248 ++++++++---------- .../widgets/type_widgets/content_widget.ts | 2 +- .../app/widgets/type_widgets/geo_map.ts | 26 +- .../app/widgets/type_widgets/mind_map.ts | 2 +- .../options/appearance/code_block.ts | 2 +- .../type_widgets/options/appearance/theme.ts | 10 +- .../options/code_notes/code_mime_types.ts | 5 +- .../options/other/note_erasure_timeout.ts | 2 +- .../other/revisions_snapshot_interval.ts | 2 +- .../options/other/share_settings.ts | 30 +-- .../password/protected_session_timeout.ts | 2 +- .../type_widgets/options/time_selector.ts | 8 +- .../app/widgets/type_widgets/task_list.ts | 27 +- .../app/widgets/view_widgets/calendar_view.ts | 18 +- src/public/stylesheets/bootstrap.scss | 2 +- src/public/stylesheets/calendar.css | 1 - src/public/stylesheets/print.css | 16 +- src/public/stylesheets/style.css | 2 +- src/public/stylesheets/theme-next-dark.css | 4 +- src/public/stylesheets/theme-next-light.css | 2 +- src/public/stylesheets/theme-next/base.css | 4 +- src/public/stylesheets/theme-next/forms.css | 133 +++++----- .../stylesheets/theme-next/notes/empty.css | 2 +- .../stylesheets/theme-next/notes/text.css | 4 +- src/public/stylesheets/theme-next/ribbon.css | 16 +- .../stylesheets/theme-next/settings.css | 2 +- src/public/stylesheets/theme-next/shell.css | 24 +- src/public/stylesheets/theme.css | 2 +- src/public/translations/de/translation.json | 5 +- src/routes/api/special_notes.ts | 4 +- src/routes/api_docs.ts | 4 +- src/services/app_path.ts | 2 +- src/services/config.ts | 2 +- src/services/hidden_subtree.ts | 3 +- src/services/hidden_subtree_launcherbar.ts | 4 +- src/services/html_sanitizer.spec.ts | 4 +- src/services/html_sanitizer.ts | 20 +- src/services/import/markdown.ts | 2 +- src/services/import/single.spec.ts | 18 +- src/services/import/zip.spec.ts | 2 +- src/services/in_app_help.spec.ts | 43 ++- src/services/in_app_help.ts | 5 +- src/services/notes.ts | 2 +- src/services/options_init.ts | 2 +- src/services/options_interface.ts | 1 - src/services/sanitize_attribute_name.spec.ts | 2 +- src/services/search/services/parse.spec.ts | 201 ++++++++------ src/services/search/services/parse.ts | 4 +- src/services/sync_options.ts | 2 +- src/services/tasks.ts | 5 +- src/services/tray.ts | 5 +- src/services/tree.spec.ts | 34 +-- src/services/utils.spec.ts | 168 ++++++------ src/services/window.ts | 2 +- translations/de/server.json | 1 - 112 files changed, 857 insertions(+), 819 deletions(-) diff --git a/bin/generate-openapi.ts b/bin/generate-openapi.ts index 4bd97a76f..4a2334bc5 100644 --- a/bin/generate-openapi.ts +++ b/bin/generate-openapi.ts @@ -1,6 +1,6 @@ import { fileURLToPath } from "url"; import { dirname, join } from "path"; -import swaggerJsdoc from 'swagger-jsdoc'; +import swaggerJsdoc from "swagger-jsdoc"; import fs from "fs"; /* @@ -11,28 +11,30 @@ import fs from "fs"; */ const options = { - definition: { - openapi: '3.1.1', - info: { - title: 'Trilium Notes - Sync server API', - version: '0.96.6', - description: "This is the internal sync server API used by Trilium Notes / TriliumNext Notes.\n\n_If you're looking for the officially supported External Trilium API, see [here](https://triliumnext.github.io/Docs/Wiki/etapi.html)._\n\nThis page does not yet list all routes. For a full list, see the [route controller](https://github.com/TriliumNext/Notes/blob/v0.91.6/src/routes/routes.ts).", - contact: { - name: "TriliumNext issue tracker", - url: "https://github.com/TriliumNext/Notes/issues", - }, - license: { - name: "GNU Free Documentation License 1.3 (or later)", - url: "https://www.gnu.org/licenses/fdl-1.3", - }, + definition: { + openapi: "3.1.1", + info: { + title: "Trilium Notes - Sync server API", + version: "0.96.6", + description: + "This is the internal sync server API used by Trilium Notes / TriliumNext Notes.\n\n_If you're looking for the officially supported External Trilium API, see [here](https://triliumnext.github.io/Docs/Wiki/etapi.html)._\n\nThis page does not yet list all routes. For a full list, see the [route controller](https://github.com/TriliumNext/Notes/blob/v0.91.6/src/routes/routes.ts).", + contact: { + name: "TriliumNext issue tracker", + url: "https://github.com/TriliumNext/Notes/issues" + }, + license: { + name: "GNU Free Documentation License 1.3 (or later)", + url: "https://www.gnu.org/licenses/fdl-1.3" + } + } }, - }, - apis: [ - // Put individual files here to have them ordered first. - './src/routes/api/setup.ts', - // all other files - './src/routes/api/*.ts', './bin/generate-openapi.js' - ], + apis: [ + // Put individual files here to have them ordered first. + "./src/routes/api/setup.ts", + // all other files + "./src/routes/api/*.ts", + "./bin/generate-openapi.js" + ] }; const openapiSpecification = swaggerJsdoc(options); diff --git a/e2e/i18n.spec.ts b/e2e/i18n.spec.ts index 70713f097..8c87e08d9 100644 --- a/e2e/i18n.spec.ts +++ b/e2e/i18n.spec.ts @@ -11,16 +11,14 @@ test("Displays translation on desktop", async ({ page, context }) => { const app = new App(page, context); await app.goto(); - await expect(page.locator("#left-pane .quick-search input")) - .toHaveAttribute("placeholder", "Quick search"); + await expect(page.locator("#left-pane .quick-search input")).toHaveAttribute("placeholder", "Quick search"); }); test("Displays translation on mobile", async ({ page, context }) => { const app = new App(page, context); await app.goto({ isMobile: true }); - await expect(page.locator("#mobile-sidebar-wrapper .quick-search input")) - .toHaveAttribute("placeholder", "Quick search"); + await expect(page.locator("#mobile-sidebar-wrapper .quick-search input")).toHaveAttribute("placeholder", "Quick search"); }); test("Displays translations in Settings", async ({ page, context }) => { diff --git a/e2e/layout/tab_bar.spec.ts b/e2e/layout/tab_bar.spec.ts index 99391c115..e6df6f328 100644 --- a/e2e/layout/tab_bar.spec.ts +++ b/e2e/layout/tab_bar.spec.ts @@ -19,13 +19,13 @@ test("Can drag tabs around", async ({ page, context }) => { let tab = app.getTab(0); // Drag the first tab at the end - await tab.dragTo(app.getTab(2), { targetPosition: { x: 50, y: 0 }}); + await tab.dragTo(app.getTab(2), { targetPosition: { x: 50, y: 0 } }); tab = app.getTab(2); await expect(tab).toContainText(NOTE_TITLE); // Drag the tab to the left - await tab.dragTo(app.getTab(0), { targetPosition: { x: 50, y: 0 }}); + await tab.dragTo(app.getTab(0), { targetPosition: { x: 50, y: 0 } }); await expect(app.getTab(0)).toContainText(NOTE_TITLE); }); diff --git a/e2e/note_types/code.spec.ts b/e2e/note_types/code.spec.ts index f0f204fcc..29084ff84 100644 --- a/e2e/note_types/code.spec.ts +++ b/e2e/note_types/code.spec.ts @@ -39,7 +39,9 @@ test("Displays lint errors for backend script", async ({ page, context }) => { }); async function expectTooltip(page: Page, tooltip: string) { - await expect(page.locator(".CodeMirror-lint-tooltip:visible", { - "hasText": tooltip - })).toBeVisible(); + await expect( + page.locator(".CodeMirror-lint-tooltip:visible", { + hasText: tooltip + }) + ).toBeVisible(); } diff --git a/e2e/note_types/mermaid.spec.ts b/e2e/note_types/mermaid.spec.ts index fd24b4385..f7a0dd401 100644 --- a/e2e/note_types/mermaid.spec.ts +++ b/e2e/note_types/mermaid.spec.ts @@ -3,7 +3,8 @@ import App from "../support/app"; test("renders ELK flowchart", async ({ page, context }) => { await testAriaSnapshot({ - page, context, + page, + context, noteTitle: "Flowchart ELK on", snapshot: ` - document: @@ -22,12 +23,13 @@ test("renders ELK flowchart", async ({ page, context }) => { - paragraph: Guarantee - text: Interfaces for B ` - }) + }); }); test("renders standard flowchart", async ({ page, context }) => { await testAriaSnapshot({ - page, context, + page, + context, noteTitle: "Flowchart ELK off", snapshot: ` - document: @@ -46,7 +48,7 @@ test("renders standard flowchart", async ({ page, context }) => { - paragraph: C - text: Interfaces for B ` - }) + }); }); interface AriaTestOpts { diff --git a/e2e/note_types/text.spec.ts b/e2e/note_types/text.spec.ts index 542eb4e33..71e2da2cc 100644 --- a/e2e/note_types/text.spec.ts +++ b/e2e/note_types/text.spec.ts @@ -44,8 +44,8 @@ test("Highlights list is displayed", async ({ page, context }) => { await expect(app.sidebar).toContainText("Highlights List"); const rootList = app.sidebar.locator(".highlights-list ol"); - let index=0; - for (const highlightedEl of [ "Bold 1", "Italic 1", "Underline 1", "Colored text 1", "Background text 1", "Bold 2", "Italic 2", "Underline 2", "Colored text 2", "Background text 2" ]) { + let index = 0; + for (const highlightedEl of ["Bold 1", "Italic 1", "Underline 1", "Colored text 1", "Background text 1", "Bold 2", "Italic 2", "Underline 2", "Colored text 2", "Background text 2"]) { await expect(rootList.locator("li").nth(index++)).toContainText(highlightedEl); } }); @@ -54,7 +54,7 @@ test("Displays math popup", async ({ page, context }) => { const app = new App(page, context); await app.goto(); await app.goToNoteInNewTab("Empty text"); - const noteContent = app.currentNoteSplit.locator(".note-detail-editable-text-editor") + const noteContent = app.currentNoteSplit.locator(".note-detail-editable-text-editor"); await noteContent.fill("Hello world"); await noteContent.press("ControlOrMeta+M"); diff --git a/e2e/support/app.ts b/e2e/support/app.ts index 400af51d2..ff0aa4df7 100644 --- a/e2e/support/app.ts +++ b/e2e/support/app.ts @@ -25,7 +25,7 @@ export default class App { this.tabBar = page.locator(".tab-row-widget-container"); this.noteTree = page.locator(".tree-wrapper"); this.launcherBar = page.locator("#launcher-container"); - this.currentNoteSplit = page.locator(".note-split:not(.hidden-ext)") + this.currentNoteSplit = page.locator(".note-split:not(.hidden-ext)"); this.sidebar = page.locator("#right-pane"); } @@ -46,8 +46,7 @@ export default class App { // Wait for the page to load. if (url === "/") { - await expect(this.page.locator(".tree")) - .toContainText("Trilium Integration Test"); + await expect(this.page.locator(".tree")).toContainText("Trilium Integration Test"); await this.closeAllTabs(); } } @@ -109,11 +108,12 @@ export default class App { }); expect(csrfToken).toBeTruthy(); - await expect(await this.page.request.put(`${BASE_URL}/api/options/${key}/${value}`, { - headers: { - "x-csrf-token": csrfToken - } - })).toBeOK(); + await expect( + await this.page.request.put(`${BASE_URL}/api/options/${key}/${value}`, { + headers: { + "x-csrf-token": csrfToken + } + }) + ).toBeOK(); } - } diff --git a/playwright.config.ts b/playwright.config.ts index e5377db4b..04bc7aaec 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,6 +1,6 @@ -import { defineConfig, devices } from '@playwright/test'; +import { defineConfig, devices } from "@playwright/test"; -const SERVER_URL = 'http://127.0.0.1:8082'; +const SERVER_URL = "http://127.0.0.1:8082"; /** * Read environment variables from file. @@ -14,68 +14,70 @@ const SERVER_URL = 'http://127.0.0.1:8082'; * See https://playwright.dev/docs/test-configuration. */ export default defineConfig({ - testDir: './e2e', - /* Run tests in files in parallel */ - fullyParallel: true, - /* Fail the build on CI if you accidentally left test.only in the source code. */ - forbidOnly: !!process.env.CI, - /* Retry on CI only */ - retries: process.env.CI ? 2 : 0, - /* Opt out of parallel tests on CI. */ - workers: process.env.CI ? 1 : undefined, - /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: 'html', - /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ - use: { - /* Base URL to use in actions like `await page.goto('/')`. */ - baseURL: SERVER_URL, + testDir: "./e2e", + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: "html", + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + baseURL: SERVER_URL, - /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ - trace: 'on-first-retry', - }, - - /* Configure projects for major browsers */ - projects: [ - { - name: 'chromium', - use: { ...devices['Desktop Chrome'] }, + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: "on-first-retry" }, - // { - // name: 'firefox', - // use: { ...devices['Desktop Firefox'] }, - // }, + /* Configure projects for major browsers */ + projects: [ + { + name: "chromium", + use: { ...devices["Desktop Chrome"] } + } - // { - // name: 'webkit', - // use: { ...devices['Desktop Safari'] }, - // }, + // { + // name: 'firefox', + // use: { ...devices['Desktop Firefox'] }, + // }, - /* Test against mobile viewports. */ - // { - // name: 'Mobile Chrome', - // use: { ...devices['Pixel 5'] }, - // }, - // { - // name: 'Mobile Safari', - // use: { ...devices['iPhone 12'] }, - // }, + // { + // name: 'webkit', + // use: { ...devices['Desktop Safari'] }, + // }, - /* Test against branded browsers. */ - // { - // name: 'Microsoft Edge', - // use: { ...devices['Desktop Edge'], channel: 'msedge' }, - // }, - // { - // name: 'Google Chrome', - // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, - // }, - ], + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { ...devices['Pixel 5'] }, + // }, + // { + // name: 'Mobile Safari', + // use: { ...devices['iPhone 12'] }, + // }, - /* Run your local dev server before starting the tests */ - webServer: !process.env.TRILIUM_DOCKER ? { - command: 'npm run test:integration-mem-db-dev', - url: SERVER_URL, - reuseExistingServer: !process.env.CI, - } : undefined, + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { ...devices['Desktop Edge'], channel: 'msedge' }, + // }, + // { + // name: 'Google Chrome', + // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + // }, + ], + + /* Run your local dev server before starting the tests */ + webServer: !process.env.TRILIUM_DOCKER + ? { + command: "npm run test:integration-mem-db-dev", + url: SERVER_URL, + reuseExistingServer: !process.env.CI + } + : undefined }); diff --git a/spec/etapi/app_info.ts b/spec/etapi/app_info.ts index 08aade29b..9c510d99b 100644 --- a/spec/etapi/app_info.ts +++ b/spec/etapi/app_info.ts @@ -6,4 +6,4 @@ etapi.describeEtapi("app_info", () => { expect(appInfo.clipperProtocolVersion).toEqual("1.0"); }); }); -*/ \ No newline at end of file +*/ diff --git a/spec/etapi/backup.ts b/spec/etapi/backup.ts index 88e487f9e..924213f0e 100644 --- a/spec/etapi/backup.ts +++ b/spec/etapi/backup.ts @@ -7,4 +7,4 @@ etapi.describeEtapi("backup", () => { expect(response.status).toEqual(204); }); }); -*/ \ No newline at end of file +*/ diff --git a/spec/etapi/import.ts b/spec/etapi/import.ts index fc88a9ef5..36782a26a 100644 --- a/spec/etapi/import.ts +++ b/spec/etapi/import.ts @@ -23,4 +23,4 @@ etapi.describeEtapi("import", () => { expect(content).toContain("test export content"); }); }); -*/ \ No newline at end of file +*/ diff --git a/spec/etapi/notes.ts b/spec/etapi/notes.ts index dccb668df..d5c9b680c 100644 --- a/spec/etapi/notes.ts +++ b/spec/etapi/notes.ts @@ -100,4 +100,4 @@ etapi.describeEtapi("notes", () => { expect(error.message).toEqual(`Note '${note.noteId}' not found.`); }); }); -*/ \ No newline at end of file +*/ diff --git a/src/becca/entities/btask.ts b/src/becca/entities/btask.ts index 6f2b89373..fd0ddfdd6 100644 --- a/src/becca/entities/btask.ts +++ b/src/becca/entities/btask.ts @@ -14,7 +14,7 @@ export default class BTask extends AbstractBeccaEntity { } static get hashedProperties() { - return [ "taskId", "parentNoteId", "title", "dueDate", "isDone", "isDeleted" ]; + return ["taskId", "parentNoteId", "title", "dueDate", "isDone", "isDeleted"]; } taskId?: string; diff --git a/src/public/app/components/app_context.ts b/src/public/app/components/app_context.ts index 5f05862b4..3357cacef 100644 --- a/src/public/app/components/app_context.ts +++ b/src/public/app/components/app_context.ts @@ -62,7 +62,7 @@ export interface NoteCommandData extends CommandData { } export interface ExecuteCommandData extends CommandData { - resolve: (data: T) => void + resolve: (data: T) => void; } /** @@ -70,7 +70,7 @@ export interface ExecuteCommandData extends CommandData { */ export type CommandMappings = { "api-log-messages": CommandData; - focusTree: CommandData, + focusTree: CommandData; focusOnTitle: CommandData; focusOnDetail: CommandData; focusOnSearchDefinition: Required; @@ -108,7 +108,7 @@ export type CommandMappings = { showInfoDialog: ConfirmWithMessageOptions; showConfirmDialog: ConfirmWithMessageOptions; showRecentChanges: CommandData & { ancestorNoteId: string }; - showImportDialog: CommandData & { noteId: string; }; + showImportDialog: CommandData & { noteId: string }; openNewNoteSplit: NoteCommandData; openInWindow: NoteCommandData; openNoteInNewTab: CommandData; @@ -131,9 +131,11 @@ export type CommandMappings = { editNoteTitle: ContextMenuCommandData; protectSubtree: ContextMenuCommandData; unprotectSubtree: ContextMenuCommandData; - openBulkActionsDialog: ContextMenuCommandData | { - selectedOrActiveNoteIds?: string[] - }; + openBulkActionsDialog: + | ContextMenuCommandData + | { + selectedOrActiveNoteIds?: string[]; + }; editBranchPrefix: ContextMenuCommandData; convertNoteToAttachment: ContextMenuCommandData; duplicateSubtree: ContextMenuCommandData; @@ -221,11 +223,11 @@ export type CommandMappings = { moveTabToNewWindow: CommandData; copyTabToNewWindow: CommandData; closeActiveTab: CommandData & { - $el: JQuery - }, + $el: JQuery; + }; setZoomFactorAndSave: { zoomFactor: string; - } + }; reEvaluateRightPaneVisibility: CommandData; runActiveNote: CommandData; @@ -234,18 +236,18 @@ export type CommandMappings = { }; scrollToEnd: CommandData; closeThisNoteSplit: CommandData; - moveThisNoteSplit: CommandData & { isMovingLeft: boolean; }; + moveThisNoteSplit: CommandData & { isMovingLeft: boolean }; // Geomap - deleteFromMap: { noteId: string }, - openGeoLocation: { noteId: string, event: JQuery.MouseDownEvent } + deleteFromMap: { noteId: string }; + openGeoLocation: { noteId: string; event: JQuery.MouseDownEvent }; toggleZenMode: CommandData; updateAttributeList: CommandData & { attributes: Attribute[] }; saveAttributes: CommandData; reloadAttributes: CommandData; - refreshNoteList: CommandData & { noteId: string; }; + refreshNoteList: CommandData & { noteId: string }; refreshResults: {}; refreshSearchDefinition: {}; @@ -348,7 +350,7 @@ type EventMappings = { ntxId: string | null | undefined; // TODO: deduplicate ntxId }; tabReorder: { - ntxIdsInOrder: string[] + ntxIdsInOrder: string[]; }; refreshNoteList: { noteId: string; diff --git a/src/public/app/entities/fnote.ts b/src/public/app/entities/fnote.ts index eea5a5cc4..95ad748fd 100644 --- a/src/public/app/entities/fnote.ts +++ b/src/public/app/entities/fnote.ts @@ -37,7 +37,25 @@ const NOTE_TYPE_ICONS = { * end user. Those types should be used only for checking against, they are * not for direct use. */ -export type NoteType = "file" | "image" | "search" | "noteMap" | "launcher" | "doc" | "contentWidget" | "text" | "relationMap" | "render" | "canvas" | "mermaid" | "book" | "webView" | "code" | "mindMap" | "geoMap" | "taskList"; +export type NoteType = + | "file" + | "image" + | "search" + | "noteMap" + | "launcher" + | "doc" + | "contentWidget" + | "text" + | "relationMap" + | "render" + | "canvas" + | "mermaid" + | "book" + | "webView" + | "code" + | "mindMap" + | "geoMap" + | "taskList"; export interface NotePathRecord { isArchived: boolean; diff --git a/src/public/app/layouts/desktop_layout.js b/src/public/app/layouts/desktop_layout.js index 1ece1c156..ecb97fe5f 100644 --- a/src/public/app/layouts/desktop_layout.js +++ b/src/public/app/layouts/desktop_layout.js @@ -264,7 +264,7 @@ export default class DesktopLayout { .child(new InfoDialog()) .child(new ConfirmDialog()) .child(new PromptDialog()) - .child(new CloseZenButton()) + .child(new CloseZenButton()); } #buildLauncherPane(isHorizontal) { diff --git a/src/public/app/login.ts b/src/public/app/login.ts index ed37e9e95..5fc7d6293 100644 --- a/src/public/app/login.ts +++ b/src/public/app/login.ts @@ -4,7 +4,7 @@ import "../stylesheets/bootstrap.scss"; // Required for correct loading of scripts in Electron if (typeof module === 'object') {window.module = module; module = undefined;} -const device = getDeviceType() +const device = getDeviceType(); console.log("Setting device cookie to:", device); setCookie("trilium-device", device); @@ -12,21 +12,21 @@ function setCookie(name: string, value?: string) { const date = new Date(Date.now() + 10 * 365 * 24 * 60 * 60 * 1000); const expires = "; expires=" + date.toUTCString(); - document.cookie = name + "=" + (value || "") + expires + "; path=/"; + document.cookie = name + "=" + (value || "") + expires + "; path=/"; } function getDeviceType() { - if (window.location.search === '?desktop') return "desktop"; - if (window.location.search === '?mobile') return "mobile"; + if (window.location.search === "?desktop") return "desktop"; + if (window.location.search === "?mobile") return "mobile"; return isMobile() ? "mobile" : "desktop"; } // https://stackoverflow.com/a/73731646/944162 function isMobile() { - const mQ = matchMedia?.('(pointer:coarse)'); - if (mQ?.media === '(pointer:coarse)') return !!mQ.matches; + const mQ = matchMedia?.("(pointer:coarse)"); + if (mQ?.media === "(pointer:coarse)") return !!mQ.matches; - if ('orientation' in window) return true; - const userAgentsRegEx = /\b(Android|iPhone|iPad|iPod|Windows Phone|BlackBerry|webOS|IEMobile)\b/i - return userAgentsRegEx.test(navigator.userAgent) -} \ No newline at end of file + if ("orientation" in window) return true; + const userAgentsRegEx = /\b(Android|iPhone|iPad|iPod|Windows Phone|BlackBerry|webOS|IEMobile)\b/i; + return userAgentsRegEx.test(navigator.userAgent); +} diff --git a/src/public/app/menus/launcher_context_menu.ts b/src/public/app/menus/launcher_context_menu.ts index 3aa436632..2ac7decee 100644 --- a/src/public/app/menus/launcher_context_menu.ts +++ b/src/public/app/menus/launcher_context_menu.ts @@ -34,8 +34,8 @@ export default class LauncherContextMenu implements SelectMenuItemEventListener< const isVisibleRoot = note?.noteId === "_lbVisibleLaunchers"; const isAvailableRoot = note?.noteId === "_lbAvailableLaunchers"; - const isVisibleItem = (parentNoteId === "_lbVisibleLaunchers" || parentNoteId === "_lbMobileVisibleLaunchers"); - const isAvailableItem = (parentNoteId === "_lbAvailableLaunchers" || parentNoteId === "_lbMobileAvailableLaunchers"); + const isVisibleItem = parentNoteId === "_lbVisibleLaunchers" || parentNoteId === "_lbMobileVisibleLaunchers"; + const isAvailableItem = parentNoteId === "_lbAvailableLaunchers" || parentNoteId === "_lbMobileAvailableLaunchers"; const isItem = isVisibleItem || isAvailableItem; const canBeDeleted = !note?.noteId.startsWith("_"); // fixed notes can't be deleted const canBeReset = !canBeDeleted && note?.isLaunchBarConfig(); diff --git a/src/public/app/services/attribute_parser.spec.ts b/src/public/app/services/attribute_parser.spec.ts index 7e83c53a4..b63081961 100644 --- a/src/public/app/services/attribute_parser.spec.ts +++ b/src/public/app/services/attribute_parser.spec.ts @@ -1,7 +1,6 @@ import { describe, it, expect } from "vitest"; import attributeParser from "./attribute_parser.js"; - describe("Lexing", () => { it("simple label", () => { expect(attributeParser.lex("#label").map((t: any) => t.text)).toEqual(["#label"]); @@ -41,7 +40,7 @@ describe("Lexing", () => { }); describe.todo("Parser", () => { - /* #TODO + /* #TODO it("simple label", () => { const attrs = attributeParser.parse(["#token"].map((t: any) => ({ text: t }))); diff --git a/src/public/app/services/attribute_renderer.ts b/src/public/app/services/attribute_renderer.ts index caecf1602..bbe278056 100644 --- a/src/public/app/services/attribute_renderer.ts +++ b/src/public/app/services/attribute_renderer.ts @@ -79,7 +79,7 @@ async function renderAttributes(attributes: FAttribute[], renderIsInheritable: b return $container; } -const HIDDEN_ATTRIBUTES = [ "originalFileName", "fileSize", "template", "inherit", "cssClass", "iconClass", "pageSize", "viewType", "geolocation", "docName" ]; +const HIDDEN_ATTRIBUTES = ["originalFileName", "fileSize", "template", "inherit", "cssClass", "iconClass", "pageSize", "viewType", "geolocation", "docName"]; async function renderNormalAttributes(note: FNote) { const promotedDefinitionAttributes = note.getPromotedDefinitionAttributes(); diff --git a/src/public/app/services/library_loader.ts b/src/public/app/services/library_loader.ts index 829184155..85bc1082c 100644 --- a/src/public/app/services/library_loader.ts +++ b/src/public/app/services/library_loader.ts @@ -99,8 +99,8 @@ const HIGHLIGHT_JS: Library = { }; const LEAFLET: Library = { - css: [ "node_modules/leaflet/dist/leaflet.css" ], -} + css: ["node_modules/leaflet/dist/leaflet.css"] +}; async function requireLibrary(library: Library) { if (library.css) { diff --git a/src/public/app/services/link.ts b/src/public/app/services/link.ts index 9b3c779bb..8cda26fa5 100644 --- a/src/public/app/services/link.ts +++ b/src/public/app/services/link.ts @@ -274,8 +274,8 @@ function goToLinkExt(evt: MouseEvent | JQuery.ClickEvent | JQuery.MouseDownEvent const { notePath, viewScope } = parseNavigationStateFromUrl(hrefLink); const ctrlKey = utils.isCtrlKey(evt); - const isLeftClick = ("which" in evt && evt.which === 1); - const isMiddleClick = ("which" in evt && evt.which === 2); + const isLeftClick = "which" in evt && evt.which === 1; + const isMiddleClick = "which" in evt && evt.which === 2; const openInNewTab = (isLeftClick && ctrlKey) || isMiddleClick; if (notePath) { diff --git a/src/public/app/services/note_list_renderer.ts b/src/public/app/services/note_list_renderer.ts index f9a9d0d66..ede0c3132 100644 --- a/src/public/app/services/note_list_renderer.ts +++ b/src/public/app/services/note_list_renderer.ts @@ -18,7 +18,7 @@ export default class NoteListRenderer { parentNote, noteIds, showNotePath - } + }; if (this.viewType === "list" || this.viewType === "grid") { this.viewMode = new ListOrGridView(this.viewType, args); diff --git a/src/public/app/services/note_tooltip.ts b/src/public/app/services/note_tooltip.ts index 28937f3e2..19ac71801 100644 --- a/src/public/app/services/note_tooltip.ts +++ b/src/public/app/services/note_tooltip.ts @@ -147,11 +147,11 @@ async function renderTooltip(note: FNote | null) { tooltip: true, trim: true }); - const isContentEmpty = ($renderedContent[0].innerHTML.length === 0); + const isContentEmpty = $renderedContent[0].innerHTML.length === 0; let content = ""; if (noteTitleWithPathAsSuffix) { - const classes = [ "note-tooltip-title" ]; + const classes = ["note-tooltip-title"]; if (isContentEmpty) { classes.push("note-no-content"); } diff --git a/src/public/app/services/utils.ts b/src/public/app/services/utils.ts index 3786d5771..fd871075a 100644 --- a/src/public/app/services/utils.ts +++ b/src/public/app/services/utils.ts @@ -33,20 +33,20 @@ function parseDate(str: string) { // Source: https://stackoverflow.com/a/30465299/4898894 function getMonthsInDateRange(startDate: string, endDate: string) { - const start = startDate.split('-'); - const end = endDate.split('-'); + const start = startDate.split("-"); + const end = endDate.split("-"); const startYear = parseInt(start[0]); const endYear = parseInt(end[0]); const dates = []; for (let i = startYear; i <= endYear; i++) { const endMonth = i != endYear ? 11 : parseInt(end[1]) - 1; - const startMon = i === startYear ? parseInt(start[1])-1 : 0; + const startMon = i === startYear ? parseInt(start[1]) - 1 : 0; - for(let j = startMon; j <= endMonth; j = j > 12 ? j % 12 || 11 : j+1) { - const month = j+1; - const displayMonth = month < 10 ? '0'+month : month; - dates.push([i, displayMonth].join('-')); + for (let j = startMon; j <= endMonth; j = j > 12 ? j % 12 || 11 : j + 1) { + const month = j + 1; + const displayMonth = month < 10 ? "0" + month : month; + dates.push([i, displayMonth].join("-")); } } return dates; @@ -161,7 +161,7 @@ function escapeHtml(str: string) { } export function escapeQuotes(value: string) { - return value.replaceAll("\"", """); + return value.replaceAll('"', """); } function formatSize(size: number) { diff --git a/src/public/app/share.ts b/src/public/app/share.ts index 62c9467e7..8f5ebebad 100644 --- a/src/public/app/share.ts +++ b/src/public/app/share.ts @@ -32,4 +32,4 @@ document.addEventListener( // add fetchNote as property to the window object Object.defineProperty(window, "fetchNote", { value: fetchNote -}); \ No newline at end of file +}); diff --git a/src/public/app/types-fancytree.d.ts b/src/public/app/types-fancytree.d.ts index c016dad8a..38a4b0295 100644 --- a/src/public/app/types-fancytree.d.ts +++ b/src/public/app/types-fancytree.d.ts @@ -11,7 +11,7 @@ interface JQueryStatic { ui: JQueryUI.UI; -}; +} declare namespace JQueryUI { interface UI { @@ -679,13 +679,13 @@ declare namespace Fancytree { activate = 1, expand = 2, activate_and_expand = 3, - activate_dblclick_expands = 4, + activate_dblclick_expands = 4 } enum FancytreeSelectMode { single = 1, multi = 2, - mutlti_hier = 3, + mutlti_hier = 3 } /** Context object passed to events and hook functions. */ diff --git a/src/public/app/types-lib.d.ts b/src/public/app/types-lib.d.ts index d84101b80..51155abfb 100644 --- a/src/public/app/types-lib.d.ts +++ b/src/public/app/types-lib.d.ts @@ -13,7 +13,7 @@ declare module "draggabilly" { containment: HTMLElement }); element: HTMLElement; - on(event: "pointerDown" | "dragStart" | "dragEnd" | "dragMove", callback: Callback) + on(event: "pointerDown" | "dragStart" | "dragEnd" | "dragMove", callback: Callback); dragEnd(); isDragging: boolean; positionDrag: () => void; @@ -21,6 +21,6 @@ declare module "draggabilly" { } } -declare module '@mind-elixir/node-menu' { +declare module "@mind-elixir/node-menu" { export default mindmap; } diff --git a/src/public/app/widgets/bookmark_buttons.ts b/src/public/app/widgets/bookmark_buttons.ts index 72b422540..b32393c9a 100644 --- a/src/public/app/widgets/bookmark_buttons.ts +++ b/src/public/app/widgets/bookmark_buttons.ts @@ -41,7 +41,7 @@ export default class BookmarkButtons extends FlexContainer { : new OpenNoteButtonWidget(note).class("launcher-button"); if (this.settings.titlePlacement) { - if (!('settings' in buttonWidget)) { + if (!("settings" in buttonWidget)) { (buttonWidget as any).settings = {}; } diff --git a/src/public/app/widgets/buttons/attachments_actions.ts b/src/public/app/widgets/buttons/attachments_actions.ts index efacf48fe..d2c0841b7 100644 --- a/src/public/app/widgets/buttons/attachments_actions.ts +++ b/src/public/app/widgets/buttons/attachments_actions.ts @@ -8,7 +8,7 @@ import appContext from "../../components/app_context.js"; import openService from "../../services/open.js"; import utils from "../../services/utils.js"; import { Dropdown } from "bootstrap"; -import type attachmentsApiRoute from "../../../../routes/api/attachments.js" +import type attachmentsApiRoute from "../../../../routes/api/attachments.js"; import type FAttachment from "../../entities/fattachment.js"; import type AttachmentDetailWidget from "../attachment_detail.js"; @@ -105,8 +105,7 @@ export default class AttachmentActionsWidget extends BasicWidget { this.$uploadNewRevisionInput = this.$widget.find(".attachment-upload-new-revision-input"); this.$uploadNewRevisionInput.on("change", async () => { - - const fileToUpload = this.$uploadNewRevisionInput[0].files?.item(0); // copy to allow reset below + const fileToUpload = this.$uploadNewRevisionInput[0].files?.item(0); // copy to allow reset below this.$uploadNewRevisionInput.val(""); if (fileToUpload) { const result = await server.upload(`attachments/${this.attachmentId}/file`, fileToUpload); @@ -131,7 +130,6 @@ export default class AttachmentActionsWidget extends BasicWidget { const $openAttachmentCustomButton = this.$widget.find("[data-trigger-command='openAttachmentCustom']"); $openAttachmentCustomButton.addClass("disabled").append($('').attr("title", t("attachments_actions.open_custom_client_only"))); } - } async openAttachmentCommand() { @@ -170,7 +168,6 @@ export default class AttachmentActionsWidget extends BasicWidget { return; } - const { note: newNote } = await server.post>(`attachments/${this.attachmentId}/convert-to-note`); toastService.showMessage(t("attachments_actions.convert_success", { title: this.attachment.title })); await ws.waitForMaxKnownEntityChangeId(); diff --git a/src/public/app/widgets/containers/ribbon_container.ts b/src/public/app/widgets/containers/ribbon_container.ts index b3ed7fd35..e357919db 100644 --- a/src/public/app/widgets/containers/ribbon_container.ts +++ b/src/public/app/widgets/containers/ribbon_container.ts @@ -139,7 +139,8 @@ export default class RibbonContainer extends NoteContextAwareWidget { return super.isEnabled() && this.noteContext?.viewScope?.viewMode === "default"; } - ribbon(widget: NoteContextAwareWidget) { // TODO: Base class + ribbon(widget: NoteContextAwareWidget) { + // TODO: Base class super.child(widget); this.ribbonWidgets.push(widget); @@ -236,7 +237,12 @@ export default class RibbonContainer extends NoteContextAwareWidget { const $ribbonTitle = $('
') .attr("data-ribbon-component-id", ribbonWidget.componentId) .attr("data-ribbon-component-name", (ribbonWidget as any).name as string) // TODO: base class for ribbon widgets - .append($('').addClass(ret.icon).attr("title", ret.title).attr("data-toggle-command", (ribbonWidget as any).toggleCommand)) // TODO: base class + .append( + $('') + .addClass(ret.icon) + .attr("title", ret.title) + .attr("data-toggle-command", (ribbonWidget as any).toggleCommand) + ) // TODO: base class .append(" ") .append($('').text(ret.title)); diff --git a/src/public/app/widgets/dialogs/export.ts b/src/public/app/widgets/dialogs/export.ts index 88fb9345a..f7bafd95d 100644 --- a/src/public/app/widgets/dialogs/export.ts +++ b/src/public/app/widgets/dialogs/export.ts @@ -250,7 +250,7 @@ ws.subscribeToMessages(async (message) => { message: message, icon: "arrow-square-up-right" }; - }; + } if (message.taskType !== "export") { return; diff --git a/src/public/app/widgets/dialogs/revisions.ts b/src/public/app/widgets/dialogs/revisions.ts index b20a5c2f6..f2787e360 100644 --- a/src/public/app/widgets/dialogs/revisions.ts +++ b/src/public/app/widgets/dialogs/revisions.ts @@ -320,7 +320,8 @@ export default class RevisionsDialog extends BasicWidget { // as a URL to be used in a note. Instead, if they copy and paste it into a note, it will be uploaded as a new note .attr("src", `data:${fullRevision.mime};base64,${fullRevision.content}`) .css("max-width", "100%") - .css("max-height", "100%").html() + .css("max-height", "100%") + .html() ); } } else if (revisionItem.type === "file") { diff --git a/src/public/app/widgets/floating_buttons/geo_map_button.ts b/src/public/app/widgets/floating_buttons/geo_map_button.ts index 312bdf21a..9e06e2ef1 100644 --- a/src/public/app/widgets/floating_buttons/geo_map_button.ts +++ b/src/public/app/widgets/floating_buttons/geo_map_button.ts @@ -1,5 +1,5 @@ import { t } from "../../services/i18n.js"; -import NoteContextAwareWidget from "../note_context_aware_widget.js" +import NoteContextAwareWidget from "../note_context_aware_widget.js"; const TPL = `\
diff --git a/src/public/app/widgets/floating_buttons/help_button.ts b/src/public/app/widgets/floating_buttons/help_button.ts index a6e2cb94e..6794ddf38 100644 --- a/src/public/app/widgets/floating_buttons/help_button.ts +++ b/src/public/app/widgets/floating_buttons/help_button.ts @@ -51,7 +51,7 @@ export default class ContextualHelpButton extends NoteContextAwareWidget { if (this.note && this.note.type !== "book" && byNoteType[this.note.type]) { this.helpNoteIdToOpen = byNoteType[this.note.type]; } else if (this.note && this.note.type === "book") { - this.helpNoteIdToOpen = byBookType[this.note.getAttributeValue("label", "viewType") as ViewTypeOptions ?? ""] + this.helpNoteIdToOpen = byBookType[(this.note.getAttributeValue("label", "viewType") as ViewTypeOptions) ?? ""]; } return !!this.helpNoteIdToOpen; @@ -64,7 +64,7 @@ export default class ContextualHelpButton extends NoteContextAwareWidget { const targetNote = `_help_${this.helpNoteIdToOpen}`; const helpSubcontext = subContexts.find((s) => s.viewScope?.viewMode === "contextual-help"); const viewScope: ViewScope = { - viewMode: "contextual-help", + viewMode: "contextual-help" }; if (!helpSubcontext) { // The help is not already open, open a new split with it. @@ -74,7 +74,7 @@ export default class ContextualHelpButton extends NoteContextAwareWidget { notePath: targetNote, hoistedNoteId: "_help", viewScope - }) + }); } else { // There is already a help window open, make sure it opens on the right note. helpSubcontext.setNote(targetNote, { viewScope }); diff --git a/src/public/app/widgets/floating_buttons/zpetne_odkazy.ts b/src/public/app/widgets/floating_buttons/zpetne_odkazy.ts index 8f19b37d3..2d95b38e8 100644 --- a/src/public/app/widgets/floating_buttons/zpetne_odkazy.ts +++ b/src/public/app/widgets/floating_buttons/zpetne_odkazy.ts @@ -157,7 +157,7 @@ export default class BacklinksWidget extends NoteContextAwareWidget { if (backlink.relationName) { $item.append($("

").text(`${t("zpetne_odkazy.relation")}: ${backlink.relationName}`)); } else { - $item.append(...backlink.excerpts ?? []); + $item.append(...(backlink.excerpts ?? [])); } this.$items.append($item); diff --git a/src/public/app/widgets/geo_map.ts b/src/public/app/widgets/geo_map.ts index d4b7a1792..fabefcdc9 100644 --- a/src/public/app/widgets/geo_map.ts +++ b/src/public/app/widgets/geo_map.ts @@ -19,10 +19,10 @@ const TPL = `\

-
` +
`; export type Leaflet = typeof import("leaflet"); -export type InitCallback = ((L: Leaflet) => void); +export type InitCallback = (L: Leaflet) => void; export default class GeoMapWidget extends NoteContextAwareWidget { @@ -40,24 +40,23 @@ export default class GeoMapWidget extends NoteContextAwareWidget { this.$container = this.$widget.find(".geo-map-container"); - library_loader.requireLibrary(library_loader.LEAFLET) - .then(async () => { - const L = (await import("leaflet")).default; + library_loader.requireLibrary(library_loader.LEAFLET).then(async () => { + const L = (await import("leaflet")).default; - const map = L.map(this.$container[0], { - worldCopyJump: true - }); - - this.map = map; - if (this.initCallback) { - this.initCallback(L); - } - - L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { - attribution: '© OpenStreetMap contributors', - detectRetina: true - }).addTo(map); + const map = L.map(this.$container[0], { + worldCopyJump: true }); + + this.map = map; + if (this.initCallback) { + this.initCallback(L); + } + + L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", { + attribution: '© OpenStreetMap contributors', + detectRetina: true + }).addTo(map); + }); } } diff --git a/src/public/app/widgets/mermaid.ts b/src/public/app/widgets/mermaid.ts index 1f4d72bf7..9bdcff9cc 100644 --- a/src/public/app/widgets/mermaid.ts +++ b/src/public/app/widgets/mermaid.ts @@ -66,7 +66,7 @@ export default class MermaidWidget extends NoteContextAwareWidget { mermaid.mermaidAPI.initialize({ startOnLoad: false, - ...getMermaidConfig() as any + ...(getMermaidConfig() as any) }); this.$display.empty(); diff --git a/src/public/app/widgets/note_detail.ts b/src/public/app/widgets/note_detail.ts index a16de3ece..108e73b06 100644 --- a/src/public/app/widgets/note_detail.ts +++ b/src/public/app/widgets/note_detail.ts @@ -81,7 +81,16 @@ const typeWidgetClasses = { * A `NoteType` altered by the note detail widget, taking into consideration whether the note is editable or not and adding special note types such as an empty one, * for protected session or attachment information. */ -type ExtendedNoteType = Exclude | "empty" | "readOnlyCode" | "readOnlyText" | "editableText" | "editableCode" | "attachmentDetail" | "attachmentList" | "protectedSession"; +type ExtendedNoteType = + | Exclude + | "empty" + | "readOnlyCode" + | "readOnlyText" + | "editableText" + | "editableCode" + | "attachmentDetail" + | "attachmentList" + | "protectedSession"; export default class NoteDetailWidget extends NoteContextAwareWidget { @@ -329,7 +338,9 @@ export default class NoteDetailWidget extends NoteContextAwareWidget { const label = attrs.find( (attr) => - attr.type === "label" && ["readOnly", "autoReadOnlyDisabled", "cssClass", "displayRelations", "hideRelations"].includes(attr.name ?? "") && attributeService.isAffecting(attr, this.note) + attr.type === "label" && + ["readOnly", "autoReadOnlyDisabled", "cssClass", "displayRelations", "hideRelations"].includes(attr.name ?? "") && + attributeService.isAffecting(attr, this.note) ); const relation = attrs.find((attr) => attr.type === "relation" && ["template", "inherit", "renderNote"].includes(attr.name ?? "") && attributeService.isAffecting(attr, this.note)); diff --git a/src/public/app/widgets/note_map.ts b/src/public/app/widgets/note_map.ts index c6cb53ea7..00855958e 100644 --- a/src/public/app/widgets/note_map.ts +++ b/src/public/app/widgets/note_map.ts @@ -139,7 +139,7 @@ interface NotesAndRelationsData { source: string; target: string; name: string; - }[] + }[]; } // Replace @@ -152,7 +152,7 @@ interface ResponseLink { interface PostNotesMapResponse { notes: string[]; - links: ResponseLink[], + links: ResponseLink[]; noteIdToDescendantCountMap: Record; } @@ -160,7 +160,7 @@ interface GroupedLink { id: string; sourceNoteId: string; targetNoteId: string; - names: string[] + names: string[]; } interface CssData { @@ -313,9 +313,7 @@ export default class NoteMapWidget extends NoteContextAwareWidget { ctx.fillStyle = color; ctx.beginPath(); if (node.x && node.y) { - ctx.arc(node.x, node.y, - this.noteIdToSizeMap[node.id], 0, - 2 * Math.PI, false); + ctx.arc(node.x, node.y, this.noteIdToSizeMap[node.id], 0, 2 * Math.PI, false); } ctx.fill(); }) @@ -467,13 +465,13 @@ export default class NoteMapWidget extends NoteContextAwareWidget { } if (source.x && source.y && target.x && target.y) { - const x = ((source.x) + (target.x)) / 2; - const y = ((source.y) + (target.y)) / 2; + const x = (source.x + target.x) / 2; + const y = (source.y + target.y) / 2; ctx.save(); ctx.translate(x, y); - const deltaY = (source.y) - (target.y); - const deltaX = (source.x) - (target.x); + const deltaY = source.y - target.y; + const deltaX = source.x - target.x; let angle = Math.atan2(deltaY, deltaX); let moveY = 2; diff --git a/src/public/app/widgets/note_title.ts b/src/public/app/widgets/note_title.ts index 9d7656f31..841175efd 100644 --- a/src/public/app/widgets/note_title.ts +++ b/src/public/app/widgets/note_title.ts @@ -91,7 +91,7 @@ export default class NoteTitleWidget extends NoteContextAwareWidget { async refreshWithNote(note: FNote) { const isReadOnly = (note.isProtected && !protectedSessionHolder.isProtectedSessionAvailable()) || utils.isLaunchBarConfig(note.noteId) || this.noteContext?.viewScope?.viewMode !== "default"; - this.$noteTitle.val(isReadOnly ? await this.noteContext?.getNavigationTitle() || "" : note.title); + this.$noteTitle.val(isReadOnly ? (await this.noteContext?.getNavigationTitle()) || "" : note.title); this.$noteTitle.prop("readonly", isReadOnly); this.setProtectedStatus(note); diff --git a/src/public/app/widgets/note_tree.ts b/src/public/app/widgets/note_tree.ts index 93016edf8..5d2635c76 100644 --- a/src/public/app/widgets/note_tree.ts +++ b/src/public/app/widgets/note_tree.ts @@ -159,11 +159,11 @@ interface CreateLauncherResponse { message: string; note: { noteId: string; - } + }; } interface ExpandedSubtreeResponse { - branchIds: string[] + branchIds: string[]; } interface Node extends Fancytree.NodeData { @@ -180,7 +180,6 @@ interface RefreshContext { } export default class NoteTreeWidget extends NoteContextAwareWidget { - private $tree!: JQuery; private $treeActions!: JQuery; private $treeSettingsButton!: JQuery; @@ -571,10 +570,13 @@ export default class NoteTreeWidget extends NoteContextAwareWidget { clones: { highlightActiveClones: true }, - enhanceTitle: async function (event: Event, data: { - node: Fancytree.FancytreeNode; - noteId: string; - }) { + enhanceTitle: async function ( + event: Event, + data: { + node: Fancytree.FancytreeNode; + noteId: string; + } + ) { const node = data.node; if (!node.data.noteId) { diff --git a/src/public/app/widgets/protected_note_switch.ts b/src/public/app/widgets/protected_note_switch.ts index e4926ae84..a65f4db31 100644 --- a/src/public/app/widgets/protected_note_switch.ts +++ b/src/public/app/widgets/protected_note_switch.ts @@ -9,7 +9,7 @@ export default class ProtectedNoteSwitchWidget extends SwitchWidget { super.doRender(); this.switchOnName = t("protect_note.toggle-on"); - this.switchOnTooltip = t("protect_note.toggle-on-hint"); + this.switchOnTooltip = t("protect_note.toggle-on-hint"); this.switchOffName = t("protect_note.toggle-off"); this.switchOffTooltip = t("protect_note.toggle-off-hint"); diff --git a/src/public/app/widgets/ribbon_widgets/book_properties.ts b/src/public/app/widgets/ribbon_widgets/book_properties.ts index 1a0671e3a..1acb565d1 100644 --- a/src/public/app/widgets/ribbon_widgets/book_properties.ts +++ b/src/public/app/widgets/ribbon_widgets/book_properties.ts @@ -126,7 +126,7 @@ export default class BookPropertiesWidget extends NoteContextAwareWidget { return; } - if (![ "list", "grid", "calendar"].includes(type)) { + if (!["list", "grid", "calendar"].includes(type)) { throw new Error(t("book_properties.invalid_view_type", { type })); } diff --git a/src/public/app/widgets/ribbon_widgets/note_map.ts b/src/public/app/widgets/ribbon_widgets/note_map.ts index 911636b2d..94a467879 100644 --- a/src/public/app/widgets/ribbon_widgets/note_map.ts +++ b/src/public/app/widgets/ribbon_widgets/note_map.ts @@ -122,7 +122,7 @@ export default class NoteMapRibbonWidget extends NoteContextAwareWidget { const { top } = this.$widget[0].getBoundingClientRect(); const height = ($(window).height() ?? 0) - top; - const width = (this.$widget.width() ?? 0); + const width = this.$widget.width() ?? 0; this.$widget.find(".note-map-container") .height(height) diff --git a/src/public/app/widgets/ribbon_widgets/note_paths.ts b/src/public/app/widgets/ribbon_widgets/note_paths.ts index 1bb95cf73..986758992 100644 --- a/src/public/app/widgets/ribbon_widgets/note_paths.ts +++ b/src/public/app/widgets/ribbon_widgets/note_paths.ts @@ -135,8 +135,7 @@ export default class NotePathsWidget extends NoteContextAwareWidget { } entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) { - if (loadResults.getBranchRows().find((branch) => branch.noteId === this.noteId) || - (this.noteId != null && loadResults.isNoteReloaded(this.noteId))) { + if (loadResults.getBranchRows().find((branch) => branch.noteId === this.noteId) || (this.noteId != null && loadResults.isNoteReloaded(this.noteId))) { this.refresh(); } } diff --git a/src/public/app/widgets/ribbon_widgets/note_properties.ts b/src/public/app/widgets/ribbon_widgets/note_properties.ts index bfccfe51f..4be3654dd 100644 --- a/src/public/app/widgets/ribbon_widgets/note_properties.ts +++ b/src/public/app/widgets/ribbon_widgets/note_properties.ts @@ -46,6 +46,9 @@ export default class NotePropertiesWidget extends NoteContextAwareWidget { async refreshWithNote(note: FNote) { const pageUrl = note.getLabelValue("pageUrl"); - this.$pageUrl.attr("href", pageUrl).attr("title", pageUrl).text(pageUrl ?? ""); + this.$pageUrl + .attr("href", pageUrl) + .attr("title", pageUrl) + .text(pageUrl ?? ""); } } diff --git a/src/public/app/widgets/ribbon_widgets/similar_notes.ts b/src/public/app/widgets/ribbon_widgets/similar_notes.ts index f169b559d..c35469471 100644 --- a/src/public/app/widgets/ribbon_widgets/similar_notes.ts +++ b/src/public/app/widgets/ribbon_widgets/similar_notes.ts @@ -40,7 +40,6 @@ interface SimilarNote { noteId: string; } - export default class SimilarNotesWidget extends NoteContextAwareWidget { private $similarNotesWrapper!: JQuery; diff --git a/src/public/app/widgets/switch.ts b/src/public/app/widgets/switch.ts index aff5587c9..63fd23fce 100644 --- a/src/public/app/widgets/switch.ts +++ b/src/public/app/widgets/switch.ts @@ -185,7 +185,7 @@ export default class SwitchWidget extends NoteContextAwareWidget { /** Gets or sets whether the switch is enabled. */ get canToggle() { - return (!this.$switchButton.hasClass("disabled")); + return !this.$switchButton.hasClass("disabled"); } set canToggle(isEnabled) { diff --git a/src/public/app/widgets/sync_status.ts b/src/public/app/widgets/sync_status.ts index f5dc186b6..dc413c410 100644 --- a/src/public/app/widgets/sync_status.ts +++ b/src/public/app/widgets/sync_status.ts @@ -78,8 +78,8 @@ export default class SyncStatusWidget extends BasicWidget { lastSyncedPush!: number; settings: { // TriliumNextTODO: narrow types and use TitlePlacement Type - titlePlacement: string; - } + titlePlacement: string; + }; constructor() { super(); @@ -106,7 +106,6 @@ export default class SyncStatusWidget extends BasicWidget { return; } - Tooltip.getOrCreateInstance(this.$widget.find(`.sync-status-${className}`)[0], { html: true, placement: this.settings.titlePlacement, diff --git a/src/public/app/widgets/tab_row.ts b/src/public/app/widgets/tab_row.ts index 9f122784b..f0af54493 100644 --- a/src/public/app/widgets/tab_row.ts +++ b/src/public/app/widgets/tab_row.ts @@ -15,7 +15,7 @@ const TAB_CONTAINER_MIN_WIDTH = 24; const TAB_CONTAINER_MAX_WIDTH = 240; const TAB_CONTAINER_LEFT_PADDING = 5; const NEW_TAB_WIDTH = 32; -const MIN_FILLER_WIDTH = (isDesktop ? 50 : 15); +const MIN_FILLER_WIDTH = isDesktop ? 50 : 15; const MARGIN_WIDTH = 5; const TAB_SIZE_SMALL = 84; diff --git a/src/public/app/widgets/template_switch.ts b/src/public/app/widgets/template_switch.ts index 572426020..50c11f657 100644 --- a/src/public/app/widgets/template_switch.ts +++ b/src/public/app/widgets/template_switch.ts @@ -17,10 +17,10 @@ export default class TemplateSwitchWidget extends SwitchWidget { super.doRender(); this.switchOnName = t("template_switch.template"); - this.switchOnTooltip = t("template_switch.toggle-on-hint"); + this.switchOnTooltip = t("template_switch.toggle-on-hint"); this.switchOffName = t("template_switch.template"); - this.switchOffTooltip = t("template_switch.toggle-off-hint"); + this.switchOffTooltip = t("template_switch.toggle-off-hint"); this.$helpButton.attr("data-help-page", "template.html").show(); } diff --git a/src/public/app/widgets/toc.ts b/src/public/app/widgets/toc.ts index 6a843a11f..db15ba6a8 100644 --- a/src/public/app/widgets/toc.ts +++ b/src/public/app/widgets/toc.ts @@ -55,8 +55,8 @@ const TPL = `
`; interface Toc { - $toc: JQuery, - headingCount: number + $toc: JQuery; + headingCount: number; } export default class TocWidget extends RightPanelWidget { @@ -89,8 +89,8 @@ export default class TocWidget extends RightPanelWidget { return false; } - const isHelpNote = (this.note.type === "doc" && this.note.noteId.startsWith("_help")); - const isTextNote = (this.note.type === "text"); + const isHelpNote = this.note.type === "doc" && this.note.noteId.startsWith("_help"); + const isTextNote = this.note.type === "text"; const isNoteSupported = isTextNote || isHelpNote; return isNoteSupported @@ -156,7 +156,7 @@ export default class TocWidget extends RightPanelWidget { const tocLabelValue = this.tocLabelValue; - const visible = (tocLabelValue === "" || tocLabelValue === "show") || headingCount >= (options.getInt("minTocHeadings") ?? 0); + const visible = tocLabelValue === "" || tocLabelValue === "show" || headingCount >= (options.getInt("minTocHeadings") ?? 0); this.toggleInt(visible); if (this.noteContext?.viewScope) { this.noteContext.viewScope.tocPreviousVisible = visible; diff --git a/src/public/app/widgets/type_widgets/attachment_detail.ts b/src/public/app/widgets/type_widgets/attachment_detail.ts index 5fc8e4201..a89954d23 100644 --- a/src/public/app/widgets/type_widgets/attachment_detail.ts +++ b/src/public/app/widgets/type_widgets/attachment_detail.ts @@ -63,7 +63,7 @@ export default class AttachmentDetailTypeWidget extends TypeWidget { this.$linksWrapper.empty().append( t("attachment_detail.owning_note"), - (await linkService.createLink(this.noteId)), + await linkService.createLink(this.noteId), t("attachment_detail.you_can_also_open"), await linkService.createLink(this.noteId, { title: t("attachment_detail.list_of_all_attachments"), @@ -74,7 +74,7 @@ export default class AttachmentDetailTypeWidget extends TypeWidget { $helpButton ); - const attachment = (this.attachmentId) ? await froca.getAttachment(this.attachmentId, true) : null; + const attachment = this.attachmentId ? await froca.getAttachment(this.attachmentId, true) : null; if (!attachment) { this.$wrapper.html("" + t("attachment_detail.attachment_deleted") + ""); diff --git a/src/public/app/widgets/type_widgets/attachment_list.ts b/src/public/app/widgets/type_widgets/attachment_list.ts index 3018f784b..f39f7782c 100644 --- a/src/public/app/widgets/type_widgets/attachment_list.ts +++ b/src/public/app/widgets/type_widgets/attachment_list.ts @@ -66,7 +66,7 @@ export default class AttachmentListTypeWidget extends TypeWidget { .text(t("attachment_list.upload_attachments")) .on("click", () => { if (this.noteId) { - this.triggerCommand("showUploadAttachmentsDialog", { noteId: this.noteId }) + this.triggerCommand("showUploadAttachmentsDialog", { noteId: this.noteId }); } }), $helpButton diff --git a/src/public/app/widgets/type_widgets/book.ts b/src/public/app/widgets/type_widgets/book.ts index 38be2a56c..e708483f4 100644 --- a/src/public/app/widgets/type_widgets/book.ts +++ b/src/public/app/widgets/type_widgets/book.ts @@ -36,9 +36,7 @@ export default class BookTypeWidget extends TypeWidget { } async doRefresh(note: FNote) { - this.$helpNoChildren.toggle( - !this.note?.hasChildren() - && this.note?.getAttributeValue("label", "viewType") !== "calendar"); + this.$helpNoChildren.toggle(!this.note?.hasChildren() && this.note?.getAttributeValue("label", "viewType") !== "calendar"); } entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) { diff --git a/src/public/app/widgets/type_widgets/canvas.ts b/src/public/app/widgets/type_widgets/canvas.ts index 4ba76fa9d..f5866e4e8 100644 --- a/src/public/app/widgets/type_widgets/canvas.ts +++ b/src/public/app/widgets/type_widgets/canvas.ts @@ -59,9 +59,9 @@ const TPL = ` `; interface CanvasContent { - elements: ExcalidrawElement[], - files: BinaryFileData[], - appState: Partial + elements: ExcalidrawElement[]; + files: BinaryFileData[]; + appState: Partial; } interface AttachmentMetadata { @@ -198,7 +198,7 @@ export default class ExcalidrawTypeWidget extends TypeWidget { } (window.process.env as any).PREACT = false; - const excalidraw = (await import("@excalidraw/excalidraw")); + const excalidraw = await import("@excalidraw/excalidraw"); this.excalidrawLib = excalidraw; const { createRoot } = await import("react-dom/client"); @@ -476,7 +476,7 @@ export default class ExcalidrawTypeWidget extends TypeWidget { createExcalidrawReactApp(react: typeof React, excalidrawComponent: React.MemoExoticComponent<(props: ExcalidrawProps) => JSX.Element>) { const excalidrawWrapperRef = react.useRef(null); this.excalidrawWrapperRef = excalidrawWrapperRef; - const [dimensions, setDimensions] = react.useState<{ width?: number, height?: number}>({ + const [dimensions, setDimensions] = react.useState<{ width?: number; height?: number }>({ width: undefined, height: undefined }); diff --git a/src/public/app/widgets/type_widgets/ckeditor/toolbars.ts b/src/public/app/widgets/type_widgets/ckeditor/toolbars.ts index 425fa819c..3f7ef3e49 100644 --- a/src/public/app/widgets/type_widgets/ckeditor/toolbars.ts +++ b/src/public/app/widgets/type_widgets/ckeditor/toolbars.ts @@ -7,91 +7,78 @@ export function buildConfig() { image: { styles: { options: [ - 'inline', - 'alignBlockLeft', - 'alignCenter', - 'alignBlockRight', - 'alignLeft', - 'alignRight', - 'full', // full and side are for BC since the old images have been created with these styles - 'side' + "inline", + "alignBlockLeft", + "alignCenter", + "alignBlockRight", + "alignLeft", + "alignRight", + "full", // full and side are for BC since the old images have been created with these styles + "side" ] }, resizeOptions: [ { - name: 'imageResize:original', + name: "imageResize:original", value: null, - icon: 'original' + icon: "original" }, { - name: 'imageResize:25', - value: '25', - icon: 'small' + name: "imageResize:25", + value: "25", + icon: "small" }, { - name: 'imageResize:50', - value: '50', - icon: 'medium' + name: "imageResize:50", + value: "50", + icon: "medium" }, { - name: 'imageResize:75', - value: '75', - icon: 'medium' + name: "imageResize:75", + value: "75", + icon: "medium" } ], toolbar: [ // Image styles, see https://ckeditor.com/docs/ckeditor5/latest/features/images/images-styles.html#demo. - 'imageStyle:inline', - 'imageStyle:alignCenter', + "imageStyle:inline", + "imageStyle:alignCenter", { name: "imageStyle:wrapText", title: "Wrap text", - items: [ - 'imageStyle:alignLeft', - 'imageStyle:alignRight', - ], - defaultItem: 'imageStyle:alignRight' + items: ["imageStyle:alignLeft", "imageStyle:alignRight"], + defaultItem: "imageStyle:alignRight" }, { name: "imageStyle:block", title: "Block align", - items: [ - 'imageStyle:alignBlockLeft', - 'imageStyle:alignBlockRight' - ], - defaultItem: "imageStyle:alignBlockLeft", + items: ["imageStyle:alignBlockLeft", "imageStyle:alignBlockRight"], + defaultItem: "imageStyle:alignBlockLeft" }, - '|', - 'imageResize:25', - 'imageResize:50', - 'imageResize:original', - '|', - 'toggleImageCaption' + "|", + "imageResize:25", + "imageResize:50", + "imageResize:original", + "|", + "toggleImageCaption" ], upload: { - types: [ 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff', 'svg', 'svg+xml', 'avif' ] + types: ["jpeg", "png", "gif", "bmp", "webp", "tiff", "svg", "svg+xml", "avif"] } }, heading: { options: [ - { model: 'paragraph' as const, title: 'Paragraph', class: 'ck-heading_paragraph' }, + { model: "paragraph" as const, title: "Paragraph", class: "ck-heading_paragraph" }, // // heading1 is not used since that should be a note's title - { model: 'heading2' as const, view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' }, - { model: 'heading3' as const, view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' }, - { model: 'heading4' as const, view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' }, - { model: 'heading5' as const, view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' }, - { model: 'heading6' as const, view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' } + { model: "heading2" as const, view: "h2", title: "Heading 2", class: "ck-heading_heading2" }, + { model: "heading3" as const, view: "h3", title: "Heading 3", class: "ck-heading_heading3" }, + { model: "heading4" as const, view: "h4", title: "Heading 4", class: "ck-heading_heading4" }, + { model: "heading5" as const, view: "h5", title: "Heading 5", class: "ck-heading_heading5" }, + { model: "heading6" as const, view: "h6", title: "Heading 6", class: "ck-heading_heading6" } ] }, table: { - contentToolbar: [ - 'tableColumn', - 'tableRow', - 'mergeTableCells', - 'tableProperties', - 'tableCellProperties', - 'toggleTableCaption' - ] + contentToolbar: ["tableColumn", "tableRow", "mergeTableCells", "tableProperties", "tableCellProperties", "toggleTableCaption"] }, list: { properties: { @@ -101,17 +88,17 @@ export function buildConfig() { } }, link: { - defaultProtocol: 'https://', + defaultProtocol: "https://", allowedProtocols: ALLOWED_PROTOCOLS }, // This value must be kept in sync with the language defined in webpack.config.js. - language: 'en' - } + language: "en" + }; } export function buildToolbarConfig(isClassicToolbar: boolean) { if (isClassicToolbar) { - const multilineToolbar = utils.isDesktop() && options.get("textNoteEditorMultilineToolbar") === "true" + const multilineToolbar = utils.isDesktop() && options.get("textNoteEditorMultilineToolbar") === "true"; return buildClassicToolbar(multilineToolbar); } else { return buildFloatingToolbar(); @@ -123,101 +110,92 @@ function buildClassicToolbar(multilineToolbar: boolean) { return { toolbar: { items: [ - 'heading', 'fontSize', - '|', - 'bold', 'italic', + "heading", + "fontSize", + "|", + "bold", + "italic", { label: "Text formatting", icon: "text", - items: [ - 'underline', - 'strikethrough', - 'superscript', - 'subscript', - 'code', - ], + items: ["underline", "strikethrough", "superscript", "subscript", "code"] }, - '|', - 'fontColor', 'fontBackgroundColor', 'removeFormat', - '|', - 'bulletedList', 'numberedList', 'todoList', - '|', - 'blockQuote', 'insertTable', 'codeBlock', 'footnote', + "|", + "fontColor", + "fontBackgroundColor", + "removeFormat", + "|", + "bulletedList", + "numberedList", + "todoList", + "|", + "blockQuote", + "insertTable", + "codeBlock", + "footnote", { label: "Insert", icon: "plus", - items: [ - 'imageUpload', - '|', - 'link', - 'internallink', - 'includeNote', - '|', - 'specialCharacters', - 'math', - 'mermaid', - 'horizontalLine', - 'pageBreak' - ] + items: ["imageUpload", "|", "link", "internallink", "includeNote", "|", "specialCharacters", "math", "mermaid", "horizontalLine", "pageBreak"] }, - '|', - 'outdent', 'indent', - '|', - 'markdownImport', 'cuttonote', 'findAndReplace' + "|", + "outdent", + "indent", + "|", + "markdownImport", + "cuttonote", + "findAndReplace" ], shouldNotGroupWhenFull: multilineToolbar } - } + }; } function buildFloatingToolbar() { return { toolbar: { - items: [ - 'fontSize', - 'bold', - 'italic', - 'underline', - 'strikethrough', - 'superscript', - 'subscript', - 'fontColor', - 'fontBackgroundColor', - 'code', - 'link', - 'removeFormat', - 'internallink', - 'cuttonote' - ] - }, + items: [ + "fontSize", + "bold", + "italic", + "underline", + "strikethrough", + "superscript", + "subscript", + "fontColor", + "fontBackgroundColor", + "code", + "link", + "removeFormat", + "internallink", + "cuttonote" + ] + }, - blockToolbar: [ - 'heading', - '|', - 'bulletedList', 'numberedList', 'todoList', - '|', - 'blockQuote', 'codeBlock', 'insertTable', - 'footnote', - { - label: "Insert", - icon: "plus", - items: [ - 'internallink', - 'includeNote', - '|', - 'math', - 'mermaid', - 'horizontalLine', - 'pageBreak' - ] - }, - '|', - 'outdent', 'indent', - '|', - 'imageUpload', - 'markdownImport', - 'specialCharacters', - 'findAndReplace' - ] + blockToolbar: [ + "heading", + "|", + "bulletedList", + "numberedList", + "todoList", + "|", + "blockQuote", + "codeBlock", + "insertTable", + "footnote", + { + label: "Insert", + icon: "plus", + items: ["internallink", "includeNote", "|", "math", "mermaid", "horizontalLine", "pageBreak"] + }, + "|", + "outdent", + "indent", + "|", + "imageUpload", + "markdownImport", + "specialCharacters", + "findAndReplace" + ] }; } diff --git a/src/public/app/widgets/type_widgets/content_widget.ts b/src/public/app/widgets/type_widgets/content_widget.ts index 0e9f3ca22..02c2e251c 100644 --- a/src/public/app/widgets/type_widgets/content_widget.ts +++ b/src/public/app/widgets/type_widgets/content_widget.ts @@ -15,7 +15,7 @@ import CodeMimeTypesOptions from "./options/code_notes/code_mime_types.js"; import ImageOptions from "./options/images/images.js"; import SpellcheckOptions from "./options/spellcheck.js"; import PasswordOptions from "./options/password/password.js"; -import ProtectedSessionTimeoutOptions from "./options/password/protected_session_timeout.js" +import ProtectedSessionTimeoutOptions from "./options/password/protected_session_timeout.js"; import EtapiOptions from "./options/etapi.js"; import BackupOptions from "./options/backup.js"; import SyncOptions from "./options/sync.js"; diff --git a/src/public/app/widgets/type_widgets/geo_map.ts b/src/public/app/widgets/type_widgets/geo_map.ts index 32f689e6f..dddccbac8 100644 --- a/src/public/app/widgets/type_widgets/geo_map.ts +++ b/src/public/app/widgets/type_widgets/geo_map.ts @@ -1,7 +1,7 @@ import { GPX, Marker, type LatLng, type LeafletMouseEvent } from "leaflet"; import type FNote from "../../entities/fnote.js"; import GeoMapWidget, { type InitCallback, type Leaflet } from "../geo_map.js"; -import TypeWidget from "./type_widget.js" +import TypeWidget from "./type_widget.js"; import server from "../../services/server.js"; import toastService from "../../services/toast.js"; import dialogService from "../../services/dialog.js"; @@ -75,21 +75,21 @@ const TPL = `\ const LOCATION_ATTRIBUTE = "geolocation"; const CHILD_NOTE_ICON = "bx bx-pin"; -const DEFAULT_COORDINATES: [ number, number ] = [ 3.878638227135724, 446.6630455551659 ]; +const DEFAULT_COORDINATES: [number, number] = [3.878638227135724, 446.6630455551659]; const DEFAULT_ZOOM = 2; interface MapData { view?: { - center?: LatLng | [ number, number ]; + center?: LatLng | [number, number]; zoom?: number; - } + }; } // TODO: Deduplicate interface CreateChildResponse { note: { noteId: string; - } + }; } enum State { @@ -220,7 +220,7 @@ export default class GeoMapTypeWidget extends TypeWidget { return; } - const [ lat, lng ] = latLng.split(",", 2).map((el) => parseFloat(el)); + const [lat, lng] = latLng.split(",", 2).map((el) => parseFloat(el)); const L = this.L; const icon = this.#buildIcon(note.getIcon(), note.getColorClass(), note.title); @@ -228,10 +228,10 @@ export default class GeoMapTypeWidget extends TypeWidget { icon, draggable: true, autoPan: true, - autoPanSpeed: 5, + autoPanSpeed: 5 }) .addTo(map) - .on("moveend", e => { + .on("moveend", (e) => { this.moveMarker(note.noteId, (e.target as Marker).getLatLng()); }); marker.on("mousedown", ({ originalEvent }) => { @@ -264,9 +264,9 @@ export default class GeoMapTypeWidget extends TypeWidget { ${title}`, - iconSize: [ 25, 41 ], - iconAnchor: [ 12, 41 ] - }) + iconSize: [25, 41], + iconAnchor: [12, 41] + }); } #changeState(newState: State) { @@ -296,7 +296,7 @@ export default class GeoMapTypeWidget extends TypeWidget { } async moveMarker(noteId: string, latLng: LatLng | null) { - const value = (latLng ? [latLng.lat, latLng.lng].join(",") : ""); + const value = latLng ? [latLng.lat, latLng.lng].join(",") : ""; await attributes.setLabel(noteId, LOCATION_ATTRIBUTE, value); } @@ -361,7 +361,7 @@ export default class GeoMapTypeWidget extends TypeWidget { // If any of note has its location attribute changed. // TODO: Should probably filter by parent here as well. const attributeRows = loadResults.getAttributeRows(); - if (attributeRows.find((at) => [ LOCATION_ATTRIBUTE, "color" ].includes(at.name ?? ""))) { + if (attributeRows.find((at) => [LOCATION_ATTRIBUTE, "color"].includes(at.name ?? ""))) { this.#reloadMarkers(); } } diff --git a/src/public/app/widgets/type_widgets/mind_map.ts b/src/public/app/widgets/type_widgets/mind_map.ts index afa34df06..02fa6a1ff 100644 --- a/src/public/app/widgets/type_widgets/mind_map.ts +++ b/src/public/app/widgets/type_widgets/mind_map.ts @@ -259,7 +259,7 @@ export default class MindMapWidget extends TypeWidget { return await this.mind.exportSvg().text(); } - async entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded"> ) { + async entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) { if (this.noteId && loadResults.isNoteReloaded(this.noteId)) { this.refresh(); } diff --git a/src/public/app/widgets/type_widgets/options/appearance/code_block.ts b/src/public/app/widgets/type_widgets/options/appearance/code_block.ts index 7e42a59d6..4dcebb20e 100644 --- a/src/public/app/widgets/type_widgets/options/appearance/code_block.ts +++ b/src/public/app/widgets/type_widgets/options/appearance/code_block.ts @@ -60,7 +60,7 @@ interface Theme { val: string; } -type Response = Record +type Response = Record; /** * Contains appearance settings for code blocks within text notes, such as the theme for the syntax highlighter. diff --git a/src/public/app/widgets/type_widgets/options/appearance/theme.ts b/src/public/app/widgets/type_widgets/options/appearance/theme.ts index 52b23355a..a50e74586 100644 --- a/src/public/app/widgets/type_widgets/options/appearance/theme.ts +++ b/src/public/app/widgets/type_widgets/options/appearance/theme.ts @@ -94,10 +94,12 @@ export default class ThemeOptions extends OptionsWidget { this.$themeSelect.empty(); for (const theme of themes) { - this.$themeSelect.append($("