@m4l/components 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/@types/export.d.ts +269 -269
  2. package/@types/types.d.ts +37 -34
  3. package/components/AccountPopover/{index.68a8c117.js → index.323b6cf4.js} +3 -3
  4. package/components/AppBar/{index.09ac84de.js → index.209841e1.js} +4 -4
  5. package/components/BaseModule/{index.51f3fd59.js → index.aee40a28.js} +1 -1
  6. package/components/CommonActions/components/ActionCancel/{index.f6c15443.js → index.797d8195.js} +2 -2
  7. package/components/CommonActions/components/ActionFormCancel/{index.33d49d50.js → index.d6776091.js} +4 -4
  8. package/components/CommonActions/components/ActionFormIntro/{index.0e78a223.js → index.2af9a15d.js} +2 -2
  9. package/components/CommonActions/components/ActionIntro/{index.73b33789.js → index.865af0d8.js} +2 -2
  10. package/components/CommonActions/components/Actions/{index.c7fab394.js → index.841f1da0.js} +2 -2
  11. package/components/DataGrid/assets/icons/datagrid.svg +4 -4
  12. package/components/DataGrid/formatters/ColumnBooleanFormatter/{index.0a1b3610.js → index.5dac4b66.js} +1 -1
  13. package/components/DataGrid/formatters/ColumnConcatenatedValueFormatter/{index.30890ddd.js → index.12d2461f.js} +1 -1
  14. package/components/DataGrid/formatters/ColumnInteractiveCheckFormatter/{index.9aa14799.js → index.7234f4b9.js} +1 -1
  15. package/components/DataGrid/formatters/{index.90ed715b.js → index.93458be0.js} +2 -2
  16. package/components/DataGrid/{index.58b8d903.js → index.fa8634c0.js} +4 -4
  17. package/components/DataGrid/subcomponents/Actions/{index.ea70129c.js → index.5ff19f99.js} +11 -11
  18. package/components/DragResizeWindow/DragResizeWindow.d.ts +1 -1
  19. package/components/DragResizeWindow/{index.8c51fb79.js → index.c0382188.js} +5 -9
  20. package/components/DynamicFilter/{dictionary.10bebb21.js → dictionary.d36bea70.js} +2 -2
  21. package/components/DynamicFilter/{index.a978aea9.js → index.5d0688b9.js} +4 -4
  22. package/components/DynamicFilter/slots/{dynamicFilterSlots.26eaa1b1.js → dynamicFilterSlots.58ee518d.js} +6 -6
  23. package/components/DynamicFilter/store/{index.81a5dd49.js → index.2c9704ee.js} +1 -1
  24. package/components/DynamicFilter/subcomponents/AppliedFilterChip/{index.bc09a76f.js → index.faf637d6.js} +3 -3
  25. package/components/DynamicFilter/subcomponents/AppliedFilters/{index.891b913a.js → index.e1008442.js} +4 -4
  26. package/components/DynamicFilter/subcomponents/DynamicFilterBase/{index.8fbcaf0f.js → index.246c1304.js} +6 -6
  27. package/components/DynamicFilter/subcomponents/FieldTypes/BooleanFilter/{index.699a1d82.js → index.5c3063f2.js} +2 -2
  28. package/components/DynamicFilter/subcomponents/FieldTypes/DateTimeFilter/{index.59293b05.js → index.cc477a59.js} +4 -4
  29. package/components/DynamicFilter/subcomponents/FieldTypes/NumberFilter/{index.ca652641.js → index.88bb0dee.js} +3 -3
  30. package/components/DynamicFilter/subcomponents/FieldTypes/SelectFilter/{index.22eac312.js → index.eec7fa42.js} +4 -4
  31. package/components/DynamicFilter/subcomponents/FieldTypes/StringFilter/{index.3e2ae583.js → index.50a0dfb9.js} +3 -3
  32. package/components/DynamicFilter/subcomponents/FieldTypes/{index.0abab72e.js → index.06fb696b.js} +5 -5
  33. package/components/DynamicFilter/subcomponents/FilterActions/{index.06e8baff.js → index.415b11e6.js} +3 -3
  34. package/components/DynamicFilter/subcomponents/InputFilter/{index.b312fd70.js → index.46905747.js} +4 -4
  35. package/components/DynamicFilter/subcomponents/PopoverFilter/{index.eeb15b54.js → index.fe51263d.js} +6 -6
  36. package/components/DynamicFilter/subcomponents/PopoverMenuFields/{index.43857f7a.js → index.0b52a455.js} +2 -2
  37. package/components/FieldLabel/{index.2aaaac6f.js → index.13a833c9.js} +4 -4
  38. package/components/GridLayout/{index.2f9a1cff.js → index.95c84243.js} +2 -2
  39. package/components/GridLayout/subcomponents/Griditem/{index.f904e69e.js → index.99bf4b5c.js} +3 -3
  40. package/components/GridLayout/subcomponents/Responsive/{index.ef62bea3.js → index.83d6fc44.js} +1 -1
  41. package/components/GridLayout/subcomponents/SizeProvider/{index.2707f196.js → index.bf9a859a.js} +1 -1
  42. package/components/HelperText/{index.25891eda.js → index.83b28429.js} +2 -2
  43. package/components/Icon/{index.89dba21c.js → index.f9cd9367.js} +3 -3
  44. package/components/Image/{index.94949e55.js → index.eec95206.js} +2 -2
  45. package/components/LanguagePopover/{index.54aff144.js → index.becad7ef.js} +4 -4
  46. package/components/LinearProgressIndeterminate/{index.e25f9201.js → index.87be4283.js} +2 -2
  47. package/components/LoadingError/{index.ef15a461.js → index.8b7a3162.js} +5 -5
  48. package/components/MFIsolationApp/{index.083fad1c.js → index.d20c8218.js} +2 -2
  49. package/components/MFLoader/{index.342598a8.js → index.3e7b4cb5.js} +2 -2
  50. package/components/ModalDialog/{index.545ef5eb.js → index.ec0ab622.js} +4 -4
  51. package/components/NavLink/{index.6a6f3671.js → index.cca2c605.js} +2 -2
  52. package/components/NoItemSelected/{index.0d1e8d29.js → index.fa49cac5.js} +1 -1
  53. package/components/ObjectLogs/{index.32555956.js → index.f70e0c0c.js} +9 -9
  54. package/components/PDFViewer/{index.e909be56.js → index.cdc90184.js} +2 -2
  55. package/components/Page/{index.d42de29f.js → index.4759d66c.js} +1 -1
  56. package/components/PaperForm/{index.dbcbd677.js → index.5cc98ed7.js} +2 -2
  57. package/components/Period/{index.76c4e428.js → index.6b0b98c1.js} +4 -4
  58. package/components/PrintingSystem/{index.3381ece1.js → index.0acacf1b.js} +14 -14
  59. package/components/PrintingSystem/subcomponents/BodyNode/{index.da4c231c.js → index.779838e5.js} +1 -1
  60. package/components/PrintingSystem/subcomponents/ChartNode/{index.4871c76e.js → index.6a572f3d.js} +1 -1
  61. package/components/PrintingSystem/subcomponents/DividerNode/{index.f768c90f.js → index.a121da0d.js} +1 -1
  62. package/components/PrintingSystem/subcomponents/FooterNode/{index.725664fd.js → index.0775edc0.js} +1 -1
  63. package/components/PrintingSystem/subcomponents/GridNode/{index.caebf8e6.js → index.8d196cc6.js} +1 -1
  64. package/components/PrintingSystem/subcomponents/HeaderNode/{index.a5f20406.js → index.1542db42.js} +1 -1
  65. package/components/PrintingSystem/subcomponents/PaperNode/{index.6d2ed690.js → index.34e7cd43.js} +1 -1
  66. package/components/PrintingSystem/subcomponents/PropertyValueNode/{index.ec9d332c.js → index.8f42fe69.js} +1 -1
  67. package/components/PrintingSystem/subcomponents/SectionNode/{index.e9449a3f.js → index.9a39e104.js} +1 -1
  68. package/components/PrintingSystem/subcomponents/TextBoxNode/{index.bf55f5a7.js → index.73fb8756.js} +1 -1
  69. package/components/PropertyValue/{index.9dd592cd.js → index.d1ca87c1.js} +3 -3
  70. package/components/Resizeable/{index.6cbe80f0.js → index.c2f229d6.js} +1 -1
  71. package/components/ScrollBar/{index.aedb43d9.js → index.424bd908.js} +1 -1
  72. package/components/SideBar/{index.edd76204.js → index.2ce72f65.js} +6 -6
  73. package/components/SplitLayout/{index.5289a660.js → index.4265a602.js} +1 -1
  74. package/components/ToastContainer/{index.8f9f75e9.js → index.b5413d7f.js} +3 -3
  75. package/components/animate/LoadingScreen/{index.c5cf3b93.js → index.20b1f443.js} +1 -1
  76. package/components/animate/{index.9c9ee071.js → index.680f5895.js} +1 -1
  77. package/components/areas/components/AreasAdmin/{index.a52bb40d.js → index.b41fe898.js} +15 -15
  78. package/components/areas/components/AreasViewer/classes/index.d.ts +1 -1
  79. package/components/areas/components/AreasViewer/classes/types.d.ts +1 -0
  80. package/components/areas/components/AreasViewer/{index.de8df5d3.js → index.be5f5a9d.js} +73 -36
  81. package/components/areas/contexts/AreasContext/{index.514df5ff.js → index.e4be3c65.js} +4 -4
  82. package/components/areas/hooks/useAreas/{index.6c943645.js → index.ce08327d.js} +1 -1
  83. package/components/areas/types.d.ts +1 -1
  84. package/components/commercial/AppBarCommercial/{index.cac50795.js → index.372ea01e.js} +2 -2
  85. package/components/commercial/SectionCommercial/{index.c967ba14.js → index.026cc71f.js} +2 -2
  86. package/components/commercial/TopBar/{index.85568231.js → index.fff88136.js} +6 -6
  87. package/components/commercial/{index.d872094e.js → index.1ea39cc1.js} +3 -3
  88. package/components/formatters/BooleanFormatter/{index.1da1e6b0.js → index.c29c63fc.js} +2 -2
  89. package/components/formatters/{index.ac081b3a.js → index.5f44ed46.js} +2 -2
  90. package/components/hook-form/HelperError/{index.296a4c82.js → index.f2b943ae.js} +1 -1
  91. package/components/hook-form/RHFAutocomplete/{index.b1c29dd0.js → index.3f11b4dd.js} +6 -6
  92. package/components/hook-form/RHFAutocompleteAsync/{index.fb434e68.js → index.60003c6b.js} +2 -2
  93. package/components/hook-form/RHFCheckbox/{index.140d872f.js → index.3ce32b03.js} +3 -3
  94. package/components/hook-form/RHFCheckbox/styles.d.ts +1 -1
  95. package/components/hook-form/RHFColorPicker/{index.3eb719ac.js → index.21ae7dca.js} +6 -6
  96. package/components/hook-form/RHFDateTime/{index.54f97b37.js → index.0d2b3d0a.js} +4 -4
  97. package/components/hook-form/RHFPeriod/{index.c8238ea4.js → index.c950b5d0.js} +4 -4
  98. package/components/hook-form/RHFRadioGroup/{index.78ec0e22.js → index.87be90b7.js} +1 -1
  99. package/components/hook-form/RHFTextField/{index.984a4dba.js → index.7f95edb6.js} +5 -5
  100. package/components/hook-form/RHFUpload/{index.0516dc8f.js → index.13724496.js} +5 -5
  101. package/components/maps/components/GpsTools/{index.779e5b17.js → index.6da62b64.js} +23 -23
  102. package/components/maps/components/Map/external/googleMutant/index.d.ts +159 -159
  103. package/components/maps/components/Map/{index.14ce256b.js → index.9c3b3cd0.js} +42 -35
  104. package/components/maps/leaflet-geoman.d.ts +1476 -1476
  105. package/components/modal/{WindowBase.a6654e8c.js → WindowBase.6c15797f.js} +3 -3
  106. package/components/modal/{WindowConfirm.38a79eee.js → WindowConfirm.0d48420b.js} +6 -6
  107. package/components/mui_extended/Accordion/{index.0e62423b.js → index.fd738d87.js} +4 -4
  108. package/components/mui_extended/Avatar/{index.edcf899d.js → index.c7b7541f.js} +1 -1
  109. package/components/mui_extended/Badge/{index.a6dceff2.js → index.cb26549b.js} +1 -1
  110. package/components/mui_extended/Button/{index.9c6c173c.js → index.19eb272d.js} +3 -3
  111. package/components/mui_extended/Button/styles.d.ts +1 -1
  112. package/components/mui_extended/{CheckBox.9d43398b.js → CheckBox.d6469bd2.js} +2 -2
  113. package/components/mui_extended/IconButton/{index.42efd85d.js → index.4134de6f.js} +2 -2
  114. package/components/mui_extended/MenuActions/{index.b1f8a1be.js → index.ee8887b7.js} +5 -5
  115. package/components/mui_extended/Pager/{index.3687d8b6.js → index.015df2f9.js} +4 -4
  116. package/components/mui_extended/Popover/{index.58f8522b.js → index.ab4709b3.js} +1 -1
  117. package/components/mui_extended/Stack/{index.b0690398.js → index.53be5d28.js} +1 -1
  118. package/components/mui_extended/Tab/{index.8a0bd49c.js → index.7abd42e8.js} +1 -1
  119. package/components/mui_extended/Tabs/styles.d.ts +1 -1
  120. package/components/mui_extended/ToggleButton/{index.c4e62f10.js → index.a34836ba.js} +1 -1
  121. package/components/mui_extended/ToggleIconButton/{index.7635e223.js → index.1f4121fa.js} +1 -1
  122. package/components/mui_extended/Typography/{index.24a872e2.js → index.202945af.js} +1 -1
  123. package/components/popups/PopupsProvider/{index.776c62e7.js → index.9a23e1d0.js} +6 -1
  124. package/components/popups/PopupsViewer/{index.eaa54c6c.js → index.fb409d20.js} +12 -12
  125. package/components/popups/PopupsViewer/slots/{index.154e4e5f.js → index.37ef2263.js} +1 -1
  126. package/components/popups/PopupsViewer/slots/popupsViewerSlots.00d8493c.js +46 -0
  127. package/components/popups/components/PopupsProvider/contexts/PopupsContext/types.d.ts +6 -1
  128. package/components/popups/components/PopupsViewer/PopupsViewer.d.ts +3 -4
  129. package/components/popups/components/PopupsViewer/constants.d.ts +0 -1
  130. package/components/popups/components/PopupsViewer/slots/popupsViewerSlots.d.ts +3 -3
  131. package/components/popups/components/PopupsViewer/slots/slots.d.ts +1 -1
  132. package/components/popups/components/PopupsViewer/types.d.ts +1 -1
  133. package/contexts/ModalContext/{index.7f4d2b18.js → index.eb616dfb.js} +1 -1
  134. package/contexts/RHFormContext/{index.19edaacb.js → index.2ced89c0.js} +1 -1
  135. package/hooks/useFormAddEdit/{index.aa9cc210.js → index.5f204081.js} +2 -2
  136. package/hooks/useModal/{index.a2a50f01.js → index.33e4befd.js} +1 -1
  137. package/hooks/useTab/{index.c0a8f413.js → index.bcbaa818.js} +1 -1
  138. package/index.js +133 -133
  139. package/package.json +1 -1
  140. package/{react-draggable.1c1ba224.js → react-draggable.310e3387.js} +1 -1
  141. package/{react-resizable.a59c14f4.js → react-resizable.3755959b.js} +2 -2
  142. package/styles/{DynamicFilter.27c16026.js → DynamicFilter.557ee3a7.js} +1 -1
  143. package/styles/{index.59da2f54.js → index.cabe6a64.js} +19 -11
  144. package/vite-env.d.ts +4 -4
  145. package/components/popups/PopupsViewer/slots/popupsViewerSlots.45032030.js +0 -39
  146. /package/utils/{index.14912462.js → index.78d1638f.js} +0 -0
@@ -1,1476 +1,1476 @@
1
- import * as L from 'leaflet';
2
-
3
- // redeclare module, maintains compatibility with @types/leaflet
4
- declare module 'leaflet' {
5
- /**
6
- * Extends built in leaflet Layer Options.
7
- */
8
- interface LayerOptions {
9
- pmIgnore?: boolean;
10
- snapIgnore?: boolean;
11
- }
12
-
13
- /**
14
- * Extends built in leaflet Map Options.
15
- */
16
- interface MapOptions {
17
- pmIgnore?: boolean;
18
- }
19
-
20
- /**
21
- * Extends built in leaflet Map.
22
- */
23
- interface Map {
24
- pm: PM.PMMap;
25
- }
26
-
27
- /**
28
- * Extends built in leaflet Path.
29
- */
30
- interface Path {
31
- pm: PM.PMLayer;
32
- }
33
- /**
34
- * Extends built in leaflet ImageOverlay.
35
- */
36
- interface ImageOverlay {
37
- pm: PM.PMLayer;
38
- }
39
-
40
- /**
41
- * Extends built in leaflet LayerGroup.
42
- */
43
- interface LayerGroup {
44
- pm: PM.PMLayerGroup;
45
- }
46
-
47
- /**
48
- * Extends built in leaflet MarkerOptions with options for Text-Layer
49
- */
50
- interface MarkerOptions {
51
- textMarker?: boolean;
52
- text?: string;
53
- }
54
-
55
- /**
56
- * Extends built in leaflet Marker.
57
- */
58
- interface Marker {
59
- pm: PM.PMLayer;
60
- }
61
-
62
- /**
63
- * Extends @types/leaflet events...
64
- *
65
- * Todo: This is kind of a mess, and it makes all these event handlers show
66
- * up on Layers and Map. Leaflet itself is based around Evented, and @types/leaflet
67
- * makes this very hard to work around.
68
- *
69
- */
70
- interface Evented {
71
- /******************************************
72
- *
73
- * AVAILABLE ON MAP + LAYER, THESE ARE OK ON EVENTED.
74
- *
75
- ********************************************/
76
-
77
- /** Fired when a layer is removed via Removal Mode. */
78
- on(type: 'pm:remove', fn: PM.RemoveEventHandler): this;
79
- once(type: 'pm:remove', fn: PM.RemoveEventHandler): this;
80
- off(type: 'pm:remove', fn?: PM.RemoveEventHandler): this;
81
-
82
- /** Fired when the layer being cut. Draw+Edit Mode*/
83
- on(type: 'pm:cut', fn: PM.CutEventHandler): this;
84
- once(type: 'pm:cut', fn: PM.CutEventHandler): this;
85
- off(type: 'pm:cut', fn?: PM.CutEventHandler): this;
86
-
87
- /** Fired when rotation is enabled for a layer. */
88
- on(type: 'pm:rotateenable', fn: PM.RotateEnableEventHandler): this;
89
- once(type: 'pm:rotateenable', fn: PM.RotateEnableEventHandler): this;
90
- off(type: 'pm:rotateenable', fn?: PM.RotateEnableEventHandler): this;
91
-
92
- /** Fired when rotation is disabled for a layer. */
93
- on(type: 'pm:rotatedisable', fn: PM.RotateDisableEventHandler): this;
94
- once(type: 'pm:rotatedisable', fn: PM.RotateDisableEventHandler): this;
95
- off(type: 'pm:rotatedisable', fn?: PM.RotateDisableEventHandler): this;
96
-
97
- /** Fired when rotation starts on a layer. */
98
- on(type: 'pm:rotatestart', fn: PM.RotateStartEventHandler): this;
99
- once(type: 'pm:rotatestart', fn: PM.RotateStartEventHandler): this;
100
- off(type: 'pm:rotatestart', fn?: PM.RotateStartEventHandler): this;
101
-
102
- /** Fired when a layer is rotated. */
103
- on(type: 'pm:rotate', fn: PM.RotateEventHandler): this;
104
- once(type: 'pm:rotate', fn: PM.RotateEventHandler): this;
105
- off(type: 'pm:rotate', fn?: PM.RotateEventHandler): this;
106
-
107
- /** Fired when rotation ends on a layer. */
108
- on(type: 'pm:rotateend', fn: PM.RotateEndEventHandler): this;
109
- once(type: 'pm:rotateend', fn: PM.RotateEndEventHandler): this;
110
- off(type: 'pm:rotateend', fn?: PM.RotateEndEventHandler): this;
111
-
112
- /******************************************
113
- *
114
- * TODO: DRAW/EDIT MODE EVENTS LAYER ONLY
115
- *
116
- ********************************************/
117
-
118
- /** Fired during a marker move/drag. */
119
- on(type: 'pm:snapdrag', fn: PM.SnapEventHandler): this;
120
- once(type: 'pm:snapdrag', fn: PM.SnapEventHandler): this;
121
- off(type: 'pm:snapdrag', fn?: PM.SnapEventHandler): this;
122
-
123
- /** Fired when a vertex is snapped. */
124
- on(type: 'pm:snap', fn: PM.SnapEventHandler): this;
125
- once(type: 'pm:snap', fn: PM.SnapEventHandler): this;
126
- off(type: 'pm:snap', fn?: PM.SnapEventHandler): this;
127
-
128
- /** Fired when a vertex is unsnapped. */
129
- on(type: 'pm:unsnap', fn: PM.SnapEventHandler): this;
130
- once(type: 'pm:unsnap', fn: PM.SnapEventHandler): this;
131
- off(type: 'pm:unsnap', fn?: PM.SnapEventHandler): this;
132
-
133
- /** Called when the center of a circle is placed/moved. */
134
- on(type: 'pm:centerplaced', fn: PM.CenterPlacedEventHandler): this;
135
- once(type: 'pm:centerplaced', fn: PM.CenterPlacedEventHandler): this;
136
- off(type: 'pm:centerplaced', fn?: PM.CenterPlacedEventHandler): this;
137
-
138
- /******************************************
139
- *
140
- * TODO: CUT/EDIT MODE EVENTS LAYER ONLY
141
- *
142
- ********************************************/
143
-
144
- /** Fired when a layer is edited. */
145
- on(type: 'pm:edit', fn: PM.EditEventHandler): this;
146
- once(type: 'pm:edit', fn: PM.EditEventHandler): this;
147
- off(type: 'pm:edit', fn?: PM.EditEventHandler): this;
148
-
149
- /******************************************
150
- *
151
- * TODO: DRAW MODE EVENTS ON MAP ONLY
152
- *
153
- ********************************************/
154
-
155
- /** Fired when Drawing Mode is toggled. */
156
- on(
157
- type: 'pm:globaldrawmodetoggled',
158
- fn: PM.GlobalDrawModeToggledEventHandler,
159
- context?: any,
160
- ): L.Evented;
161
- once(
162
- type: 'pm:globaldrawmodetoggled',
163
- fn: PM.GlobalDrawModeToggledEventHandler,
164
- context?: any,
165
- ): L.Evented;
166
- off(
167
- type: 'pm:globaldrawmodetoggled',
168
- fn?: PM.GlobalDrawModeToggledEventHandler,
169
- context?: any,
170
- ): L.Evented;
171
-
172
- /** Called when drawing mode is enabled. Payload includes the shape type and working layer. */
173
- on(type: 'pm:drawstart', fn: PM.DrawStartEventHandler, context?: any): L.Evented;
174
- once(type: 'pm:drawstart', fn: PM.DrawStartEventHandler, context?: any): L.Evented;
175
- off(type: 'pm:drawstart', fn?: PM.DrawStartEventHandler, context?: any): L.Evented;
176
-
177
- /** Called when drawing mode is disabled. Payload includes the shape type. */
178
- on(type: 'pm:drawend', fn: PM.DrawEndEventHandler, context?: any): L.Evented;
179
- once(type: 'pm:drawend', fn: PM.DrawEndEventHandler, context?: any): L.Evented;
180
- off(type: 'pm:drawend', fn?: PM.DrawEndEventHandler, context?: any): L.Evented;
181
-
182
- /** Called when drawing mode is disabled. Payload includes the shape type. */
183
- on(type: 'pm:create', fn: PM.CreateEventHandler, context?: any): L.Evented;
184
- once(type: 'pm:create', fn: PM.CreateEventHandler, context?: any): L.Evented;
185
- off(type: 'pm:create', fn?: PM.CreateEventHandler, context?: any): L.Evented;
186
-
187
- /******************************************
188
- *
189
- * TODO: DRAW MODE EVENTS ON LAYER ONLY
190
- *
191
- ********************************************/
192
-
193
- /** Called when a new vertex is added. */
194
- on(type: 'pm:vertexadded', fn: PM.VertexAddedEventHandler): this;
195
- once(type: 'pm:vertexadded', fn: PM.VertexAddedEventHandler): this;
196
- off(type: 'pm:vertexadded', fn?: PM.VertexAddedEventHandler): this;
197
-
198
- /******************************************
199
- *
200
- * TODO: EDIT MODE EVENTS ON LAYER ONLY
201
- *
202
- ********************************************/
203
-
204
- /** Fired when edit mode is disabled and a layer is edited and its coordinates have changed. */
205
- on(type: 'pm:update', fn: PM.UpdateEventHandler): this;
206
- once(type: 'pm:update', fn: PM.UpdateEventHandler): this;
207
- off(type: 'pm:update', fn?: PM.UpdateEventHandler): this;
208
-
209
- /** Fired when edit mode on a layer is enabled. */
210
- on(type: 'pm:enable', fn: PM.EnableEventHandler): this;
211
- once(type: 'pm:enable', fn: PM.EnableEventHandler): this;
212
- off(type: 'pm:enable', fn?: PM.EnableEventHandler): this;
213
-
214
- /** Fired when edit mode on a layer is disabled. */
215
- on(type: 'pm:disable', fn: PM.DisableEventHandler): this;
216
- once(type: 'pm:disable', fn: PM.DisableEventHandler): this;
217
- off(type: 'pm:disable', fn?: PM.DisableEventHandler): this;
218
-
219
- /** Fired when a vertex is added. */
220
- on(type: 'pm:vertexadded', fn: PM.VertexAddedEventHandler2): this;
221
- once(type: 'pm:vertexadded', fn: PM.VertexAddedEventHandler2): this;
222
- off(type: 'pm:vertexadded', fn?: PM.VertexAddedEventHandler2): this;
223
-
224
- /** Fired when a vertex is removed. */
225
- on(type: 'pm:vertexremoved', fn: PM.VertexRemovedEventHandler): this;
226
- once(type: 'pm:vertexremoved', fn: PM.VertexRemovedEventHandler): this;
227
- off(type: 'pm:vertexremoved', fn?: PM.VertexRemovedEventHandler): this;
228
-
229
- /** Fired when a vertex is clicked. */
230
- on(type: 'pm:vertexclick', fn: PM.VertexClickEventHandler): this;
231
- once(type: 'pm:vertexclick', fn: PM.VertexClickEventHandler): this;
232
- off(type: 'pm:vertexclick', fn?: PM.VertexClickEventHandler): this;
233
-
234
- /** Fired when dragging of a marker which corresponds to a vertex starts. */
235
- on(type: 'pm:markerdragstart', fn: PM.MarkerDragStartEventHandler): this;
236
- once(type: 'pm:markerdragstart', fn: PM.MarkerDragStartEventHandler): this;
237
- off(type: 'pm:markerdragstart', fn?: PM.MarkerDragStartEventHandler): this;
238
-
239
- /** Fired when dragging a vertex-marker. */
240
- on(type: 'pm:markerdrag', fn: PM.MarkerDragEventHandler): this;
241
- once(type: 'pm:markerdrag', fn: PM.MarkerDragEventHandler): this;
242
- off(type: 'pm:markerdrag', fn?: PM.MarkerDragEventHandler): this;
243
-
244
- /** Fired when dragging of a vertex-marker ends. */
245
- on(type: 'pm:markerdragend', fn: PM.MarkerDragEndEventHandler): this;
246
- once(type: 'pm:markerdragend', fn: PM.MarkerDragEndEventHandler): this;
247
- off(type: 'pm:markerdragend', fn?: PM.MarkerDragEndEventHandler): this;
248
-
249
- /** Fired when coords of a layer are reset. E.g. by self-intersection.. */
250
- on(type: 'pm:layerreset', fn: PM.LayerResetEventHandler): this;
251
- once(type: 'pm:layerreset', fn: PM.LayerResetEventHandler): this;
252
- off(type: 'pm:layerreset', fn?: PM.LayerResetEventHandler): this;
253
-
254
- /** When allowSelfIntersection: false, this event is fired as soon as a self-intersection is detected. */
255
- on(type: 'pm:intersect', fn: PM.IntersectEventHandler): this;
256
- once(type: 'pm:intersect', fn: PM.IntersectEventHandler): this;
257
- off(type: 'pm:intersect', fn?: PM.IntersectEventHandler): this;
258
-
259
- /** Fired coordinates of the layer changed. */
260
- on(type: 'pm:change', fn: PM.ChangeEventHandler): this;
261
- once(type: 'pm:change', fn: PM.ChangeEventHandler): this;
262
- off(type: 'pm:change', fn?: PM.ChangeEventHandler): this;
263
-
264
- /** Fired when the text of a layer is changed. */
265
- on(type: 'pm:textchange', fn: PM.TextChangeEventHandler): this;
266
- once(type: 'pm:textchange', fn: PM.TextChangeEventHandler): this;
267
- off(type: 'pm:textchange', fn?: PM.TextChangeEventHandler): this;
268
-
269
- /** Fired when the text layer is focused. */
270
- on(type: 'pm:textfocus', fn: PM.TextFocusEventHandler): this;
271
- once(type: 'pm:textfocus', fn: PM.TextFocusEventHandler): this;
272
- off(type: 'pm:textfocus', fn?: PM.TextFocusEventHandler): this;
273
-
274
- /** Fired when the text layer is blurred. */
275
- on(type: 'pm:textblur', fn: PM.TextBlurEventHandler): this;
276
- once(type: 'pm:textblur', fn: PM.TextBlurEventHandler): this;
277
- off(type: 'pm:textblur', fn?: PM.TextBlurEventHandler): this;
278
-
279
- /******************************************
280
- *
281
- * TODO: EDIT MODE EVENTS ON MAP ONLY
282
- *
283
- ********************************************/
284
-
285
- /** Fired when Edit Mode is toggled. */
286
- on(type: 'pm:globaleditmodetoggled', fn: PM.GlobalEditModeToggledEventHandler): this;
287
- once(type: 'pm:globaleditmodetoggled', fn: PM.GlobalEditModeToggledEventHandler): this;
288
- off(type: 'pm:globaleditmodetoggled', fn?: PM.GlobalEditModeToggledEventHandler): this;
289
-
290
- /******************************************
291
- *
292
- * TODO: DRAG MODE EVENTS ON MAP ONLY
293
- *
294
- ********************************************/
295
-
296
- /** Fired when Drag Mode is toggled. */
297
- on(type: 'pm:globaldragmodetoggled', fn: PM.GlobalDragModeToggledEventHandler): this;
298
- once(type: 'pm:globaldragmodetoggled', fn: PM.GlobalDragModeToggledEventHandler): this;
299
- off(type: 'pm:globaldragmodetoggled', fn?: PM.GlobalDragModeToggledEventHandler): this;
300
-
301
- /******************************************
302
- *
303
- * TODO: DRAG MODE EVENTS ON LAYER ONLY
304
- *
305
- ********************************************/
306
-
307
- /** Fired when a layer starts being dragged. */
308
- on(type: 'pm:dragstart', fn: PM.DragStartEventHandler): this;
309
- once(type: 'pm:dragstart', fn: PM.DragStartEventHandler): this;
310
- off(type: 'pm:dragstart', fn?: PM.DragStartEventHandler): this;
311
-
312
- /** Fired when a layer is dragged. */
313
- on(type: 'pm:drag', fn: PM.DragEventHandler): this;
314
- once(type: 'pm:drag', fn: PM.DragEventHandler): this;
315
- off(type: 'pm:drag', fn?: PM.DragEventHandler): this;
316
-
317
- /** Fired when a layer stops being dragged. */
318
- on(type: 'pm:dragend', fn: PM.DragEndEventHandler): this;
319
- once(type: 'pm:dragend', fn: PM.DragEndEventHandler): this;
320
- off(type: 'pm:dragend', fn?: PM.DragEndEventHandler): this;
321
-
322
- /** Fired when drag mode on a layer is enabled. */
323
- on(type: 'pm:dragenable', fn: PM.DragEnableEventHandler): this;
324
- once(type: 'pm:dragenable', fn: PM.DragEnableEventHandler): this;
325
- off(type: 'pm:dragenable', fn?: PM.DragEnableEventHandler): this;
326
-
327
- /** Fired when drag mode on a layer is disabled. */
328
- on(type: 'pm:dragdisable', fn: PM.DragDisableEventHandler): this;
329
- once(type: 'pm:dragdisable', fn: PM.DragDisableEventHandler): this;
330
- off(type: 'pm:dragdisable', fn?: PM.DragDisableEventHandler): this;
331
-
332
- /******************************************
333
- *
334
- * TODO: REMOVE MODE EVENTS ON MAP ONLY
335
- *
336
- ********************************************/
337
-
338
- /** Fired when Removal Mode is toggled. */
339
- on(type: 'pm:globalremovalmodetoggled', fn: PM.GlobalRemovalModeToggledEventHandler): this;
340
- once(type: 'pm:globalremovalmodetoggled', fn: PM.GlobalRemovalModeToggledEventHandler): this;
341
- off(type: 'pm:globalremovalmodetoggled', fn?: PM.GlobalRemovalModeToggledEventHandler): this;
342
-
343
- /******************************************
344
- *
345
- * TODO: CUT MODE EVENTS ON MAP ONLY
346
- *
347
- ********************************************/
348
-
349
- /** Fired when a layer is removed via Removal Mode. */
350
- on(type: 'pm:globalcutmodetoggled', fn: PM.GlobalCutModeToggledEventHandler): this;
351
- once(type: 'pm:globalcutmodetoggled', fn: PM.GlobalCutModeToggledEventHandler): this;
352
- off(type: 'pm:globalcutmodetoggled', fn?: PM.GlobalCutModeToggledEventHandler): this;
353
-
354
- /******************************************
355
- *
356
- * TODO: ROTATE MODE EVENTS ON MAP ONLY
357
- *
358
- ********************************************/
359
-
360
- /** Fired when Rotate Mode is toggled. */
361
- on(type: 'pm:globalrotatemodetoggled', fn: PM.GlobalRotateModeToggledEventHandler): this;
362
- once(type: 'pm:globalrotatemodetoggled', fn: PM.GlobalRotateModeToggledEventHandler): this;
363
- off(type: 'pm:globalrotatemodetoggled', fn?: PM.GlobalRotateModeToggledEventHandler): this;
364
-
365
- /******************************************
366
- *
367
- * TODO: TRANSLATION EVENTS ON MAP ONLY
368
- *
369
- ********************************************/
370
-
371
- /** Standard Leaflet event. Fired when any layer is removed. */
372
- on(type: 'pm:langchange', fn: PM.LangChangeEventHandler): this;
373
- once(type: 'pm:langchange', fn: PM.LangChangeEventHandler): this;
374
- off(type: 'pm:langchange', fn?: PM.LangChangeEventHandler): this;
375
-
376
- /******************************************
377
- *
378
- * TODO: CONTROL EVENTS ON MAP ONLY
379
- *
380
- ********************************************/
381
-
382
- /** Fired when a Toolbar button is clicked. */
383
- on(type: 'pm:buttonclick', fn: PM.ButtonClickEventHandler): this;
384
- once(type: 'pm:buttonclick', fn: PM.ButtonClickEventHandler): this;
385
- off(type: 'pm:buttonclick', fn?: PM.ButtonClickEventHandler): this;
386
-
387
- /** Fired when a Toolbar action is clicked. */
388
- on(type: 'pm:actionclick', fn: PM.ActionClickEventHandler): this;
389
- once(type: 'pm:actionclick', fn: PM.ActionClickEventHandler): this;
390
- off(type: 'pm:actionclick', fn?: PM.ActionClickEventHandler): this;
391
-
392
- /******************************************
393
- *
394
- * TODO: Keyboard EVENT ON MAP ONLY
395
- *
396
- ********************************************/
397
-
398
- /** Fired when `keydown` or `keyup` on the document is fired. */
399
- on(type: 'pm:keyevent', fn: PM.KeyboardKeyEventHandler): this;
400
- once(type: 'pm:keyevent', fn: PM.KeyboardKeyEventHandler): this;
401
- off(type: 'pm:keyevent', fn?: PM.KeyboardKeyEventHandler): this;
402
- }
403
-
404
- namespace PM {
405
- export const version: string;
406
-
407
- /** Supported shape names. 'ImageOverlay' is in Edit Mode only. Also accepts custom shape name. */
408
- type SUPPORTED_SHAPES =
409
- | 'Marker'
410
- | 'Circle'
411
- | 'Line'
412
- | 'Rectangle'
413
- | 'Polygon'
414
- | 'Cut'
415
- | 'CircleMarker'
416
- | 'ImageOverlay'
417
- | 'Text'
418
- | string;
419
-
420
- type SupportLocales =
421
- | 'cz'
422
- | 'da'
423
- | 'de'
424
- | 'el'
425
- | 'en'
426
- | 'es'
427
- | 'fa'
428
- | 'fi'
429
- | 'fr'
430
- | 'hu'
431
- | 'id'
432
- | 'it'
433
- | 'ja'
434
- | 'ko'
435
- | 'nl'
436
- | 'no'
437
- | 'pl'
438
- | 'pt_br'
439
- | 'ro'
440
- | 'ru'
441
- | 'sv'
442
- | 'tr'
443
- | 'ua'
444
- | 'zh'
445
- | 'zh_tw';
446
-
447
- /**
448
- * Changes default registration of leaflet-geoman on leaflet layers.
449
- *
450
- * @param optIn - if true, a layers pmIgnore property has to be set to false to get initiated.
451
- */
452
- function setOptIn(optIn: boolean): void;
453
-
454
- /**
455
- * Enable leaflet-geoman on an ignored layer.
456
- *
457
- * @param layer - re-reads layer.options.pmIgnore to initialize leaflet-geoman.
458
- */
459
- function reInitLayer(layer: L.Layer): void;
460
-
461
- /**
462
- * PM map interface.
463
- */
464
- interface PMMap extends PMDrawMap, PMEditMap, PMDragMap, PMRemoveMap, PMCutMap, PMRotateMap {
465
- Toolbar: PMMapToolbar;
466
-
467
- Keyboard: PMMapKeyboard;
468
-
469
- /** Adds the Toolbar to the map. */
470
- addControls(options?: ToolbarOptions): void;
471
-
472
- /** Toggle the visiblity of the Toolbar. */
473
- removeControls(): void;
474
-
475
- /** Returns true if the Toolbar is visible on the map. */
476
- controlsVisible(): boolean;
477
-
478
- /** Toggle the visiblity of the Toolbar. */
479
- toggleControls(): void;
480
-
481
- setLang(
482
- lang: SupportLocales,
483
- customTranslations?: Translations,
484
- fallbackLanguage?: string,
485
- ): void;
486
-
487
- /** Set globalOptions and apply them. */
488
- setGlobalOptions(options: GlobalOptions): void;
489
-
490
- /** Apply the current globalOptions to all existing layers. */
491
- applyGlobalOptions(): void;
492
-
493
- /** Returns the globalOptions. */
494
- getGlobalOptions(): GlobalOptions;
495
- }
496
-
497
- class Translations {
498
- tooltips?: {
499
- placeMarker?: string;
500
- firstVertex?: string;
501
- continueLine?: string;
502
- finishLine?: string;
503
- finishPoly?: string;
504
- finishRect?: string;
505
- startCircle?: string;
506
- finishCircle?: string;
507
- placeCircleMarker?: string;
508
- placeText?: string;
509
- };
510
-
511
- actions?: {
512
- finish?: string;
513
- cancel?: string;
514
- removeLastVertex?: string;
515
- };
516
-
517
- buttonTitles?: {
518
- drawMarkerButton?: string;
519
- drawPolyButton?: string;
520
- drawLineButton?: string;
521
- drawCircleButton?: string;
522
- drawRectButton?: string;
523
- editButton?: string;
524
- dragButton?: string;
525
- cutButton?: string;
526
- deleteButton?: string;
527
- drawCircleMarkerButton?: string;
528
- snappingButton?: string;
529
- pinningButton?: string;
530
- rotateButton?: string;
531
- drawTextButton?: string;
532
- scaleButton?: string;
533
- autoTracingButton?: string;
534
- };
535
-
536
- measurements?: {
537
- totalLength?: string;
538
- segmentLength?: string;
539
- area?: string;
540
- radius?: string;
541
- perimeter?: string;
542
- height?: string;
543
- width?: string;
544
- coordinates?: string;
545
- coordinatesMarker?: string;
546
- };
547
- }
548
-
549
- type ACTION_NAMES = 'cancel' | 'removeLastVertex' | 'finish' | 'finishMode';
550
-
551
- class Action {
552
- text: string;
553
- onClick?: (e: any) => void;
554
- }
555
-
556
- type TOOLBAR_CONTROL_ORDER =
557
- | 'drawMarker'
558
- | 'drawCircleMarker'
559
- | 'drawPolyline'
560
- | 'drawRectangle'
561
- | 'drawPolygon'
562
- | 'drawCircle'
563
- | 'editMode'
564
- | 'dragMode'
565
- | 'cutPolygon'
566
- | 'removalMode'
567
- | 'rotateMode'
568
- | 'drawText'
569
- | string;
570
-
571
- interface PMMapToolbar {
572
- /** Pass an array of button names to reorder the buttons in the Toolbar. */
573
- changeControlOrder(order?: TOOLBAR_CONTROL_ORDER[]): void;
574
-
575
- /** Receive the current order with. */
576
- getControlOrder(): TOOLBAR_CONTROL_ORDER[];
577
-
578
- /** The position of a block (draw, edit, custom, options⭐) in the Toolbar can be changed. If not set, the value from position of the Toolbar is taken. */
579
- setBlockPosition(
580
- block: 'draw' | 'edit' | 'custom' | 'options',
581
- position: L.ControlPosition,
582
- ): void;
583
-
584
- /** Returns a Object with the positions for all blocks */
585
- getBlockPositions(): BlockPositions;
586
-
587
- /** To add a custom Control to the Toolbar */
588
- createCustomControl(options: CustomControlOptions): void;
589
-
590
- /** Creates a copy of a draw Control. Returns the drawInstance and the control. */
591
- copyDrawControl(copyInstance: string, options?: CustomControlOptions): void;
592
-
593
- /** Change the actions of an existing button. */
594
- changeActionsOfControl(name: string, actions: (ACTION_NAMES | Action)[]): void;
595
-
596
- /** Disable button by control name */
597
- setButtonDisabled(name: TOOLBAR_CONTROL_ORDER, state: boolean): void;
598
- }
599
-
600
- type KEYBOARD_EVENT_TYPE = 'current' | 'keydown' | 'keyup';
601
-
602
- interface PMMapKeyboard {
603
- /** Pass an array of button names to reorder the buttons in the Toolbar. */
604
- getLastKeyEvent(type: KEYBOARD_EVENT_TYPE[]): KeyboardKeyEventHandler;
605
-
606
- /** Returns the current pressed key. [KeyboardEvent.key](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key). */
607
- getPressedKey(): string;
608
-
609
- /** Returns true if the `Shift` key is currently pressed. */
610
- isShiftKeyPressed(): boolean;
611
-
612
- /** Returns true if the `Alt` key is currently pressed. */
613
- isAltKeyPressed(): boolean;
614
-
615
- /** Returns true if the `Ctrl` key is currently pressed. */
616
- isCtrlKeyPressed(): boolean;
617
-
618
- /** Returns true if the `Meta` key is currently pressed. */
619
- isMetaKeyPressed(): boolean;
620
- }
621
-
622
- interface Button {
623
- /** Actions */
624
- actions: (ACTION_NAMES | Action)[];
625
-
626
- /** Function fired after clicking the control. */
627
- afterClick: () => void;
628
-
629
- /** CSS class with the Icon. */
630
- className: string;
631
-
632
- /** If true, other buttons will be disabled on click (default: true) */
633
- disableOtherButtons: boolean;
634
-
635
- /** Control can be toggled. */
636
- doToggle: boolean;
637
-
638
- /** Extending Class f. ex. Line, Polygon, ... L.PM.Draw.EXTENDINGCLASS */
639
- jsClass: string;
640
-
641
- /** Function fired when clicking the control. */
642
- onClick: () => void;
643
-
644
- position: L.ControlPosition;
645
-
646
- /** Text showing when you hover the control. */
647
- title: string;
648
-
649
- /** Toggle state true -> enabled, false -> disabled (default: false) */
650
- toggleStatus: boolean;
651
-
652
- /** Block of the control. 'options' is ⭐ only. */
653
- tool?: 'draw' | 'edit' | 'custom' | 'options';
654
- }
655
-
656
- interface CustomControlOptions {
657
- /** Name of the control */
658
- name: string;
659
-
660
- /** Block of the control. 'options' is ⭐ only. */
661
- block?: 'draw' | 'edit' | 'custom' | 'options';
662
-
663
- /** Text showing when you hover the control. */
664
- title?: string;
665
-
666
- /** CSS class with the Icon. */
667
- className?: string;
668
-
669
- /** Function fired when clicking the control. */
670
- onClick?: () => void;
671
-
672
- /** Function fired after clicking the control. */
673
- afterClick?: () => void;
674
-
675
- /** Actions */
676
- actions?: (ACTION_NAMES | Action)[];
677
-
678
- /** Control can be toggled. */
679
- toggle?: boolean;
680
-
681
- /** Control is disabled. */
682
- disabled?: boolean;
683
- }
684
-
685
- type PANE =
686
- | 'mapPane'
687
- | 'tilePane'
688
- | 'overlayPane'
689
- | 'shadowPane'
690
- | 'markerPane'
691
- | 'tooltipPane'
692
- | 'popupPane'
693
- | string;
694
-
695
- interface GlobalOptions extends DrawModeOptions, EditModeOptions {
696
- /** Add the created layers to a layergroup instead to the map. */
697
- layerGroup?: L.Map | L.LayerGroup;
698
-
699
- /** Prioritize the order of snapping. Default: ['Marker','CircleMarker','Circle','Line','Polygon','Rectangle']. */
700
- snappingOrder?: SUPPORTED_SHAPES[];
701
-
702
- /** Defines in which panes the layers and helper vertices are created. Default: { vertexPane: 'markerPane', layerPane: 'overlayPane', markerPane: 'markerPane' } */
703
- panes?: { vertexPane?: PANE; layerPane?: PANE; markerPane?: PANE };
704
- }
705
-
706
- interface PMDrawMap {
707
- /** Enable Draw Mode with the passed shape. */
708
- enableDraw(shape: SUPPORTED_SHAPES, options?: DrawModeOptions): void;
709
-
710
- /** Disable all drawing */
711
- disableDraw(shape?: SUPPORTED_SHAPES): void;
712
-
713
- /** Draw */
714
- Draw: Draw;
715
-
716
- /** Returns true if global Draw Mode is enabled. false when disabled. */
717
- globalDrawModeEnabled(): boolean;
718
-
719
- /** Customize the style of the drawn layer. Only for L.Path layers. Shapes can be excluded with a ignoreShapes array or merged with the current style with merge: true in optionsModifier. */
720
- setPathOptions(
721
- options: L.PathOptions,
722
- optionsModifier?: { ignoreShapes?: SUPPORTED_SHAPES[]; merge?: boolean },
723
- ): void;
724
-
725
- /** Returns all Geoman layers on the map as array. Pass true to get a L.FeatureGroup. */
726
- getGeomanLayers(asFeatureGroup: true): L.FeatureGroup;
727
- getGeomanLayers(asFeatureGroup?: false): L.Layer[];
728
-
729
- /** Returns all Geoman draw layers on the map as array. Pass true to get a L.FeatureGroup. */
730
- getGeomanDrawLayers(asFeatureGroup: true): L.FeatureGroup;
731
- getGeomanDrawLayers(asFeatureGroup?: false): L.Layer[];
732
- }
733
-
734
- interface PMEditMap {
735
- /** Enables edit mode. The passed options are preserved, even when the mode is enabled via the Toolbar */
736
- enableGlobalEditMode(options?: EditModeOptions): void;
737
-
738
- /** Disables global edit mode. */
739
- disableGlobalEditMode(): void;
740
-
741
- /** Toggles global edit mode. */
742
- toggleGlobalEditMode(options?: EditModeOptions): void;
743
-
744
- /** Returns true if global edit mode is enabled. false when disabled. */
745
- globalEditModeEnabled(): boolean;
746
- }
747
-
748
- interface PMDragMap {
749
- /** Enables global drag mode. */
750
- enableGlobalDragMode(): void;
751
-
752
- /** Disables global drag mode. */
753
- disableGlobalDragMode(): void;
754
-
755
- /** Toggles global drag mode. */
756
- toggleGlobalDragMode(): void;
757
-
758
- /** Returns true if global drag mode is enabled. false when disabled. */
759
- globalDragModeEnabled(): boolean;
760
- }
761
-
762
- interface PMRemoveMap {
763
- /** Enables global removal mode. */
764
- enableGlobalRemovalMode(): void;
765
-
766
- /** Disables global removal mode. */
767
- disableGlobalRemovalMode(): void;
768
-
769
- /** Toggles global removal mode. */
770
- toggleGlobalRemovalMode(): void;
771
-
772
- /** Returns true if global removal mode is enabled. false when disabled. */
773
- globalRemovalModeEnabled(): boolean;
774
- }
775
-
776
- interface PMCutMap {
777
- /** Enables global cut mode. */
778
- enableGlobalCutMode(options?: CutModeOptions): void;
779
-
780
- /** Disables global cut mode. */
781
- disableGlobalCutMode(): void;
782
-
783
- /** Toggles global cut mode. */
784
- toggleGlobalCutMode(options?: CutModeOptions): void;
785
-
786
- /** Returns true if global cut mode is enabled. false when disabled. */
787
- globalCutModeEnabled(): boolean;
788
- }
789
-
790
- interface PMRotateMap {
791
- /** Enables global rotate mode. */
792
- enableGlobalRotateMode(): void;
793
-
794
- /** Disables global rotate mode. */
795
- disableGlobalRotateMode(): void;
796
-
797
- /** Toggles global rotate mode. */
798
- toggleGlobalRotateMode(): void;
799
-
800
- /** Returns true if global rotate mode is enabled. false when disabled. */
801
- globalRotateModeEnabled(): boolean;
802
- }
803
-
804
- interface PMRotateLayer {
805
- /** Enables rotate mode on the layer. */
806
- enableRotate(): void;
807
-
808
- /** Disables rotate mode on the layer. */
809
- disableRotate(): void;
810
-
811
- /** Returns if rotate mode is enabled for the layer. */
812
- rotateEnabled(): boolean;
813
-
814
- /** Rotates the layer by x degrees. */
815
- rotateLayer(degrees: number): void;
816
-
817
- /** Rotates the layer to x degrees. */
818
- rotateLayerToAngle(degrees: number): void;
819
-
820
- /** Returns the angle of the layer in degrees. */
821
- getAngle(): number;
822
-
823
- /** Set the initial angle of the layer in degrees. */
824
- setInitAngle(degrees: number): void;
825
-
826
- /** Returns the center of rotation. */
827
- getRotationCenter(): L.LatLng;
828
-
829
- /** Change the center of rotation. Pass null to use the shape's default center. */
830
- setRotationCenter(center: L.LatLng | null): void;
831
- }
832
-
833
- interface Draw {
834
- /** Array of available shapes. */
835
- getShapes(): SUPPORTED_SHAPES[];
836
-
837
- /** Returns the active shape. */
838
- getActiveShape(): SUPPORTED_SHAPES;
839
-
840
- /** Set path options */
841
- setPathOptions(options: L.PathOptions): void;
842
-
843
- /** Set options */
844
- setOptions(options: DrawModeOptions): void;
845
-
846
- /** Get options */
847
- getOptions(): DrawModeOptions;
848
- }
849
-
850
- interface CutModeOptions {
851
- allowSelfIntersection?: boolean;
852
- }
853
-
854
- type VertexValidationHandler = (e: { layer: L.Layer; marker: L.Marker; event: any }) => boolean;
855
-
856
- interface EditModeOptions {
857
- /** Enable snapping to other layers vertices for precision drawing. Can be disabled by holding the ALT key (default:true). */
858
- snappable?: boolean;
859
-
860
- /** The distance to another vertex when a snap should happen (default:20). */
861
- snapDistance?: number;
862
-
863
- /** Allow self intersections (default:true). */
864
- allowSelfIntersection?: boolean;
865
-
866
- /** Allow self intersections (default:true). */
867
- allowSelfIntersectionEdit?: boolean;
868
-
869
- /** Disable the removal of markers via right click / vertices via removeVertexOn. (default:false). */
870
- preventMarkerRemoval?: boolean;
871
-
872
- /** If true, vertex removal that cause a layer to fall below their minimum required vertices will remove the entire layer. If false, these vertices can't be removed. Minimum vertices are 2 for Lines and 3 for Polygons (default:true). */
873
- removeLayerBelowMinVertexCount?: boolean;
874
-
875
- /** Defines which layers should dragged with this layer together. true syncs all layers in the same LayerGroup(s) or you pass an `Array` of layers to sync. (default:false). */
876
- syncLayersOnDrag?: L.Layer[] | boolean;
877
-
878
- /** Edit-Mode for the layer can disabled (`pm.enable()`). (default:true). */
879
- allowEditing?: boolean;
880
-
881
- /** Removing can be disabled for the layer. (default:true). */
882
- allowRemoval?: boolean;
883
-
884
- /** Layer can be prevented from cutting. (default:true). */
885
- allowCutting?: boolean;
886
-
887
- /** Layer can be prevented from rotation. (default:true). */
888
- allowRotation?: boolean;
889
-
890
- /** Dragging can be disabled for the layer. (default:true). */
891
- draggable?: boolean;
892
-
893
- /** Leaflet layer event to add a vertex to a Line or Polygon, like dblclick. (default:click). */
894
- addVertexOn?: 'click' | 'dblclick' | 'mousedown' | 'mouseover' | 'mouseout' | 'contextmenu';
895
-
896
- /** A function for validation if a vertex (of a Line / Polygon) is allowed to add. It passes a object with `[layer, marker, event}`. For example to check if the layer has a certain property or if the `Ctrl` key is pressed. (default:undefined). */
897
- addVertexValidation?: undefined | VertexValidationHandler;
898
-
899
- /** Leaflet layer event to remove a vertex from a Line or Polygon, like dblclick. (default:contextmenu). */
900
- removeVertexOn?:
901
- | 'click'
902
- | 'dblclick'
903
- | 'mousedown'
904
- | 'mouseover'
905
- | 'mouseout'
906
- | 'contextmenu';
907
-
908
- /** A function for validation if a vertex (of a Line / Polygon) is allowed to remove. It passes a object with `[layer, marker, event}`. For example to check if the layer has a certain property or if the `Ctrl` key is pressed. */
909
- removeVertexValidation?: undefined | VertexValidationHandler;
910
-
911
- /** A function for validation if a vertex / helper-marker is allowed to move / drag. It passes a object with `[layer, marker, event}`. For example to check if the layer has a certain property or if the `Ctrl` key is pressed. */
912
- moveVertexValidation?: undefined | VertexValidationHandler;
913
-
914
- /** Shows only n markers closest to the cursor. Use -1 for no limit (default:-1). */
915
- limitMarkersToCount?: number;
916
-
917
- /** Shows markers when under the given zoom level ⭐ */
918
- limitMarkersToZoom?: number;
919
-
920
- /** Shows only markers in the viewport ⭐ */
921
- limitMarkersToViewport?: boolean;
922
-
923
- /** Shows markers only after the layer was clicked ⭐ */
924
- limitMarkersToClick?: boolean;
925
-
926
- /** Pin shared vertices/markers together during edit ⭐ */
927
- pinning?: boolean;
928
-
929
- /** Hide the middle Markers in edit mode from Polyline and Polygon. */
930
- hideMiddleMarkers?: boolean;
931
- }
932
-
933
- interface TextOptions {
934
- /** Predefined text for Text-Layer. */
935
- text?: string;
936
-
937
- /** Directly after placing the Text-Layer text editing is activated. */
938
- focusAfterDraw?: boolean;
939
-
940
- /** The text layer is removed if no text is written. */
941
- removeIfEmpty?: boolean;
942
-
943
- /** Custom CSS Classes for Text-Layer. Separated by a space. */
944
- className?: string;
945
- }
946
-
947
- interface DrawModeOptions {
948
- /** Enable snapping to other layers vertices for precision drawing. Can be disabled by holding the ALT key (default:true). */
949
- snappable?: boolean;
950
-
951
- /** The distance to another vertex when a snap should happen (default:20). */
952
- snapDistance?: number;
953
-
954
- /** Allow snapping in the middle of two vertices (middleMarker)(default:false). */
955
- snapMiddle?: boolean;
956
-
957
- /** Allow snapping between two vertices. (default: true)*/
958
- snapSegment?: boolean;
959
-
960
- /** Require the last point of a shape to be snapped. (default: false). */
961
- requireSnapToFinish?: boolean;
962
-
963
- /** Show helpful tooltips for your user (default:true). */
964
- tooltips?: boolean;
965
-
966
- /** Allow self intersections (default:true). */
967
- allowSelfIntersection?: boolean;
968
-
969
- /** Leaflet path options for the lines between drawn vertices/markers. (default:{color:'red'}). */
970
- templineStyle?: L.CircleMarkerOptions;
971
-
972
- /** Leaflet path options for the helper line between last drawn vertex and the cursor. (default:{color:'red',dashArray:[5,5]}). */
973
- hintlineStyle?: L.PathOptions;
974
-
975
- /** Leaflet path options for the drawn layer (Only for L.Path layers). (default:null). */
976
- pathOptions?: L.PathOptions;
977
-
978
- /** Leaflet marker options (only for drawing markers). (default:{draggable:true}). */
979
- markerStyle?: L.MarkerOptions;
980
-
981
- /** Show a marker at the cursor (default:true). */
982
- cursorMarker?: boolean;
983
-
984
- /** Leaflet layer event to finish the drawn shape (default:null). */
985
- finishOn?:
986
- | null
987
- | 'click'
988
- | 'dblclick'
989
- | 'mousedown'
990
- | 'mouseover'
991
- | 'mouseout'
992
- | 'contextmenu'
993
- | 'snap';
994
-
995
- /** Hide the middle Markers in edit mode from Polyline and Polygon. (default:false). */
996
- hideMiddleMarkers?: boolean;
997
-
998
- /** Set the min radius of a Circle. (default:null). */
999
- minRadiusCircle?: number;
1000
-
1001
- /** Set the max radius of a Circle. (default:null). */
1002
- maxRadiusCircle?: number;
1003
-
1004
- /** Set the min radius of a CircleMarker. (default:null). */
1005
- minRadiusCircleMarker?: number;
1006
-
1007
- /** Set the max radius of a CircleMarker. (default:null). */
1008
- maxRadiusCircleMarker?: number;
1009
-
1010
- /**
1011
- * @deprecated Use resizeableCircleMarker instead
1012
- */
1013
- editable?: boolean;
1014
-
1015
- /** Enables radius editing while drawing a Circle (default:true). */
1016
- resizableCircle?: boolean;
1017
-
1018
- /** Enables radius editing while drawing a CircleMarker (default:false). */
1019
- resizeableCircleMarker?: boolean;
1020
-
1021
- /** Markers and CircleMarkers are editable during the draw-session (you can drag them around immediately after drawing them) (default:true). */
1022
- markerEditable?: boolean;
1023
-
1024
- /** Draw-Mode stays enabled after finishing a layer to immediately draw the next layer. Defaults to true for Markers and CircleMarkers and false for all other layers. */
1025
- continueDrawing?: boolean;
1026
-
1027
- /** Angel of rectangle. */
1028
- rectangleAngle?: number;
1029
-
1030
- /** Cut-Mode: Only the passed layers can be cut. Cutted layers are removed from the Array until no layers are left anymore and cutting is working on all layers again. (Default: []) */
1031
- layersToCut?: L.Layer[];
1032
-
1033
- textOptions?: TextOptions;
1034
- }
1035
-
1036
- /**
1037
- * PM toolbar options.
1038
- */
1039
- interface ToolbarOptions {
1040
- /** Toolbar position. */
1041
- position?: L.ControlPosition;
1042
-
1043
- /** The position of each block can be customized. If not set, the value from position is taken. */
1044
- positions?: BlockPositions;
1045
-
1046
- /** Adds button to draw Markers (default:true) */
1047
- drawMarker?: boolean;
1048
-
1049
- /** Adds button to draw CircleMarkers (default:true) */
1050
- drawCircleMarker?: boolean;
1051
-
1052
- /** Adds button to draw Line (default:true) */
1053
- drawPolyline?: boolean;
1054
-
1055
- /** Adds button to draw Rectangle (default:true) */
1056
- drawRectangle?: boolean;
1057
-
1058
- /** Adds button to draw Polygon (default:true) */
1059
- drawPolygon?: boolean;
1060
-
1061
- /** Adds button to draw Text (default:true) */
1062
- drawText?: boolean;
1063
-
1064
- /** Adds button to draw Circle (default:true) */
1065
- drawCircle?: boolean;
1066
-
1067
- /** Adds button to toggle edit mode for all layers (default:true) */
1068
- editMode?: boolean;
1069
-
1070
- /** Adds button to toggle drag mode for all layers (default:true) */
1071
- dragMode?: boolean;
1072
-
1073
- /** Adds button to cut a hole in a polygon or line (default:true) */
1074
- cutPolygon?: boolean;
1075
-
1076
- /** Adds a button to remove layers (default:true) */
1077
- removalMode?: boolean;
1078
-
1079
- /** Adds a button to rotate layers (default:true) */
1080
- rotateMode?: boolean;
1081
-
1082
- /** All buttons will be displayed as one block Customize Controls (default:false) */
1083
- oneBlock?: boolean;
1084
-
1085
- /** Shows all draw buttons / buttons in the draw block (default:true) */
1086
- drawControls?: boolean;
1087
-
1088
- /** Shows all edit buttons / buttons in the edit block (default:true) */
1089
- editControls?: boolean;
1090
-
1091
- /** Shows all buttons in the custom block (default:true) */
1092
- customControls?: boolean;
1093
-
1094
- /** Shows all options buttons / buttons in the option block ⭐ */
1095
- optionsControls?: boolean;
1096
-
1097
- /** Adds a button to toggle the Pinning Option ⭐ */
1098
- pinningOption?: boolean;
1099
-
1100
- /** Adds a button to toggle the Snapping Option ⭐ */
1101
- snappingOption?: boolean;
1102
-
1103
- /** Adds custom button (default:true) */
1104
- // The type of custom buttons are always boolean but TS needs the other types defined too.
1105
- [key: string]: L.ControlPosition | BlockPositions | boolean | undefined;
1106
- }
1107
-
1108
- /** the position of each block. */
1109
- interface BlockPositions {
1110
- /** Draw control position (default:''). '' also refers to this position. */
1111
- draw?: L.ControlPosition;
1112
-
1113
- /** Edit control position (default:''). */
1114
- edit?: L.ControlPosition;
1115
-
1116
- /** Custom control position (default:''). */
1117
- custom?: L.ControlPosition;
1118
-
1119
- /** Options control position (default:'') ⭐ */
1120
- options?: L.ControlPosition;
1121
- }
1122
-
1123
- interface PMEditLayer extends PMEditTextLayer {
1124
- /** Enables edit mode. The passed options are preserved, even when the mode is enabled via the Toolbar */
1125
- enable(options?: EditModeOptions): void;
1126
-
1127
- /** Sets layer options */
1128
- setOptions(options?: EditModeOptions): void;
1129
-
1130
- /** Gets layer options */
1131
- getOptions(): EditModeOptions;
1132
-
1133
- /** Disables edit mode. */
1134
- disable(): void;
1135
-
1136
- /** Toggles edit mode. Passed options are preserved. */
1137
- toggleEdit(options?: EditModeOptions): void;
1138
-
1139
- /** Returns true if edit mode is enabled. false when disabled. */
1140
- enabled(): boolean;
1141
-
1142
- /** Returns true if Line or Polygon has a self intersection. */
1143
- hasSelfIntersection(): boolean;
1144
-
1145
- /** Removes the layer with the same checks as GlobalRemovalMode. */
1146
- remove(): void;
1147
- }
1148
-
1149
- interface PMEditTextLayer {
1150
- /** Activate text editing of Text-Layer. */
1151
- focus(): void;
1152
-
1153
- /** Deactivate text editing of Text-Layer. */
1154
- blur(): void;
1155
-
1156
- /** Is text editing active on Text-Layer. */
1157
- hasFocus(): boolean;
1158
-
1159
- /** Returns the `<textarea>` DOM element of Text-Layer. */
1160
- getElement(): HTMLElement;
1161
-
1162
- /** Set text on Text-Layer. */
1163
- setText(text: string): void;
1164
-
1165
- /** Returns the text of Text-Layer. */
1166
- getText(): string;
1167
- }
1168
-
1169
- interface PMDragLayer {
1170
- /** Enables dragging for the layer. */
1171
- enableLayerDrag(): void;
1172
-
1173
- /** Disables dragging for the layer. */
1174
- disableLayerDrag(): void;
1175
-
1176
- /** Returns if the layer is currently dragging. */
1177
- dragging(): boolean;
1178
-
1179
- /** Returns if drag mode is enabled for the layer. */
1180
- layerDragEnabled(): boolean;
1181
- }
1182
-
1183
- interface PMLayer extends PMRotateLayer, PMEditLayer, PMDragLayer {
1184
- /** Get shape of the layer. */
1185
- getShape(): SUPPORTED_SHAPES;
1186
- }
1187
-
1188
- interface PMLayerGroup {
1189
- /** Enables edit mode for all child layers. The passed options are preserved, even when the mode is enabled via the Toolbar */
1190
- enable(options?: EditModeOptions): void;
1191
-
1192
- /** Disable edit mode for all child layers.*/
1193
- disable(): void;
1194
-
1195
- /** Returns if minimum one layer is enabled. */
1196
- enabled(): boolean;
1197
-
1198
- /** Toggle enable / disable on all layers. */
1199
- toggleEdit(options?: EditModeOptions): void;
1200
-
1201
- /** Returns the layers of the LayerGroup. `deep=true` return also the children of LayerGroup children. `filterGeoman=true` filter out layers that don't have Leaflet-Geoman or temporary stuff. `filterGroupsOut=true` does not return the LayerGroup layers self. (Default: `deep=false`,`filterGeoman=true`, `filterGroupsOut=true` ) */
1202
- getLayers(deep?: boolean, filterGeoman?: boolean, filterGroupsOut?: boolean): L.Layer[];
1203
-
1204
- /** Apply Leaflet-Geoman options to all children. The passed options are preserved, even when the mode is enabled via the Toolbar */
1205
- setOptions(options?: EditModeOptions): void;
1206
-
1207
- /** Returns the options of the LayerGroup. */
1208
- getOptions(): EditModeOptions;
1209
-
1210
- /** Returns if currently a layer in the LayerGroup is dragging. */
1211
- dragging(): boolean;
1212
- }
1213
-
1214
- namespace Utils {
1215
- /** Returns the translation of the passed path. path = json-string f.ex. tooltips.placeMarker */
1216
- function getTranslation(path: string): string;
1217
-
1218
- /** Returns the middle LatLng between two LatLngs */
1219
- function calcMiddleLatLng(map: L.Map, latlng1: L.LatLng, latlng2: L.LatLng): L.LatLng;
1220
-
1221
- /** Returns all layers that are available for Geoman */
1222
- function findLayers(map: L.Map): L.Layer[];
1223
-
1224
- /** Converts a circle into a polygon with default 60 sides. For CRS.Simple maps `withBearing` needs to be false */
1225
- function circleToPolygon(circle: L.Circle, sides?: number, withBearing?: boolean): L.Polygon;
1226
-
1227
- /** Converts a px-radius (CircleMarker) to meter-radius (Circle). The center LatLng is needed because the earth has different projections on different places. **/
1228
- function pxRadiusToMeterRadius(radiusInPx: number, map: L.Map, center: L.LatLng): number;
1229
- }
1230
-
1231
- /**
1232
- * DRAW MODE MAP EVENT HANDLERS
1233
- */
1234
-
1235
- export type GlobalDrawModeToggledEventHandler = (event: {
1236
- enabled: boolean;
1237
- shape: PM.SUPPORTED_SHAPES;
1238
- map: L.Map;
1239
- }) => void;
1240
- export type DrawStartEventHandler = (e: {
1241
- shape: PM.SUPPORTED_SHAPES;
1242
- workingLayer: L.Layer;
1243
- }) => void;
1244
- export type DrawEndEventHandler = (e: { shape: PM.SUPPORTED_SHAPES }) => void;
1245
- export type CreateEventHandler = (e: { shape: PM.SUPPORTED_SHAPES; layer: L.Layer }) => void;
1246
-
1247
- /**
1248
- * DRAW MODE LAYER EVENT HANDLERS
1249
- */
1250
-
1251
- export type VertexAddedEventHandler = (e: {
1252
- shape: PM.SUPPORTED_SHAPES;
1253
- workingLayer: L.Layer;
1254
- marker: L.Marker;
1255
- latlng: L.LatLng;
1256
- }) => void;
1257
- export type SnapEventHandler = (e: {
1258
- shape: PM.SUPPORTED_SHAPES;
1259
- distance: number;
1260
- layer: L.Layer;
1261
- workingLayer: L.Layer;
1262
- marker: L.Marker;
1263
- layerInteractedWith: L.Layer;
1264
- segement: any;
1265
- snapLatLng: L.LatLng;
1266
- }) => void;
1267
- export type CenterPlacedEventHandler = (e: {
1268
- shape: PM.SUPPORTED_SHAPES;
1269
- workingLayer: L.Layer;
1270
- latlng: L.LatLng;
1271
- }) => void;
1272
-
1273
- /**
1274
- * EDIT MODE LAYER EVENT HANDLERS
1275
- */
1276
-
1277
- export type EditEventHandler = (e: { shape: PM.SUPPORTED_SHAPES; layer: L.Layer }) => void;
1278
- export type UpdateEventHandler = (e: { shape: PM.SUPPORTED_SHAPES; layer: L.Layer }) => void;
1279
- export type EnableEventHandler = (e: { shape: PM.SUPPORTED_SHAPES; layer: L.Layer }) => void;
1280
- export type DisableEventHandler = (e: { shape: PM.SUPPORTED_SHAPES; layer: L.Layer }) => void;
1281
- export type VertexAddedEventHandler2 = (e: {
1282
- layer: L.Layer;
1283
- indexPath: number;
1284
- latlng: L.LatLng;
1285
- marker: L.Marker;
1286
- shape: PM.SUPPORTED_SHAPES;
1287
- }) => void;
1288
- export type VertexRemovedEventHandler = (e: {
1289
- layer: L.Layer;
1290
- indexPath: number;
1291
- marker: L.Marker;
1292
- shape: PM.SUPPORTED_SHAPES;
1293
- }) => void;
1294
- export type VertexClickEventHandler = (e: {
1295
- layer: L.Layer;
1296
- indexPath: number;
1297
- markerEvent: any;
1298
- shape: PM.SUPPORTED_SHAPES;
1299
- }) => void;
1300
- export type MarkerDragStartEventHandler = (e: {
1301
- layer: L.Layer;
1302
- indexPath: number;
1303
- markerEvent: any;
1304
- shape: PM.SUPPORTED_SHAPES;
1305
- }) => void;
1306
- export type MarkerDragEventHandler = (e: {
1307
- layer: L.Layer;
1308
- indexPath: number;
1309
- markerEvent: any;
1310
- shape: PM.SUPPORTED_SHAPES;
1311
- }) => void;
1312
- export type MarkerDragEndEventHandler = (e: {
1313
- layer: L.Layer;
1314
- indexPath: number;
1315
- markerEvent: any;
1316
- shape: PM.SUPPORTED_SHAPES;
1317
- intersectionRest: boolean;
1318
- }) => void;
1319
- export type LayerResetEventHandler = (e: {
1320
- layer: L.Layer;
1321
- indexPath: number;
1322
- markerEvent: any;
1323
- shape: PM.SUPPORTED_SHAPES;
1324
- }) => void;
1325
- export type IntersectEventHandler = (e: {
1326
- shape: PM.SUPPORTED_SHAPES;
1327
- layer: L.Layer;
1328
- intersection: L.LatLng;
1329
- }) => void;
1330
- export type ChangeEventHandler = (e: {
1331
- shape: PM.SUPPORTED_SHAPES;
1332
- layer: L.Layer;
1333
- latlngs: L.LatLng | L.LatLng[];
1334
- }) => void;
1335
- export type TextChangeEventHandler = (e: {
1336
- shape: PM.SUPPORTED_SHAPES;
1337
- layer: L.Layer;
1338
- text: string;
1339
- }) => void;
1340
- export type TextFocusEventHandler = (e: { shape: PM.SUPPORTED_SHAPES; layer: L.Layer }) => void;
1341
- export type TextBlurEventHandler = (e: { shape: PM.SUPPORTED_SHAPES; layer: L.Layer }) => void;
1342
-
1343
- /**
1344
- * EDIT MODE MAP EVENT HANDLERS
1345
- */
1346
- export type GlobalEditModeToggledEventHandler = (event: {
1347
- enabled: boolean;
1348
- map: L.Map;
1349
- }) => void;
1350
-
1351
- /**
1352
- * DRAG MODE MAP EVENT HANDLERS
1353
- */
1354
- export type GlobalDragModeToggledEventHandler = (event: {
1355
- enabled: boolean;
1356
- map: L.Map;
1357
- }) => void;
1358
-
1359
- /**
1360
- * DRAG MODE LAYER EVENT HANDLERS
1361
- */
1362
- export type DragStartEventHandler = (e: { layer: L.Layer; shape: PM.SUPPORTED_SHAPES }) => void;
1363
- export type DragEventHandler = (e: {
1364
- layer: L.Layer;
1365
- containerPoint: any;
1366
- latlng: L.LatLng;
1367
- layerPoint: L.Point;
1368
- originalEvent: any;
1369
- shape: PM.SUPPORTED_SHAPES;
1370
- }) => void;
1371
- export type DragEndEventHandler = (e: { layer: L.Layer; shape: PM.SUPPORTED_SHAPES }) => void;
1372
- export type DragEnableEventHandler = (e: {
1373
- layer: L.Layer;
1374
- shape: PM.SUPPORTED_SHAPES;
1375
- }) => void;
1376
- export type DragDisableEventHandler = (e: {
1377
- layer: L.Layer;
1378
- shape: PM.SUPPORTED_SHAPES;
1379
- }) => void;
1380
-
1381
- /**
1382
- * REMOVE MODE LAYER EVENT HANDLERS
1383
- */
1384
-
1385
- export type RemoveEventHandler = (e: { layer: L.Layer; shape: PM.SUPPORTED_SHAPES }) => void;
1386
-
1387
- /**
1388
- * REMOVE MODE MAP EVENT HANDLERS
1389
- */
1390
- export type GlobalRemovalModeToggledEventHandler = (e: {
1391
- enabled: boolean;
1392
- map: L.Map;
1393
- }) => void;
1394
-
1395
- /**
1396
- * CUT MODE MAP EVENT HANDLERS
1397
- */
1398
- export type GlobalCutModeToggledEventHandler = (e: { enabled: boolean; map: L.Map }) => void;
1399
- export type CutEventHandler = (e: {
1400
- layer: L.Layer;
1401
- originalLayer: L.Layer;
1402
- shape: PM.SUPPORTED_SHAPES;
1403
- }) => void;
1404
-
1405
- /**
1406
- * ROTATE MODE LAYER EVENT HANDLERS
1407
- */
1408
- export type RotateEnableEventHandler = (e: {
1409
- layer: L.Layer;
1410
- helpLayer: L.Layer;
1411
- shape: PM.SUPPORTED_SHAPES;
1412
- }) => void;
1413
- export type RotateDisableEventHandler = (e: {
1414
- layer: L.Layer;
1415
- shape: PM.SUPPORTED_SHAPES;
1416
- }) => void;
1417
- export type RotateStartEventHandler = (e: {
1418
- layer: L.Layer;
1419
- helpLayer: L.Layer;
1420
- startAngle: number;
1421
- originLatLngs: L.LatLng[];
1422
- }) => void;
1423
- export type RotateEventHandler = (e: {
1424
- layer: L.Layer;
1425
- helpLayer: L.Layer;
1426
- startAngle: number;
1427
- angle: number;
1428
- angleDiff: number;
1429
- oldLatLngs: L.LatLng[];
1430
- newLatLngs: L.LatLng[];
1431
- }) => void;
1432
- export type RotateEndEventHandler = (e: {
1433
- layer: L.Layer;
1434
- helpLayer: L.Layer;
1435
- startAngle: number;
1436
- angle: number;
1437
- originLatLngs: L.LatLng[];
1438
- newLatLngs: L.LatLng[];
1439
- }) => void;
1440
-
1441
- /**
1442
- * ROTATE MODE MAP EVENT HANDLERS
1443
- */
1444
- export type GlobalRotateModeToggledEventHandler = (e: { enabled: boolean; map: L.Map }) => void;
1445
-
1446
- /**
1447
- * TRANSLATION EVENT HANDLERS
1448
- */
1449
- export type LangChangeEventHandler = (e: {
1450
- activeLang: string;
1451
- oldLang: string;
1452
- fallback: string;
1453
- translations: PM.Translations;
1454
- }) => void;
1455
-
1456
- /**
1457
- * CONTROL MAP EVENT HANDLERS
1458
- */
1459
- export type ButtonClickEventHandler = (e: { btnName: string; button: PM.Button }) => void;
1460
- export type ActionClickEventHandler = (e: {
1461
- text: string;
1462
- action: string;
1463
- btnName: string;
1464
- button: PM.Button;
1465
- }) => void;
1466
-
1467
- /**
1468
- * KEYBOARD EVENT HANDLERS
1469
- */
1470
- export type KeyboardKeyEventHandler = (e: {
1471
- focusOn: 'document' | 'map';
1472
- eventType: 'keydown' | 'keyup';
1473
- event: any;
1474
- }) => void;
1475
- }
1476
- }
1
+ import * as L from 'leaflet';
2
+
3
+ // redeclare module, maintains compatibility with @types/leaflet
4
+ declare module 'leaflet' {
5
+ /**
6
+ * Extends built in leaflet Layer Options.
7
+ */
8
+ interface LayerOptions {
9
+ pmIgnore?: boolean;
10
+ snapIgnore?: boolean;
11
+ }
12
+
13
+ /**
14
+ * Extends built in leaflet Map Options.
15
+ */
16
+ interface MapOptions {
17
+ pmIgnore?: boolean;
18
+ }
19
+
20
+ /**
21
+ * Extends built in leaflet Map.
22
+ */
23
+ interface Map {
24
+ pm: PM.PMMap;
25
+ }
26
+
27
+ /**
28
+ * Extends built in leaflet Path.
29
+ */
30
+ interface Path {
31
+ pm: PM.PMLayer;
32
+ }
33
+ /**
34
+ * Extends built in leaflet ImageOverlay.
35
+ */
36
+ interface ImageOverlay {
37
+ pm: PM.PMLayer;
38
+ }
39
+
40
+ /**
41
+ * Extends built in leaflet LayerGroup.
42
+ */
43
+ interface LayerGroup {
44
+ pm: PM.PMLayerGroup;
45
+ }
46
+
47
+ /**
48
+ * Extends built in leaflet MarkerOptions with options for Text-Layer
49
+ */
50
+ interface MarkerOptions {
51
+ textMarker?: boolean;
52
+ text?: string;
53
+ }
54
+
55
+ /**
56
+ * Extends built in leaflet Marker.
57
+ */
58
+ interface Marker {
59
+ pm: PM.PMLayer;
60
+ }
61
+
62
+ /**
63
+ * Extends @types/leaflet events...
64
+ *
65
+ * Todo: This is kind of a mess, and it makes all these event handlers show
66
+ * up on Layers and Map. Leaflet itself is based around Evented, and @types/leaflet
67
+ * makes this very hard to work around.
68
+ *
69
+ */
70
+ interface Evented {
71
+ /******************************************
72
+ *
73
+ * AVAILABLE ON MAP + LAYER, THESE ARE OK ON EVENTED.
74
+ *
75
+ ********************************************/
76
+
77
+ /** Fired when a layer is removed via Removal Mode. */
78
+ on(type: 'pm:remove', fn: PM.RemoveEventHandler): this;
79
+ once(type: 'pm:remove', fn: PM.RemoveEventHandler): this;
80
+ off(type: 'pm:remove', fn?: PM.RemoveEventHandler): this;
81
+
82
+ /** Fired when the layer being cut. Draw+Edit Mode*/
83
+ on(type: 'pm:cut', fn: PM.CutEventHandler): this;
84
+ once(type: 'pm:cut', fn: PM.CutEventHandler): this;
85
+ off(type: 'pm:cut', fn?: PM.CutEventHandler): this;
86
+
87
+ /** Fired when rotation is enabled for a layer. */
88
+ on(type: 'pm:rotateenable', fn: PM.RotateEnableEventHandler): this;
89
+ once(type: 'pm:rotateenable', fn: PM.RotateEnableEventHandler): this;
90
+ off(type: 'pm:rotateenable', fn?: PM.RotateEnableEventHandler): this;
91
+
92
+ /** Fired when rotation is disabled for a layer. */
93
+ on(type: 'pm:rotatedisable', fn: PM.RotateDisableEventHandler): this;
94
+ once(type: 'pm:rotatedisable', fn: PM.RotateDisableEventHandler): this;
95
+ off(type: 'pm:rotatedisable', fn?: PM.RotateDisableEventHandler): this;
96
+
97
+ /** Fired when rotation starts on a layer. */
98
+ on(type: 'pm:rotatestart', fn: PM.RotateStartEventHandler): this;
99
+ once(type: 'pm:rotatestart', fn: PM.RotateStartEventHandler): this;
100
+ off(type: 'pm:rotatestart', fn?: PM.RotateStartEventHandler): this;
101
+
102
+ /** Fired when a layer is rotated. */
103
+ on(type: 'pm:rotate', fn: PM.RotateEventHandler): this;
104
+ once(type: 'pm:rotate', fn: PM.RotateEventHandler): this;
105
+ off(type: 'pm:rotate', fn?: PM.RotateEventHandler): this;
106
+
107
+ /** Fired when rotation ends on a layer. */
108
+ on(type: 'pm:rotateend', fn: PM.RotateEndEventHandler): this;
109
+ once(type: 'pm:rotateend', fn: PM.RotateEndEventHandler): this;
110
+ off(type: 'pm:rotateend', fn?: PM.RotateEndEventHandler): this;
111
+
112
+ /******************************************
113
+ *
114
+ * TODO: DRAW/EDIT MODE EVENTS LAYER ONLY
115
+ *
116
+ ********************************************/
117
+
118
+ /** Fired during a marker move/drag. */
119
+ on(type: 'pm:snapdrag', fn: PM.SnapEventHandler): this;
120
+ once(type: 'pm:snapdrag', fn: PM.SnapEventHandler): this;
121
+ off(type: 'pm:snapdrag', fn?: PM.SnapEventHandler): this;
122
+
123
+ /** Fired when a vertex is snapped. */
124
+ on(type: 'pm:snap', fn: PM.SnapEventHandler): this;
125
+ once(type: 'pm:snap', fn: PM.SnapEventHandler): this;
126
+ off(type: 'pm:snap', fn?: PM.SnapEventHandler): this;
127
+
128
+ /** Fired when a vertex is unsnapped. */
129
+ on(type: 'pm:unsnap', fn: PM.SnapEventHandler): this;
130
+ once(type: 'pm:unsnap', fn: PM.SnapEventHandler): this;
131
+ off(type: 'pm:unsnap', fn?: PM.SnapEventHandler): this;
132
+
133
+ /** Called when the center of a circle is placed/moved. */
134
+ on(type: 'pm:centerplaced', fn: PM.CenterPlacedEventHandler): this;
135
+ once(type: 'pm:centerplaced', fn: PM.CenterPlacedEventHandler): this;
136
+ off(type: 'pm:centerplaced', fn?: PM.CenterPlacedEventHandler): this;
137
+
138
+ /******************************************
139
+ *
140
+ * TODO: CUT/EDIT MODE EVENTS LAYER ONLY
141
+ *
142
+ ********************************************/
143
+
144
+ /** Fired when a layer is edited. */
145
+ on(type: 'pm:edit', fn: PM.EditEventHandler): this;
146
+ once(type: 'pm:edit', fn: PM.EditEventHandler): this;
147
+ off(type: 'pm:edit', fn?: PM.EditEventHandler): this;
148
+
149
+ /******************************************
150
+ *
151
+ * TODO: DRAW MODE EVENTS ON MAP ONLY
152
+ *
153
+ ********************************************/
154
+
155
+ /** Fired when Drawing Mode is toggled. */
156
+ on(
157
+ type: 'pm:globaldrawmodetoggled',
158
+ fn: PM.GlobalDrawModeToggledEventHandler,
159
+ context?: any,
160
+ ): L.Evented;
161
+ once(
162
+ type: 'pm:globaldrawmodetoggled',
163
+ fn: PM.GlobalDrawModeToggledEventHandler,
164
+ context?: any,
165
+ ): L.Evented;
166
+ off(
167
+ type: 'pm:globaldrawmodetoggled',
168
+ fn?: PM.GlobalDrawModeToggledEventHandler,
169
+ context?: any,
170
+ ): L.Evented;
171
+
172
+ /** Called when drawing mode is enabled. Payload includes the shape type and working layer. */
173
+ on(type: 'pm:drawstart', fn: PM.DrawStartEventHandler, context?: any): L.Evented;
174
+ once(type: 'pm:drawstart', fn: PM.DrawStartEventHandler, context?: any): L.Evented;
175
+ off(type: 'pm:drawstart', fn?: PM.DrawStartEventHandler, context?: any): L.Evented;
176
+
177
+ /** Called when drawing mode is disabled. Payload includes the shape type. */
178
+ on(type: 'pm:drawend', fn: PM.DrawEndEventHandler, context?: any): L.Evented;
179
+ once(type: 'pm:drawend', fn: PM.DrawEndEventHandler, context?: any): L.Evented;
180
+ off(type: 'pm:drawend', fn?: PM.DrawEndEventHandler, context?: any): L.Evented;
181
+
182
+ /** Called when drawing mode is disabled. Payload includes the shape type. */
183
+ on(type: 'pm:create', fn: PM.CreateEventHandler, context?: any): L.Evented;
184
+ once(type: 'pm:create', fn: PM.CreateEventHandler, context?: any): L.Evented;
185
+ off(type: 'pm:create', fn?: PM.CreateEventHandler, context?: any): L.Evented;
186
+
187
+ /******************************************
188
+ *
189
+ * TODO: DRAW MODE EVENTS ON LAYER ONLY
190
+ *
191
+ ********************************************/
192
+
193
+ /** Called when a new vertex is added. */
194
+ on(type: 'pm:vertexadded', fn: PM.VertexAddedEventHandler): this;
195
+ once(type: 'pm:vertexadded', fn: PM.VertexAddedEventHandler): this;
196
+ off(type: 'pm:vertexadded', fn?: PM.VertexAddedEventHandler): this;
197
+
198
+ /******************************************
199
+ *
200
+ * TODO: EDIT MODE EVENTS ON LAYER ONLY
201
+ *
202
+ ********************************************/
203
+
204
+ /** Fired when edit mode is disabled and a layer is edited and its coordinates have changed. */
205
+ on(type: 'pm:update', fn: PM.UpdateEventHandler): this;
206
+ once(type: 'pm:update', fn: PM.UpdateEventHandler): this;
207
+ off(type: 'pm:update', fn?: PM.UpdateEventHandler): this;
208
+
209
+ /** Fired when edit mode on a layer is enabled. */
210
+ on(type: 'pm:enable', fn: PM.EnableEventHandler): this;
211
+ once(type: 'pm:enable', fn: PM.EnableEventHandler): this;
212
+ off(type: 'pm:enable', fn?: PM.EnableEventHandler): this;
213
+
214
+ /** Fired when edit mode on a layer is disabled. */
215
+ on(type: 'pm:disable', fn: PM.DisableEventHandler): this;
216
+ once(type: 'pm:disable', fn: PM.DisableEventHandler): this;
217
+ off(type: 'pm:disable', fn?: PM.DisableEventHandler): this;
218
+
219
+ /** Fired when a vertex is added. */
220
+ on(type: 'pm:vertexadded', fn: PM.VertexAddedEventHandler2): this;
221
+ once(type: 'pm:vertexadded', fn: PM.VertexAddedEventHandler2): this;
222
+ off(type: 'pm:vertexadded', fn?: PM.VertexAddedEventHandler2): this;
223
+
224
+ /** Fired when a vertex is removed. */
225
+ on(type: 'pm:vertexremoved', fn: PM.VertexRemovedEventHandler): this;
226
+ once(type: 'pm:vertexremoved', fn: PM.VertexRemovedEventHandler): this;
227
+ off(type: 'pm:vertexremoved', fn?: PM.VertexRemovedEventHandler): this;
228
+
229
+ /** Fired when a vertex is clicked. */
230
+ on(type: 'pm:vertexclick', fn: PM.VertexClickEventHandler): this;
231
+ once(type: 'pm:vertexclick', fn: PM.VertexClickEventHandler): this;
232
+ off(type: 'pm:vertexclick', fn?: PM.VertexClickEventHandler): this;
233
+
234
+ /** Fired when dragging of a marker which corresponds to a vertex starts. */
235
+ on(type: 'pm:markerdragstart', fn: PM.MarkerDragStartEventHandler): this;
236
+ once(type: 'pm:markerdragstart', fn: PM.MarkerDragStartEventHandler): this;
237
+ off(type: 'pm:markerdragstart', fn?: PM.MarkerDragStartEventHandler): this;
238
+
239
+ /** Fired when dragging a vertex-marker. */
240
+ on(type: 'pm:markerdrag', fn: PM.MarkerDragEventHandler): this;
241
+ once(type: 'pm:markerdrag', fn: PM.MarkerDragEventHandler): this;
242
+ off(type: 'pm:markerdrag', fn?: PM.MarkerDragEventHandler): this;
243
+
244
+ /** Fired when dragging of a vertex-marker ends. */
245
+ on(type: 'pm:markerdragend', fn: PM.MarkerDragEndEventHandler): this;
246
+ once(type: 'pm:markerdragend', fn: PM.MarkerDragEndEventHandler): this;
247
+ off(type: 'pm:markerdragend', fn?: PM.MarkerDragEndEventHandler): this;
248
+
249
+ /** Fired when coords of a layer are reset. E.g. by self-intersection.. */
250
+ on(type: 'pm:layerreset', fn: PM.LayerResetEventHandler): this;
251
+ once(type: 'pm:layerreset', fn: PM.LayerResetEventHandler): this;
252
+ off(type: 'pm:layerreset', fn?: PM.LayerResetEventHandler): this;
253
+
254
+ /** When allowSelfIntersection: false, this event is fired as soon as a self-intersection is detected. */
255
+ on(type: 'pm:intersect', fn: PM.IntersectEventHandler): this;
256
+ once(type: 'pm:intersect', fn: PM.IntersectEventHandler): this;
257
+ off(type: 'pm:intersect', fn?: PM.IntersectEventHandler): this;
258
+
259
+ /** Fired coordinates of the layer changed. */
260
+ on(type: 'pm:change', fn: PM.ChangeEventHandler): this;
261
+ once(type: 'pm:change', fn: PM.ChangeEventHandler): this;
262
+ off(type: 'pm:change', fn?: PM.ChangeEventHandler): this;
263
+
264
+ /** Fired when the text of a layer is changed. */
265
+ on(type: 'pm:textchange', fn: PM.TextChangeEventHandler): this;
266
+ once(type: 'pm:textchange', fn: PM.TextChangeEventHandler): this;
267
+ off(type: 'pm:textchange', fn?: PM.TextChangeEventHandler): this;
268
+
269
+ /** Fired when the text layer is focused. */
270
+ on(type: 'pm:textfocus', fn: PM.TextFocusEventHandler): this;
271
+ once(type: 'pm:textfocus', fn: PM.TextFocusEventHandler): this;
272
+ off(type: 'pm:textfocus', fn?: PM.TextFocusEventHandler): this;
273
+
274
+ /** Fired when the text layer is blurred. */
275
+ on(type: 'pm:textblur', fn: PM.TextBlurEventHandler): this;
276
+ once(type: 'pm:textblur', fn: PM.TextBlurEventHandler): this;
277
+ off(type: 'pm:textblur', fn?: PM.TextBlurEventHandler): this;
278
+
279
+ /******************************************
280
+ *
281
+ * TODO: EDIT MODE EVENTS ON MAP ONLY
282
+ *
283
+ ********************************************/
284
+
285
+ /** Fired when Edit Mode is toggled. */
286
+ on(type: 'pm:globaleditmodetoggled', fn: PM.GlobalEditModeToggledEventHandler): this;
287
+ once(type: 'pm:globaleditmodetoggled', fn: PM.GlobalEditModeToggledEventHandler): this;
288
+ off(type: 'pm:globaleditmodetoggled', fn?: PM.GlobalEditModeToggledEventHandler): this;
289
+
290
+ /******************************************
291
+ *
292
+ * TODO: DRAG MODE EVENTS ON MAP ONLY
293
+ *
294
+ ********************************************/
295
+
296
+ /** Fired when Drag Mode is toggled. */
297
+ on(type: 'pm:globaldragmodetoggled', fn: PM.GlobalDragModeToggledEventHandler): this;
298
+ once(type: 'pm:globaldragmodetoggled', fn: PM.GlobalDragModeToggledEventHandler): this;
299
+ off(type: 'pm:globaldragmodetoggled', fn?: PM.GlobalDragModeToggledEventHandler): this;
300
+
301
+ /******************************************
302
+ *
303
+ * TODO: DRAG MODE EVENTS ON LAYER ONLY
304
+ *
305
+ ********************************************/
306
+
307
+ /** Fired when a layer starts being dragged. */
308
+ on(type: 'pm:dragstart', fn: PM.DragStartEventHandler): this;
309
+ once(type: 'pm:dragstart', fn: PM.DragStartEventHandler): this;
310
+ off(type: 'pm:dragstart', fn?: PM.DragStartEventHandler): this;
311
+
312
+ /** Fired when a layer is dragged. */
313
+ on(type: 'pm:drag', fn: PM.DragEventHandler): this;
314
+ once(type: 'pm:drag', fn: PM.DragEventHandler): this;
315
+ off(type: 'pm:drag', fn?: PM.DragEventHandler): this;
316
+
317
+ /** Fired when a layer stops being dragged. */
318
+ on(type: 'pm:dragend', fn: PM.DragEndEventHandler): this;
319
+ once(type: 'pm:dragend', fn: PM.DragEndEventHandler): this;
320
+ off(type: 'pm:dragend', fn?: PM.DragEndEventHandler): this;
321
+
322
+ /** Fired when drag mode on a layer is enabled. */
323
+ on(type: 'pm:dragenable', fn: PM.DragEnableEventHandler): this;
324
+ once(type: 'pm:dragenable', fn: PM.DragEnableEventHandler): this;
325
+ off(type: 'pm:dragenable', fn?: PM.DragEnableEventHandler): this;
326
+
327
+ /** Fired when drag mode on a layer is disabled. */
328
+ on(type: 'pm:dragdisable', fn: PM.DragDisableEventHandler): this;
329
+ once(type: 'pm:dragdisable', fn: PM.DragDisableEventHandler): this;
330
+ off(type: 'pm:dragdisable', fn?: PM.DragDisableEventHandler): this;
331
+
332
+ /******************************************
333
+ *
334
+ * TODO: REMOVE MODE EVENTS ON MAP ONLY
335
+ *
336
+ ********************************************/
337
+
338
+ /** Fired when Removal Mode is toggled. */
339
+ on(type: 'pm:globalremovalmodetoggled', fn: PM.GlobalRemovalModeToggledEventHandler): this;
340
+ once(type: 'pm:globalremovalmodetoggled', fn: PM.GlobalRemovalModeToggledEventHandler): this;
341
+ off(type: 'pm:globalremovalmodetoggled', fn?: PM.GlobalRemovalModeToggledEventHandler): this;
342
+
343
+ /******************************************
344
+ *
345
+ * TODO: CUT MODE EVENTS ON MAP ONLY
346
+ *
347
+ ********************************************/
348
+
349
+ /** Fired when a layer is removed via Removal Mode. */
350
+ on(type: 'pm:globalcutmodetoggled', fn: PM.GlobalCutModeToggledEventHandler): this;
351
+ once(type: 'pm:globalcutmodetoggled', fn: PM.GlobalCutModeToggledEventHandler): this;
352
+ off(type: 'pm:globalcutmodetoggled', fn?: PM.GlobalCutModeToggledEventHandler): this;
353
+
354
+ /******************************************
355
+ *
356
+ * TODO: ROTATE MODE EVENTS ON MAP ONLY
357
+ *
358
+ ********************************************/
359
+
360
+ /** Fired when Rotate Mode is toggled. */
361
+ on(type: 'pm:globalrotatemodetoggled', fn: PM.GlobalRotateModeToggledEventHandler): this;
362
+ once(type: 'pm:globalrotatemodetoggled', fn: PM.GlobalRotateModeToggledEventHandler): this;
363
+ off(type: 'pm:globalrotatemodetoggled', fn?: PM.GlobalRotateModeToggledEventHandler): this;
364
+
365
+ /******************************************
366
+ *
367
+ * TODO: TRANSLATION EVENTS ON MAP ONLY
368
+ *
369
+ ********************************************/
370
+
371
+ /** Standard Leaflet event. Fired when any layer is removed. */
372
+ on(type: 'pm:langchange', fn: PM.LangChangeEventHandler): this;
373
+ once(type: 'pm:langchange', fn: PM.LangChangeEventHandler): this;
374
+ off(type: 'pm:langchange', fn?: PM.LangChangeEventHandler): this;
375
+
376
+ /******************************************
377
+ *
378
+ * TODO: CONTROL EVENTS ON MAP ONLY
379
+ *
380
+ ********************************************/
381
+
382
+ /** Fired when a Toolbar button is clicked. */
383
+ on(type: 'pm:buttonclick', fn: PM.ButtonClickEventHandler): this;
384
+ once(type: 'pm:buttonclick', fn: PM.ButtonClickEventHandler): this;
385
+ off(type: 'pm:buttonclick', fn?: PM.ButtonClickEventHandler): this;
386
+
387
+ /** Fired when a Toolbar action is clicked. */
388
+ on(type: 'pm:actionclick', fn: PM.ActionClickEventHandler): this;
389
+ once(type: 'pm:actionclick', fn: PM.ActionClickEventHandler): this;
390
+ off(type: 'pm:actionclick', fn?: PM.ActionClickEventHandler): this;
391
+
392
+ /******************************************
393
+ *
394
+ * TODO: Keyboard EVENT ON MAP ONLY
395
+ *
396
+ ********************************************/
397
+
398
+ /** Fired when `keydown` or `keyup` on the document is fired. */
399
+ on(type: 'pm:keyevent', fn: PM.KeyboardKeyEventHandler): this;
400
+ once(type: 'pm:keyevent', fn: PM.KeyboardKeyEventHandler): this;
401
+ off(type: 'pm:keyevent', fn?: PM.KeyboardKeyEventHandler): this;
402
+ }
403
+
404
+ namespace PM {
405
+ export const version: string;
406
+
407
+ /** Supported shape names. 'ImageOverlay' is in Edit Mode only. Also accepts custom shape name. */
408
+ type SUPPORTED_SHAPES =
409
+ | 'Marker'
410
+ | 'Circle'
411
+ | 'Line'
412
+ | 'Rectangle'
413
+ | 'Polygon'
414
+ | 'Cut'
415
+ | 'CircleMarker'
416
+ | 'ImageOverlay'
417
+ | 'Text'
418
+ | string;
419
+
420
+ type SupportLocales =
421
+ | 'cz'
422
+ | 'da'
423
+ | 'de'
424
+ | 'el'
425
+ | 'en'
426
+ | 'es'
427
+ | 'fa'
428
+ | 'fi'
429
+ | 'fr'
430
+ | 'hu'
431
+ | 'id'
432
+ | 'it'
433
+ | 'ja'
434
+ | 'ko'
435
+ | 'nl'
436
+ | 'no'
437
+ | 'pl'
438
+ | 'pt_br'
439
+ | 'ro'
440
+ | 'ru'
441
+ | 'sv'
442
+ | 'tr'
443
+ | 'ua'
444
+ | 'zh'
445
+ | 'zh_tw';
446
+
447
+ /**
448
+ * Changes default registration of leaflet-geoman on leaflet layers.
449
+ *
450
+ * @param optIn - if true, a layers pmIgnore property has to be set to false to get initiated.
451
+ */
452
+ function setOptIn(optIn: boolean): void;
453
+
454
+ /**
455
+ * Enable leaflet-geoman on an ignored layer.
456
+ *
457
+ * @param layer - re-reads layer.options.pmIgnore to initialize leaflet-geoman.
458
+ */
459
+ function reInitLayer(layer: L.Layer): void;
460
+
461
+ /**
462
+ * PM map interface.
463
+ */
464
+ interface PMMap extends PMDrawMap, PMEditMap, PMDragMap, PMRemoveMap, PMCutMap, PMRotateMap {
465
+ Toolbar: PMMapToolbar;
466
+
467
+ Keyboard: PMMapKeyboard;
468
+
469
+ /** Adds the Toolbar to the map. */
470
+ addControls(options?: ToolbarOptions): void;
471
+
472
+ /** Toggle the visiblity of the Toolbar. */
473
+ removeControls(): void;
474
+
475
+ /** Returns true if the Toolbar is visible on the map. */
476
+ controlsVisible(): boolean;
477
+
478
+ /** Toggle the visiblity of the Toolbar. */
479
+ toggleControls(): void;
480
+
481
+ setLang(
482
+ lang: SupportLocales,
483
+ customTranslations?: Translations,
484
+ fallbackLanguage?: string,
485
+ ): void;
486
+
487
+ /** Set globalOptions and apply them. */
488
+ setGlobalOptions(options: GlobalOptions): void;
489
+
490
+ /** Apply the current globalOptions to all existing layers. */
491
+ applyGlobalOptions(): void;
492
+
493
+ /** Returns the globalOptions. */
494
+ getGlobalOptions(): GlobalOptions;
495
+ }
496
+
497
+ class Translations {
498
+ tooltips?: {
499
+ placeMarker?: string;
500
+ firstVertex?: string;
501
+ continueLine?: string;
502
+ finishLine?: string;
503
+ finishPoly?: string;
504
+ finishRect?: string;
505
+ startCircle?: string;
506
+ finishCircle?: string;
507
+ placeCircleMarker?: string;
508
+ placeText?: string;
509
+ };
510
+
511
+ actions?: {
512
+ finish?: string;
513
+ cancel?: string;
514
+ removeLastVertex?: string;
515
+ };
516
+
517
+ buttonTitles?: {
518
+ drawMarkerButton?: string;
519
+ drawPolyButton?: string;
520
+ drawLineButton?: string;
521
+ drawCircleButton?: string;
522
+ drawRectButton?: string;
523
+ editButton?: string;
524
+ dragButton?: string;
525
+ cutButton?: string;
526
+ deleteButton?: string;
527
+ drawCircleMarkerButton?: string;
528
+ snappingButton?: string;
529
+ pinningButton?: string;
530
+ rotateButton?: string;
531
+ drawTextButton?: string;
532
+ scaleButton?: string;
533
+ autoTracingButton?: string;
534
+ };
535
+
536
+ measurements?: {
537
+ totalLength?: string;
538
+ segmentLength?: string;
539
+ area?: string;
540
+ radius?: string;
541
+ perimeter?: string;
542
+ height?: string;
543
+ width?: string;
544
+ coordinates?: string;
545
+ coordinatesMarker?: string;
546
+ };
547
+ }
548
+
549
+ type ACTION_NAMES = 'cancel' | 'removeLastVertex' | 'finish' | 'finishMode';
550
+
551
+ class Action {
552
+ text: string;
553
+ onClick?: (e: any) => void;
554
+ }
555
+
556
+ type TOOLBAR_CONTROL_ORDER =
557
+ | 'drawMarker'
558
+ | 'drawCircleMarker'
559
+ | 'drawPolyline'
560
+ | 'drawRectangle'
561
+ | 'drawPolygon'
562
+ | 'drawCircle'
563
+ | 'editMode'
564
+ | 'dragMode'
565
+ | 'cutPolygon'
566
+ | 'removalMode'
567
+ | 'rotateMode'
568
+ | 'drawText'
569
+ | string;
570
+
571
+ interface PMMapToolbar {
572
+ /** Pass an array of button names to reorder the buttons in the Toolbar. */
573
+ changeControlOrder(order?: TOOLBAR_CONTROL_ORDER[]): void;
574
+
575
+ /** Receive the current order with. */
576
+ getControlOrder(): TOOLBAR_CONTROL_ORDER[];
577
+
578
+ /** The position of a block (draw, edit, custom, options⭐) in the Toolbar can be changed. If not set, the value from position of the Toolbar is taken. */
579
+ setBlockPosition(
580
+ block: 'draw' | 'edit' | 'custom' | 'options',
581
+ position: L.ControlPosition,
582
+ ): void;
583
+
584
+ /** Returns a Object with the positions for all blocks */
585
+ getBlockPositions(): BlockPositions;
586
+
587
+ /** To add a custom Control to the Toolbar */
588
+ createCustomControl(options: CustomControlOptions): void;
589
+
590
+ /** Creates a copy of a draw Control. Returns the drawInstance and the control. */
591
+ copyDrawControl(copyInstance: string, options?: CustomControlOptions): void;
592
+
593
+ /** Change the actions of an existing button. */
594
+ changeActionsOfControl(name: string, actions: (ACTION_NAMES | Action)[]): void;
595
+
596
+ /** Disable button by control name */
597
+ setButtonDisabled(name: TOOLBAR_CONTROL_ORDER, state: boolean): void;
598
+ }
599
+
600
+ type KEYBOARD_EVENT_TYPE = 'current' | 'keydown' | 'keyup';
601
+
602
+ interface PMMapKeyboard {
603
+ /** Pass an array of button names to reorder the buttons in the Toolbar. */
604
+ getLastKeyEvent(type: KEYBOARD_EVENT_TYPE[]): KeyboardKeyEventHandler;
605
+
606
+ /** Returns the current pressed key. [KeyboardEvent.key](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key). */
607
+ getPressedKey(): string;
608
+
609
+ /** Returns true if the `Shift` key is currently pressed. */
610
+ isShiftKeyPressed(): boolean;
611
+
612
+ /** Returns true if the `Alt` key is currently pressed. */
613
+ isAltKeyPressed(): boolean;
614
+
615
+ /** Returns true if the `Ctrl` key is currently pressed. */
616
+ isCtrlKeyPressed(): boolean;
617
+
618
+ /** Returns true if the `Meta` key is currently pressed. */
619
+ isMetaKeyPressed(): boolean;
620
+ }
621
+
622
+ interface Button {
623
+ /** Actions */
624
+ actions: (ACTION_NAMES | Action)[];
625
+
626
+ /** Function fired after clicking the control. */
627
+ afterClick: () => void;
628
+
629
+ /** CSS class with the Icon. */
630
+ className: string;
631
+
632
+ /** If true, other buttons will be disabled on click (default: true) */
633
+ disableOtherButtons: boolean;
634
+
635
+ /** Control can be toggled. */
636
+ doToggle: boolean;
637
+
638
+ /** Extending Class f. ex. Line, Polygon, ... L.PM.Draw.EXTENDINGCLASS */
639
+ jsClass: string;
640
+
641
+ /** Function fired when clicking the control. */
642
+ onClick: () => void;
643
+
644
+ position: L.ControlPosition;
645
+
646
+ /** Text showing when you hover the control. */
647
+ title: string;
648
+
649
+ /** Toggle state true -> enabled, false -> disabled (default: false) */
650
+ toggleStatus: boolean;
651
+
652
+ /** Block of the control. 'options' is ⭐ only. */
653
+ tool?: 'draw' | 'edit' | 'custom' | 'options';
654
+ }
655
+
656
+ interface CustomControlOptions {
657
+ /** Name of the control */
658
+ name: string;
659
+
660
+ /** Block of the control. 'options' is ⭐ only. */
661
+ block?: 'draw' | 'edit' | 'custom' | 'options';
662
+
663
+ /** Text showing when you hover the control. */
664
+ title?: string;
665
+
666
+ /** CSS class with the Icon. */
667
+ className?: string;
668
+
669
+ /** Function fired when clicking the control. */
670
+ onClick?: () => void;
671
+
672
+ /** Function fired after clicking the control. */
673
+ afterClick?: () => void;
674
+
675
+ /** Actions */
676
+ actions?: (ACTION_NAMES | Action)[];
677
+
678
+ /** Control can be toggled. */
679
+ toggle?: boolean;
680
+
681
+ /** Control is disabled. */
682
+ disabled?: boolean;
683
+ }
684
+
685
+ type PANE =
686
+ | 'mapPane'
687
+ | 'tilePane'
688
+ | 'overlayPane'
689
+ | 'shadowPane'
690
+ | 'markerPane'
691
+ | 'tooltipPane'
692
+ | 'popupPane'
693
+ | string;
694
+
695
+ interface GlobalOptions extends DrawModeOptions, EditModeOptions {
696
+ /** Add the created layers to a layergroup instead to the map. */
697
+ layerGroup?: L.Map | L.LayerGroup;
698
+
699
+ /** Prioritize the order of snapping. Default: ['Marker','CircleMarker','Circle','Line','Polygon','Rectangle']. */
700
+ snappingOrder?: SUPPORTED_SHAPES[];
701
+
702
+ /** Defines in which panes the layers and helper vertices are created. Default: { vertexPane: 'markerPane', layerPane: 'overlayPane', markerPane: 'markerPane' } */
703
+ panes?: { vertexPane?: PANE; layerPane?: PANE; markerPane?: PANE };
704
+ }
705
+
706
+ interface PMDrawMap {
707
+ /** Enable Draw Mode with the passed shape. */
708
+ enableDraw(shape: SUPPORTED_SHAPES, options?: DrawModeOptions): void;
709
+
710
+ /** Disable all drawing */
711
+ disableDraw(shape?: SUPPORTED_SHAPES): void;
712
+
713
+ /** Draw */
714
+ Draw: Draw;
715
+
716
+ /** Returns true if global Draw Mode is enabled. false when disabled. */
717
+ globalDrawModeEnabled(): boolean;
718
+
719
+ /** Customize the style of the drawn layer. Only for L.Path layers. Shapes can be excluded with a ignoreShapes array or merged with the current style with merge: true in optionsModifier. */
720
+ setPathOptions(
721
+ options: L.PathOptions,
722
+ optionsModifier?: { ignoreShapes?: SUPPORTED_SHAPES[]; merge?: boolean },
723
+ ): void;
724
+
725
+ /** Returns all Geoman layers on the map as array. Pass true to get a L.FeatureGroup. */
726
+ getGeomanLayers(asFeatureGroup: true): L.FeatureGroup;
727
+ getGeomanLayers(asFeatureGroup?: false): L.Layer[];
728
+
729
+ /** Returns all Geoman draw layers on the map as array. Pass true to get a L.FeatureGroup. */
730
+ getGeomanDrawLayers(asFeatureGroup: true): L.FeatureGroup;
731
+ getGeomanDrawLayers(asFeatureGroup?: false): L.Layer[];
732
+ }
733
+
734
+ interface PMEditMap {
735
+ /** Enables edit mode. The passed options are preserved, even when the mode is enabled via the Toolbar */
736
+ enableGlobalEditMode(options?: EditModeOptions): void;
737
+
738
+ /** Disables global edit mode. */
739
+ disableGlobalEditMode(): void;
740
+
741
+ /** Toggles global edit mode. */
742
+ toggleGlobalEditMode(options?: EditModeOptions): void;
743
+
744
+ /** Returns true if global edit mode is enabled. false when disabled. */
745
+ globalEditModeEnabled(): boolean;
746
+ }
747
+
748
+ interface PMDragMap {
749
+ /** Enables global drag mode. */
750
+ enableGlobalDragMode(): void;
751
+
752
+ /** Disables global drag mode. */
753
+ disableGlobalDragMode(): void;
754
+
755
+ /** Toggles global drag mode. */
756
+ toggleGlobalDragMode(): void;
757
+
758
+ /** Returns true if global drag mode is enabled. false when disabled. */
759
+ globalDragModeEnabled(): boolean;
760
+ }
761
+
762
+ interface PMRemoveMap {
763
+ /** Enables global removal mode. */
764
+ enableGlobalRemovalMode(): void;
765
+
766
+ /** Disables global removal mode. */
767
+ disableGlobalRemovalMode(): void;
768
+
769
+ /** Toggles global removal mode. */
770
+ toggleGlobalRemovalMode(): void;
771
+
772
+ /** Returns true if global removal mode is enabled. false when disabled. */
773
+ globalRemovalModeEnabled(): boolean;
774
+ }
775
+
776
+ interface PMCutMap {
777
+ /** Enables global cut mode. */
778
+ enableGlobalCutMode(options?: CutModeOptions): void;
779
+
780
+ /** Disables global cut mode. */
781
+ disableGlobalCutMode(): void;
782
+
783
+ /** Toggles global cut mode. */
784
+ toggleGlobalCutMode(options?: CutModeOptions): void;
785
+
786
+ /** Returns true if global cut mode is enabled. false when disabled. */
787
+ globalCutModeEnabled(): boolean;
788
+ }
789
+
790
+ interface PMRotateMap {
791
+ /** Enables global rotate mode. */
792
+ enableGlobalRotateMode(): void;
793
+
794
+ /** Disables global rotate mode. */
795
+ disableGlobalRotateMode(): void;
796
+
797
+ /** Toggles global rotate mode. */
798
+ toggleGlobalRotateMode(): void;
799
+
800
+ /** Returns true if global rotate mode is enabled. false when disabled. */
801
+ globalRotateModeEnabled(): boolean;
802
+ }
803
+
804
+ interface PMRotateLayer {
805
+ /** Enables rotate mode on the layer. */
806
+ enableRotate(): void;
807
+
808
+ /** Disables rotate mode on the layer. */
809
+ disableRotate(): void;
810
+
811
+ /** Returns if rotate mode is enabled for the layer. */
812
+ rotateEnabled(): boolean;
813
+
814
+ /** Rotates the layer by x degrees. */
815
+ rotateLayer(degrees: number): void;
816
+
817
+ /** Rotates the layer to x degrees. */
818
+ rotateLayerToAngle(degrees: number): void;
819
+
820
+ /** Returns the angle of the layer in degrees. */
821
+ getAngle(): number;
822
+
823
+ /** Set the initial angle of the layer in degrees. */
824
+ setInitAngle(degrees: number): void;
825
+
826
+ /** Returns the center of rotation. */
827
+ getRotationCenter(): L.LatLng;
828
+
829
+ /** Change the center of rotation. Pass null to use the shape's default center. */
830
+ setRotationCenter(center: L.LatLng | null): void;
831
+ }
832
+
833
+ interface Draw {
834
+ /** Array of available shapes. */
835
+ getShapes(): SUPPORTED_SHAPES[];
836
+
837
+ /** Returns the active shape. */
838
+ getActiveShape(): SUPPORTED_SHAPES;
839
+
840
+ /** Set path options */
841
+ setPathOptions(options: L.PathOptions): void;
842
+
843
+ /** Set options */
844
+ setOptions(options: DrawModeOptions): void;
845
+
846
+ /** Get options */
847
+ getOptions(): DrawModeOptions;
848
+ }
849
+
850
+ interface CutModeOptions {
851
+ allowSelfIntersection?: boolean;
852
+ }
853
+
854
+ type VertexValidationHandler = (e: { layer: L.Layer; marker: L.Marker; event: any }) => boolean;
855
+
856
+ interface EditModeOptions {
857
+ /** Enable snapping to other layers vertices for precision drawing. Can be disabled by holding the ALT key (default:true). */
858
+ snappable?: boolean;
859
+
860
+ /** The distance to another vertex when a snap should happen (default:20). */
861
+ snapDistance?: number;
862
+
863
+ /** Allow self intersections (default:true). */
864
+ allowSelfIntersection?: boolean;
865
+
866
+ /** Allow self intersections (default:true). */
867
+ allowSelfIntersectionEdit?: boolean;
868
+
869
+ /** Disable the removal of markers via right click / vertices via removeVertexOn. (default:false). */
870
+ preventMarkerRemoval?: boolean;
871
+
872
+ /** If true, vertex removal that cause a layer to fall below their minimum required vertices will remove the entire layer. If false, these vertices can't be removed. Minimum vertices are 2 for Lines and 3 for Polygons (default:true). */
873
+ removeLayerBelowMinVertexCount?: boolean;
874
+
875
+ /** Defines which layers should dragged with this layer together. true syncs all layers in the same LayerGroup(s) or you pass an `Array` of layers to sync. (default:false). */
876
+ syncLayersOnDrag?: L.Layer[] | boolean;
877
+
878
+ /** Edit-Mode for the layer can disabled (`pm.enable()`). (default:true). */
879
+ allowEditing?: boolean;
880
+
881
+ /** Removing can be disabled for the layer. (default:true). */
882
+ allowRemoval?: boolean;
883
+
884
+ /** Layer can be prevented from cutting. (default:true). */
885
+ allowCutting?: boolean;
886
+
887
+ /** Layer can be prevented from rotation. (default:true). */
888
+ allowRotation?: boolean;
889
+
890
+ /** Dragging can be disabled for the layer. (default:true). */
891
+ draggable?: boolean;
892
+
893
+ /** Leaflet layer event to add a vertex to a Line or Polygon, like dblclick. (default:click). */
894
+ addVertexOn?: 'click' | 'dblclick' | 'mousedown' | 'mouseover' | 'mouseout' | 'contextmenu';
895
+
896
+ /** A function for validation if a vertex (of a Line / Polygon) is allowed to add. It passes a object with `[layer, marker, event}`. For example to check if the layer has a certain property or if the `Ctrl` key is pressed. (default:undefined). */
897
+ addVertexValidation?: undefined | VertexValidationHandler;
898
+
899
+ /** Leaflet layer event to remove a vertex from a Line or Polygon, like dblclick. (default:contextmenu). */
900
+ removeVertexOn?:
901
+ | 'click'
902
+ | 'dblclick'
903
+ | 'mousedown'
904
+ | 'mouseover'
905
+ | 'mouseout'
906
+ | 'contextmenu';
907
+
908
+ /** A function for validation if a vertex (of a Line / Polygon) is allowed to remove. It passes a object with `[layer, marker, event}`. For example to check if the layer has a certain property or if the `Ctrl` key is pressed. */
909
+ removeVertexValidation?: undefined | VertexValidationHandler;
910
+
911
+ /** A function for validation if a vertex / helper-marker is allowed to move / drag. It passes a object with `[layer, marker, event}`. For example to check if the layer has a certain property or if the `Ctrl` key is pressed. */
912
+ moveVertexValidation?: undefined | VertexValidationHandler;
913
+
914
+ /** Shows only n markers closest to the cursor. Use -1 for no limit (default:-1). */
915
+ limitMarkersToCount?: number;
916
+
917
+ /** Shows markers when under the given zoom level ⭐ */
918
+ limitMarkersToZoom?: number;
919
+
920
+ /** Shows only markers in the viewport ⭐ */
921
+ limitMarkersToViewport?: boolean;
922
+
923
+ /** Shows markers only after the layer was clicked ⭐ */
924
+ limitMarkersToClick?: boolean;
925
+
926
+ /** Pin shared vertices/markers together during edit ⭐ */
927
+ pinning?: boolean;
928
+
929
+ /** Hide the middle Markers in edit mode from Polyline and Polygon. */
930
+ hideMiddleMarkers?: boolean;
931
+ }
932
+
933
+ interface TextOptions {
934
+ /** Predefined text for Text-Layer. */
935
+ text?: string;
936
+
937
+ /** Directly after placing the Text-Layer text editing is activated. */
938
+ focusAfterDraw?: boolean;
939
+
940
+ /** The text layer is removed if no text is written. */
941
+ removeIfEmpty?: boolean;
942
+
943
+ /** Custom CSS Classes for Text-Layer. Separated by a space. */
944
+ className?: string;
945
+ }
946
+
947
+ interface DrawModeOptions {
948
+ /** Enable snapping to other layers vertices for precision drawing. Can be disabled by holding the ALT key (default:true). */
949
+ snappable?: boolean;
950
+
951
+ /** The distance to another vertex when a snap should happen (default:20). */
952
+ snapDistance?: number;
953
+
954
+ /** Allow snapping in the middle of two vertices (middleMarker)(default:false). */
955
+ snapMiddle?: boolean;
956
+
957
+ /** Allow snapping between two vertices. (default: true)*/
958
+ snapSegment?: boolean;
959
+
960
+ /** Require the last point of a shape to be snapped. (default: false). */
961
+ requireSnapToFinish?: boolean;
962
+
963
+ /** Show helpful tooltips for your user (default:true). */
964
+ tooltips?: boolean;
965
+
966
+ /** Allow self intersections (default:true). */
967
+ allowSelfIntersection?: boolean;
968
+
969
+ /** Leaflet path options for the lines between drawn vertices/markers. (default:{color:'red'}). */
970
+ templineStyle?: L.CircleMarkerOptions;
971
+
972
+ /** Leaflet path options for the helper line between last drawn vertex and the cursor. (default:{color:'red',dashArray:[5,5]}). */
973
+ hintlineStyle?: L.PathOptions;
974
+
975
+ /** Leaflet path options for the drawn layer (Only for L.Path layers). (default:null). */
976
+ pathOptions?: L.PathOptions;
977
+
978
+ /** Leaflet marker options (only for drawing markers). (default:{draggable:true}). */
979
+ markerStyle?: L.MarkerOptions;
980
+
981
+ /** Show a marker at the cursor (default:true). */
982
+ cursorMarker?: boolean;
983
+
984
+ /** Leaflet layer event to finish the drawn shape (default:null). */
985
+ finishOn?:
986
+ | null
987
+ | 'click'
988
+ | 'dblclick'
989
+ | 'mousedown'
990
+ | 'mouseover'
991
+ | 'mouseout'
992
+ | 'contextmenu'
993
+ | 'snap';
994
+
995
+ /** Hide the middle Markers in edit mode from Polyline and Polygon. (default:false). */
996
+ hideMiddleMarkers?: boolean;
997
+
998
+ /** Set the min radius of a Circle. (default:null). */
999
+ minRadiusCircle?: number;
1000
+
1001
+ /** Set the max radius of a Circle. (default:null). */
1002
+ maxRadiusCircle?: number;
1003
+
1004
+ /** Set the min radius of a CircleMarker. (default:null). */
1005
+ minRadiusCircleMarker?: number;
1006
+
1007
+ /** Set the max radius of a CircleMarker. (default:null). */
1008
+ maxRadiusCircleMarker?: number;
1009
+
1010
+ /**
1011
+ * @deprecated Use resizeableCircleMarker instead
1012
+ */
1013
+ editable?: boolean;
1014
+
1015
+ /** Enables radius editing while drawing a Circle (default:true). */
1016
+ resizableCircle?: boolean;
1017
+
1018
+ /** Enables radius editing while drawing a CircleMarker (default:false). */
1019
+ resizeableCircleMarker?: boolean;
1020
+
1021
+ /** Markers and CircleMarkers are editable during the draw-session (you can drag them around immediately after drawing them) (default:true). */
1022
+ markerEditable?: boolean;
1023
+
1024
+ /** Draw-Mode stays enabled after finishing a layer to immediately draw the next layer. Defaults to true for Markers and CircleMarkers and false for all other layers. */
1025
+ continueDrawing?: boolean;
1026
+
1027
+ /** Angel of rectangle. */
1028
+ rectangleAngle?: number;
1029
+
1030
+ /** Cut-Mode: Only the passed layers can be cut. Cutted layers are removed from the Array until no layers are left anymore and cutting is working on all layers again. (Default: []) */
1031
+ layersToCut?: L.Layer[];
1032
+
1033
+ textOptions?: TextOptions;
1034
+ }
1035
+
1036
+ /**
1037
+ * PM toolbar options.
1038
+ */
1039
+ interface ToolbarOptions {
1040
+ /** Toolbar position. */
1041
+ position?: L.ControlPosition;
1042
+
1043
+ /** The position of each block can be customized. If not set, the value from position is taken. */
1044
+ positions?: BlockPositions;
1045
+
1046
+ /** Adds button to draw Markers (default:true) */
1047
+ drawMarker?: boolean;
1048
+
1049
+ /** Adds button to draw CircleMarkers (default:true) */
1050
+ drawCircleMarker?: boolean;
1051
+
1052
+ /** Adds button to draw Line (default:true) */
1053
+ drawPolyline?: boolean;
1054
+
1055
+ /** Adds button to draw Rectangle (default:true) */
1056
+ drawRectangle?: boolean;
1057
+
1058
+ /** Adds button to draw Polygon (default:true) */
1059
+ drawPolygon?: boolean;
1060
+
1061
+ /** Adds button to draw Text (default:true) */
1062
+ drawText?: boolean;
1063
+
1064
+ /** Adds button to draw Circle (default:true) */
1065
+ drawCircle?: boolean;
1066
+
1067
+ /** Adds button to toggle edit mode for all layers (default:true) */
1068
+ editMode?: boolean;
1069
+
1070
+ /** Adds button to toggle drag mode for all layers (default:true) */
1071
+ dragMode?: boolean;
1072
+
1073
+ /** Adds button to cut a hole in a polygon or line (default:true) */
1074
+ cutPolygon?: boolean;
1075
+
1076
+ /** Adds a button to remove layers (default:true) */
1077
+ removalMode?: boolean;
1078
+
1079
+ /** Adds a button to rotate layers (default:true) */
1080
+ rotateMode?: boolean;
1081
+
1082
+ /** All buttons will be displayed as one block Customize Controls (default:false) */
1083
+ oneBlock?: boolean;
1084
+
1085
+ /** Shows all draw buttons / buttons in the draw block (default:true) */
1086
+ drawControls?: boolean;
1087
+
1088
+ /** Shows all edit buttons / buttons in the edit block (default:true) */
1089
+ editControls?: boolean;
1090
+
1091
+ /** Shows all buttons in the custom block (default:true) */
1092
+ customControls?: boolean;
1093
+
1094
+ /** Shows all options buttons / buttons in the option block ⭐ */
1095
+ optionsControls?: boolean;
1096
+
1097
+ /** Adds a button to toggle the Pinning Option ⭐ */
1098
+ pinningOption?: boolean;
1099
+
1100
+ /** Adds a button to toggle the Snapping Option ⭐ */
1101
+ snappingOption?: boolean;
1102
+
1103
+ /** Adds custom button (default:true) */
1104
+ // The type of custom buttons are always boolean but TS needs the other types defined too.
1105
+ [key: string]: L.ControlPosition | BlockPositions | boolean | undefined;
1106
+ }
1107
+
1108
+ /** the position of each block. */
1109
+ interface BlockPositions {
1110
+ /** Draw control position (default:''). '' also refers to this position. */
1111
+ draw?: L.ControlPosition;
1112
+
1113
+ /** Edit control position (default:''). */
1114
+ edit?: L.ControlPosition;
1115
+
1116
+ /** Custom control position (default:''). */
1117
+ custom?: L.ControlPosition;
1118
+
1119
+ /** Options control position (default:'') ⭐ */
1120
+ options?: L.ControlPosition;
1121
+ }
1122
+
1123
+ interface PMEditLayer extends PMEditTextLayer {
1124
+ /** Enables edit mode. The passed options are preserved, even when the mode is enabled via the Toolbar */
1125
+ enable(options?: EditModeOptions): void;
1126
+
1127
+ /** Sets layer options */
1128
+ setOptions(options?: EditModeOptions): void;
1129
+
1130
+ /** Gets layer options */
1131
+ getOptions(): EditModeOptions;
1132
+
1133
+ /** Disables edit mode. */
1134
+ disable(): void;
1135
+
1136
+ /** Toggles edit mode. Passed options are preserved. */
1137
+ toggleEdit(options?: EditModeOptions): void;
1138
+
1139
+ /** Returns true if edit mode is enabled. false when disabled. */
1140
+ enabled(): boolean;
1141
+
1142
+ /** Returns true if Line or Polygon has a self intersection. */
1143
+ hasSelfIntersection(): boolean;
1144
+
1145
+ /** Removes the layer with the same checks as GlobalRemovalMode. */
1146
+ remove(): void;
1147
+ }
1148
+
1149
+ interface PMEditTextLayer {
1150
+ /** Activate text editing of Text-Layer. */
1151
+ focus(): void;
1152
+
1153
+ /** Deactivate text editing of Text-Layer. */
1154
+ blur(): void;
1155
+
1156
+ /** Is text editing active on Text-Layer. */
1157
+ hasFocus(): boolean;
1158
+
1159
+ /** Returns the `<textarea>` DOM element of Text-Layer. */
1160
+ getElement(): HTMLElement;
1161
+
1162
+ /** Set text on Text-Layer. */
1163
+ setText(text: string): void;
1164
+
1165
+ /** Returns the text of Text-Layer. */
1166
+ getText(): string;
1167
+ }
1168
+
1169
+ interface PMDragLayer {
1170
+ /** Enables dragging for the layer. */
1171
+ enableLayerDrag(): void;
1172
+
1173
+ /** Disables dragging for the layer. */
1174
+ disableLayerDrag(): void;
1175
+
1176
+ /** Returns if the layer is currently dragging. */
1177
+ dragging(): boolean;
1178
+
1179
+ /** Returns if drag mode is enabled for the layer. */
1180
+ layerDragEnabled(): boolean;
1181
+ }
1182
+
1183
+ interface PMLayer extends PMRotateLayer, PMEditLayer, PMDragLayer {
1184
+ /** Get shape of the layer. */
1185
+ getShape(): SUPPORTED_SHAPES;
1186
+ }
1187
+
1188
+ interface PMLayerGroup {
1189
+ /** Enables edit mode for all child layers. The passed options are preserved, even when the mode is enabled via the Toolbar */
1190
+ enable(options?: EditModeOptions): void;
1191
+
1192
+ /** Disable edit mode for all child layers.*/
1193
+ disable(): void;
1194
+
1195
+ /** Returns if minimum one layer is enabled. */
1196
+ enabled(): boolean;
1197
+
1198
+ /** Toggle enable / disable on all layers. */
1199
+ toggleEdit(options?: EditModeOptions): void;
1200
+
1201
+ /** Returns the layers of the LayerGroup. `deep=true` return also the children of LayerGroup children. `filterGeoman=true` filter out layers that don't have Leaflet-Geoman or temporary stuff. `filterGroupsOut=true` does not return the LayerGroup layers self. (Default: `deep=false`,`filterGeoman=true`, `filterGroupsOut=true` ) */
1202
+ getLayers(deep?: boolean, filterGeoman?: boolean, filterGroupsOut?: boolean): L.Layer[];
1203
+
1204
+ /** Apply Leaflet-Geoman options to all children. The passed options are preserved, even when the mode is enabled via the Toolbar */
1205
+ setOptions(options?: EditModeOptions): void;
1206
+
1207
+ /** Returns the options of the LayerGroup. */
1208
+ getOptions(): EditModeOptions;
1209
+
1210
+ /** Returns if currently a layer in the LayerGroup is dragging. */
1211
+ dragging(): boolean;
1212
+ }
1213
+
1214
+ namespace Utils {
1215
+ /** Returns the translation of the passed path. path = json-string f.ex. tooltips.placeMarker */
1216
+ function getTranslation(path: string): string;
1217
+
1218
+ /** Returns the middle LatLng between two LatLngs */
1219
+ function calcMiddleLatLng(map: L.Map, latlng1: L.LatLng, latlng2: L.LatLng): L.LatLng;
1220
+
1221
+ /** Returns all layers that are available for Geoman */
1222
+ function findLayers(map: L.Map): L.Layer[];
1223
+
1224
+ /** Converts a circle into a polygon with default 60 sides. For CRS.Simple maps `withBearing` needs to be false */
1225
+ function circleToPolygon(circle: L.Circle, sides?: number, withBearing?: boolean): L.Polygon;
1226
+
1227
+ /** Converts a px-radius (CircleMarker) to meter-radius (Circle). The center LatLng is needed because the earth has different projections on different places. **/
1228
+ function pxRadiusToMeterRadius(radiusInPx: number, map: L.Map, center: L.LatLng): number;
1229
+ }
1230
+
1231
+ /**
1232
+ * DRAW MODE MAP EVENT HANDLERS
1233
+ */
1234
+
1235
+ export type GlobalDrawModeToggledEventHandler = (event: {
1236
+ enabled: boolean;
1237
+ shape: PM.SUPPORTED_SHAPES;
1238
+ map: L.Map;
1239
+ }) => void;
1240
+ export type DrawStartEventHandler = (e: {
1241
+ shape: PM.SUPPORTED_SHAPES;
1242
+ workingLayer: L.Layer;
1243
+ }) => void;
1244
+ export type DrawEndEventHandler = (e: { shape: PM.SUPPORTED_SHAPES }) => void;
1245
+ export type CreateEventHandler = (e: { shape: PM.SUPPORTED_SHAPES; layer: L.Layer }) => void;
1246
+
1247
+ /**
1248
+ * DRAW MODE LAYER EVENT HANDLERS
1249
+ */
1250
+
1251
+ export type VertexAddedEventHandler = (e: {
1252
+ shape: PM.SUPPORTED_SHAPES;
1253
+ workingLayer: L.Layer;
1254
+ marker: L.Marker;
1255
+ latlng: L.LatLng;
1256
+ }) => void;
1257
+ export type SnapEventHandler = (e: {
1258
+ shape: PM.SUPPORTED_SHAPES;
1259
+ distance: number;
1260
+ layer: L.Layer;
1261
+ workingLayer: L.Layer;
1262
+ marker: L.Marker;
1263
+ layerInteractedWith: L.Layer;
1264
+ segement: any;
1265
+ snapLatLng: L.LatLng;
1266
+ }) => void;
1267
+ export type CenterPlacedEventHandler = (e: {
1268
+ shape: PM.SUPPORTED_SHAPES;
1269
+ workingLayer: L.Layer;
1270
+ latlng: L.LatLng;
1271
+ }) => void;
1272
+
1273
+ /**
1274
+ * EDIT MODE LAYER EVENT HANDLERS
1275
+ */
1276
+
1277
+ export type EditEventHandler = (e: { shape: PM.SUPPORTED_SHAPES; layer: L.Layer }) => void;
1278
+ export type UpdateEventHandler = (e: { shape: PM.SUPPORTED_SHAPES; layer: L.Layer }) => void;
1279
+ export type EnableEventHandler = (e: { shape: PM.SUPPORTED_SHAPES; layer: L.Layer }) => void;
1280
+ export type DisableEventHandler = (e: { shape: PM.SUPPORTED_SHAPES; layer: L.Layer }) => void;
1281
+ export type VertexAddedEventHandler2 = (e: {
1282
+ layer: L.Layer;
1283
+ indexPath: number;
1284
+ latlng: L.LatLng;
1285
+ marker: L.Marker;
1286
+ shape: PM.SUPPORTED_SHAPES;
1287
+ }) => void;
1288
+ export type VertexRemovedEventHandler = (e: {
1289
+ layer: L.Layer;
1290
+ indexPath: number;
1291
+ marker: L.Marker;
1292
+ shape: PM.SUPPORTED_SHAPES;
1293
+ }) => void;
1294
+ export type VertexClickEventHandler = (e: {
1295
+ layer: L.Layer;
1296
+ indexPath: number;
1297
+ markerEvent: any;
1298
+ shape: PM.SUPPORTED_SHAPES;
1299
+ }) => void;
1300
+ export type MarkerDragStartEventHandler = (e: {
1301
+ layer: L.Layer;
1302
+ indexPath: number;
1303
+ markerEvent: any;
1304
+ shape: PM.SUPPORTED_SHAPES;
1305
+ }) => void;
1306
+ export type MarkerDragEventHandler = (e: {
1307
+ layer: L.Layer;
1308
+ indexPath: number;
1309
+ markerEvent: any;
1310
+ shape: PM.SUPPORTED_SHAPES;
1311
+ }) => void;
1312
+ export type MarkerDragEndEventHandler = (e: {
1313
+ layer: L.Layer;
1314
+ indexPath: number;
1315
+ markerEvent: any;
1316
+ shape: PM.SUPPORTED_SHAPES;
1317
+ intersectionRest: boolean;
1318
+ }) => void;
1319
+ export type LayerResetEventHandler = (e: {
1320
+ layer: L.Layer;
1321
+ indexPath: number;
1322
+ markerEvent: any;
1323
+ shape: PM.SUPPORTED_SHAPES;
1324
+ }) => void;
1325
+ export type IntersectEventHandler = (e: {
1326
+ shape: PM.SUPPORTED_SHAPES;
1327
+ layer: L.Layer;
1328
+ intersection: L.LatLng;
1329
+ }) => void;
1330
+ export type ChangeEventHandler = (e: {
1331
+ shape: PM.SUPPORTED_SHAPES;
1332
+ layer: L.Layer;
1333
+ latlngs: L.LatLng | L.LatLng[];
1334
+ }) => void;
1335
+ export type TextChangeEventHandler = (e: {
1336
+ shape: PM.SUPPORTED_SHAPES;
1337
+ layer: L.Layer;
1338
+ text: string;
1339
+ }) => void;
1340
+ export type TextFocusEventHandler = (e: { shape: PM.SUPPORTED_SHAPES; layer: L.Layer }) => void;
1341
+ export type TextBlurEventHandler = (e: { shape: PM.SUPPORTED_SHAPES; layer: L.Layer }) => void;
1342
+
1343
+ /**
1344
+ * EDIT MODE MAP EVENT HANDLERS
1345
+ */
1346
+ export type GlobalEditModeToggledEventHandler = (event: {
1347
+ enabled: boolean;
1348
+ map: L.Map;
1349
+ }) => void;
1350
+
1351
+ /**
1352
+ * DRAG MODE MAP EVENT HANDLERS
1353
+ */
1354
+ export type GlobalDragModeToggledEventHandler = (event: {
1355
+ enabled: boolean;
1356
+ map: L.Map;
1357
+ }) => void;
1358
+
1359
+ /**
1360
+ * DRAG MODE LAYER EVENT HANDLERS
1361
+ */
1362
+ export type DragStartEventHandler = (e: { layer: L.Layer; shape: PM.SUPPORTED_SHAPES }) => void;
1363
+ export type DragEventHandler = (e: {
1364
+ layer: L.Layer;
1365
+ containerPoint: any;
1366
+ latlng: L.LatLng;
1367
+ layerPoint: L.Point;
1368
+ originalEvent: any;
1369
+ shape: PM.SUPPORTED_SHAPES;
1370
+ }) => void;
1371
+ export type DragEndEventHandler = (e: { layer: L.Layer; shape: PM.SUPPORTED_SHAPES }) => void;
1372
+ export type DragEnableEventHandler = (e: {
1373
+ layer: L.Layer;
1374
+ shape: PM.SUPPORTED_SHAPES;
1375
+ }) => void;
1376
+ export type DragDisableEventHandler = (e: {
1377
+ layer: L.Layer;
1378
+ shape: PM.SUPPORTED_SHAPES;
1379
+ }) => void;
1380
+
1381
+ /**
1382
+ * REMOVE MODE LAYER EVENT HANDLERS
1383
+ */
1384
+
1385
+ export type RemoveEventHandler = (e: { layer: L.Layer; shape: PM.SUPPORTED_SHAPES }) => void;
1386
+
1387
+ /**
1388
+ * REMOVE MODE MAP EVENT HANDLERS
1389
+ */
1390
+ export type GlobalRemovalModeToggledEventHandler = (e: {
1391
+ enabled: boolean;
1392
+ map: L.Map;
1393
+ }) => void;
1394
+
1395
+ /**
1396
+ * CUT MODE MAP EVENT HANDLERS
1397
+ */
1398
+ export type GlobalCutModeToggledEventHandler = (e: { enabled: boolean; map: L.Map }) => void;
1399
+ export type CutEventHandler = (e: {
1400
+ layer: L.Layer;
1401
+ originalLayer: L.Layer;
1402
+ shape: PM.SUPPORTED_SHAPES;
1403
+ }) => void;
1404
+
1405
+ /**
1406
+ * ROTATE MODE LAYER EVENT HANDLERS
1407
+ */
1408
+ export type RotateEnableEventHandler = (e: {
1409
+ layer: L.Layer;
1410
+ helpLayer: L.Layer;
1411
+ shape: PM.SUPPORTED_SHAPES;
1412
+ }) => void;
1413
+ export type RotateDisableEventHandler = (e: {
1414
+ layer: L.Layer;
1415
+ shape: PM.SUPPORTED_SHAPES;
1416
+ }) => void;
1417
+ export type RotateStartEventHandler = (e: {
1418
+ layer: L.Layer;
1419
+ helpLayer: L.Layer;
1420
+ startAngle: number;
1421
+ originLatLngs: L.LatLng[];
1422
+ }) => void;
1423
+ export type RotateEventHandler = (e: {
1424
+ layer: L.Layer;
1425
+ helpLayer: L.Layer;
1426
+ startAngle: number;
1427
+ angle: number;
1428
+ angleDiff: number;
1429
+ oldLatLngs: L.LatLng[];
1430
+ newLatLngs: L.LatLng[];
1431
+ }) => void;
1432
+ export type RotateEndEventHandler = (e: {
1433
+ layer: L.Layer;
1434
+ helpLayer: L.Layer;
1435
+ startAngle: number;
1436
+ angle: number;
1437
+ originLatLngs: L.LatLng[];
1438
+ newLatLngs: L.LatLng[];
1439
+ }) => void;
1440
+
1441
+ /**
1442
+ * ROTATE MODE MAP EVENT HANDLERS
1443
+ */
1444
+ export type GlobalRotateModeToggledEventHandler = (e: { enabled: boolean; map: L.Map }) => void;
1445
+
1446
+ /**
1447
+ * TRANSLATION EVENT HANDLERS
1448
+ */
1449
+ export type LangChangeEventHandler = (e: {
1450
+ activeLang: string;
1451
+ oldLang: string;
1452
+ fallback: string;
1453
+ translations: PM.Translations;
1454
+ }) => void;
1455
+
1456
+ /**
1457
+ * CONTROL MAP EVENT HANDLERS
1458
+ */
1459
+ export type ButtonClickEventHandler = (e: { btnName: string; button: PM.Button }) => void;
1460
+ export type ActionClickEventHandler = (e: {
1461
+ text: string;
1462
+ action: string;
1463
+ btnName: string;
1464
+ button: PM.Button;
1465
+ }) => void;
1466
+
1467
+ /**
1468
+ * KEYBOARD EVENT HANDLERS
1469
+ */
1470
+ export type KeyboardKeyEventHandler = (e: {
1471
+ focusOn: 'document' | 'map';
1472
+ eventType: 'keydown' | 'keyup';
1473
+ event: any;
1474
+ }) => void;
1475
+ }
1476
+ }