@mappedin/mappedin-js 6.0.1-beta.23 → 6.0.1-beta.24

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.
@@ -64,92 +64,6 @@ declare module '@mappedin/mappedin-js' {
64
64
  */
65
65
  quality?: 'low' | 'medium' | 'high' | 'ultra';
66
66
  };
67
- /**
68
- * Represents all the available ambient occlusion options.
69
- */
70
- type TAmbientOcclusionOptions = {
71
- /**
72
- * Enable ambient occlusion. Only works in single buffer mode and when device supports WebGL2.
73
- *
74
- * @default false
75
- */
76
- enabled?: boolean;
77
- /**
78
- * Change the quality of ambient occlusion in the scene. Greater quality means less noise, but worse performance.
79
- *
80
- * The quality modes are as follows:
81
-
82
- *Temporal stability refers to how consistent the AO is from frame to frame - it's important for a smooth experience.*
83
- | Quality Mode | AO Samples | Denoise Samples | Denoise Radius | Best For
84
- |:---:|:---:|:---:|:---:|:---:|
85
- | Performance (Less temporal stability, a bit noisy) | 8 | 4 | 12 | Mobile, Low-end iGPUs and laptops |
86
- | Low (Temporally stable, but low-frequency noise) | 16 | 4 | 12 | High-End Mobile, iGPUs, laptops |
87
- | Medium (Temporally stable and barely any noise) | 16 | 8 | 12 | High-End Mobile, laptops, desktops |
88
- | High (Significantly sharper AO, barely any noise) | 64 | 8 | 6 | Desktops, dedicated GPUs |
89
- | Ultra (Sharp AO, No visible noise whatsoever) | 64 | 16 | 6 | Desktops, dedicated GPUs|
90
-
91
- Generally, half-res mode at "Ultra" quality is slightly slower than full-res mode at "Performance" quality, but produces significantly better results.
92
-
93
- If you wish to make entirely custom quality setup, you can manually change `aoSamples`, `denoiseSamples` and `denoiseRadius`.
94
- *
95
- * @default 'medium'
96
- */
97
- quality?: 'performance' | 'low' | 'medium' | 'high' | 'ultra';
98
- samples?: number;
99
- /**
100
- * Controls the radius/size of the ambient occlusion in world units. Should be set to how far you want the occlusion to extend from a given object.
101
- * Set it too low, and AO becomes an edge detector. Too high, and the AO becomes "soft" and might not highlight the details you want.
102
- */
103
- radius?: number;
104
- denoiseSamples?: number;
105
- denoiseRadius?: number;
106
- /**
107
- * A purely artistic control for the intensity of the AO has the effect of darkening areas with more ambient occlusion.
108
- * Useful to make the effect more pronounced. An intensity of 2 generally produces soft ambient occlusion that isn't too noticeable,
109
- * whereas one of 5 produces heavily prominent ambient occlusion.
110
- */
111
- intensity?: number;
112
- denoiseIterations?: number;
113
- renderMode?: number;
114
- /**
115
- * The color of the ambient occlusion. By default, it is black, but it can be changed to any color to offer a crude approximation of global illumination.
116
- * Recommended in scenes where bounced light has a uniform "color", for instance a scene that is predominantly lit by a blue sky.
117
- * The color is expected to be in the sRGB color space, and is automatically converted to linear space for you. Keep the color pretty dark for sensible results.
118
- *
119
- * Color formats:\
120
- * RGB String: `rgb(255, 0, 0)` or `rgb(100%, 0%, 0%)`\
121
- * HSL String: `hsl(0, 100%, 50%)`\
122
- * X11 color name - all 140 color names are supported. Note the lack of CamelCase in the name: `skyblue`
123
- */
124
- color?: string;
125
- /**
126
- * Should be automatically set to the correct value. If you are getting washed out colors, try setting `gammaCorrection` to false, and if you are getting dark colors, try setting it to true.
127
- */
128
- gammaCorrection?: boolean;
129
- logarithmicDepthBuffer?: boolean;
130
- /**
131
- * When screenSpaceRadius is set to true, the `aoRadius` parameter represents the size of the ambient occlusion effect in pixels (recommended to be set between 16 and 64).
132
- * The `distanceFalloff` parameter becomes a ratio, representing the percent of the screen space radius at which the AO should fade away - it should be set to 0.2 in most cases,
133
- * but it accepts any value between 0 and 1 (technically even higher than 1, though that is not recommended).
134
- */
135
- screenSpaceRadius?: boolean;
136
- /**
137
- * Use half-resolution" mode for performance-critical applications. This will cause the AO to be calculated at half the resolution of the screen, and then upscaled to the full resolution.
138
- * This is a great way to get a performance boost (generally 2x-4x) at the cost of some quality (the AO will lack fine details and temporal stability will be slightly reduced).
139
- * @default 'full'
140
- */
141
- resolution?: 'half' | 'full';
142
- /**
143
- * The half `aoResolution` mode uses depth-aware upscaling by default.
144
- * The AO effect looks bad without depth-aware upscaling, so it is not recommended to disable it.
145
- * However, if performance is truly that critical, you can do so by setting `depthAwareUpsampling` to false.
146
- */
147
- depthAwareUpsampling?: boolean;
148
- /**
149
- * It is recommended to not change this value, otherwise rendering issues may occur.
150
- */
151
- autoRenderBeauty?: boolean;
152
- };
153
67
  /**
154
68
  * @interface
155
69
  * Options for the watermark.
@@ -371,19 +285,24 @@ declare module '@mappedin/mappedin-js' {
371
285
  * @experimental
372
286
  */
373
287
  export const createMapLibreOverlay: (mapData: MapData, showMapOptions?: TShow3DMapOptions) => MappedinMapLibreOverlay;
374
- export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
375
288
  export const show3dMap: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
289
+ /**
290
+ * @internal
291
+ * @deprecated Use {@link show3dMap} instead.
292
+ */
293
+ export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
376
294
  export { parseMVF, unzipMVF, enableTestMode };
377
- export type { MapView, MapData, MappedinMapLibreOverlay, TMappedinMapLibreOverlayEvents, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAmbientOcclusionOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, };
295
+ export type { MapView, MapData, MappedinMapLibreOverlay, TMappedinMapLibreOverlayEvents, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, };
378
296
  export type * from 'geojson';
379
297
  export type { TUpdateState, TUpdateStates, TLabelState, TGeometryState, TModelState, TShapeState, TDoorsState, TImageState, TWallsState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TCameraFocusOnTarget, TFocusable, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TAddImageOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, TBlueDotPositionUpdate, } from '@mappedin/mappedin-js/mappedin-js/src/types';
380
298
  export { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
381
299
  export type { Label, Marker, Path, Shape, CameraTransform, Model, Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
382
300
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
383
301
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
384
- export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image as ImageData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, Node, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
302
+ export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image as ImageData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, Facade, Node, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
385
303
  export type { Camera, Models, Labels, BlueDot, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, StackedMaps, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
386
304
  export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search';
305
+ export type { TFindNearestOptions, TFindNearestResult, TQueriables, Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
387
306
  export type { Analytics, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
388
307
  }
389
308
 
@@ -391,13 +310,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
391
310
  import { Analytics } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
392
311
  import { PubSub } from '@packages/internal/common';
393
312
  import type { TSearchOptions } from '@packages/internal/mvf-utils';
394
- import type { Connection, Door, Floor, MapDataInternal, Space, MapObject, PointOfInterest, Annotation, Coordinate, FloorStack, Node, Area } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
313
+ import type { Connection, Door, Floor, MapDataInternal, Space, MapObject, PointOfInterest, Annotation, Coordinate, FloorStack, Node, Facade, Area } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
395
314
  import type EnterpriseCategory from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category';
396
315
  import type EnterpriseLocation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location';
397
316
  import type EnterpriseVenue from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue';
398
317
  import { Search } from '@mappedin/mappedin-js/mappedin-js/src/search';
399
318
  import type { TNavigationTarget, TGetDirectionsOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
400
319
  import type { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions';
320
+ import { Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
401
321
  /**
402
322
  * A WeakMap to associate {@link MapData} instances with their internal representation.
403
323
  * We need a way to get the internal data object from the API
@@ -435,6 +355,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
435
355
  * console.log(suggestions);
436
356
  */
437
357
  Search: Search;
358
+ Query: Query;
438
359
  /**
439
360
  * Constructs a new instance of {@link MapData}.
440
361
  *
@@ -513,6 +434,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
513
434
  * const floorStacks = mapData.getByType('floor-stack');
514
435
  */
515
436
  getByType(type: 'floor-stack'): FloorStack[];
437
+ /**
438
+ * @returns The facades ({@link Facade}) within the map.
439
+ * @example
440
+ * const facades = mapData.getByType('facade');
441
+ */
442
+ getByType(type: 'facade'): Facade[];
516
443
  /**
517
444
  * @returns The connections ({@link Connection}) on the map.
518
445
  * @example
@@ -576,7 +503,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
576
503
  * @example
577
504
  * const space = mapData.getById('space', 'space-id');
578
505
  */
579
- getById<T extends string>(type: T, id: string): T extends 'node' ? Node | undefined : T extends 'space' ? Space | undefined : T extends 'door' ? Door | undefined : T extends 'floor' ? Floor | undefined : T extends 'floor-stack' ? FloorStack | undefined : T extends 'connection' ? Connection | undefined : T extends 'object' ? MapObject | undefined : T extends 'point-of-interest' ? PointOfInterest | undefined : T extends 'annotation' ? Annotation | undefined : T extends 'area' ? Area | undefined : T extends 'enterprise-location' ? EnterpriseLocation | undefined : T extends 'enterprise-category' ? EnterpriseCategory | undefined : undefined;
506
+ getById<T extends string>(type: T, id: string): T extends 'node' ? Node | undefined : T extends 'space' ? Space | undefined : T extends 'door' ? Door | undefined : T extends 'floor' ? Floor | undefined : T extends 'facade' ? Facade | undefined : T extends 'floor-stack' ? FloorStack | undefined : T extends 'connection' ? Connection | undefined : T extends 'object' ? MapObject | undefined : T extends 'point-of-interest' ? PointOfInterest | undefined : T extends 'annotation' ? Annotation | undefined : T extends 'area' ? Area | undefined : T extends 'enterprise-location' ? EnterpriseLocation | undefined : T extends 'enterprise-category' ? EnterpriseCategory | undefined : undefined;
580
507
  getById(type: string, id: string): object | undefined;
581
508
  /**
582
509
  * Changes the language of the map data.
@@ -806,6 +733,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
806
733
  import Hyperlink from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/hyperlink';
807
734
  import Image from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image';
808
735
  import FloorStack from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-stack';
736
+ import Facade from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/facade';
809
737
  import type { MapDataRecords } from '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation';
810
738
  import type { AnnotationCollection, ParsedMVF, Connection as MVFConnection, EntranceCollection, NodeCollection, ObstructionCollection, SpaceCollection, FloorProperties as MVFFloor, FloorStack as MVFFloorStack, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseCategory as MVFEnterpriseCategory, Language, AreaCollection } from '@mappedin/mvf';
811
739
  import { AnalyticsInternal } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
@@ -819,6 +747,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
819
747
  import type { TGetDirectionsOptions, TNavigationTarget } from '@mappedin/mappedin-js/mappedin-js/src/types';
820
748
  import { type Directions, DirectionsInternal } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions';
821
749
  import { type THydrateMapDataBundle } from '@mappedin/mappedin-js/mappedin-js/src';
750
+ import { Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
822
751
  /**
823
752
  * Internal class representing detailed map data.
824
753
  *
@@ -832,6 +761,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
832
761
  }> {
833
762
  #private;
834
763
  Analytics: AnalyticsInternal;
764
+ Query: Query;
835
765
  /**
836
766
  * Represents the parsed Mappedin Venue Format (MVF) data.
837
767
  */
@@ -860,6 +790,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
860
790
  spacesById: MapDataRecords['spacesById'];
861
791
  floorsById: MapDataRecords['floorsById'];
862
792
  floorStacksById: MapDataRecords['floorStacksById'];
793
+ facadesById: MapDataRecords['facadesById'];
794
+ facadesBySpaceId: MapDataRecords['facadesBySpaceId'];
863
795
  connectionsById: MapDataRecords['connectionsById'];
864
796
  objectsById: MapDataRecords['objectsById'];
865
797
  doorsById: MapDataRecords['doorsById'];
@@ -881,6 +813,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
881
813
  mvfFloorsById: MapDataRecords['mvfFloorsById'];
882
814
  mvfFloorStacksById: MapDataRecords['mvfFloorStacksById'];
883
815
  mvfAreasById: MapDataRecords['mvfAreasById'];
816
+ mvfNodesByFloorId: MapDataRecords['mvfNodesByFloorId'];
817
+ mvfSpacesByFloorId: MapDataRecords['mvfSpacesByFloorId'];
818
+ mvfPoisByFloorId: MapDataRecords['mvfPoisByFloorId'];
819
+ mvfEntrancesByFloorId: MapDataRecords['mvfEntrancesByFloorId'];
820
+ mvfAnnotationsByFloorId: MapDataRecords['mvfAnnotationsByFloorId'];
884
821
  localePacksUrls: LocalePackUrls;
885
822
  currentLanguage?: Language;
886
823
  /**
@@ -934,6 +871,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
934
871
  */
935
872
  get floors(): Floor[];
936
873
  get floorStacks(): FloorStack[];
874
+ get facades(): Facade[];
937
875
  /**
938
876
  * Retrieves all doors in the map.
939
877
  *
@@ -965,6 +903,21 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
965
903
  get categories(): EnterpriseCategory[];
966
904
  get mvfFloors(): MVFFloor[];
967
905
  get mvfFloorStacks(): MVFFloorStack[];
906
+ getByType(type: string): object[];
907
+ getByType(type: 'space'): Space[];
908
+ getByType(type: 'area'): Area[];
909
+ getByType(type: 'door'): Door[];
910
+ getByType(type: 'floor'): Floor[];
911
+ getByType(type: 'floor-stack'): FloorStack[];
912
+ getByType(type: 'connection'): Connection[];
913
+ getByType(type: 'object'): MapObject[];
914
+ getByType(type: 'point-of-interest'): PointOfInterest[];
915
+ getByType(type: 'annotation'): Annotation[];
916
+ getByType(type: 'node'): Node[];
917
+ getByType(type: 'enterprise-location'): EnterpriseLocation[];
918
+ getByType(type: 'enterprise-category'): EnterpriseCategory[];
919
+ getByType(type: 'enterprise-venue'): EnterpriseVenue | undefined;
920
+ getByType(type: 'facade'): Facade[];
968
921
  /**
969
922
  * Retrieves an object by its type and ID.
970
923
  *
@@ -972,18 +925,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
972
925
  * @param id The ID of the object.
973
926
  * @returns {Space | Door | Floor | Connection | MapObject | undefined} The requested object, or undefined if not found.
974
927
  */
975
- getById(type: 'node', id: string): Node | undefined;
976
- getById(type: 'space', id: string): Space | undefined;
977
- getById(type: 'door', id: string): Door | undefined;
978
- getById(type: 'floor', id: string): Floor | undefined;
979
- getById(type: 'floor-stack', id: string): FloorStack | undefined;
980
- getById(type: 'connection', id: string): Connection | undefined;
981
- getById(type: 'object', id: string): MapObject | undefined;
982
- getById(type: 'point-of-interest', id: string): PointOfInterest | undefined;
983
- getById(type: 'annotation', id: string): Annotation | undefined;
984
- getById(type: 'area', id: string): Area | undefined;
985
- getById(type: 'enterprise-location', id: string): EnterpriseLocation | undefined;
986
- getById(type: 'enterprise-category', id: string): EnterpriseCategory | undefined;
928
+ getById<T extends string>(type: T, id: string): T extends 'node' ? Node | undefined : T extends 'space' ? Space | undefined : T extends 'door' ? Door | undefined : T extends 'floor' ? Floor | undefined : T extends 'floor-stack' ? FloorStack | undefined : T extends 'connection' ? Connection | undefined : T extends 'object' ? MapObject | undefined : T extends 'point-of-interest' ? PointOfInterest | undefined : T extends 'annotation' ? Annotation | undefined : T extends 'enterprise-location' ? EnterpriseLocation | undefined : T extends 'enterprise-category' ? EnterpriseCategory | undefined : T extends 'area' ? Area | undefined : T extends 'facade' ? Facade | undefined : undefined;
929
+ getById(type: string, id: string): object | undefined;
987
930
  getMapDataById(id: string): Places | undefined;
988
931
  /**
989
932
  * Retrieves a feature by its type and ID from the Mappedin Venue Format (MVF) data.
@@ -1031,7 +974,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
1031
974
  */
1032
975
  destroy(): void;
1033
976
  }
1034
- export { Node, Area, MapDataInternal, Space, Floor, FloorStack, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, };
977
+ export { Node, Area, MapDataInternal, Space, Floor, FloorStack, Facade, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, };
1035
978
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space';
1036
979
  export type { Places };
1037
980
  }
@@ -1111,9 +1054,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1111
1054
  */
1112
1055
  Outdoor: Outdoor;
1113
1056
  /**
1114
- * Controls for the stacked maps.
1057
+ * Controls for Stacked Maps.
1115
1058
  */
1116
1059
  get StackedMaps(): StackedMaps;
1060
+ /**
1061
+ * @internal
1062
+ * @experimental
1063
+ */
1064
+ get DynamicFocus(): import("./api-geojson/dynamic-focus").DynamicFocus;
1117
1065
  /**
1118
1066
  * @internal
1119
1067
  */
@@ -1432,7 +1380,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay' {
1432
1380
 
1433
1381
  declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1434
1382
  import type { Feature, MultiPolygon, Polygon } from 'geojson';
1435
- import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation, EnterpriseLocation, Node, Area } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
1383
+ import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation, EnterpriseLocation, Node, Area, Facade } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
1436
1384
  import type { Label, Marker, Model, Image, Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
1437
1385
  import type { Language, ParsedMVFLocalePack } from '@mappedin/mvf';
1438
1386
  import type { InsetPaddingOption, Position } from '@mappedin/core-sdk';
@@ -1800,7 +1748,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1800
1748
  /**
1801
1749
  * A map element that can be focused on by the camera.
1802
1750
  */
1803
- export type TFocusable = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | Area | Node | EnterpriseLocation
1751
+ export type TFocusable = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | Area | Node | EnterpriseLocation | Facade
1804
1752
  /**
1805
1753
  * @experimental
1806
1754
  */
@@ -1835,7 +1783,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1835
1783
  /**
1836
1784
  * Defines the target for navigation operations.
1837
1785
  */
1838
- export type TNavigationTarget = Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation | Node | Area;
1786
+ export type TNavigationTarget = Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation | Node | Area | Facade;
1839
1787
  /**
1840
1788
  * Defines the special zone for navigation operations.
1841
1789
  */
@@ -2950,6 +2898,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/search' {
2950
2898
  export { Search } from '@mappedin/mappedin-js/mappedin-js/src/search/external';
2951
2899
  }
2952
2900
 
2901
+ declare module '@mappedin/mappedin-js/mappedin-js/src/query' {
2902
+ export { Query } from '@mappedin/mappedin-js/mappedin-js/src/query/external';
2903
+ export type { TFindNearestOptions, TFindNearestResult, TQueriables } from '@mappedin/mappedin-js/mappedin-js/src/query/external';
2904
+ }
2905
+
2953
2906
  declare module '@mappedin/mappedin-js/mappedin-js/src/analytics' {
2954
2907
  export { Analytics, AnalyticsInternal } from '@mappedin/mappedin-js/mappedin-js/src/analytics/customer';
2955
2908
  export type { AnalyticsUpdateOptions, AnalyticState, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics/customer';
@@ -3510,92 +3463,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3510
3463
  */
3511
3464
  quality?: 'low' | 'medium' | 'high' | 'ultra';
3512
3465
  };
3513
- /**
3514
- * Represents all the available ambient occlusion options.
3515
- */
3516
- type TAmbientOcclusionOptions = {
3517
- /**
3518
- * Enable ambient occlusion. Only works in single buffer mode and when device supports WebGL2.
3519
- *
3520
- * @default false
3521
- */
3522
- enabled?: boolean;
3523
- /**
3524
- * Change the quality of ambient occlusion in the scene. Greater quality means less noise, but worse performance.
3525
- *
3526
- * The quality modes are as follows:
3527
-
3528
- *Temporal stability refers to how consistent the AO is from frame to frame - it's important for a smooth experience.*
3529
- | Quality Mode | AO Samples | Denoise Samples | Denoise Radius | Best For
3530
- |:---:|:---:|:---:|:---:|:---:|
3531
- | Performance (Less temporal stability, a bit noisy) | 8 | 4 | 12 | Mobile, Low-end iGPUs and laptops |
3532
- | Low (Temporally stable, but low-frequency noise) | 16 | 4 | 12 | High-End Mobile, iGPUs, laptops |
3533
- | Medium (Temporally stable and barely any noise) | 16 | 8 | 12 | High-End Mobile, laptops, desktops |
3534
- | High (Significantly sharper AO, barely any noise) | 64 | 8 | 6 | Desktops, dedicated GPUs |
3535
- | Ultra (Sharp AO, No visible noise whatsoever) | 64 | 16 | 6 | Desktops, dedicated GPUs|
3536
-
3537
- Generally, half-res mode at "Ultra" quality is slightly slower than full-res mode at "Performance" quality, but produces significantly better results.
3538
-
3539
- If you wish to make entirely custom quality setup, you can manually change `aoSamples`, `denoiseSamples` and `denoiseRadius`.
3540
- *
3541
- * @default 'medium'
3542
- */
3543
- quality?: 'performance' | 'low' | 'medium' | 'high' | 'ultra';
3544
- samples?: number;
3545
- /**
3546
- * Controls the radius/size of the ambient occlusion in world units. Should be set to how far you want the occlusion to extend from a given object.
3547
- * Set it too low, and AO becomes an edge detector. Too high, and the AO becomes "soft" and might not highlight the details you want.
3548
- */
3549
- radius?: number;
3550
- denoiseSamples?: number;
3551
- denoiseRadius?: number;
3552
- /**
3553
- * A purely artistic control for the intensity of the AO has the effect of darkening areas with more ambient occlusion.
3554
- * Useful to make the effect more pronounced. An intensity of 2 generally produces soft ambient occlusion that isn't too noticeable,
3555
- * whereas one of 5 produces heavily prominent ambient occlusion.
3556
- */
3557
- intensity?: number;
3558
- denoiseIterations?: number;
3559
- renderMode?: number;
3560
- /**
3561
- * The color of the ambient occlusion. By default, it is black, but it can be changed to any color to offer a crude approximation of global illumination.
3562
- * Recommended in scenes where bounced light has a uniform "color", for instance a scene that is predominantly lit by a blue sky.
3563
- * The color is expected to be in the sRGB color space, and is automatically converted to linear space for you. Keep the color pretty dark for sensible results.
3564
- *
3565
- * Color formats:\
3566
- * RGB String: `rgb(255, 0, 0)` or `rgb(100%, 0%, 0%)`\
3567
- * HSL String: `hsl(0, 100%, 50%)`\
3568
- * X11 color name - all 140 color names are supported. Note the lack of CamelCase in the name: `skyblue`
3569
- */
3570
- color?: string;
3571
- /**
3572
- * Should be automatically set to the correct value. If you are getting washed out colors, try setting `gammaCorrection` to false, and if you are getting dark colors, try setting it to true.
3573
- */
3574
- gammaCorrection?: boolean;
3575
- logarithmicDepthBuffer?: boolean;
3576
- /**
3577
- * When screenSpaceRadius is set to true, the `aoRadius` parameter represents the size of the ambient occlusion effect in pixels (recommended to be set between 16 and 64).
3578
- * The `distanceFalloff` parameter becomes a ratio, representing the percent of the screen space radius at which the AO should fade away - it should be set to 0.2 in most cases,
3579
- * but it accepts any value between 0 and 1 (technically even higher than 1, though that is not recommended).
3580
- */
3581
- screenSpaceRadius?: boolean;
3582
- /**
3583
- * Use half-resolution" mode for performance-critical applications. This will cause the AO to be calculated at half the resolution of the screen, and then upscaled to the full resolution.
3584
- * This is a great way to get a performance boost (generally 2x-4x) at the cost of some quality (the AO will lack fine details and temporal stability will be slightly reduced).
3585
- * @default 'full'
3586
- */
3587
- resolution?: 'half' | 'full';
3588
- /**
3589
- * The half `aoResolution` mode uses depth-aware upscaling by default.
3590
- * The AO effect looks bad without depth-aware upscaling, so it is not recommended to disable it.
3591
- * However, if performance is truly that critical, you can do so by setting `depthAwareUpsampling` to false.
3592
- */
3593
- depthAwareUpsampling?: boolean;
3594
- /**
3595
- * It is recommended to not change this value, otherwise rendering issues may occur.
3596
- */
3597
- autoRenderBeauty?: boolean;
3598
- };
3599
3466
  /**
3600
3467
  * @interface
3601
3468
  * Options for the watermark.
@@ -3817,19 +3684,24 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3817
3684
  * @experimental
3818
3685
  */
3819
3686
  export const createMapLibreOverlay: (mapData: MapData, showMapOptions?: TShow3DMapOptions) => MappedinMapLibreOverlay;
3820
- export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
3821
3687
  export const show3dMap: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
3688
+ /**
3689
+ * @internal
3690
+ * @deprecated Use {@link show3dMap} instead.
3691
+ */
3692
+ export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
3822
3693
  export { parseMVF, unzipMVF, enableTestMode };
3823
- export type { MapView, MapData, MappedinMapLibreOverlay, TMappedinMapLibreOverlayEvents, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAmbientOcclusionOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, };
3694
+ export type { MapView, MapData, MappedinMapLibreOverlay, TMappedinMapLibreOverlayEvents, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, };
3824
3695
  export type * from 'geojson';
3825
3696
  export type { TUpdateState, TUpdateStates, TLabelState, TGeometryState, TModelState, TShapeState, TDoorsState, TImageState, TWallsState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TCameraFocusOnTarget, TFocusable, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TAddImageOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, TBlueDotPositionUpdate, } from '@mappedin/mappedin-js/mappedin-js/src/types';
3826
3697
  export { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
3827
3698
  export type { Label, Marker, Path, Shape, CameraTransform, Model, Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
3828
3699
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
3829
3700
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3830
- export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image as ImageData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, Node, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3701
+ export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image as ImageData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, Facade, Node, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3831
3702
  export type { Camera, Models, Labels, BlueDot, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, StackedMaps, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
3832
3703
  export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search';
3704
+ export type { TFindNearestOptions, TFindNearestResult, TQueriables, Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
3833
3705
  export type { Analytics, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
3834
3706
  }
3835
3707
 
@@ -4952,7 +4824,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image' {
4952
4824
 
4953
4825
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-stack' {
4954
4826
  import type { FloorStack as MVFFloorStack } from '@mappedin/mvf';
4955
- import type { MapDataInternal, Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4827
+ import type { MapDataInternal, Floor, Facade } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4956
4828
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
4957
4829
  /**
4958
4830
  * A class representing floor stack data within the map.
@@ -4981,6 +4853,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-sta
4981
4853
  */
4982
4854
  constructor(data: MapDataInternal, options: {
4983
4855
  mvfData: MVFFloorStack;
4856
+ facadeId?: string;
4984
4857
  });
4985
4858
  /**
4986
4859
  * Gets the type of FloorStack.
@@ -5001,7 +4874,15 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-sta
5001
4874
  *
5002
4875
  * @returns {Floor[]} An array of Floor objects in this FloorStack.
5003
4876
  */
5004
- get floors(): Floor[];
4877
+ get floors(): [Floor, ...Floor[]];
4878
+ /**
4879
+ * Get the default floor for this floor stack
4880
+ */
4881
+ get defaultFloor(): Floor;
4882
+ /**
4883
+ * Gets the facade ({@link Facade}) representing this floor stack, if it exists.
4884
+ */
4885
+ get facade(): Facade | undefined;
5005
4886
  /**
5006
4887
  * Serializes the FloorStack data to JSON.
5007
4888
  *
@@ -5023,20 +4904,58 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-sta
5023
4904
  export default FloorStack;
5024
4905
  }
5025
4906
 
4907
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/facade' {
4908
+ import type { Space, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4909
+ import { Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4910
+ import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
4911
+ import type { Facade as MVFFacade } from '@mappedin/mvf';
4912
+ /**
4913
+ * A Facade is a collection of spaces that make up the exterior representation of a Floor Stack ({@link FloorStack}).
4914
+ */
4915
+ class Facade extends BaseMapData {
4916
+ #private;
4917
+ static readonly __type = "facade";
4918
+ readonly __type = "facade";
4919
+ /**
4920
+ * Checks if the provided instance is of type Floor.
4921
+ *
4922
+ * @param instance The instance to check.
4923
+ * @returns {boolean} True if the instance is a Floor, false otherwise.
4924
+ */
4925
+ static is(instance: object): instance is Facade;
4926
+ /** @internal */
4927
+ constructor(data: MapDataInternal, options: {
4928
+ mvfData: MVFFacade;
4929
+ floorStackId: string;
4930
+ });
4931
+ /**
4932
+ * Gets the floor stack that this Facade represents.
4933
+ */
4934
+ get floorStack(): import("./floor-stack").default;
4935
+ /**
4936
+ * Gets the collection of spaces that make up this Facade.
4937
+ */
4938
+ get spaces(): Space[];
4939
+ /**
4940
+ * Gets the center {@link Coordinate} of the Facade.
4941
+ */
4942
+ get center(): Coordinate;
4943
+ }
4944
+ export default Facade;
4945
+ }
4946
+
5026
4947
  declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
5027
- import type { Feature, FloorProperties as MVFFloor, FloorStack as MVFFloorStack, NodeCollection, ObstructionCollection, Point, SpaceCollection, SpaceProperties, Connection as MVFConnection, EntranceCollection, AnnotationCollection, ParsedMVF, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseLocationId as MVFEnterpriseLocationId, EnterpriseCategoryId as MVFEnterpriseCategoryId, EnterpriseCategory as MVFEnterpriseCategory, EnterpriseVenue as MVFEnterpriseVenue, AreaCollection, AreaId, EnterpriseLocationInstance } from '@mappedin/mvf';
4948
+ import type { AnnotationCollection, EntranceCollection, Feature, FeatureCollection, Connection as MVFConnection, EnterpriseCategory as MVFEnterpriseCategory, EnterpriseCategoryId as MVFEnterpriseCategoryId, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseLocationId as MVFEnterpriseLocationId, EnterpriseVenue as MVFEnterpriseVenue, FloorProperties as MVFFloor, FloorStack as MVFFloorStack, NodeCollection, ObstructionCollection, ParsedMVF, Point, SpaceCollection, SpaceProperties, AreaCollection, AreaId, EnterpriseLocationInstance } from '@mappedin/mvf';
5028
4949
  import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5029
- import { Annotation, Connection, Door, Floor, MapObject, PointOfInterest, Space, Area } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5030
- import Node from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node';
5031
- import EnterpriseLocation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location';
5032
- import EnterpriseCategory from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category';
5033
- import FloorStack from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-stack';
4950
+ import { Annotation, Area, Connection, Door, EnterpriseCategory, EnterpriseLocation, Facade, Floor, FloorStack, MapObject, Node, PointOfInterest, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5034
4951
  export type MapDataRecords = {
5035
4952
  spacesById: Record<string, Space>;
5036
4953
  nodesById: Record<string, Node>;
5037
4954
  objectsById: Record<string, MapObject>;
5038
4955
  floorsById: Record<string, Floor>;
5039
4956
  floorStacksById: Record<string, FloorStack>;
4957
+ facadesById: Record<string, Facade>;
4958
+ facadesBySpaceId: Record<string, Facade>;
5040
4959
  connectionsById: Record<string, Connection>;
5041
4960
  doorsById: Record<string, Door>;
5042
4961
  doorsByNodeId: Record<string, Door>;
@@ -5063,10 +4982,25 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
5063
4982
  mvfCategoriesById: Record<string, MVFEnterpriseCategory>;
5064
4983
  mvfLocationsById: Record<string, MVFEnterpriseLocation>;
5065
4984
  mvfLocationsBySpaceId: Record<string, MVFEnterpriseLocation[]>;
4985
+ mvfNodesByFloorId: {
4986
+ [floorId: string]: NodeCollection['features'][number][];
4987
+ };
4988
+ mvfSpacesByFloorId: {
4989
+ [floorId: string]: SpaceCollection['features'][number][];
4990
+ };
4991
+ mvfPoisByFloorId: {
4992
+ [floorId: string]: FeatureCollection<Point, SpaceProperties>['features'][number][];
4993
+ };
4994
+ mvfEntrancesByFloorId: {
4995
+ [floorId: string]: EntranceCollection['features'][number][];
4996
+ };
4997
+ mvfAnnotationsByFloorId: {
4998
+ [floorId: string]: AnnotationCollection['features'][number][];
4999
+ };
5066
5000
  mvfAreasById: Record<AreaId, AreaCollection['features'][number]>;
5067
5001
  };
5068
5002
  export const processMVFFloors: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorsById" | "mvfFloorsById">;
5069
- export const processMVFFloorStacks: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorStacksById" | "mvfFloorStacksById">;
5003
+ export const processMVFFloorStacks: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorStacksById" | "mvfFloorStacksById" | "facadesById" | "facadesBySpaceId">;
5070
5004
  export const processMVFAreas: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "areasById" | "mvfAreasById">;
5071
5005
  /**
5072
5006
  * @internal
@@ -5090,6 +5024,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
5090
5024
  objectsById: Record<string, MapObject>;
5091
5025
  floorsById: Record<string, Floor>;
5092
5026
  floorStacksById: Record<string, FloorStack>;
5027
+ facadesById: Record<string, Facade>;
5028
+ facadesBySpaceId: Record<string, Facade>;
5093
5029
  connectionsById: Record<string, Connection>;
5094
5030
  doorsById: Record<string, Door>;
5095
5031
  doorsByNodeId: Record<string, Door>;
@@ -5113,7 +5049,26 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
5113
5049
  geometry: Point;
5114
5050
  properties: import("@mappedin/mvf").AnnotationProperties;
5115
5051
  }>;
5052
+ mvfNodesByFloorId: {
5053
+ [floorId: string]: Feature<Point, import("@mappedin/mvf").NodeProperties>[];
5054
+ };
5055
+ mvfSpacesByFloorId: {
5056
+ [floorId: string]: Feature<Point | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon, SpaceProperties>[];
5057
+ };
5058
+ mvfPoisByFloorId: {
5059
+ [floorId: string]: Feature<Point, SpaceProperties>[];
5060
+ };
5116
5061
  mvfAreasById: Record<string, import("@mappedin/mvf").Area>;
5062
+ mvfEntrancesByFloorId: {
5063
+ [floorId: string]: Feature<import("@mappedin/mvf").LineString, import("@mappedin/mvf").EntranceProperties>[];
5064
+ };
5065
+ mvfAnnotationsByFloorId: {
5066
+ [floorId: string]: {
5067
+ type: import("@mappedin/mvf").FeatureType;
5068
+ geometry: Point;
5069
+ properties: import("@mappedin/mvf").AnnotationProperties;
5070
+ }[];
5071
+ };
5117
5072
  };
5118
5073
  }
5119
5074
 
@@ -5249,7 +5204,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
5249
5204
  import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
5250
5205
  import type { CollisionRankingTier } from '@mappedin/mappedin-js/geojson/src/utils/collision-ranking-tier';
5251
5206
  import { z } from 'zod';
5252
- import type { PackedBBoxes } from '@mappedin/mappedin-js/geojson/src/systems/collisions/system';
5207
+ import { type PackedBBoxes } from '@mappedin/mappedin-js/geojson/src/systems/collisions/system';
5253
5208
  /**
5254
5209
  * State reprsenting a Marker
5255
5210
  */
@@ -6546,10 +6501,10 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
6546
6501
  */
6547
6502
  'user-interaction-end': undefined;
6548
6503
  /**
6549
- * Fired when a geometry is in focus, meaning it occupies the area closest to the center of the screen. This will only be true for one geometry at a time.
6504
+ * Fired when a geometry is in focus, meaning it occupies the area closest to the center of the screen. Is an array of geometry IDs sorted by most likely to be in focus.
6550
6505
  * Geometries can be added to the focus listener via `mapView.setState(.., { focusable: true })`.
6551
6506
  */
6552
- 'geometry-in-focus': string | number | null;
6507
+ 'geometry-in-focus': string[];
6553
6508
  /**
6554
6509
  * Fired before the scene is rendered. Use this to modify the scene before it is rendered.
6555
6510
  */
@@ -7920,6 +7875,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
7920
7875
  Shapes: Shapes;
7921
7876
  Style: Style;
7922
7877
  Images: Images;
7878
+ get DynamicFocus(): import("./dynamic-focus").DynamicFocus;
7923
7879
  get StackedMaps(): import("..").StackedMaps;
7924
7880
  constructor(rendererCore: RendererCore, mapView: MapView);
7925
7881
  updateState<T extends Space | MapObject | Label | Shape | Marker | Door | WALLS | DOORS | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
@@ -7963,6 +7919,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
7963
7919
  import type { Space, Door, PointOfInterest, MapObject, Node, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7964
7920
  import { type GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
7965
7921
  import { FloorStackObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-stack-object';
7922
+ import { DynamicFocus } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus';
7966
7923
  export const FLOOR_HEIGHT = 5;
7967
7924
  export class GeojsonApiMapObject extends PubSub<{
7968
7925
  'floor-change': {
@@ -7987,12 +7944,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
7987
7944
  floorsById: Map<string, FloorObject>;
7988
7945
  currentFloorId: string;
7989
7946
  currentFloorStackId: string;
7947
+ outdoorFloorStacks: Set<string>;
7990
7948
  id: string;
7991
7949
  renderer: RendererCore;
7992
7950
  api: GeoJsonApi;
7993
7951
  mvf: ParsedMVF;
7994
7952
  styleMap: AggregatedStyleMap;
7995
7953
  StackedMaps: StackedMaps;
7954
+ DynamicFocus: DynamicFocus;
7996
7955
  get currentFloorStack(): FloorStackObject;
7997
7956
  setFloorStack(floorStackId: string): void;
7998
7957
  get currentFloor(): FloorObject;
@@ -9169,7 +9128,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
9169
9128
 
9170
9129
  declare module '@mappedin/mappedin-js/mappedin-js/src/search/internal' {
9171
9130
  import type { SearchResult as MiniSearchResult, Suggestion, MatchInfo } from 'minisearch';
9172
- import { EnterpriseLocation, EnterpriseCategory, Places } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9131
+ import type { Places } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9132
+ import { EnterpriseLocation, EnterpriseCategory } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9173
9133
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
9174
9134
  import { z } from 'zod';
9175
9135
  export class InternalSearch {
@@ -9524,6 +9484,52 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/search/external' {
9524
9484
  };
9525
9485
  }
9526
9486
 
9487
+ declare module '@mappedin/mappedin-js/mappedin-js/src/query/external' {
9488
+ import type { Annotation, Coordinate, Door, MapDataInternal, Node, PointOfInterest } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9489
+ /**
9490
+ * Query allows users to query for nodes, locations, categories, and other points of interest within the venue.
9491
+ */
9492
+ export class Query {
9493
+ #private;
9494
+ /**
9495
+ * @internal
9496
+ */
9497
+ constructor(mapDataInternal: MapDataInternal);
9498
+ /**
9499
+ * Find the nearest feature to the origin
9500
+ * @param origin - The origin object
9501
+ * @param options - The options for the query
9502
+ * @returns The nearest feature to the origin
9503
+ */
9504
+ nearest(origin: Coordinate | PointOfInterest | Door | Annotation | Node, options: TFindNearestOptions): TFindNearestResult | undefined;
9505
+ }
9506
+ export type TFindNearestResult = {
9507
+ distance: number;
9508
+ feature: TQueriables;
9509
+ }[];
9510
+ export type TFindNearestOptions = {
9511
+ /**
9512
+ * Limit query to a set of floors. Only applies if the origin has floor information. If it doesn't, it limits the query to all floor-stacks' default floors.
9513
+ *
9514
+ * @default 'same-floor'
9515
+ */
9516
+ limit?: 'same-floor'
9517
+ /**
9518
+ * Limit query to all floors at the same elevation as the origin
9519
+ */
9520
+ | 'same-elevation';
9521
+ /**
9522
+ * The radius to search for features within
9523
+ */
9524
+ radius?: number;
9525
+ /**
9526
+ * The types to query for
9527
+ */
9528
+ types: [TQueriables['__type'], ...TQueriables['__type'][]];
9529
+ };
9530
+ export type TQueriables = PointOfInterest | Door | Annotation | Node;
9531
+ }
9532
+
9527
9533
  declare module '@mappedin/mappedin-js/mappedin-js/src/analytics/customer' {
9528
9534
  /**
9529
9535
  * Valid track-analytics API contexts. These should match the expected values of that endpoint or the requests will fail.
@@ -10797,16 +10803,19 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/geometry-in-focus/syst
10797
10803
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
10798
10804
  import { type PerspectiveCamera } from 'three';
10799
10805
  export class GeometryInFocusSystem extends PubSub<{
10800
- 'geometry-in-focus': string | number | null;
10806
+ /**
10807
+ * Returns the list of entities that are likely in focus, sorted by the weight of the raycast.
10808
+ */
10809
+ 'geometry-in-focus': string[];
10801
10810
  }> {
10802
- #private;
10803
- cameraDirty: boolean;
10804
- focusablesDirty: boolean;
10805
- constructor(state: RendererState, camera: PerspectiveCamera);
10806
- resize(): void;
10807
- update: () => void;
10808
- updateRaf(): void;
10809
- destroy(): void;
10811
+ #private;
10812
+ cameraDirty: boolean;
10813
+ focusablesDirty: boolean;
10814
+ constructor(state: RendererState, camera: PerspectiveCamera);
10815
+ resize(): void;
10816
+ update: () => void;
10817
+ updateRaf(): void;
10818
+ destroy(): void;
10810
10819
  }
10811
10820
  }
10812
10821
 
@@ -11033,6 +11042,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object'
11033
11042
  floorStackId: string;
11034
11043
  constructor(parentId: string, floor: MVFFloor, renderer: RendererCore, multiFloorView: Required<TShow3DMapOptions['multiFloorView']>, options: TShow3DMapOptions, mvf?: ParsedMVF, styleMap?: AggregatedStyleMap);
11035
11044
  load: () => this;
11045
+ get visible(): boolean;
11046
+ setVisible(visible: boolean): void;
11036
11047
  }
11037
11048
  export {};
11038
11049
  }
@@ -11076,30 +11087,39 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils' {
11076
11087
  export function translateToCoreStyle(style: PolygonStyle | LineStringStyle, userOptions?: TShow3DMapOptions): PaintStyle | LineStyle;
11077
11088
  export const getTargetID: <T extends Space | Shape | MapObject | Label | Marker | Model | Image | string>(target: T, api: GeoJsonApi) => string | undefined;
11078
11089
  export function tweenToPromise(tween: Tween): Promise<void>;
11090
+ export function unique<T>(array: T[]): T[];
11079
11091
  }
11080
11092
 
11081
11093
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-stack-object' {
11082
11094
  import type { RendererCore } from '@mappedin/core-sdk';
11083
- import type { FloorId, FloorStack as MVFFloorStack } from '@mappedin/mvf';
11095
+ import type { FloorId, FloorStack as MVFFloorStack, Facade as MVFFacade } from '@mappedin/mvf';
11084
11096
  import type { FloorObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object';
11085
- export class FloorStackObject implements Omit<MVFFloorStack, 'maps' | 'floors'> {
11097
+ export class FloorStackObject implements Omit<MVFFloorStack, 'maps' | 'floors' | 'defaultFloor'> {
11098
+ #private;
11086
11099
  id: MVFFloorStack['id'];
11087
11100
  externalId: MVFFloorStack['externalId'];
11088
11101
  name: MVFFloorStack['name'];
11089
11102
  type: MVFFloorStack['type'];
11090
11103
  floorIds: FloorId[];
11104
+ defaultFloorId?: MVFFloorStack['defaultFloor'];
11091
11105
  /** Sorted floor objects by elevation */
11092
11106
  floorObjects: FloorObject[];
11093
11107
  floorObjectsByElevation: Map<number, FloorObject>;
11094
11108
  metadata?: MVFFloorStack['metadata'];
11095
11109
  footprint?: MVFFloorStack['footprint'];
11096
11110
  containerId: string;
11097
- constructor(floorStack: MVFFloorStack, parentId: string, renderer: RendererCore);
11111
+ facade?: MVFFacade;
11112
+ constructor(floorStack: MVFFloorStack, parentId: string, renderer: RendererCore, facade?: MVFFacade);
11098
11113
  get defaultFloor(): FloorObject;
11099
11114
  addFloor(floor: FloorObject): void;
11115
+ setFacadeVisible(visible: boolean): void;
11100
11116
  }
11101
11117
  }
11102
11118
 
11119
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus' {
11120
+ export { DynamicFocus } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus/dynamic-focus';
11121
+ }
11122
+
11103
11123
  declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-processor' {
11104
11124
  import { Rectangle } from '@packages/internal/quad-tree';
11105
11125
  export type TSerializedCollider = {
@@ -11155,7 +11175,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
11155
11175
  export function updateHoverColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: string): void;
11156
11176
  export function updateFlipImageToFaceCamera(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: boolean): void;
11157
11177
  export function updateVisibility(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: boolean): boolean;
11158
- export function updateOpacity(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, state: RendererState, update?: number): void;
11178
+ export function updateOpacity(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, state: RendererState, update?: number): boolean;
11159
11179
  export function updateGroupTexture(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Pick<GeometryGroupStyleComponent, 'texture' | 'topTexture'>): void;
11160
11180
  export function updateIndividualGeometryTexture(entity: Geometry3D, update?: Pick<StyleComponent, 'texture' | 'topTexture'>): boolean;
11161
11181
  export function updateIndividualGeometryOpacity(entity: Geometry3D, update?: number): boolean;
@@ -19747,11 +19767,10 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator'
19747
19767
 
19748
19768
  declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator/navigator' {
19749
19769
  import type { Position, Feature, MultiPolygon, Polygon } from 'geojson';
19750
- import type { NodeCollection, NodeFeature } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/node';
19770
+ import type { NodeCollection } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/node';
19751
19771
  import type { ObstructionCollection } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/obstruction';
19752
19772
  import type { SpaceCollection } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/space';
19753
19773
  import type { DirectionsCollection } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/directions';
19754
- import type { CoordinateFeature } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/coordinate';
19755
19774
  /**
19756
19775
  * Options for simplifying directions in the Navigator class.
19757
19776
  */
@@ -19795,7 +19814,6 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator/n
19795
19814
  geojsonCollection?: ObstructionCollection | SpaceCollection;
19796
19815
  groupBy?: string;
19797
19816
  });
19798
- findNearestNode: (feature: CoordinateFeature) => NodeFeature | null;
19799
19817
  /**
19800
19818
  * Calculates and returns a set of directions from origin nodes to destination nodes, including detailed properties.
19801
19819
  *
@@ -19944,6 +19962,77 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/types/coord
19944
19962
  export type CoordinateFeature = Feature<Point, CoordinateProperties>;
19945
19963
  }
19946
19964
 
19965
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus/dynamic-focus' {
19966
+ import { type RendererCore } from '@mappedin/core-sdk';
19967
+ import { PubSub } from '@packages/internal/common';
19968
+ import type { Floor, FloorStack } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
19969
+ import type { GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
19970
+ import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
19971
+ /**
19972
+ * @experimental
19973
+ * @internal
19974
+ */
19975
+ export type TDynamicFocusEvents = {
19976
+ 'focus-change': {
19977
+ facades: string[];
19978
+ spaces: string[];
19979
+ };
19980
+ };
19981
+ /**
19982
+ * @experimental
19983
+ * @internal
19984
+ */
19985
+ export type TDynamicFocusOptions = {
19986
+ /**
19987
+ * The minimum zoom level at which Dynamic Focus will detect a Facade and reveal the interior spaces.
19988
+ * @default 17
19989
+ */
19990
+ minZoomLevel?: number;
19991
+ };
19992
+ /**
19993
+ * @experimental
19994
+ * @internal
19995
+ */
19996
+ export class DynamicFocus extends PubSub<TDynamicFocusEvents> {
19997
+ #private;
19998
+ /** @internal */
19999
+ constructor(core: RendererCore, geoJSONApi: GeoJsonApi, { currentMapGetter }: {
20000
+ currentMapGetter: CurrentMapGetter;
20001
+ });
20002
+ /**
20003
+ * @experimental
20004
+ * Enables Dynamic Focus and allows the camera to automatically set the floor stack when a facade is hovered.
20005
+ */
20006
+ enable(options?: TDynamicFocusOptions): void;
20007
+ /**
20008
+ * @experimental
20009
+ * Disables Dynamic Focus and prevents the camera from automatically setting the floor stack when a facade is hovered.
20010
+ */
20011
+ disable(): void;
20012
+ /**
20013
+ * @experimental
20014
+ * Returns the enabled state of Dynamic Focus.
20015
+ */
20016
+ get enabled(): boolean;
20017
+ /**
20018
+ * @experimental
20019
+ * Sets the default floor for a floor stack. This is the floor that will be shown when the floor stack is in focus.
20020
+ * See {@link resetDefaultFloorForStack} to reset the default floor.
20021
+ * @param floorStack - The floor stack to set the default floor for.
20022
+ * @param floor - The floor to set as the default floor.
20023
+ */
20024
+ setDefaultFloorForStack(floorStack: FloorStack, floor: Floor): void;
20025
+ /**
20026
+ * @experimental
20027
+ * Resets the default floor for a floor stack to it's initial value.
20028
+ * @param floorStack - The floor stack to reset the default floor for.
20029
+ */
20030
+ resetDefaultFloorForStack(floorStack: FloorStack): void;
20031
+ }
20032
+ type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
20033
+ export {};
20034
+ }
20035
+
19947
20036
  declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/tap-controller' {
19948
20037
  export enum TapType {
19949
20038
  onefinger = 0,