From 0dffa0f3335ce98284ac3284564505778a8851ec Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Thu, 24 Jul 2025 21:54:57 +0300 Subject: [PATCH] feat(book_properties): group dark map styles --- .../src/translations/en/translation.json | 3 +- .../ribbon_widgets/book_properties_config.ts | 29 ++++++++++++------- .../view_widgets/geo_view/map_layer.ts | 6 ++-- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index a72173a2a..073ca2803 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -1969,7 +1969,8 @@ "map-style": "Map style:", "max-nesting-depth": "Max nesting depth:", "raster": "Raster", - "vector": "Vector" + "vector_light": "Vector (Light)", + "vector_dark": "Vector (Dark)" }, "table_context_menu": { "delete_row": "Delete row" diff --git a/apps/client/src/widgets/ribbon_widgets/book_properties_config.ts b/apps/client/src/widgets/ribbon_widgets/book_properties_config.ts index 3a3635be5..de5bc6fda 100644 --- a/apps/client/src/widgets/ribbon_widgets/book_properties_config.ts +++ b/apps/client/src/widgets/ribbon_widgets/book_properties_config.ts @@ -3,7 +3,7 @@ import FNote from "../../entities/fnote"; import attributes from "../../services/attributes"; import { ViewTypeOptions } from "../../services/note_list_renderer" import NoteContextAwareWidget from "../note_context_aware_widget"; -import { DEFAULT_MAP_LAYER_NAME, MAP_LAYERS } from "../view_widgets/geo_view/map_layer"; +import { DEFAULT_MAP_LAYER_NAME, MAP_LAYERS, type MapLayer } from "../view_widgets/geo_view/map_layer"; interface BookConfig { properties: BookProperty[]; @@ -123,19 +123,19 @@ export const bookPropertiesConfig: Record = { name: t("book_properties_config.raster"), items: Object.entries(MAP_LAYERS) .filter(([_, layer]) => layer.type === "raster") - .map(([id, layer]) => ({ - value: id, - label: layer.name - })) + .map(buildMapLayer) }, { - name: t("book_properties_config.vector"), + name: t("book_properties_config.vector_light"), items: Object.entries(MAP_LAYERS) - .filter(([_, layer]) => layer.type === "vector") - .map(([id, layer]) => ({ - value: id, - label: layer.name - })) + .filter(([_, layer]) => layer.type === "vector" && !layer.isDarkTheme) + .map(buildMapLayer) + }, + { + name: t("book_properties_config.vector_dark"), + items: Object.entries(MAP_LAYERS) + .filter(([_, layer]) => layer.type === "vector" && layer.isDarkTheme) + .map(buildMapLayer) } ] } @@ -155,3 +155,10 @@ export const bookPropertiesConfig: Record = { properties: [] } }; + +function buildMapLayer([ id, layer ]: [ string, MapLayer ]): ComboBoxItem { + return { + value: id, + label: layer.name + }; +} diff --git a/apps/client/src/widgets/view_widgets/geo_view/map_layer.ts b/apps/client/src/widgets/view_widgets/geo_view/map_layer.ts index c99d7d74b..7b12a1076 100644 --- a/apps/client/src/widgets/view_widgets/geo_view/map_layer.ts +++ b/apps/client/src/widgets/view_widgets/geo_view/map_layer.ts @@ -1,14 +1,14 @@ -interface Layer { +export interface MapLayer { name: string; isDarkTheme?: boolean; } -interface VectorLayer extends Layer { +interface VectorLayer extends MapLayer { type: "vector"; style: string | (() => Promise<{}>) } -interface RasterLayer extends Layer { +interface RasterLayer extends MapLayer { type: "raster"; url: string; attribution: string;