15 changed files with 524 additions and 28 deletions
|
After Width: | Height: | Size: 182 B |
@ -0,0 +1,272 @@ |
|||||
|
///
|
||||
|
/// Copyright © 2016-2020 The Thingsboard Authors
|
||||
|
///
|
||||
|
/// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
/// you may not use this file except in compliance with the License.
|
||||
|
/// You may obtain a copy of the License at
|
||||
|
///
|
||||
|
/// http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
///
|
||||
|
/// Unless required by applicable law or agreed to in writing, software
|
||||
|
/// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
/// See the License for the specific language governing permissions and
|
||||
|
/// limitations under the License.
|
||||
|
///
|
||||
|
|
||||
|
import * as Leaflet from 'leaflet'; |
||||
|
|
||||
|
declare module 'leaflet' { |
||||
|
|
||||
|
/** |
||||
|
* Make geometries editable in Leaflet. |
||||
|
* |
||||
|
* This is not a plug and play UI, and will not. This is a minimal, lightweight, and fully extendable API to |
||||
|
* control editing of geometries. So you can easily build your own UI with your own needs and choices. |
||||
|
*/ |
||||
|
interface EditableStatic { |
||||
|
new (map: Map, options: EditOptions): Editable; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Options to pass to L.Editable when instanciating. |
||||
|
*/ |
||||
|
interface EditOptions extends Leaflet.MapOptions{ |
||||
|
/** |
||||
|
* Class to be used when creating a new Polyline. |
||||
|
*/ |
||||
|
polylineClass?: object; |
||||
|
|
||||
|
/** |
||||
|
* Class to be used when creating a new Polygon. |
||||
|
*/ |
||||
|
polygonClass?: object; |
||||
|
|
||||
|
/** |
||||
|
* Class to be used when creating a new Marker. |
||||
|
*/ |
||||
|
markerClass?: object; |
||||
|
|
||||
|
/** |
||||
|
* CSS class to be added to the map container while drawing. |
||||
|
*/ |
||||
|
drawingCSSClass?: string; |
||||
|
|
||||
|
/** |
||||
|
* Layer used to store edit tools (vertex, line guide…). |
||||
|
*/ |
||||
|
editLayer?: LayerGroup<Leaflet.Layer>; |
||||
|
|
||||
|
/** |
||||
|
* Default layer used to store drawn features (marker, polyline…). |
||||
|
*/ |
||||
|
featuresLayer?: LayerGroup<Polyline|Polygon|Marker>; |
||||
|
|
||||
|
/** |
||||
|
* Class to be used as vertex, for path editing. |
||||
|
*/ |
||||
|
vertexMarkerClass?: object; |
||||
|
|
||||
|
/** |
||||
|
* Class to be used as middle vertex, pulled by the user to create a new point in the middle of a path. |
||||
|
*/ |
||||
|
middleMarkerClass?: object; |
||||
|
|
||||
|
/** |
||||
|
* Class to be used as Polyline editor. |
||||
|
*/ |
||||
|
polylineEditorClass?: object; |
||||
|
|
||||
|
/** |
||||
|
* Class to be used as Polygon editor. |
||||
|
*/ |
||||
|
polygonEditorClass?: object; |
||||
|
|
||||
|
/** |
||||
|
* Class to be used as Marker editor. |
||||
|
*/ |
||||
|
markerEditorClass?: object; |
||||
|
|
||||
|
/** |
||||
|
* Options to be passed to the line guides. |
||||
|
*/ |
||||
|
lineGuideOptions?: object; |
||||
|
|
||||
|
/** |
||||
|
* Set this to true if you don't want middle markers. |
||||
|
*/ |
||||
|
skipMiddleMarkers?: boolean; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Make geometries editable in Leaflet. |
||||
|
* |
||||
|
* This is not a plug and play UI, and will not. This is a minimal, lightweight, and fully extendable API to |
||||
|
* control editing of geometries. So you can easily build your own UI with your own needs and choices. |
||||
|
*/ |
||||
|
interface Editable extends Leaflet.Evented { |
||||
|
/** |
||||
|
* Options to pass to L.Editable when instanciating. |
||||
|
*/ |
||||
|
options: EditOptions; |
||||
|
|
||||
|
currentPolygon: Polyline|Polygon|Marker; |
||||
|
|
||||
|
/** |
||||
|
* Start drawing a polyline. If latlng is given, a first point will be added. In any case, continuing on user |
||||
|
* click. If options is given, it will be passed to the polyline class constructor. |
||||
|
*/ |
||||
|
startPolyline(latLng?: LatLng, options?: PolylineOptions): Polyline; |
||||
|
|
||||
|
/** |
||||
|
* Start drawing a polygon. If latlng is given, a first point will be added. In any case, continuing on user |
||||
|
* click. If options is given, it will be passed to the polygon class constructor. |
||||
|
*/ |
||||
|
startPolygon(latLng?: LatLng, options?: PolylineOptions): Polygon; |
||||
|
|
||||
|
/** |
||||
|
* Start adding a marker. If latlng is given, the marker will be shown first at this point. In any case, it |
||||
|
* will follow the user mouse, and will have a final latlng on next click (or touch). If options is given, |
||||
|
* it will be passed to the marker class constructor. |
||||
|
*/ |
||||
|
startMarker(latLng?: LatLng, options?: MarkerOptions): Marker; |
||||
|
|
||||
|
/** |
||||
|
* When you need to stop any ongoing drawing, without needing to know which editor is active. |
||||
|
*/ |
||||
|
stopDrawing(): void; |
||||
|
|
||||
|
/** |
||||
|
* When you need to commit any ongoing drawing, without needing to know which editor is active. |
||||
|
*/ |
||||
|
commitDrawing(): void; |
||||
|
} |
||||
|
|
||||
|
let Editable: EditableStatic; |
||||
|
|
||||
|
/** |
||||
|
* EditableMixin is included to L.Polyline, L.Polygon and L.Marker. It adds the following methods to them. |
||||
|
* |
||||
|
* When editing is enabled, the editor is accessible on the instance with the editor property. |
||||
|
*/ |
||||
|
interface EditableMixin { |
||||
|
/** |
||||
|
* Enable editing, by creating an editor if not existing, and then calling enable on it. |
||||
|
*/ |
||||
|
enableEdit(map: L.Map): any; |
||||
|
|
||||
|
/** |
||||
|
* Disable editing, also remove the editor property reference. |
||||
|
*/ |
||||
|
disableEdit(): void; |
||||
|
|
||||
|
/** |
||||
|
* Enable or disable editing, according to current status. |
||||
|
*/ |
||||
|
toggleEdit(): void; |
||||
|
|
||||
|
/** |
||||
|
* Return true if current instance has an editor attached, and this editor is enabled. |
||||
|
*/ |
||||
|
editEnabled(): boolean; |
||||
|
} |
||||
|
|
||||
|
interface Map { |
||||
|
/** |
||||
|
* Whether to create a L.Editable instance at map init or not. |
||||
|
*/ |
||||
|
editable: boolean; |
||||
|
|
||||
|
/** |
||||
|
* Options to pass to L.Editable when instanciating. |
||||
|
*/ |
||||
|
editOptions: EditOptions; |
||||
|
|
||||
|
/** |
||||
|
* L.Editable plugin instance. |
||||
|
*/ |
||||
|
editTools: Editable; |
||||
|
} |
||||
|
|
||||
|
// tslint:disable-next-line:no-empty-interface
|
||||
|
interface Polyline extends EditableMixin {} |
||||
|
|
||||
|
namespace Map { |
||||
|
interface MapOptions { |
||||
|
/** |
||||
|
* Whether to create a L.Editable instance at map init or not. |
||||
|
*/ |
||||
|
editable?: boolean; |
||||
|
|
||||
|
/** |
||||
|
* Options to pass to L.Editable when instanciating. |
||||
|
*/ |
||||
|
editOptions?: EditOptions; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* When editing a feature (marker, polyline…), an editor is attached to it. This editor basically knows |
||||
|
* how to handle the edition. |
||||
|
*/ |
||||
|
interface BaseEditor { |
||||
|
/** |
||||
|
* Set up the drawing tools for the feature to be editable. |
||||
|
*/ |
||||
|
enable(): MarkerEditor|PolylineEditor|PolygonEditor; |
||||
|
|
||||
|
/** |
||||
|
* Remove editing tools. |
||||
|
*/ |
||||
|
disable(): MarkerEditor|PolylineEditor|PolygonEditor; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Inherit from L.Editable.BaseEditor. |
||||
|
* Inherited by L.Editable.PolylineEditor and L.Editable.PolygonEditor. |
||||
|
*/ |
||||
|
interface PathEditor extends BaseEditor { |
||||
|
/** |
||||
|
* Rebuild edit elements (vertex, middlemarker, etc.). |
||||
|
*/ |
||||
|
reset(): void; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Inherit from L.Editable.PathEditor. |
||||
|
*/ |
||||
|
interface PolylineEditor extends PathEditor { |
||||
|
/** |
||||
|
* Set up drawing tools to continue the line forward. |
||||
|
*/ |
||||
|
continueForward(): void; |
||||
|
|
||||
|
/** |
||||
|
* Set up drawing tools to continue the line backward. |
||||
|
*/ |
||||
|
continueBackward(): void; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Inherit from L.Editable.PathEditor. |
||||
|
*/ |
||||
|
interface PolygonEditor extends PathEditor { |
||||
|
/** |
||||
|
* Set up drawing tools for creating a new hole on the polygon. If the latlng param is given, a first |
||||
|
* point is created. |
||||
|
*/ |
||||
|
newHole(latlng: LatLng): void; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Inherit from L.Editable.BaseEditor. |
||||
|
*/ |
||||
|
// tslint:disable-next-line:no-empty-interface
|
||||
|
interface MarkerEditor extends BaseEditor {} |
||||
|
|
||||
|
interface Marker extends EditableMixin, MarkerEditor {} |
||||
|
|
||||
|
interface Polyline extends EditableMixin, PolylineEditor {} |
||||
|
|
||||
|
interface Polygon extends EditableMixin, PolygonEditor {} |
||||
|
} |
||||
Loading…
Reference in new issue