@angular-helpers/openlayers 0.4.0 → 0.5.1

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.
@@ -1,7 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { ElementRef, Provider, EnvironmentProviders } from '@angular/core';
2
+ import { ElementRef, Signal, Resource, Provider, EnvironmentProviders } from '@angular/core';
3
3
  import OLMap from 'ol/Map';
4
- import { View } from 'ol';
4
+ import { View, Feature as Feature$1 } from 'ol';
5
5
 
6
6
  type Coordinate = [number, number];
7
7
  type Extent = [number, number, number, number];
@@ -157,7 +157,11 @@ declare class OlMapService {
157
157
  private zoneHelper;
158
158
  private map;
159
159
  private readyCallbacks;
160
- setMap(map: OLMap): void;
160
+ private _resolution;
161
+ /** Signal that emits the current map resolution in meters per pixel */
162
+ readonly resolution: _angular_core.Signal<number>;
163
+ setMap(map: OLMap | null): void;
164
+ setResolution(resolution: number): void;
161
165
  getMap(): OLMap | null;
162
166
  onReady(callback: (map: OLMap) => void): void;
163
167
  getView(): View | null;
@@ -215,12 +219,199 @@ declare class OlZoneHelper {
215
219
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<OlZoneHelper>;
216
220
  }
217
221
 
218
- type OlFeatureKind = 'layers' | 'controls' | 'interactions' | 'overlays' | 'military';
222
+ /**
223
+ * Configuration for an ellipse polygon centered at `center`.
224
+ * Coordinates are emitted in EPSG:4326 (lon/lat) using a local tangent-plane
225
+ * approximation; accuracy degrades for radii > ~100 km or near the poles.
226
+ */
227
+ interface EllipseConfig {
228
+ /** Ellipse center as `[lon, lat]` in EPSG:4326. */
229
+ center: Coordinate;
230
+ /** Semi-major axis in meters. Must be > 0. */
231
+ semiMajor: number;
232
+ /** Semi-minor axis in meters. Must be > 0. */
233
+ semiMinor: number;
234
+ /**
235
+ * Rotation in radians, counter-clockwise from East. Default: 0
236
+ * (semi-major axis points East).
237
+ */
238
+ rotation?: number;
239
+ /**
240
+ * Number of vertices used to approximate the ellipse. Default: 64.
241
+ * Minimum: 8.
242
+ */
243
+ segments?: number;
244
+ /** Custom feature properties to attach to the output feature. */
245
+ properties?: Record<string, unknown>;
246
+ }
247
+ /**
248
+ * Configuration for a circular sector (pie-slice) polygon.
249
+ * Same projection caveats as `EllipseConfig`.
250
+ */
251
+ interface SectorConfig {
252
+ /** Sector apex / center as `[lon, lat]` in EPSG:4326. */
253
+ center: Coordinate;
254
+ /** Sector radius in meters. Must be > 0. */
255
+ radius: number;
256
+ /** Start angle in radians (0 = East, CCW positive). */
257
+ startAngle: number;
258
+ /**
259
+ * End angle in radians. Must satisfy `startAngle < endAngle <= startAngle + 2π`.
260
+ */
261
+ endAngle: number;
262
+ /**
263
+ * Number of vertices along the arc. Default: 32. Minimum: 4. The output
264
+ * polygon has `segments + 3` vertices (apex + arc + apex closer).
265
+ */
266
+ segments?: number;
267
+ /** Custom feature properties to attach to the output feature. */
268
+ properties?: Record<string, unknown>;
269
+ }
270
+ /**
271
+ * Configuration for a donut (annular ring) polygon — a disk with a
272
+ * concentric circular hole.
273
+ *
274
+ * The output `Feature<Polygon>` has TWO rings: an outer ring (CCW) and
275
+ * an inner ring (CW per the GeoJSON right-hand rule), so renderers that
276
+ * follow the spec fill only the band between the radii.
277
+ */
278
+ interface DonutConfig {
279
+ /** Donut center as `[lon, lat]` in EPSG:4326. */
280
+ center: Coordinate;
281
+ /** Outer radius in meters. Must be > `innerRadius`. */
282
+ outerRadius: number;
283
+ /** Inner radius in meters. Must be > 0 and < `outerRadius`. */
284
+ innerRadius: number;
285
+ /**
286
+ * Number of vertices per ring. Default: 64. Minimum: 8. Both rings use
287
+ * the same segment count.
288
+ */
289
+ segments?: number;
290
+ /** Custom feature properties to attach to the output feature. */
291
+ properties?: Record<string, unknown>;
292
+ }
293
+
294
+ /**
295
+ * Service exposing general purpose geometry helpers for creating
296
+ * approximated polygons (ellipses, sectors, donuts) from metric parameters.
297
+ */
298
+ declare class OlGeometryService {
299
+ private idCounter;
300
+ /**
301
+ * Build a `Feature<Polygon>` approximating an ellipse centered at
302
+ * `config.center`. See {@link EllipseConfig} for parameter semantics.
303
+ */
304
+ createEllipse(config: EllipseConfig): Feature;
305
+ /**
306
+ * Build a `Feature<Polygon>` for a circular sector (pie slice).
307
+ * See {@link SectorConfig} for parameter semantics.
308
+ */
309
+ createSector(config: SectorConfig): Feature;
310
+ /**
311
+ * Build a `Feature<Polygon>` for a donut (annular ring). The output has
312
+ * two rings: an outer ring wound counter-clockwise and an inner ring
313
+ * wound clockwise so the GeoJSON right-hand rule renders the hole.
314
+ */
315
+ createDonut(config: DonutConfig): Feature;
316
+ /**
317
+ * Project an `(dx, dy)` meter offset from `center` to lon/lat using true
318
+ * geodesic math (Vincenty's formulae) via ol/sphere.
319
+ */
320
+ offsetMetersToLonLat(center: Coordinate, dx: number, dy: number): Coordinate;
321
+ private nextId;
322
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlGeometryService, never>;
323
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<OlGeometryService>;
324
+ }
325
+
326
+ /**
327
+ * Service for orchestrating time-series animations in OpenLayers.
328
+ * Exposes a reactive currentTime signal that updates outside the Angular zone
329
+ * via requestAnimationFrame, ensuring 60FPS WebGL animations without triggering
330
+ * global change detection.
331
+ */
332
+ declare class OlTimeService {
333
+ private zoneHelper;
334
+ private timeSignal;
335
+ private playingSignal;
336
+ private speedSignal;
337
+ private animationFrameId;
338
+ private lastTick;
339
+ readonly currentTime: _angular_core.Signal<number>;
340
+ readonly isPlaying: _angular_core.Signal<boolean>;
341
+ readonly speed: _angular_core.Signal<number>;
342
+ /**
343
+ * Sets the current time manually.
344
+ * @param time Epoch timestamp in milliseconds
345
+ */
346
+ setTime(time: number): void;
347
+ /**
348
+ * Sets the playback speed multiplier.
349
+ * @param speed Multiplier (e.g. 1 = real time, 60 = 1 minute per second)
350
+ */
351
+ setSpeed(speed: number): void;
352
+ /**
353
+ * Starts the time animation loop.
354
+ */
355
+ play(): void;
356
+ /**
357
+ * Pauses the time animation loop.
358
+ */
359
+ pause(): void;
360
+ /**
361
+ * Stops the animation and resets to a specific time.
362
+ */
363
+ stop(resetTime?: number): void;
364
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlTimeService, never>;
365
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<OlTimeService>;
366
+ }
367
+
368
+ interface VectorResourceOptions {
369
+ /** Optional custom fetch options */
370
+ fetchOptions?: RequestInit;
371
+ }
372
+ /**
373
+ * Creates an Angular resource for fetching and decoding GeoJSON into OpenLayers Features.
374
+ * Must be called in an injection context.
375
+ *
376
+ * @param url The URL signal or string to fetch data from
377
+ * @param options Additional vector resource options
378
+ * @returns An Angular Resource containing an array of parsed Features
379
+ */
380
+ declare function createVectorResource(url: Signal<string | undefined>, options?: VectorResourceOptions): Resource<Feature[]>;
381
+
382
+ /**
383
+ * Converts an OpenLayers feature to the internal Feature format.
384
+ * Handles coordinate extraction and geometry type mapping.
385
+ *
386
+ * @param olFeature - The OpenLayers feature to convert
387
+ * @returns The converted Feature with normalized structure
388
+ */
389
+ declare function olFeatureToFeature(olFeature: Feature$1): Feature;
390
+ /**
391
+ * Converts an internal Feature to an OpenLayers feature.
392
+ */
393
+ declare function featureToOlFeature(feature: Feature): Feature$1;
394
+
395
+ type OlFeatureKind = 'layers' | 'controls' | 'interactions' | 'overlays' | 'military' | 'projections';
219
396
  interface OlFeature<Kind extends OlFeatureKind> {
220
397
  kind: Kind;
221
398
  providers: Provider[];
222
399
  }
223
400
  declare function provideOpenLayers(...features: OlFeature<OlFeatureKind>[]): EnvironmentProviders;
224
401
 
225
- export { OlMapComponent, OlMapService, OlZoneHelper, provideOpenLayers };
226
- export type { AnimationOptions, Coordinate, Extent, Feature, FitOptions, Geometry, GeometryType, Layer, MapClickEvent, MapConfig, MapViewOptions, OlFeature, OlFeatureKind, Pixel, ProjectionCode, Style, ViewState };
402
+ interface Proj4Definition {
403
+ code: string;
404
+ def: string;
405
+ extent?: [number, number, number, number];
406
+ }
407
+ /**
408
+ * Registers custom projections using proj4.
409
+ *
410
+ * @param proj4 - The proj4 instance (must be passed to avoid strong dependency on proj4 package)
411
+ * @param definitions - Array of projection definitions
412
+ * @returns OlFeature for projections
413
+ */
414
+ declare function withProjections(proj4: any, definitions: Proj4Definition[]): OlFeature<'projections'>;
415
+
416
+ export { OlGeometryService, OlMapComponent, OlMapService, OlTimeService, OlZoneHelper, createVectorResource, featureToOlFeature, olFeatureToFeature, provideOpenLayers, withProjections };
417
+ export type { AnimationOptions, Coordinate, DonutConfig, EllipseConfig, Extent, Feature, FitOptions, Geometry, GeometryType, Layer, MapClickEvent, MapConfig, MapViewOptions, OlFeature, OlFeatureKind, Pixel, Proj4Definition, ProjectionCode, SectorConfig, Style, VectorResourceOptions, ViewState };
@@ -1,12 +1,10 @@
1
1
  import * as rxjs from 'rxjs';
2
2
  import * as _angular_helpers_openlayers_interactions from '@angular-helpers/openlayers/interactions';
3
- import * as i0 from '@angular/core';
3
+ import * as _angular_core from '@angular/core';
4
4
  import { Provider } from '@angular/core';
5
- import * as _angular_helpers_openlayers_core from '@angular-helpers/openlayers/core';
6
5
  import { Feature, OlFeature } from '@angular-helpers/openlayers/core';
7
6
  import Interaction from 'ol/interaction/Interaction';
8
7
  import OLMap from 'ol/Map';
9
- import { Feature as Feature$1 } from 'ol';
10
8
 
11
9
  type InteractionType = 'select' | 'draw' | 'modify' | 'dragAndDrop';
12
10
  interface InteractionConfig {
@@ -22,9 +20,10 @@ interface SelectConfig extends InteractionConfig {
22
20
  layers?: string[];
23
21
  multi?: boolean;
24
22
  hitTolerance?: number;
23
+ condition?: 'click' | 'pointerMove';
25
24
  }
26
25
  interface DrawConfig extends InteractionConfig {
27
- type: 'Point' | 'LineString' | 'Polygon' | 'Circle';
26
+ type: 'Point' | 'LineString' | 'Polygon' | 'Circle' | 'Ellipse' | 'Donut';
28
27
  source?: string;
29
28
  freehand?: boolean;
30
29
  snapTolerance?: number;
@@ -38,17 +37,21 @@ interface DragAndDropConfig extends InteractionConfig {
38
37
  projection?: string;
39
38
  }
40
39
  interface SelectEvent {
41
- feature: Feature;
42
- selected: boolean;
40
+ interactionId: string;
41
+ selected: Feature[];
42
+ deselected: Feature[];
43
43
  }
44
44
  interface DrawEndEvent {
45
+ interactionId: string;
45
46
  feature: Feature;
46
47
  type: string;
47
48
  }
48
49
  interface DrawStartEvent {
50
+ interactionId: string;
49
51
  feature: Feature;
50
52
  }
51
53
  interface ModifyEvent {
54
+ interactionId: string;
52
55
  features: Feature[];
53
56
  type: 'modifystart' | 'modifyend';
54
57
  }
@@ -83,13 +86,15 @@ declare class OlInteractionService {
83
86
  private selectService;
84
87
  private drawService;
85
88
  private modifyService;
86
- readonly selectedFeatures: i0.Signal<_angular_helpers_openlayers_core.Feature[]>;
87
- readonly selectionCount: i0.Signal<number>;
88
- readonly hasSelection: i0.Signal<boolean>;
89
- readonly activeInteractions: i0.Signal<_angular_helpers_openlayers_interactions.ManagedInteraction[]>;
89
+ readonly selectedFeatures: _angular_core.Signal<Feature[]>;
90
+ readonly hoveredFeature: _angular_core.Signal<Feature>;
91
+ readonly selectionCount: _angular_core.Signal<number>;
92
+ readonly hasSelection: _angular_core.Signal<boolean>;
93
+ readonly activeInteractions: _angular_core.Signal<_angular_helpers_openlayers_interactions.ManagedInteraction[]>;
90
94
  readonly drawStart$: rxjs.Observable<_angular_helpers_openlayers_interactions.DrawStartEvent>;
91
95
  readonly drawEnd$: rxjs.Observable<_angular_helpers_openlayers_interactions.DrawEndEvent>;
92
96
  readonly modify$: rxjs.Observable<_angular_helpers_openlayers_interactions.ModifyEvent>;
97
+ readonly select$: rxjs.Observable<_angular_helpers_openlayers_interactions.SelectEvent>;
93
98
  /**
94
99
  * Enable a select interaction on the map.
95
100
  * @param id - Unique identifier for this interaction
@@ -144,8 +149,8 @@ declare class OlInteractionService {
144
149
  * @returns Array of interaction state summaries
145
150
  */
146
151
  getInteractionState(): _angular_helpers_openlayers_interactions.InteractionState[];
147
- static ɵfac: i0.ɵɵFactoryDeclaration<OlInteractionService, never>;
148
- static ɵprov: i0.ɵɵInjectableDeclaration<OlInteractionService>;
152
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlInteractionService, never>;
153
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<OlInteractionService>;
149
154
  }
150
155
 
151
156
  /**
@@ -172,16 +177,20 @@ interface ManagedInteraction {
172
177
  declare class InteractionStateService {
173
178
  private interactions;
174
179
  private selectedFeaturesInternal;
180
+ private hoveredFeatureInternal;
175
181
  private drawStartSubject;
176
182
  private drawEndSubject;
177
183
  private modifySubject;
178
- readonly selectedFeatures: i0.Signal<Feature[]>;
179
- readonly selectionCount: i0.Signal<number>;
180
- readonly hasSelection: i0.Signal<boolean>;
181
- readonly activeInteractions: i0.Signal<ManagedInteraction[]>;
184
+ private selectSubject;
185
+ readonly selectedFeatures: _angular_core.Signal<Feature[]>;
186
+ readonly hoveredFeature: _angular_core.Signal<Feature>;
187
+ readonly selectionCount: _angular_core.Signal<number>;
188
+ readonly hasSelection: _angular_core.Signal<boolean>;
189
+ readonly activeInteractions: _angular_core.Signal<ManagedInteraction[]>;
182
190
  readonly drawStart$: rxjs.Observable<DrawStartEvent>;
183
191
  readonly drawEnd$: rxjs.Observable<DrawEndEvent>;
184
192
  readonly modify$: rxjs.Observable<ModifyEvent>;
193
+ readonly select$: rxjs.Observable<SelectEvent>;
185
194
  /**
186
195
  * Adds a managed interaction to the state.
187
196
  * If the interaction is marked as exclusive, it disables other exclusive interactions.
@@ -213,6 +222,11 @@ declare class InteractionStateService {
213
222
  * Clears the current selection.
214
223
  */
215
224
  clearSelection(): void;
225
+ /**
226
+ * Sets the currently hovered feature.
227
+ * @param feature - The hovered feature or null
228
+ */
229
+ setHoveredFeature(feature: Feature | null): void;
216
230
  /**
217
231
  * Emits a draw start event.
218
232
  * @param event - The draw start event data
@@ -228,6 +242,11 @@ declare class InteractionStateService {
228
242
  * @param event - The modify event data
229
243
  */
230
244
  emitModify(event: ModifyEvent): void;
245
+ /**
246
+ * Emits a select event.
247
+ * @param event - The select event data
248
+ */
249
+ emitSelect(event: SelectEvent): void;
231
250
  /**
232
251
  * Gets the current interaction state summary.
233
252
  * @returns Array of interaction state objects
@@ -244,8 +263,8 @@ declare class InteractionStateService {
244
263
  * Note: This only clears the state tracking, not the actual OL interactions.
245
264
  */
246
265
  clearAll(): void;
247
- static ɵfac: i0.ɵɵFactoryDeclaration<InteractionStateService, never>;
248
- static ɵprov: i0.ɵɵInjectableDeclaration<InteractionStateService>;
266
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InteractionStateService, never>;
267
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<InteractionStateService>;
249
268
  }
250
269
 
251
270
  /**
@@ -263,8 +282,8 @@ declare class SelectInteractionService {
263
282
  * @returns Promise that resolves when the interaction is created
264
283
  */
265
284
  createSelectInteraction(id: string, config: SelectConfig, map: OLMap): void;
266
- static ɵfac: i0.ɵɵFactoryDeclaration<SelectInteractionService, never>;
267
- static ɵprov: i0.ɵɵInjectableDeclaration<SelectInteractionService>;
285
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectInteractionService, never>;
286
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<SelectInteractionService>;
268
287
  }
269
288
 
270
289
  /**
@@ -283,8 +302,8 @@ declare class DrawInteractionService {
283
302
  * @returns True if the interaction was created successfully
284
303
  */
285
304
  createDrawInteraction(id: string, config: DrawConfig, map: OLMap): boolean;
286
- static ɵfac: i0.ɵɵFactoryDeclaration<DrawInteractionService, never>;
287
- static ɵprov: i0.ɵɵInjectableDeclaration<DrawInteractionService>;
305
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DrawInteractionService, never>;
306
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<DrawInteractionService>;
288
307
  }
289
308
 
290
309
  /**
@@ -301,18 +320,88 @@ declare class ModifyInteractionService {
301
320
  * @param map - OpenLayers map instance
302
321
  */
303
322
  createModifyInteraction(id: string, config: ModifyConfig, map: OLMap): void;
304
- static ɵfac: i0.ɵɵFactoryDeclaration<ModifyInteractionService, never>;
305
- static ɵprov: i0.ɵɵInjectableDeclaration<ModifyInteractionService>;
323
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModifyInteractionService, never>;
324
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ModifyInteractionService>;
325
+ }
326
+
327
+ declare class MeasurementInteractionService {
328
+ private mapService;
329
+ private zoneHelper;
330
+ private draw?;
331
+ private source;
332
+ private vectorLayer?;
333
+ private map?;
334
+ private sketch;
335
+ private measureTooltipElement;
336
+ private measureTooltip;
337
+ private listener;
338
+ private isMeasuring;
339
+ startMeasuring(type: 'LineString' | 'Polygon'): void;
340
+ stopMeasuring(): void;
341
+ isActive(): boolean;
342
+ private createMeasureTooltip;
343
+ private formatLength;
344
+ private formatArea;
345
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MeasurementInteractionService, never>;
346
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<MeasurementInteractionService>;
306
347
  }
307
348
 
308
349
  /**
309
- * Converts an OpenLayers feature to the internal Feature format.
310
- * Handles coordinate extraction and geometry type mapping.
311
- *
312
- * @param olFeature - The OpenLayers feature to convert
313
- * @returns The converted Feature with normalized structure
350
+ * Declarative component to configure an OpenLayers Draw Interaction.
314
351
  */
315
- declare function olFeatureToFeature(olFeature: Feature$1): Feature;
352
+ declare class OlDrawInteractionComponent {
353
+ private interactionService;
354
+ private destroyRef;
355
+ id: _angular_core.InputSignal<string>;
356
+ type: _angular_core.InputSignal<"Point" | "LineString" | "Polygon" | "Circle">;
357
+ source: _angular_core.InputSignal<string>;
358
+ freehand: _angular_core.InputSignal<boolean>;
359
+ snapTolerance: _angular_core.InputSignal<number>;
360
+ active: _angular_core.InputSignal<boolean>;
361
+ private drawStartFiltered$;
362
+ private drawEndFiltered$;
363
+ drawStart: _angular_core.OutputRef<_angular_helpers_openlayers_interactions.DrawStartEvent>;
364
+ drawEnd: _angular_core.OutputRef<_angular_helpers_openlayers_interactions.DrawEndEvent>;
365
+ constructor();
366
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlDrawInteractionComponent, never>;
367
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlDrawInteractionComponent, "ol-draw-interaction", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "type": { "alias": "type"; "required": true; "isSignal": true; }; "source": { "alias": "source"; "required": false; "isSignal": true; }; "freehand": { "alias": "freehand"; "required": false; "isSignal": true; }; "snapTolerance": { "alias": "snapTolerance"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; }, { "drawStart": "drawStart"; "drawEnd": "drawEnd"; }, never, never, true, never>;
368
+ }
369
+
370
+ /**
371
+ * Declarative component to configure an OpenLayers Modify Interaction.
372
+ */
373
+ declare class OlModifyInteractionComponent {
374
+ private interactionService;
375
+ private destroyRef;
376
+ id: _angular_core.InputSignal<string>;
377
+ source: _angular_core.InputSignal<string>;
378
+ snapTolerance: _angular_core.InputSignal<number>;
379
+ active: _angular_core.InputSignal<boolean>;
380
+ private modifyFiltered$;
381
+ modifyEvent: _angular_core.OutputRef<_angular_helpers_openlayers_interactions.ModifyEvent>;
382
+ constructor();
383
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlModifyInteractionComponent, never>;
384
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlModifyInteractionComponent, "ol-modify-interaction", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "source": { "alias": "source"; "required": false; "isSignal": true; }; "snapTolerance": { "alias": "snapTolerance"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; }, { "modifyEvent": "modifyEvent"; }, never, never, true, never>;
385
+ }
386
+
387
+ /**
388
+ * Declarative component to configure an OpenLayers Select Interaction.
389
+ */
390
+ declare class OlSelectInteractionComponent {
391
+ private interactionService;
392
+ private destroyRef;
393
+ id: _angular_core.InputSignal<string>;
394
+ layers: _angular_core.InputSignal<string[]>;
395
+ multi: _angular_core.InputSignal<boolean>;
396
+ hitTolerance: _angular_core.InputSignal<number>;
397
+ condition: _angular_core.InputSignal<"click" | "pointerMove">;
398
+ active: _angular_core.InputSignal<boolean>;
399
+ private selectFiltered$;
400
+ selectEvent: _angular_core.OutputRef<_angular_helpers_openlayers_interactions.SelectEvent>;
401
+ constructor();
402
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlSelectInteractionComponent, never>;
403
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlSelectInteractionComponent, "ol-select-interaction", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "layers": { "alias": "layers"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "hitTolerance": { "alias": "hitTolerance"; "required": false; "isSignal": true; }; "condition": { "alias": "condition"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; }, { "selectEvent": "selectEvent"; }, never, never, true, never>;
404
+ }
316
405
 
317
406
  /**
318
407
  * Provide the interactions feature with OlInteractionService and all specialized services.
@@ -346,6 +435,11 @@ declare function withDrawInteraction(id: string, config: DrawConfig): Provider;
346
435
  * @returns Provider function that enables modify interaction
347
436
  */
348
437
  declare function withModifyInteraction(id: string, config?: ModifyConfig): Provider;
438
+ /**
439
+ * Enable measurement interaction when providing the interactions feature.
440
+ * @returns Provider function that enables measurement interaction
441
+ */
442
+ declare function withMeasurementInteraction(): Provider;
349
443
 
350
- export { DrawInteractionService, InteractionStateService, ModifyInteractionService, OlInteractionService, SelectInteractionService, olFeatureToFeature, provideInteractions, withDrawInteraction, withInteractions, withModifyInteraction, withSelectInteraction };
444
+ export { DrawInteractionService, InteractionStateService, MeasurementInteractionService, ModifyInteractionService, OlDrawInteractionComponent, OlInteractionService, OlModifyInteractionComponent, OlSelectInteractionComponent, SelectInteractionService, provideInteractions, withDrawInteraction, withInteractions, withMeasurementInteraction, withModifyInteraction, withSelectInteraction };
351
445
  export type { DragAndDropConfig, DrawConfig, DrawEndEvent, DrawStartEvent, InteractionConfig, InteractionState, InteractionType, ManagedInteraction, ModifyConfig, ModifyEvent, SelectConfig, SelectEvent };