diff --git a/src/map-renderer.ts b/src/map-renderer.ts index dcbaac3..aa0ccf9 100644 --- a/src/map-renderer.ts +++ b/src/map-renderer.ts @@ -404,7 +404,7 @@ export function updateMapPoints(deck: Deck, points: MapPoint[], c } } -export async function createMapRenderer(config: MapRendererOptions): Promise> { +export function createMapRenderer(config: MapRendererOptions): Deck { const { containerEl, points, app, settings, tagSettings, options } = config; containerEl.addClass('map-container'); diff --git a/src/views/map-bases-view.ts b/src/views/map-bases-view.ts index 3d88d88..27818fe 100644 --- a/src/views/map-bases-view.ts +++ b/src/views/map-bases-view.ts @@ -131,6 +131,7 @@ export class MapBasesView extends BasesView { if (!boundsStr || typeof boundsStr !== 'string') return undefined; try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const parsed = JSON.parse(boundsStr); if (Array.isArray(parsed) && parsed.length === 2 && Array.isArray(parsed[0]) && parsed[0].length === 2 && @@ -191,7 +192,7 @@ export class MapBasesView extends BasesView { } } - protected async renderMap(): Promise { + protected renderMap(): void { if (!this.data) { this.containerEl.removeClass('is-loading'); return; @@ -269,7 +270,7 @@ export class MapBasesView extends BasesView { zoomToUse = this.getDefaultZoom(); } - this.deck = await createMapRenderer({ + this.deck = createMapRenderer({ containerEl: this.mapEl, points, app: this.app, diff --git a/src/views/map-timeline-bases-view.ts b/src/views/map-timeline-bases-view.ts index 57785bc..1c9729f 100644 --- a/src/views/map-timeline-bases-view.ts +++ b/src/views/map-timeline-bases-view.ts @@ -321,11 +321,9 @@ export class MapTimelineBasesView extends MapBasesView { let offsetX = 0; let offsetY = 0; - // Add drag handle cursor hint - element.style.cursor = 'move'; + element.addClass('map-draggable'); const onMouseDown = (e: MouseEvent) => { - // Only start drag on container itself, not on inputs/buttons/slider const target = e.target as HTMLElement; if (target.tagName === 'INPUT' || target.tagName === 'SELECT' || target.tagName === 'BUTTON') { return; @@ -333,13 +331,11 @@ export class MapTimelineBasesView extends MapBasesView { isDragging = true; const rect = element.getBoundingClientRect(); - const containerRect = this.mapEl.getBoundingClientRect(); offsetX = e.clientX - rect.left; offsetY = e.clientY - rect.top; - element.style.position = 'absolute'; - element.style.zIndex = '1000'; + element.addClass('dragging'); e.preventDefault(); }; @@ -357,10 +353,9 @@ export class MapTimelineBasesView extends MapBasesView { x = Math.max(0, Math.min(x, containerRect.width - elementRect.width)); y = Math.max(0, Math.min(y, containerRect.height - elementRect.height)); - element.style.left = `${x}px`; - element.style.top = `${y}px`; - element.style.bottom = 'auto'; - element.style.right = 'auto'; + element.setCssProps({'left': `${x}px`}); + element.setCssProps({'top': `${y}px`}); + element.addClass('move'); }; const onMouseUp = () => { diff --git a/styles.css b/styles.css index ac7127c..7a7a2f3 100644 --- a/styles.css +++ b/styles.css @@ -546,4 +546,16 @@ color: var(--text-normal); font-size: 13px; cursor: pointer; +} + +.map-draggable { + cursor: move; + & .dragging { + position: absolute; + z-index: 1000; + } + & .move { + bottom: auto; + right: auto; + } } \ No newline at end of file