Socket
Socket
Sign inDemoInstall

terra-draw

Package Overview
Dependencies
Maintainers
0
Versions
72
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

terra-draw - npm Package Compare versions

Comparing version 0.0.1-alpha.68 to 0.0.1-alpha.69

dist/geometry/measure/bearing.d.ts

1

dist/adapters/google-maps.adapter.d.ts

@@ -1,2 +0,1 @@

/// <reference types="google.maps" />
import { TerraDrawChanges, SetCursor, TerraDrawStylingFunction, TerraDrawCallbacks } from "../common";

@@ -3,0 +2,0 @@ import { BaseAdapterConfig, TerraDrawBaseAdapter } from "./common/base.adapter";

@@ -48,2 +48,3 @@ import { StoreChangeHandler, GeoJSONStore, GeoJSONStoreFeatures, FeatureId } from "./store/store";

} | null;
export type Projection = "web-mercator" | "globe";
export type OnFinishContext = {

@@ -50,0 +51,0 @@ mode: string;

@@ -10,2 +10,2 @@ import { Feature, Polygon } from "geojson";

pointerDistance: number;
}): Feature<Polygon, import("geojson").GeoJsonProperties>;
}): Feature<Polygon>;

@@ -8,1 +8,7 @@ import { Feature, Polygon, Position } from "geojson";

}): Feature<Polygon>;
export declare function circleWebMercator(options: {
center: Position;
radiusKilometers: number;
coordinatePrecision: number;
steps?: number;
}): GeoJSON.Feature<GeoJSON.Polygon>;

@@ -1,2 +0,2 @@

import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColorStyling, NumericStyling, Cursor } from "../../common";
import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColorStyling, NumericStyling, Cursor, Projection } from "../../common";
import { GeoJSONStoreFeatures } from "../../store/store";

@@ -21,5 +21,7 @@ import { BaseModeOptions, CustomStyling, TerraDrawBaseDrawMode } from "../base.mode";

startingRadiusKilometers?: number;
projection?: Projection;
}
export declare class TerraDrawCircleMode extends TerraDrawBaseDrawMode<CirclePolygonStyling> {
mode: string;
private projection;
private center;

@@ -26,0 +28,0 @@ private clickCount;

@@ -1,2 +0,2 @@

import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColorStyling, NumericStyling, Cursor } from "../../common";
import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColorStyling, NumericStyling, Cursor, Projection } from "../../common";
import { BaseModeOptions, CustomStyling, TerraDrawBaseDrawMode } from "../base.mode";

@@ -21,2 +21,6 @@ import { BehaviorConfig } from "../base.behavior";

}
interface InertCoordinates {
strategy: "amount";
value: number;
}
interface TerraDrawLineStringModeOptions<T extends CustomStyling> extends BaseModeOptions<T> {

@@ -27,5 +31,8 @@ snapping?: boolean;

cursors?: Cursors;
insertCoordinates?: InertCoordinates;
projection?: Projection;
}
export declare class TerraDrawLineStringMode extends TerraDrawBaseDrawMode<LineStringStyling> {
mode: string;
private projection;
private currentCoordinate;

@@ -38,6 +45,13 @@ private currentId;

private mouseMove;
private insertCoordinates;
private lastCommitedCoordinates;
private snapping;
private insertPoint;
constructor(options?: TerraDrawLineStringModeOptions<LineStringStyling>);
private close;
private updateGeometries;
private generateInsertCoordinates;
private createLine;
private firstUpdateToLine;
private updateToLine;
/** @internal */

@@ -44,0 +58,0 @@ registerBehaviors(config: BehaviorConfig): void;

@@ -19,12 +19,12 @@ import { TerraDrawAdapterStyling } from "../../common";

styleFeature(): {
pointColor: `#${string}`;
pointColor: import("../../common").HexColor;
pointWidth: number;
pointOutlineColor: `#${string}`;
pointOutlineColor: import("../../common").HexColor;
pointOutlineWidth: number;
polygonFillColor: `#${string}`;
polygonFillColor: import("../../common").HexColor;
polygonFillOpacity: number;
polygonOutlineColor: `#${string}`;
polygonOutlineColor: import("../../common").HexColor;
polygonOutlineWidth: number;
lineStringWidth: number;
lineStringColor: `#${string}`;
lineStringColor: import("../../common").HexColor;
zIndex: number;

@@ -31,0 +31,0 @@ };

@@ -12,3 +12,2 @@ import { TerraDrawGoogleMapsAdapter } from "./adapters/google-maps.adapter";

import { TerraDrawFreehandMode } from "./modes/freehand/freehand.mode";
import { TerraDrawGreatCircleMode } from "./modes/greatcircle/great-circle.mode";
import { TerraDrawLineStringMode } from "./modes/linestring/linestring.mode";

@@ -224,2 +223,2 @@ import { TerraDrawPointMode } from "./modes/point/point.mode";

};
export { TerraDraw, TerraDrawSelectMode, TerraDrawPointMode, TerraDrawLineStringMode, TerraDrawGreatCircleMode, TerraDrawPolygonMode, TerraDrawCircleMode, TerraDrawFreehandMode, TerraDrawRenderMode, TerraDrawRectangleMode, TerraDrawGoogleMapsAdapter, TerraDrawMapboxGLAdapter, TerraDrawLeafletAdapter, TerraDrawMapLibreGLAdapter, TerraDrawOpenLayersAdapter, TerraDrawArcGISMapsSDKAdapter, TerraDrawExtend, BehaviorConfig, GeoJSONStoreFeatures, HexColor, TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, TerraDrawChanges, TerraDrawStylingFunction, Project, Unproject, SetCursor, GetLngLatFromEvent, ValidateMinAreaSquareMeters, ValidateMaxAreaSquareMeters, ValidateNotSelfIntersecting, };
export { TerraDraw, TerraDrawSelectMode, TerraDrawPointMode, TerraDrawLineStringMode, TerraDrawPolygonMode, TerraDrawCircleMode, TerraDrawFreehandMode, TerraDrawRenderMode, TerraDrawRectangleMode, TerraDrawGoogleMapsAdapter, TerraDrawMapboxGLAdapter, TerraDrawLeafletAdapter, TerraDrawMapLibreGLAdapter, TerraDrawOpenLayersAdapter, TerraDrawArcGISMapsSDKAdapter, TerraDrawExtend, BehaviorConfig, GeoJSONStoreFeatures, HexColor, TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, TerraDrawChanges, TerraDrawStylingFunction, Project, Unproject, SetCursor, GetLngLatFromEvent, ValidateMinAreaSquareMeters, ValidateMaxAreaSquareMeters, ValidateNotSelfIntersecting, };
import { GeoJSONStoreFeatures } from "../terra-draw";
export declare const ValidateMaxAreaSquareMeters: (feature: GeoJSONStoreFeatures, minSize: number) => boolean;
export declare const ValidateMaxAreaSquareMeters: (feature: GeoJSONStoreFeatures, maxSize: number) => boolean;

@@ -21,3 +21,3 @@ {

"ts-loader": "9.5.1",
"typescript": "5.4.4",
"typescript": "5.5.2",
"webpack": "5.73.0",

@@ -24,0 +24,0 @@ "webpack-cli": "4.10.0",

@@ -11,2 +11,3 @@ import { test, expect } from "@playwright/test";

setupMap,
TestConfigOptions,
} from "./setup";

@@ -81,51 +82,116 @@

test("mode can set and can be used to create a linestring", async ({
page,
}) => {
const mapDiv = await setupMap({ page });
await changeMode({ page, mode });
const options = [
{ name: "", config: undefined },
{
name: " with insert coordinates for web mercator projection",
config: "insertCoordinates",
},
{
name: " with insert coordinates for globe projection",
config: "insertCoordinatesGlobe",
},
] as { name: string; config: TestConfigOptions }[];
await page.mouse.move(mapDiv.width / 2, mapDiv.height / 2);
await page.mouse.click(mapDiv.width / 2, mapDiv.height / 2);
await page.mouse.move(mapDiv.width / 3, mapDiv.height / 3);
await page.mouse.click(mapDiv.width / 3, mapDiv.height / 3);
for (const { name, config } of options) {
test(`mode can set and can be used to create a linestring${name}`, async ({
page,
}) => {
const mapDiv = await setupMap({ page, configQueryParam: config });
await changeMode({ page, mode });
await page.mouse.click(mapDiv.width / 3, mapDiv.height / 3);
await page.mouse.move(mapDiv.width / 2, mapDiv.height / 2);
await page.mouse.click(mapDiv.width / 2, mapDiv.height / 2);
await page.mouse.move(mapDiv.width / 3, mapDiv.height / 3);
await page.mouse.click(mapDiv.width / 3, mapDiv.height / 3);
await expectPaths({ page, count: 1 });
});
// Close
await page.mouse.click(mapDiv.width / 3, mapDiv.height / 3);
test("mode can set and can be used to create multiple linestrings", async ({
page,
}) => {
const mapDiv = await setupMap({ page });
await changeMode({ page, mode });
await expectPaths({ page, count: 1 });
});
// First line
await page.mouse.move(mapDiv.width / 2, mapDiv.height / 2);
await page.mouse.click(mapDiv.width / 2, mapDiv.height / 2);
await page.mouse.move(mapDiv.width / 3, mapDiv.height / 3);
await page.mouse.click(mapDiv.width / 3, mapDiv.height / 3);
test(`mode can set and can be used to create a linestring with multiple points${name}`, async ({
page,
}) => {
const mapDiv = await setupMap({ page, configQueryParam: config });
await changeMode({ page, mode });
// One point + one line
await expectPaths({ page, count: 2 });
await page.mouse.move(mapDiv.width / 2, mapDiv.height / 2);
await page.mouse.click(mapDiv.width / 2, mapDiv.height / 2);
await page.mouse.move(mapDiv.width / 3, mapDiv.height / 3);
await page.mouse.click(mapDiv.width / 3, mapDiv.height / 3);
// Close first line
await page.mouse.click(mapDiv.width / 3, mapDiv.height / 3);
// Draw coordinate 2
await page.mouse.move(mapDiv.width / 3, mapDiv.height / 2);
await page.mouse.click(mapDiv.width / 3, mapDiv.height / 2);
// One line
await expectPaths({ page, count: 1 });
// Draw coordinate 3
await page.mouse.move(mapDiv.width / 2, mapDiv.height / 3);
await page.mouse.click(mapDiv.width / 2, mapDiv.height / 3);
// Second line
await page.mouse.move(mapDiv.width / 4, mapDiv.height / 4);
await page.mouse.click(mapDiv.width / 4, mapDiv.height / 4);
await page.mouse.move(mapDiv.width / 5, mapDiv.height / 5);
await page.mouse.click(mapDiv.width / 5, mapDiv.height / 5);
// Close
await page.mouse.click(mapDiv.width / 2, mapDiv.height / 3);
// Close second line
await page.mouse.click(mapDiv.width / 5, mapDiv.height / 5);
await expectPaths({ page, count: 1 });
});
// Two lines
await expectPaths({ page, count: 2 });
});
test(`mode can set and can be used to create a linestring with multiple clicked points${name}`, async ({
page,
}) => {
const mapDiv = await setupMap({ page, configQueryParam: config });
await changeMode({ page, mode });
await page.mouse.move(mapDiv.width / 2, mapDiv.height / 2);
await page.mouse.click(mapDiv.width / 2, mapDiv.height / 2);
await page.mouse.move(mapDiv.width / 3, mapDiv.height / 3);
await page.mouse.click(mapDiv.width / 3, mapDiv.height / 3);
// Draw coordinate 2
await page.mouse.move(mapDiv.width / 3, mapDiv.height / 2);
await page.mouse.click(mapDiv.width / 3, mapDiv.height / 2);
// Draw coordinate 3
await page.mouse.move(mapDiv.width / 2, mapDiv.height / 3);
await page.mouse.click(mapDiv.width / 2, mapDiv.height / 3);
// Close
await page.mouse.click(mapDiv.width / 2, mapDiv.height / 3);
await expectPaths({ page, count: 1 });
});
test(`mode can set and can be used to create multiple linestrings${name}`, async ({
page,
}) => {
const mapDiv = await setupMap({ page, configQueryParam: config });
await changeMode({ page, mode });
// First line
await page.mouse.move(mapDiv.width / 2, mapDiv.height / 2);
await page.mouse.click(mapDiv.width / 2, mapDiv.height / 2);
await page.mouse.move(mapDiv.width / 3, mapDiv.height / 3);
await page.mouse.click(mapDiv.width / 3, mapDiv.height / 3);
// One point + one line
await expectPaths({ page, count: 2 });
// Close first line
await page.mouse.click(mapDiv.width / 3, mapDiv.height / 3);
// One line
await expectPaths({ page, count: 1 });
// Second line
await page.mouse.move(mapDiv.width / 4, mapDiv.height / 4);
await page.mouse.click(mapDiv.width / 4, mapDiv.height / 4);
await page.mouse.move(mapDiv.width / 5, mapDiv.height / 5);
await page.mouse.click(mapDiv.width / 5, mapDiv.height / 5);
// Close second line
await page.mouse.click(mapDiv.width / 5, mapDiv.height / 5);
// Two lines
await expectPaths({ page, count: 2 });
});
}
});

@@ -270,3 +336,5 @@

test("mode can set and can be used to create a circle", async ({ page }) => {
test("mode can set and can be used to create a web mercator circle", async ({
page,
}) => {
const mapDiv = await setupMap({ page });

@@ -283,11 +351,7 @@ await changeMode({ page, mode });

});
});
test.describe("greatcircle mode", () => {
const mode = "greatcircle";
test("mode can set and can be used to create a greatcircle", async ({
test("mode can set and can be used to create a geodesic circle", async ({
page,
}) => {
const mapDiv = await setupMap({ page });
const mapDiv = await setupMap({ page, configQueryParam: "geodesicCircle" });
await changeMode({ page, mode });

@@ -300,2 +364,4 @@

await expectPaths({ page, count: 1 });
await expectPathDimensions({ page, width: 146, height: 146 });
});

@@ -302,0 +368,0 @@ });

@@ -5,2 +5,9 @@ import { Page, expect } from "@playwright/test";

export type TestConfigOptions =
| "validationSuccess"
| "validationFailure"
| "insertCoordinates"
| "insertCoordinatesGlobe"
| "geodesicCircle";
export const setupMap = async ({

@@ -11,3 +18,3 @@ page,

page: Page;
configQueryParam?: "validationSuccess" | "validationFailure";
configQueryParam?: TestConfigOptions;
}): Promise<{

@@ -42,10 +49,3 @@ x: number;

page: Page;
mode:
| "point"
| "polygon"
| "linestring"
| "select"
| "rectangle"
| "circle"
| "greatcircle";
mode: "point" | "polygon" | "linestring" | "select" | "rectangle" | "circle";
}) => {

@@ -52,0 +52,0 @@ const modeText = mode.charAt(0).toUpperCase() + mode.slice(1);

{
"name": "terra-draw",
"version": "0.0.1-alpha.68",
"version": "0.0.1-alpha.69",
"description": "Frictionless map drawing across mapping provider",

@@ -62,7 +62,7 @@ "scripts": {

"@types/jest": "29.5.12",
"@types/leaflet": "1.7.11",
"@types/leaflet": "^1.9.12",
"@types/mapbox-gl": "2.7.3",
"@types/rbush": "3.0.0",
"@typescript-eslint/eslint-plugin": "7.5.0",
"@typescript-eslint/parser": "7.5.0",
"@typescript-eslint/eslint-plugin": "7.14.1",
"@typescript-eslint/parser": "7.14.1",
"eslint": "8.57.0",

@@ -74,3 +74,3 @@ "eslint-config-prettier": "9.0.0",

"jest-environment-jsdom": "29.7.0",
"leaflet": "1.8.0",
"leaflet": "^1.9.4",
"mapbox-gl": "2.13.0",

@@ -85,4 +85,4 @@ "maplibre-gl": "3.2.0",

"tsx": "4.7.2",
"typedoc": "0.25.12",
"typescript": "5.4.4"
"typedoc": "^0.26.2",
"typescript": "5.5.2"
},

@@ -160,3 +160,4 @@ "commitlint": {

]
}
},
"sideEffects": false
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc