@mappedin/mappedin-js 6.0.1-alpha.34 → 6.0.1-alpha.35

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.
@@ -10,6 +10,7 @@
10
10
  // ../mappedin-js/@mappedin/core-sdk/src/camera
11
11
  // ../mappedin-js/three
12
12
  // ../mappedin-js/@packages/internal/geojson-navigator
13
+ // ../mappedin-js/@turf/turf
13
14
  // ../mappedin-js/@packages/internal/shave-text/shave-text
14
15
  // ../mappedin-js/@packages/internal/quad-tree
15
16
  // ../mappedin-js/three/addons/loaders/GLTFLoader.js
@@ -30,7 +31,7 @@ declare module '@mappedin/mappedin-js' {
30
31
  import type { TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions } from '@packages/internal/mvf-utils';
31
32
  import { parseMVF, unzipMVF } from '@packages/internal/mvf-utils';
32
33
  import type { Floor } from '@mappedin/mappedin-js/maker/src/map-data-objects';
33
- import type { ParsedMVF as TMVF } from '@mappedin/mvf';
34
+ import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle } from '@mappedin/mvf';
34
35
  import { MapView } from '@mappedin/mappedin-js/maker/src/map-view';
35
36
  import type { Shading, PaintStyle, LineStyle, WatermarkOptions, Position } from '@mappedin/core-sdk';
36
37
  import { enableTestMode } from '@mappedin/core-sdk';
@@ -251,6 +252,11 @@ declare module '@mappedin/mappedin-js' {
251
252
  * @default true
252
253
  */
253
254
  shading?: boolean | Shading;
255
+ /**
256
+ * Set the global outlines for all elements. True will enable outlines, false will disable them.
257
+ * @default true
258
+ */
259
+ outlines?: boolean;
254
260
  /**
255
261
  * Specify a color for the top of wall geometry.
256
262
  */
@@ -301,14 +307,14 @@ declare module '@mappedin/mappedin-js' {
301
307
  export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
302
308
  export const show3dMap: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
303
309
  export { parseMVF, unzipMVF, enableTestMode };
304
- export type { MapView, MapData, MappedinMapLibreOverlay, TEvents, TEventPayload, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAmbientOcclusionOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, };
310
+ export type { MapView, MapData, MappedinMapLibreOverlay, TEvents, TEventPayload, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAmbientOcclusionOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, };
305
311
  export type * from 'geojson';
306
312
  export type { TUpdateState, TLabelState, TGeometryState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TCameraFocusOnTarget, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, } from '@mappedin/mappedin-js/maker/src/types';
307
313
  export type { Label, Marker, Path, CameraTransform } from '@mappedin/mappedin-js/maker/src/map-view-objects';
308
314
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/maker/src/navigation';
309
315
  export type { TSpaceType } from '@mappedin/mappedin-js/maker/src/map-data-objects';
310
316
  export { Coordinate, Annotation, Connection, Door, Floor, MapObject, PointOfInterest, Space, Image, Hyperlink, } from '@mappedin/mappedin-js/maker/src/map-data-objects';
311
- export type { Camera, Labels, Markers, Paths, Exporter, Directions } from '@mappedin/mappedin-js/maker/src/api-geojson';
317
+ export type { Camera, Labels, Markers, Paths, Exporter, Directions, Style, Outdoor } from '@mappedin/mappedin-js/maker/src/api-geojson';
312
318
  }
313
319
 
314
320
  declare module '@mappedin/mappedin-js/maker/src/map-data' {
@@ -689,8 +695,7 @@ declare module '@mappedin/mappedin-js/maker/src/map-view' {
689
695
  import { PubSub } from '@packages/internal/common';
690
696
  import type { TEvents, TShow3DMapOptions } from '@mappedin/mappedin-js/maker/src';
691
697
  import type { Navigation } from '@mappedin/mappedin-js/maker/src/navigation';
692
- import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions } from '@mappedin/mappedin-js/maker/src/api-geojson';
693
- import { GeoJsonApi } from '@mappedin/mappedin-js/maker/src/api-geojson';
698
+ import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor } from '@mappedin/mappedin-js/maker/src/api-geojson';
694
699
  import type { BlueDot } from '@mappedin/mappedin-js/maker/src/api-geojson/blue-dot/blue-dot';
695
700
  import type MapData from '@mappedin/mappedin-js/maker/src/map-data';
696
701
  import type { Floor, MapObject, Space } from '@mappedin/mappedin-js/maker/src/map-data-objects';
@@ -698,7 +703,6 @@ declare module '@mappedin/mappedin-js/maker/src/map-view' {
698
703
  import type { Label, Marker } from '@mappedin/mappedin-js/maker/src/map-view-objects';
699
704
  import type { TEventPayload } from '@mappedin/mappedin-js/maker/src/events';
700
705
  import type { CustomGeometries } from '@mappedin/mappedin-js/maker/src/api-geojson/custom-geometries';
701
- import type { Style } from '@mappedin/mappedin-js/maker/src/api-geojson/style';
702
706
  export class MapView extends PubSub<TEvents> {
703
707
  #private;
704
708
  /**
@@ -735,11 +739,18 @@ declare module '@mappedin/mappedin-js/maker/src/map-view' {
735
739
  * Controls for BlueDot positioning.
736
740
  */
737
741
  BlueDot: BlueDot;
742
+ /**
743
+ * Controls for the indoor map's style.
744
+ */
738
745
  Style: Style;
739
746
  /**
740
747
  * Controls custom GeoJSON geometry on the map
741
748
  */
742
749
  CustomGeometries: CustomGeometries;
750
+ /**
751
+ * Controls for the outdoor map.
752
+ */
753
+ Outdoor: Outdoor;
743
754
  /**
744
755
  * @internal
745
756
  */
@@ -796,6 +807,17 @@ declare module '@mappedin/mappedin-js/maker/src/map-view' {
796
807
  getState<T extends Space | MapObject | Label | Marker | string>(target: T): TGetState<T> | undefined;
797
808
  setHoverColor(c: string): void;
798
809
  getHoverColor(): string | undefined;
810
+ /**
811
+ * Determines if a given target is within the viewport.
812
+ *
813
+ * This method checks if the specified target, such as a Space, MapObject, Label, Marker, or string identifier,
814
+ * is currently within the visible area of the map viewport. Note that this method returns `true` even if the
815
+ * target is not visible (e.g., its visibility is set to false).
816
+ *
817
+ * @param target - The target to check for viewport inclusion. This can be a Space, MapObject, Label, Marker, or string identifier.
818
+ * @returns A boolean indicating whether the target is within the viewport.
819
+ */
820
+ isInView(target: Space | MapObject | Label | Marker | string): boolean;
799
821
  /**
800
822
  * Retrieves directions ({@link Directions}) from one navigable point ({@link TNavigationTarget}) to another on the map.
801
823
  *
@@ -825,23 +847,6 @@ declare module '@mappedin/mappedin-js/maker/src/map-view' {
825
847
  * @experimental
826
848
  */
827
849
  auto(): void;
828
- Outdoor: {
829
- setStyle: (style: any) => void;
830
- /**
831
- * Returns a Maplibre map for advanced usage.
832
- *
833
- * @returns {object} Maplibre map instance
834
- *
835
- * Limitations:
836
- * - Maplibre interaction events are not supported; use SDK interaction events.
837
- * - Maplibre markers and labels may overlap as they are not integrated with the SDK collision engine.
838
- */
839
- map: GeoJsonApi['core']['map'];
840
- /**
841
- * Whether the outdoorView is enabled.
842
- */
843
- enabled: boolean;
844
- };
845
850
  /**
846
851
  * Subscribe a function to an event.
847
852
  *
@@ -1660,6 +1665,8 @@ declare module '@mappedin/mappedin-js/maker/src/api-geojson' {
1660
1665
  export { Paths } from '@mappedin/mappedin-js/maker/src/api-geojson/paths';
1661
1666
  export { Exporter } from '@mappedin/mappedin-js/maker/src/api-geojson/exporter';
1662
1667
  export { Directions } from '@mappedin/mappedin-js/maker/src/api-geojson/directions';
1668
+ export { Style } from '@mappedin/mappedin-js/maker/src/api-geojson/style';
1669
+ export { default as Outdoor } from '@mappedin/mappedin-js/maker/src/api-geojson/outdoor';
1663
1670
  }
1664
1671
 
1665
1672
  declare module '@mappedin/mappedin-js/maker/src/api-geojson/stacked-maps/stacked-maps' {
@@ -2658,7 +2665,7 @@ declare module '@mappedin/mappedin-js/maker/src' {
2658
2665
  import type { TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions } from '@packages/internal/mvf-utils';
2659
2666
  import { parseMVF, unzipMVF } from '@packages/internal/mvf-utils';
2660
2667
  import type { Floor } from '@mappedin/mappedin-js/maker/src/map-data-objects';
2661
- import type { ParsedMVF as TMVF } from '@mappedin/mvf';
2668
+ import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle } from '@mappedin/mvf';
2662
2669
  import { MapView } from '@mappedin/mappedin-js/maker/src/map-view';
2663
2670
  import type { Shading, PaintStyle, LineStyle, WatermarkOptions, Position } from '@mappedin/core-sdk';
2664
2671
  import { enableTestMode } from '@mappedin/core-sdk';
@@ -2879,6 +2886,11 @@ declare module '@mappedin/mappedin-js/maker/src' {
2879
2886
  * @default true
2880
2887
  */
2881
2888
  shading?: boolean | Shading;
2889
+ /**
2890
+ * Set the global outlines for all elements. True will enable outlines, false will disable them.
2891
+ * @default true
2892
+ */
2893
+ outlines?: boolean;
2882
2894
  /**
2883
2895
  * Specify a color for the top of wall geometry.
2884
2896
  */
@@ -2929,14 +2941,14 @@ declare module '@mappedin/mappedin-js/maker/src' {
2929
2941
  export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
2930
2942
  export const show3dMap: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
2931
2943
  export { parseMVF, unzipMVF, enableTestMode };
2932
- export type { MapView, MapData, MappedinMapLibreOverlay, TEvents, TEventPayload, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAmbientOcclusionOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, };
2944
+ export type { MapView, MapData, MappedinMapLibreOverlay, TEvents, TEventPayload, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAmbientOcclusionOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, };
2933
2945
  export type * from 'geojson';
2934
2946
  export type { TUpdateState, TLabelState, TGeometryState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TCameraFocusOnTarget, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, } from '@mappedin/mappedin-js/maker/src/types';
2935
2947
  export type { Label, Marker, Path, CameraTransform } from '@mappedin/mappedin-js/maker/src/map-view-objects';
2936
2948
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/maker/src/navigation';
2937
2949
  export type { TSpaceType } from '@mappedin/mappedin-js/maker/src/map-data-objects';
2938
2950
  export { Coordinate, Annotation, Connection, Door, Floor, MapObject, PointOfInterest, Space, Image, Hyperlink, } from '@mappedin/mappedin-js/maker/src/map-data-objects';
2939
- export type { Camera, Labels, Markers, Paths, Exporter, Directions } from '@mappedin/mappedin-js/maker/src/api-geojson';
2951
+ export type { Camera, Labels, Markers, Paths, Exporter, Directions, Style, Outdoor } from '@mappedin/mappedin-js/maker/src/api-geojson';
2940
2952
  }
2941
2953
 
2942
2954
  declare module '@mappedin/mappedin-js/maker/src/api-geojson/blue-dot/blue-dot' {
@@ -3019,27 +3031,6 @@ declare module '@mappedin/mappedin-js/maker/src/api-geojson/custom-geometries' {
3019
3031
  export {};
3020
3032
  }
3021
3033
 
3022
- declare module '@mappedin/mappedin-js/maker/src/api-geojson/style' {
3023
- import type { StyleCollection } from '@mappedin/mvf';
3024
- import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/maker/src/api-geojson/map-object';
3025
- export class Style {
3026
- #private;
3027
- /**
3028
- * @internal
3029
- */
3030
- get currentMap(): GeojsonApiMapObject | undefined;
3031
- /**
3032
- * @internal
3033
- */
3034
- constructor({ currentMapGetter }: {
3035
- currentMapGetter: CurrentMapGetter;
3036
- });
3037
- setFromStyleCollection(styleCollection: StyleCollection): void;
3038
- }
3039
- type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
3040
- export {};
3041
- }
3042
-
3043
3034
  declare module '@mappedin/mappedin-js/geojson/src/types' {
3044
3035
  import { Mesh, Object3D, InstancedMesh } from 'three';
3045
3036
  import type { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/two-d';
@@ -3103,6 +3094,7 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
3103
3094
  topTexture?: string;
3104
3095
  texture?: string;
3105
3096
  shading?: Shading;
3097
+ outline?: boolean;
3106
3098
  };
3107
3099
  export type Cap = 'round' | 'square' | 'butt';
3108
3100
  export type Join = 'round' | 'bevel' | 'miter';
@@ -3122,6 +3114,7 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
3122
3114
  cap?: Cap;
3123
3115
  join?: Join;
3124
3116
  shading?: Shading;
3117
+ outline?: boolean;
3125
3118
  };
3126
3119
  export type Layer = {
3127
3120
  id: string;
@@ -3185,7 +3178,7 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
3185
3178
  /**
3186
3179
  * An array of marker IDs which the user interaction passed through. Will be empty if no markers were interacted with.
3187
3180
  */
3188
- markers: [string | number] | [];
3181
+ markers: (string | number)[] | [];
3189
3182
  /**
3190
3183
  * An array of 3D models IDs which the user interaction passed through. Will be empty if no models were interacted with.
3191
3184
  */
@@ -3193,11 +3186,11 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
3193
3186
  /**
3194
3187
  * An array of label IDs which the user interaction passed through. Will be empty if no labels were interacted with.
3195
3188
  */
3196
- labels: [string | number] | [];
3189
+ labels: (string | number)[] | [];
3197
3190
  /**
3198
3191
  * An array of geometry IDs which the user interaction passed through. Will be empty if no geometry was interacted with.
3199
3192
  */
3200
- geometry: [string | number] | [];
3193
+ geometry: (string | number)[] | [];
3201
3194
  /**
3202
3195
  * Details about the pointer event which triggered the interaction.
3203
3196
  */
@@ -3210,6 +3203,10 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
3210
3203
  */
3211
3204
  button: number;
3212
3205
  };
3206
+ /**
3207
+ * An array of group container IDs which the user interaction passed through. Will be empty if no group containers were interacted with.
3208
+ */
3209
+ containers: (string | number)[] | [];
3213
3210
  };
3214
3211
  /**
3215
3212
  * Result of a user hover event.
@@ -3283,6 +3280,7 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
3283
3280
 
3284
3281
  declare module '@mappedin/mappedin-js/geojson/src/renderer' {
3285
3282
  import './utils/object-this-polyfill';
3283
+ import type { Position as GeoJsonPosition } from 'geojson';
3286
3284
  import { Vector3, Raycaster, Camera as ThreeCamera } from 'three';
3287
3285
  import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
3288
3286
  import { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
@@ -3309,9 +3307,9 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
3309
3307
  import { StackSystem } from '@mappedin/mappedin-js/geojson/src/systems/stack/system';
3310
3308
  import { CameraSystem } from '@mappedin/mappedin-js/geojson/src/systems/camera';
3311
3309
  import { DOMDrawSystem } from '@mappedin/mappedin-js/geojson/src/systems/dom-draw/system';
3312
- import type { Map as MapLibreMap } from '@mappedin/mappedin-js/packages/outdoor-context-v4';
3310
+ import { type Map as MapLibreMap } from '@mappedin/mappedin-js/packages/outdoor-context-v4';
3313
3311
  import type { GeometryState } from '@mappedin/mappedin-js/geojson/src/components/mesh';
3314
- import { type ModelState } from '@mappedin/mappedin-js/geojson/src/components/model';
3312
+ import type { ModelState } from '@mappedin/mappedin-js/geojson/src/components/model';
3315
3313
  import type { GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group';
3316
3314
  import { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/entity-group';
3317
3315
  import { DOMResizeSystem } from '@mappedin/mappedin-js/geojson/src/systems/dom-resize/system';
@@ -3323,6 +3321,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
3323
3321
  import { CustomGeometrySystem } from '@mappedin/mappedin-js/geojson/src/systems/custom-geometry/system';
3324
3322
  import { OutlineInterpolationSystem } from '@mappedin/mappedin-js/geojson/src/systems/outline-interpolation/system';
3325
3323
  import { OutdoorLayers } from '@mappedin/mappedin-js/geojson/src/systems/outdoor-layers/system';
3324
+ import { PathSystem } from '@mappedin/mappedin-js/geojson/src/systems/path';
3326
3325
  export type * from '@mappedin/mappedin-js/geojson/src/types';
3327
3326
  export const raycaster: Raycaster;
3328
3327
  export const DEFAULT_ZOOM_LEVEL = 18;
@@ -3374,6 +3373,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
3374
3373
  customGeometrySystem: CustomGeometrySystem;
3375
3374
  outlineInterpolationSystem: OutlineInterpolationSystem;
3376
3375
  outdoorLayersSystem: OutdoorLayers;
3376
+ pathSystem: PathSystem;
3377
3377
  };
3378
3378
  export type MapViewState = {
3379
3379
  readonly type: 'map-view';
@@ -3408,9 +3408,10 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
3408
3408
  /**
3409
3409
  * Add a container that can hold other containers, geometry groups, markers, labels and paths. Use this to group entities together.
3410
3410
  */
3411
- addGroupContainer(id: string, style?: {
3411
+ addGroupContainer(id: string, options?: {
3412
3412
  visible?: boolean;
3413
3413
  altitude?: number;
3414
+ interactive?: boolean;
3414
3415
  }, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<GroupContainerState>;
3415
3416
  addStackContainer(id: string, style?: {
3416
3417
  visible?: true;
@@ -3510,9 +3511,23 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
3510
3511
  y: number;
3511
3512
  };
3512
3513
  /**
3513
- * @internal
3514
+ * Convert a GeoJSON position to a 3D map position.
3515
+ *
3516
+ * @param position - The GeoJSON position to convert.
3517
+ * @param vector - Optional vector to copy the result into instead of creating a new vector.
3518
+ * @returns The converted 3D map position.
3514
3519
  */
3515
- convertTo3DMapPosition: (latitude: number, longitude: number, altitude?: number, vector?: Vector3) => Vector3;
3520
+ convertTo3DMapPosition(position: GeoJsonPosition, vector?: Vector3): Vector3;
3521
+ /**
3522
+ * Convert latitude and longitude to a 3D map position.
3523
+ *
3524
+ * @param latitude - The latitude to convert.
3525
+ * @param longitude - The longitude to convert.
3526
+ * @param altitude - Optional altitude to include in the conversion. Defaults to 0.
3527
+ * @param vector - Optional vector to copy the result into instead of creating a new vector.
3528
+ * @returns The converted 3D map position.
3529
+ */
3530
+ convertTo3DMapPosition(latitude: number, longitude: number, altitude?: number, vector?: Vector3): Vector3;
3516
3531
  /**
3517
3532
  * @internal
3518
3533
  */
@@ -3533,6 +3548,18 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
3533
3548
  * @param geometryOrBoundingBox Geometry, geometry id, or bounding box to get the center of.
3534
3549
  */
3535
3550
  getCenter(geometryOrBoundingBox: string | number | EntityId<EntityState> | Position[]): [number, number] | undefined;
3551
+ /**
3552
+ * Checks if the given entity is within the current camera's view frustum.
3553
+ * This method is useful for determining if an entity is visible on the screen.
3554
+ *
3555
+ * @param target - The entity to check. This can be an object with `id` and `type` properties,
3556
+ * a string representing the entity's ID, or an entity state object.
3557
+ * @returns - Returns `true` if the entity is within the camera's view, otherwise `false`.
3558
+ */
3559
+ isInView(target: {
3560
+ id: EntityState['id'];
3561
+ type: EntityState['type'];
3562
+ } | string | EntityState): boolean;
3536
3563
  /**
3537
3564
  * Perform a render of the scene. This is called internally when something changes, but can be called when adding external models
3538
3565
  * The render happens in an animation frame, not matter how frequently it is called
@@ -3763,10 +3790,11 @@ declare module '@mappedin/mappedin-js/maker/src/map-view-objects/custom-geometry
3763
3790
  }
3764
3791
 
3765
3792
  declare module '@mappedin/mappedin-js/maker/src/api-geojson/api' {
3766
- import type { RendererCore } from '@mappedin/core-sdk';
3793
+ import type { Position, RendererCore } from '@mappedin/core-sdk';
3767
3794
  import type { TShow3DMapOptions } from '@mappedin/mappedin-js/maker/src';
3768
3795
  import type MapData from '@mappedin/mappedin-js/maker/src/map-data';
3769
- import { Coordinate, MapObject, Space, type Floor } from '@mappedin/mappedin-js/maker/src/map-data-objects';
3796
+ import { Floor } from '@mappedin/mappedin-js/maker/src/map-data-objects';
3797
+ import { Coordinate, MapObject, Space } from '@mappedin/mappedin-js/maker/src/map-data-objects';
3770
3798
  import type { MapView } from '@mappedin/mappedin-js/maker/src/map-view';
3771
3799
  import { Label, Marker, type Model } from '@mappedin/mappedin-js/maker/src/map-view-objects';
3772
3800
  import { Navigation } from '@mappedin/mappedin-js/maker/src/navigation';
@@ -3793,6 +3821,7 @@ declare module '@mappedin/mappedin-js/maker/src/api-geojson/api' {
3793
3821
  [key in string]: MapData;
3794
3822
  };
3795
3823
  currentMap?: GeojsonApiMapObject;
3824
+ hiddenOutdoorGeometries: [Position, layer: string[]][];
3796
3825
  mapView: MapView;
3797
3826
  Camera: Camera;
3798
3827
  Labels: Labels;
@@ -3823,6 +3852,7 @@ declare module '@mappedin/mappedin-js/maker/src/api-geojson/api' {
3823
3852
  getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | TNavigationTarget[], opt?: TGetDirectionsOptions) => Directions | undefined;
3824
3853
  createCoordinate(latitude: number, longitude: number, floor?: Floor): Coordinate;
3825
3854
  createCoordinateFromScreenCoordinate(x: number, y: number, floor?: Floor): Coordinate | undefined;
3855
+ isInView(target: Space | MapObject | Label | Marker | string): boolean;
3826
3856
  auto(): void;
3827
3857
  /**
3828
3858
  * @internal
@@ -4261,6 +4291,53 @@ declare module '@mappedin/mappedin-js/maker/src/api-geojson/directions' {
4261
4291
  }
4262
4292
  }
4263
4293
 
4294
+ declare module '@mappedin/mappedin-js/maker/src/api-geojson/style' {
4295
+ import type { StyleCollection } from '@mappedin/mvf';
4296
+ import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/maker/src/api-geojson/map-object';
4297
+ export class Style {
4298
+ #private;
4299
+ /**
4300
+ * @internal
4301
+ */
4302
+ get currentMap(): GeojsonApiMapObject | undefined;
4303
+ /**
4304
+ * @internal
4305
+ */
4306
+ constructor({ currentMapGetter }: {
4307
+ currentMapGetter: CurrentMapGetter;
4308
+ });
4309
+ setFromStyleCollection(styleCollection: StyleCollection): void;
4310
+ }
4311
+ type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
4312
+ export {};
4313
+ }
4314
+
4315
+ declare module '@mappedin/mappedin-js/maker/src/api-geojson/outdoor' {
4316
+ import { type RendererCore, type Position } from '@mappedin/core-sdk';
4317
+ export default class Outdoor {
4318
+ #private;
4319
+ /**
4320
+ * @internal
4321
+ */
4322
+ constructor(core: RendererCore, hiddenOutdoorGeometry?: [Position, string[]][]);
4323
+ setStyle(style: any): void;
4324
+ /**
4325
+ * Returns a Maplibre map for advanced usage.
4326
+ *
4327
+ * @returns {object} Maplibre map instance
4328
+ *
4329
+ * Limitations:
4330
+ * - Maplibre interaction events are not supported; use SDK interaction events.
4331
+ * - Maplibre markers and labels may overlap as they are not integrated with the SDK collision engine.
4332
+ */
4333
+ get map(): import("@packages/internal/outdoor-context-v4").Map | undefined;
4334
+ /**
4335
+ * Whether the outdoorView is enabled.
4336
+ */
4337
+ get enabled(): boolean;
4338
+ }
4339
+ }
4340
+
4264
4341
  declare module '@mappedin/mappedin-js/maker/src/api-geojson/map-object' {
4265
4342
  import type { ParsedMVF } from '@mappedin/mvf';
4266
4343
  import { FloorObject } from '@mappedin/mappedin-js/maker/src/api-geojson/floor-object';
@@ -4420,6 +4497,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
4420
4497
  import type { BatchedStandardMaterial } from '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-optimization/batched-material';
4421
4498
  import type { Position } from '@mappedin/mappedin-js/geojson/src/types';
4422
4499
  import type { Feature, LineString, MultiLineString, MultiPolygon, Polygon } from 'geojson';
4500
+ import type { BBox } from '@turf/turf';
4423
4501
  export class EntityBatchedMesh extends BatchedMesh {
4424
4502
  userData: {
4425
4503
  entities: {
@@ -4466,6 +4544,10 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
4466
4544
  * ```
4467
4545
  */
4468
4546
  interactive: boolean;
4547
+ /**
4548
+ * Whether the geometry is outlined with a 30% darkened color. This effect adds lines around the geometry to make it stand out.
4549
+ */
4550
+ outline: boolean;
4469
4551
  };
4470
4552
  export class MeshComponent {
4471
4553
  #private;
@@ -4492,6 +4574,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
4492
4574
  set texture(texture: Texture);
4493
4575
  set topTexture(texture: Texture);
4494
4576
  get topTexture(): string;
4577
+ get featureBbox(): BBox;
4495
4578
  texturesVisible: boolean;
4496
4579
  showTextures(): void;
4497
4580
  hideTextures(): void;
@@ -4547,6 +4630,10 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/entity-group' {
4547
4630
  * The shading of the geometry and its children. Updating this will affect all children of the geometry group.
4548
4631
  */
4549
4632
  shading?: Shading;
4633
+ /**
4634
+ * Whether the geometry and its children are outlined. This will affect all children of the geometry group and override their outline state.
4635
+ */
4636
+ outline?: boolean;
4550
4637
  };
4551
4638
  export type ChildUpdatable<T> = T extends LineStyle ? Partial<Pick<LineStyle, 'color' | 'opacity' | 'visible'>> : Partial<Pick<PaintStyle, 'color' | 'opacity' | 'visible'>>;
4552
4639
  export class GeometryGroupObject3D extends Object3D {
@@ -4580,8 +4667,10 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/entity-group-containe
4580
4667
  import type { LabelState } from '@mappedin/mappedin-js/geojson/src/components/label';
4581
4668
  import { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/three-d';
4582
4669
  import type { PathState } from '@mappedin/mappedin-js/geojson/src/components/path';
4670
+ import { InteractionComponent } from '@mappedin/mappedin-js/geojson/src/components/interaction';
4583
4671
  export enum EntityContainerComponents {
4584
- STACK = 0
4672
+ Stack = 0,
4673
+ Interaction = 1
4585
4674
  }
4586
4675
  /**
4587
4676
  * State representing a Group Container, which is a container for other Group Containers, Geometry Groups, Labels, Markers and Paths.
@@ -4601,6 +4690,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/entity-group-containe
4601
4690
  * The altitude of the group container above the ground in meters
4602
4691
  */
4603
4692
  altitude: number;
4693
+ interactive: boolean;
4604
4694
  };
4605
4695
  export class GroupContainerObject3D extends Object3D {
4606
4696
  childrenIds: Set<string | number>;
@@ -4610,7 +4700,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/entity-group-containe
4610
4700
  entities2D: Set<string | number>;
4611
4701
  dirty: boolean;
4612
4702
  };
4613
- components: [StackComponent?];
4703
+ components: [StackComponent?, InteractionComponent?];
4614
4704
  constructor(id: string);
4615
4705
  addEntity(entityGroupOrContainer: GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | Geometry3D): void;
4616
4706
  removeEntity(entityGroupOrContainer: GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | Geometry3D): void;
@@ -4621,8 +4711,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/entity-group-containe
4621
4711
  }
4622
4712
 
4623
4713
  declare module '@mappedin/mappedin-js/geojson/src/components/path' {
4624
- import type { BufferGeometry } from 'three';
4625
- import { Mesh, ShaderMaterial, Vector3 } from 'three';
4714
+ import { type Mesh, type ShaderMaterial, type BufferGeometry, Vector3 } from 'three';
4626
4715
  import type { Position } from '@mappedin/mappedin-js/geojson/src/types';
4627
4716
  import { Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/three-d';
4628
4717
  import type { FeatureCollection, Point } from 'geojson';
@@ -4680,18 +4769,22 @@ declare module '@mappedin/mappedin-js/geojson/src/components/path' {
4680
4769
  };
4681
4770
  export class PathComponent {
4682
4771
  #private;
4683
- points: Vector3[];
4684
4772
  readonly type = "path";
4685
4773
  mesh: Geometry3DObject3D;
4686
- material: ShaderMaterial;
4687
- geometry: BufferGeometry;
4774
+ material?: ShaderMaterial;
4775
+ geometry?: BufferGeometry;
4688
4776
  outline?: Mesh;
4689
- feature?: FeatureCollection<Point>;
4777
+ feature: FeatureCollection<Point>;
4690
4778
  options: AddPathOptions;
4691
- constructor(points: Vector3[], options?: AddPathOptions);
4779
+ nearRadius: number;
4780
+ farRadius: number;
4781
+ color: string;
4782
+ pulseColor: string;
4783
+ altitudeAdjustment: number;
4784
+ dirty: boolean;
4785
+ constructor(feature: FeatureCollection<Point, any>, options?: AddPathOptions);
4692
4786
  setColor(): void;
4693
4787
  setOpacity(): void;
4694
- altitudeAdjustment: number;
4695
4788
  set completeFraction(value: number);
4696
4789
  get completeFraction(): number;
4697
4790
  set visible(visible: boolean);
@@ -6157,23 +6250,15 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/outdoor-layers/system'
6157
6250
  import type { Map } from '@packages/internal/outdoor-context-v4';
6158
6251
  import type { Position } from '@mappedin/mappedin-js/geojson/src/renderer';
6159
6252
  export class OutdoorLayers {
6160
- #private;
6161
6253
  dirty: boolean;
6162
6254
  hideLayersUnderPoint(point: Position, layers: string[]): void;
6163
6255
  constructor(map?: Map);
6164
- filterStylesInMap(): void;
6165
6256
  destroy(): void;
6166
6257
  }
6167
6258
  }
6168
6259
 
6169
- declare module '@mappedin/mappedin-js/maker/src/api-geojson/outdoor' {
6170
- import type { RendererCore } from '@mappedin/core-sdk';
6171
- export default class Outdoor {
6172
- constructor(core: RendererCore);
6173
- setStyle(style: any): void;
6174
- get map(): import("@packages/internal/outdoor-context-v4").Map | undefined;
6175
- get enabled(): boolean;
6176
- }
6260
+ declare module '@mappedin/mappedin-js/geojson/src/systems/path' {
6261
+ export { PathSystem } from '@mappedin/mappedin-js/geojson/src/systems/path/system';
6177
6262
  }
6178
6263
 
6179
6264
  declare module '@mappedin/mappedin-js/maker/src/api-geojson/utils' {
@@ -6236,12 +6321,14 @@ declare module '@mappedin/mappedin-js/geojson/src/components/geometry-group-styl
6236
6321
  topColor?: string;
6237
6322
  opacity: number;
6238
6323
  shading?: Shading;
6324
+ outline: boolean;
6239
6325
  };
6240
6326
  export class GeometryGroupStyleComponent implements GeometryGroupStyle {
6241
6327
  #private;
6242
6328
  color: string;
6243
6329
  topColor?: string;
6244
6330
  opacity: number;
6331
+ outline: boolean;
6245
6332
  get shading(): Required<Shading> | undefined;
6246
6333
  set shading(value: Shading | undefined);
6247
6334
  constructor(style?: Partial<GeometryGroupStyle>);
@@ -6337,6 +6424,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/style' {
6337
6424
  topColor?: string;
6338
6425
  texture?: string;
6339
6426
  topTexture?: string;
6427
+ outline: boolean;
6340
6428
  };
6341
6429
  export class StyleComponent implements Style {
6342
6430
  initialColor: string;
@@ -6353,6 +6441,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/style' {
6353
6441
  altitude: number;
6354
6442
  join: Join;
6355
6443
  cap: Cap;
6444
+ outline: boolean;
6356
6445
  constructor(style?: Partial<Style>);
6357
6446
  }
6358
6447
  export {};
@@ -6396,11 +6485,13 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/system' {
6396
6485
  import { TapsController } from '@mappedin/mappedin-js/geojson/src/systems/interactions/tap-controller';
6397
6486
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
6398
6487
  import 'style.scss';
6399
- import { EntityBatchedMesh } from '@mappedin/mappedin-js/geojson/src/components/mesh';
6488
+ import type { EntityBatchedMesh } from '@mappedin/mappedin-js/geojson/src/components/mesh';
6489
+ import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
6400
6490
  type InteractionPayload = {
6401
6491
  entity2D?: Geometry2D;
6402
6492
  entity3D?: Geometry3D;
6403
6493
  position?: Vector3;
6494
+ groupContainers?: GroupContainerObject3D[];
6404
6495
  pointerEvent: Pick<PointerEvent, 'button'>;
6405
6496
  };
6406
6497
  type InteractionEvents = {
@@ -6443,7 +6534,10 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/system' {
6443
6534
  onPointerMoveRaf: (event: PointerEvent) => void;
6444
6535
  tapsControl: TapsController;
6445
6536
  dirty3D: boolean;
6446
- get _hitBoxes(): (EntityBatchedMesh | Object3D<import("three").Object3DEventMap> | EntityMesh<Geometry3D>)[];
6537
+ get _hitBoxes(): {
6538
+ entities: (Object3D | EntityMesh<Geometry3D> | EntityBatchedMesh)[];
6539
+ groups: GroupContainerObject3D[];
6540
+ };
6447
6541
  getMouseRayIntersects(): import("three").Intersection<Object3D<import("three").Object3DEventMap>>[];
6448
6542
  destroy(): void;
6449
6543
  debugPanel: HTMLDivElement | undefined;
@@ -6451,6 +6545,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/system' {
6451
6545
  get _state(): {
6452
6546
  hovered3DEntity: Geometry3D | undefined;
6453
6547
  hovered2DEntity: Geometry2D | undefined;
6548
+ hovered3DContainers: GroupContainerObject3D[] | undefined;
6454
6549
  lastHover: Geometry3D | undefined;
6455
6550
  containerOffset: [top: number, left: number];
6456
6551
  interaction: InteractionState;
@@ -15040,6 +15135,19 @@ declare module '@mappedin/mappedin-js/geojson/src/entities' {
15040
15135
  export { Geometry3D, ThreeDComponents } from '@mappedin/mappedin-js/geojson/src/entities/three-d';
15041
15136
  }
15042
15137
 
15138
+ declare module '@mappedin/mappedin-js/geojson/src/systems/path/system' {
15139
+ import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
15140
+ import type { RendererCore } from '@mappedin/mappedin-js/geojson/src';
15141
+ /**
15142
+ * A system for drawing and controlling the visual state of paths
15143
+ */
15144
+ export class PathSystem {
15145
+ convertTo3DMapPosition: RendererCore['convertTo3DMapPosition'];
15146
+ constructor(rendererState: RendererState, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']);
15147
+ update(minZoomAltitude: number, maxZoomAltitude: number, currentZoomAltitude: number): void;
15148
+ }
15149
+ }
15150
+
15043
15151
  declare module '@mappedin/mappedin-js/geojson/examples/src/utils/scene-graph-visualizer' {
15044
15152
  import type Core from '@mappedin/mappedin-js/geojson/src/renderer';
15045
15153
  export function mountSceneGraphVisualizer(mv: Core, gui: any): void;
@@ -15122,11 +15230,16 @@ declare module '@mappedin/mappedin-js/geojson/src/utils' {
15122
15230
  export function getBoundingBoxCenter(bbox: Position[]): [number, number];
15123
15231
  export { getPixelRatio } from '@mappedin/mappedin-js/geojson/src/utils/get-pixel-ratio';
15124
15232
  export { shouldDisableOffscreenCanvas } from '@mappedin/mappedin-js/geojson/src/utils/browser';
15233
+ export { noop } from '@mappedin/mappedin-js/geojson/src/utils/fp';
15125
15234
  }
15126
15235
 
15127
15236
  declare module '@mappedin/mappedin-js/geojson/src/utils/constants' {
15128
15237
  export const EARTH_RADIUS_M = 6371008.8;
15129
15238
  export const MAPPEDIN_LAYER_ID = "mappedin";
15239
+ export enum ENTITY_3D_LAYERS {
15240
+ DEFAULT = 0,
15241
+ OUTLINES = 1
15242
+ }
15130
15243
  }
15131
15244
 
15132
15245
  declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/tap-controller' {
@@ -18711,12 +18824,12 @@ declare module '@mappedin/mappedin-js/packages/outdoor-context-v4/ui/handler/tap
18711
18824
  declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
18712
18825
  import type { CollisionRankingTier, GeometryState, LabelState, PathState, RendererCore } from '@mappedin/mappedin-js/geojson/src';
18713
18826
  import type { MarkerState } from '@mappedin/mappedin-js/geojson/src/components/marker';
18714
- import type { Position, RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
18827
+ import type { Entity3DTypes, Position, RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
18715
18828
  import { GeometryGroupObject3D, type GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group';
18716
18829
  import { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
18717
18830
  import { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/three-d';
18718
18831
  import { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/two-d';
18719
- export function updateInteractivity(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: boolean | undefined, state: RendererState): boolean;
18832
+ export function updateInteractivity(entity: Entity3DTypes | Geometry2D, update: boolean | undefined, state: RendererState): boolean;
18720
18833
  export function updateGroupColor(entity: GeometryGroupObject3D, state: RendererState, update?: Partial<GeometryGroupState>): boolean;
18721
18834
  export function updateGroupShading(entity: GeometryGroupObject3D, update?: GeometryGroupState['shading']): boolean;
18722
18835
  export function updateColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Partial<GeometryState>): void;
@@ -18731,6 +18844,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
18731
18844
  export function updateVisibility(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: boolean): boolean;
18732
18845
  export function updateOpacity(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, state: RendererState, update?: number): void;
18733
18846
  export function updateAltitude(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: number): void;
18847
+ export function updateOutline(entity: Entity3DTypes, update?: boolean): boolean;
18734
18848
  }
18735
18849
 
18736
18850
  declare module '@mappedin/mappedin-js/geojson/src/utils/get-pixel-ratio' {
@@ -18776,6 +18890,10 @@ declare module '@mappedin/mappedin-js/geojson/src/utils/browser' {
18776
18890
  export {};
18777
18891
  }
18778
18892
 
18893
+ declare module '@mappedin/mappedin-js/geojson/src/utils/fp' {
18894
+ export function noop(): void;
18895
+ }
18896
+
18779
18897
  declare module '@mappedin/mappedin-js/geojson/src/systems/camera/helpers/input-set' {
18780
18898
  import type { Vector2 } from 'three';
18781
18899
  class InputSet {