From 7673aba8bd856c4e079cf135576e9130ce86f2bf Mon Sep 17 00:00:00 2001 From: Thomas Kleinke Date: Wed, 25 Jan 2017 18:28:49 +0100 Subject: [PATCH] add type definitions for leaflet.pm --- leaflet.pm/index.d.ts | 96 ++++++++++++++++++++++++++++++++++ leaflet.pm/leaflet.pm-tests.ts | 68 ++++++++++++++++++++++++ leaflet.pm/tsconfig.json | 20 +++++++ leaflet.pm/tslint.json | 1 + 4 files changed, 185 insertions(+) create mode 100644 leaflet.pm/index.d.ts create mode 100644 leaflet.pm/leaflet.pm-tests.ts create mode 100644 leaflet.pm/tsconfig.json create mode 100644 leaflet.pm/tslint.json diff --git a/leaflet.pm/index.d.ts b/leaflet.pm/index.d.ts new file mode 100644 index 0000000000..7e9e2a1c14 --- /dev/null +++ b/leaflet.pm/index.d.ts @@ -0,0 +1,96 @@ +// Type definitions for leaflet.pm 0.13 +// Project: https://github.com/codeofsumit/leaflet.pm +// Definitions by: Thomas Kleinke +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +declare namespace L { + + export interface Map { + pm: PM.Map; + } + + export interface Polygon { + pm: PM.Edit.Line; + } + + export interface Polyline { + pm: PM.Edit.Line; + } + + export interface Marker { + pm: PM.Edit.Marker; + } + + export interface LayerGroup { + pm: PM.Edit.LayerGroup; + } + + export namespace PM { + + export interface Map { + addControls(options?: PM.ToolbarOptions): void; + enableDraw(shape: string, options?: PM.DrawOptions): void; + disableDraw(shape: string): void; + setPathOptions(options: L.PathOptions): void; + toggleRemoval(enabled: boolean): void; + globalEditEnabled(): boolean; + toggleGlobalEditMode(options?: PM.EditOptions): void; + + Draw: PM.Draw; + } + + export interface Draw { + getShapes(): string[]; + } + + export interface ToolbarOptions { + position?: string; // topleft | topright | bottomleft | bottomright + drawMarker?: boolean; + drawPolygon?: boolean; + drawPolyline?: boolean; + editPolygon?: boolean; + deleteLayer?: boolean; + } + + export interface DrawOptions { + templineStyle?: L.PathOptions; + hintlineStyle?: L.PathOptions; + pathOptions?: L.PathOptions; + } + + export interface EditOptions { + draggable?: boolean; + snappable?: boolean; + snapDistance?: number; + } + + export namespace Edit { + + export interface Line { + enable(options?: EditOptions): void; + disable(poly?: L.Layer): void; + toggleEdit(options?: EditOptions): void; + enabled(): boolean; + } + + export interface Marker { + enable(options?: EditOptions): void; + disable(): void; + toggleEdit(options?: EditOptions): void; + enabled(): boolean; + } + + export interface LayerGroup { + enable(options?: EditOptions): void; + disable(): void; + toggleEdit(options?: EditOptions): void; + enabled(): boolean; + findLayers(): L.Layer[]; + dragging(): boolean; + getOptions(): EditOptions; + } + } + } +} diff --git a/leaflet.pm/leaflet.pm-tests.ts b/leaflet.pm/leaflet.pm-tests.ts new file mode 100644 index 0000000000..88c804acff --- /dev/null +++ b/leaflet.pm/leaflet.pm-tests.ts @@ -0,0 +1,68 @@ +var toolbarOptions: L.PM.ToolbarOptions = { + position: 'topleft', + drawMarker: true, + drawPolygon: true, + drawPolyline: true, + editPolygon: true, + deleteLayer: true +}; + +var drawOptions: L.PM.DrawOptions = { + templineStyle: { + color: 'red' + }, + hintlineStyle: { + color: 'red', + dashArray: '5, 5' + } +}; + +var editOptions: L.PM.EditOptions = { + draggable: true, + snappable: true, + snapDistance: 30 +}; + +var pathOptions: L.PathOptions = { + color: 'orange', + fillColor: 'green', + fillOpacity: 0.5 +}; + +var map: L.Map = L.map('map-element'); +map.pm.addControls(toolbarOptions); +map.pm.enableDraw('Poly', drawOptions); +map.pm.disableDraw('Poly'); +map.pm.setPathOptions(pathOptions); +map.pm.toggleRemoval(true); +var enabled: boolean = map.pm.globalEditEnabled(); +map.pm.toggleGlobalEditMode(editOptions); + +var shapes: string[] = map.pm.Draw.getShapes(); + +var polygon: L.Polygon = L.polygon([ [ 1.0, 1.0], [ 2.0, 1.0], [ 1.0, 2.0] ]); +polygon.pm.enable(editOptions); +polygon.pm.disable(); +polygon.pm.toggleEdit(editOptions); +enabled = polygon.pm.enabled(); + +var polyline: L.Polyline = L.polyline([ [ 1.0, 1.0], [ 2.0, 1.0], [ 1.0, 2.0] ]); +polyline.pm.enable(editOptions); +polyline.pm.disable(); +polyline.pm.toggleEdit(editOptions); +enabled = polyline.pm.enabled(); + +var marker: L.Marker = L.marker([ 3.0, 3.0 ]); +marker.pm.enable(editOptions); +marker.pm.disable(); +marker.pm.toggleEdit(editOptions); +enabled = marker.pm.enabled(); + +var layerGroup: L.LayerGroup = L.layerGroup([ polygon, polyline, marker ]); +layerGroup.pm.enable(editOptions); +layerGroup.pm.disable(); +layerGroup.pm.toggleEdit(editOptions); +enabled = layerGroup.pm.enabled(); +var layers: L.Layer[] = layerGroup.pm.findLayers(); +var dragging: boolean = layerGroup.pm.dragging(); +var options: L.PM.EditOptions = layerGroup.pm.getOptions(); diff --git a/leaflet.pm/tsconfig.json b/leaflet.pm/tsconfig.json new file mode 100644 index 0000000000..21ac03fd2a --- /dev/null +++ b/leaflet.pm/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "leaflet.pm-tests.ts" + ] +} diff --git a/leaflet.pm/tslint.json b/leaflet.pm/tslint.json new file mode 100644 index 0000000000..377cc837d4 --- /dev/null +++ b/leaflet.pm/tslint.json @@ -0,0 +1 @@ +{ "extends": "../tslint.json" }