Skip to content

Commit

Permalink
feat: move google maps to use base adapter
Browse files Browse the repository at this point in the history
  • Loading branch information
JamesLMilner committed Mar 27, 2023
1 parent 5e5760f commit 5e52f4d
Show file tree
Hide file tree
Showing 4 changed files with 221 additions and 375 deletions.
43 changes: 37 additions & 6 deletions src/adapters/common/base-adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,17 @@ export abstract class TerraDrawAdapterBase {
return;
}

const drawEvent = this.getDrawEventFromPointerEvent(event);
if (!drawEvent) {
return;
}

this.dragState = "pre-dragging";

// On pointer devices pointer mouse move events won't be
// triggered so this._lastDrawEvent will not get set in
// pointermove listener, so we must set it here.
this._lastDrawEvent = this.getDrawEventFromPointerEvent(event);
this._lastDrawEvent = drawEvent;
},
register: (callback) => {
return [
Expand All @@ -66,6 +71,9 @@ export abstract class TerraDrawAdapterBase {
event.preventDefault();

const drawEvent = this.getDrawEventFromPointerEvent(event);
if (!drawEvent) {
return;
}

if (this.dragState === "not-dragging") {
this.dragConter = 0;
Expand Down Expand Up @@ -141,6 +149,9 @@ export abstract class TerraDrawAdapterBase {
this.dragState === "pre-dragging"
) {
const drawEvent = this.getDrawEventFromPointerEvent(event);
if (!drawEvent) {
return;
}

// On mobile devices there is no real 'right click'
// so we want to make sure the event is genuine in this case
Expand Down Expand Up @@ -172,6 +183,9 @@ export abstract class TerraDrawAdapterBase {
}

const drawEvent = this.getDrawEventFromPointerEvent(event);
if (!drawEvent) {
return;
}

if (this.dragState === "dragging") {
this.currentModeCallbacks.onDragEnd(drawEvent, (enabled) => {
Expand Down Expand Up @@ -288,8 +302,14 @@ export abstract class TerraDrawAdapterBase {

protected getDrawEventFromPointerEvent(
event: PointerEvent
): TerraDrawMouseEvent {
const { lng, lat } = this.getLngLatFromPointerEvent(event);
): TerraDrawMouseEvent | null {
const latLng = this.getLngLatFromPointerEvent(event);

if (!latLng) {
return null;
}

const { lng, lat } = latLng;
const button = this.getButton(event);
const container = this.getMapContainer();
return {
Expand All @@ -302,6 +322,19 @@ export abstract class TerraDrawAdapterBase {
};
}

public register(callbacks: TerraDrawCallbacks) {
this.currentModeCallbacks = callbacks;
this.listeners.forEach((listener) => {
listener.register();
});
}

public unregister() {
this.listeners.forEach((listener) => {
listener.unregister();
});
}

public abstract project(...args: Parameters<Project>): ReturnType<Project>;
public abstract unproject(
...args: Parameters<Unproject>
Expand All @@ -312,12 +345,10 @@ export abstract class TerraDrawAdapterBase {
public abstract getLngLatFromPointerEvent(event: PointerEvent): {
lng: number;
lat: number;
};
} | null;
public abstract setDraggability(enabled: boolean): void;
public abstract setDoubleClickToZoom(enabled: boolean): void;
public abstract getMapContainer(): HTMLElement;
public abstract register(callbacks: TerraDrawCallbacks): void;
public abstract unregister(): void;
public abstract render(
changes: TerraDrawChanges,
styling: TerraDrawStylingFunction
Expand Down
3 changes: 3 additions & 0 deletions src/adapters/google-maps.adapter.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ describe("TerraDrawGoogleMapsAdapter", () => {
const adapter = new TerraDrawGoogleMapsAdapter({
lib: {
LatLng: jest.fn(),
OverlayView: jest.fn().mockImplementation(() => ({
setMap: jest.fn(),
})),
} as any,
map: createMockGoogleMap(),
});
Expand Down
Loading

0 comments on commit 5e52f4d

Please sign in to comment.