add type definitions for leaflet.pm

This commit is contained in:
Thomas Kleinke 2017-01-25 18:28:49 +01:00
parent 6c3cb891e2
commit 7673aba8bd
4 changed files with 185 additions and 0 deletions

96
leaflet.pm/index.d.ts vendored Normal file
View File

@ -0,0 +1,96 @@
// Type definitions for leaflet.pm 0.13
// Project: https://github.com/codeofsumit/leaflet.pm
// Definitions by: Thomas Kleinke <https://github.com/tkleinke>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="leaflet" />
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;
}
}
}
}

View File

@ -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();

20
leaflet.pm/tsconfig.json Normal file
View File

@ -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"
]
}

1
leaflet.pm/tslint.json Normal file
View File

@ -0,0 +1 @@
{ "extends": "../tslint.json" }