[Map] Remove InfoWindowWithoutPositionDefinition type (it was always kinda weird)

This commit is contained in:
Hugo Alliaume
2025-06-22 23:33:40 +02:00
parent 99af62efb6
commit f034dbae83
2 changed files with 23 additions and 17 deletions

View File

@@ -29,27 +29,27 @@ export type Icon = {
export type MarkerDefinition<BridgeMarkerOptions, BridgeInfoWindowOptions> = WithIdentifier<{
position: Point;
title: string | null;
infoWindow?: InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions>;
infoWindow?: Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
icon?: Icon;
rawOptions?: BridgeMarkerOptions;
extra: Record<string, unknown>;
}>;
export type PolygonDefinition<PolygonOptions, BridgeInfoWindowOptions> = WithIdentifier<{
infoWindow?: InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions>;
infoWindow?: Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
points: Array<Point> | Array<Array<Point>>;
title: string | null;
rawOptions?: PolygonOptions;
extra: Record<string, unknown>;
}>;
export type PolylineDefinition<PolylineOptions, BridgeInfoWindowOptions> = WithIdentifier<{
infoWindow?: InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions>;
infoWindow?: Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
points: Array<Point>;
title: string | null;
rawOptions?: PolylineOptions;
extra: Record<string, unknown>;
}>;
export type CircleDefinition<CircleOptions, BridgeInfoWindowOptions> = WithIdentifier<{
infoWindow?: InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions>;
infoWindow?: Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
center: Point;
radius: number;
title: string | null;
@@ -57,7 +57,7 @@ export type CircleDefinition<CircleOptions, BridgeInfoWindowOptions> = WithIdent
extra: Record<string, unknown>;
}>;
export type RectangleDefinition<RectangleOptions, BridgeInfoWindowOptions> = WithIdentifier<{
infoWindow?: InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions>;
infoWindow?: Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
southWest: Point;
northEast: Point;
title: string | null;
@@ -73,7 +73,6 @@ export type InfoWindowDefinition<BridgeInfoWindowOptions> = {
rawOptions?: BridgeInfoWindowOptions;
extra: Record<string, unknown>;
};
export type InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions> = Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
export default abstract class<MapOptions, BridgeMap, BridgeMarkerOptions, BridgeMarker, BridgeInfoWindowOptions, BridgeInfoWindow, BridgePolygonOptions, BridgePolygon, BridgePolylineOptions, BridgePolyline, BridgeCircleOptions, BridgeCircle, BridgeRectangleOptions, BridgeRectangle> extends Controller<HTMLElement> {
static values: {
providerOptions: ObjectConstructor;
@@ -121,7 +120,7 @@ export default abstract class<MapOptions, BridgeMap, BridgeMarkerOptions, Bridge
protected abstract dispatchEvent(name: string, payload: Record<string, unknown>): void;
connect(): void;
createInfoWindow({ definition, element, }: {
definition: InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions>;
definition: Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
element: BridgeMarker | BridgePolygon | BridgePolyline | BridgeCircle | BridgeRectangle;
}): BridgeInfoWindow;
abstract centerValueChanged(): void;
@@ -158,7 +157,7 @@ export default abstract class<MapOptions, BridgeMap, BridgeMarkerOptions, Bridge
}): BridgeRectangle;
protected abstract doRemoveRectangle(rectangle: BridgeRectangle): void;
protected abstract doCreateInfoWindow({ definition, element, }: {
definition: InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions>;
definition: Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
element: BridgeMarker | BridgePolygon | BridgePolyline | BridgeCircle | BridgeRectangle;
}): BridgeInfoWindow;
protected abstract doCreateIcon({ definition, element }: {

View File

@@ -1,3 +1,12 @@
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
import { Controller } from '@hotwired/stimulus';
export type Point = { lat: number; lng: number };
@@ -31,7 +40,7 @@ export type Icon = {
export type MarkerDefinition<BridgeMarkerOptions, BridgeInfoWindowOptions> = WithIdentifier<{
position: Point;
title: string | null;
infoWindow?: InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions>;
infoWindow?: Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
icon?: Icon;
/**
* Raw options passed to the marker constructor, specific to the map provider (e.g.: `L.marker()` for Leaflet).
@@ -47,7 +56,7 @@ export type MarkerDefinition<BridgeMarkerOptions, BridgeInfoWindowOptions> = Wit
}>;
export type PolygonDefinition<PolygonOptions, BridgeInfoWindowOptions> = WithIdentifier<{
infoWindow?: InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions>;
infoWindow?: Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
points: Array<Point> | Array<Array<Point>>;
title: string | null;
/**
@@ -64,7 +73,7 @@ export type PolygonDefinition<PolygonOptions, BridgeInfoWindowOptions> = WithIde
}>;
export type PolylineDefinition<PolylineOptions, BridgeInfoWindowOptions> = WithIdentifier<{
infoWindow?: InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions>;
infoWindow?: Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
points: Array<Point>;
title: string | null;
/**
@@ -81,7 +90,7 @@ export type PolylineDefinition<PolylineOptions, BridgeInfoWindowOptions> = WithI
}>;
export type CircleDefinition<CircleOptions, BridgeInfoWindowOptions> = WithIdentifier<{
infoWindow?: InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions>;
infoWindow?: Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
center: Point;
radius: number;
title: string | null;
@@ -99,7 +108,7 @@ export type CircleDefinition<CircleOptions, BridgeInfoWindowOptions> = WithIdent
}>;
export type RectangleDefinition<RectangleOptions, BridgeInfoWindowOptions> = WithIdentifier<{
infoWindow?: InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions>;
infoWindow?: Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
southWest: Point;
northEast: Point;
title: string | null;
@@ -136,8 +145,6 @@ export type InfoWindowDefinition<BridgeInfoWindowOptions> = {
extra: Record<string, unknown>;
};
export type InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions> = Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
export default abstract class<
MapOptions, // Normalized `*Options` PHP class from Bridge (to not be confused with the JS Map class options)
BridgeMap, // The JavaScript Map class from Bridge (e.g.: `L.Map` for Leaflet, `google.maps.Map` for Google Maps)
@@ -248,7 +255,7 @@ export default abstract class<
definition,
element,
}: {
definition: InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions>;
definition: Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
element: BridgeMarker | BridgePolygon | BridgePolyline | BridgeCircle | BridgeRectangle;
}): BridgeInfoWindow {
this.dispatchEvent('info-window:before-create', { definition, element });
@@ -342,7 +349,7 @@ export default abstract class<
definition,
element,
}: {
definition: InfoWindowWithoutPositionDefinition<BridgeInfoWindowOptions>;
definition: Omit<InfoWindowDefinition<BridgeInfoWindowOptions>, 'position'>;
element: BridgeMarker | BridgePolygon | BridgePolyline | BridgeCircle | BridgeRectangle;
}): BridgeInfoWindow;
protected abstract doCreateIcon({ definition, element }: { definition: Icon; element: BridgeMarker }): void;