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

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.
@@ -16,7 +16,9 @@
16
16
  // ../mappedin-js/@packages/internal/shave-text/shave-text
17
17
  // ../mappedin-js/@tweenjs/tween.js
18
18
  // ../mappedin-js/@turf/turf
19
+ // ../mappedin-js/troika-three-text
19
20
  // ../mappedin-js/@packages/internal/quad-tree
21
+ // ../mappedin-js/@mappedin/core-sdk/src/components/text3d
20
22
  // ../mappedin-js/minisearch
21
23
  // ../mappedin-js/three/addons/loaders/GLTFLoader.js
22
24
  // ../mappedin-js/@mapbox/point-geometry
@@ -37,8 +39,9 @@ declare module '@mappedin/mappedin-js' {
37
39
  import type { Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
38
40
  import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle, ParsedMVFLocalePack, OperationHours, SiblingGroup, LocationState } from '@mappedin/mvf';
39
41
  import { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
40
- import type { InsetPadding, InsetPaddingOption, Shading, PaintStyle, LineStyle, WatermarkOptions } from '@mappedin/mappedin-js/geojson/src';
41
- import { enableTestMode } from '@mappedin/mappedin-js/geojson/src';
42
+ export type { Text3D as Text3DApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
43
+ import type { InsetPadding, InsetPaddingOption, Shading, PaintStyle, LineStyle, WatermarkOptions, Text3DState, AddText3DOptions, UpdatableText3DState, InitializeText3DState, MapViewState } from '@mappedin/mappedin-js/geojson/src';
44
+ import { enableTestMode, preloadFont } from '@mappedin/mappedin-js/geojson/src';
42
45
  export type { PubSub } from '@packages/internal/common/pubsub';
43
46
  import type { TMappedinMapLibreOverlayEvents } from '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay';
44
47
  import { MappedinMapLibreOverlay } from '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay';
@@ -64,92 +67,6 @@ declare module '@mappedin/mappedin-js' {
64
67
  */
65
68
  quality?: 'low' | 'medium' | 'high' | 'ultra';
66
69
  };
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
70
  /**
154
71
  * @interface
155
72
  * Options for the watermark.
@@ -371,19 +288,25 @@ declare module '@mappedin/mappedin-js' {
371
288
  * @experimental
372
289
  */
373
290
  export const createMapLibreOverlay: (mapData: MapData, showMapOptions?: TShow3DMapOptions) => MappedinMapLibreOverlay;
374
- export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
375
291
  export const show3dMap: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
376
- 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, };
292
+ /**
293
+ * @internal
294
+ * @deprecated Use {@link show3dMap} instead.
295
+ */
296
+ export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
297
+ export { parseMVF, unzipMVF, enableTestMode, preloadFont };
298
+ export type { MapView, MapData, MapViewState, 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, Text3DState, AddText3DOptions, UpdatableText3DState, InitializeText3DState, };
378
299
  export type * from 'geojson';
379
300
  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
301
  export { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
381
- export type { Label, Marker, Path, Shape, CameraTransform, Model, Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
302
+ export type { Label, Marker, Path, Shape, CameraTransform, Model, Image, Text3D } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
303
+ export type { Debug } from '@mappedin/mappedin-js/mappedin-js/src/debug';
382
304
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
383
305
  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';
306
+ 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
307
  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
308
  export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search';
309
+ export type { TFindNearestOptions, TFindNearestResult, TQueriables, Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
387
310
  export type { Analytics, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
388
311
  }
389
312
 
@@ -391,13 +314,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
391
314
  import { Analytics } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
392
315
  import { PubSub } from '@packages/internal/common';
393
316
  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';
317
+ 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
318
  import type EnterpriseCategory from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category';
396
319
  import type EnterpriseLocation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location';
397
320
  import type EnterpriseVenue from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue';
398
321
  import { Search } from '@mappedin/mappedin-js/mappedin-js/src/search';
399
322
  import type { TNavigationTarget, TGetDirectionsOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
400
323
  import type { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions';
324
+ import { Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
401
325
  /**
402
326
  * A WeakMap to associate {@link MapData} instances with their internal representation.
403
327
  * We need a way to get the internal data object from the API
@@ -435,6 +359,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
435
359
  * console.log(suggestions);
436
360
  */
437
361
  Search: Search;
362
+ Query: Query;
438
363
  /**
439
364
  * Constructs a new instance of {@link MapData}.
440
365
  *
@@ -513,6 +438,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
513
438
  * const floorStacks = mapData.getByType('floor-stack');
514
439
  */
515
440
  getByType(type: 'floor-stack'): FloorStack[];
441
+ /**
442
+ * @returns The facades ({@link Facade}) within the map.
443
+ * @example
444
+ * const facades = mapData.getByType('facade');
445
+ */
446
+ getByType(type: 'facade'): Facade[];
516
447
  /**
517
448
  * @returns The connections ({@link Connection}) on the map.
518
449
  * @example
@@ -576,7 +507,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
576
507
  * @example
577
508
  * const space = mapData.getById('space', 'space-id');
578
509
  */
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;
510
+ 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
511
  getById(type: string, id: string): object | undefined;
581
512
  /**
582
513
  * Changes the language of the map data.
@@ -648,7 +579,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
648
579
  declare module '@mappedin/mappedin-js/mappedin-js/src/events' {
649
580
  import type { ClickPayload } from '@mappedin/core-sdk';
650
581
  import type { TStackedMapsEvents } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
651
- import type { Coordinate, Floor, MapObject, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
582
+ import type { Coordinate, Facade, Floor, MapObject, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
652
583
  import type { Label, Marker, Model, Path } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
653
584
  import type { CameraTransform } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/camera-transform';
654
585
  import type { TBlueDotEvents } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot';
@@ -692,6 +623,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/events' {
692
623
  * Details about the pointer event which triggered the interaction.
693
624
  */
694
625
  pointerEvent: ClickPayload['pointerEvent'];
626
+ /**
627
+ * The interactive facades which the user interaction passed through.
628
+ */
629
+ facades: Facade[];
695
630
  };
696
631
  export type THoverPayload = Omit<TClickPayload, 'pointerEvent'>;
697
632
  /**
@@ -806,6 +741,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
806
741
  import Hyperlink from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/hyperlink';
807
742
  import Image from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image';
808
743
  import FloorStack from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-stack';
744
+ import Facade from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/facade';
809
745
  import type { MapDataRecords } from '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation';
810
746
  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
747
  import { AnalyticsInternal } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
@@ -819,6 +755,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
819
755
  import type { TGetDirectionsOptions, TNavigationTarget } from '@mappedin/mappedin-js/mappedin-js/src/types';
820
756
  import { type Directions, DirectionsInternal } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions';
821
757
  import { type THydrateMapDataBundle } from '@mappedin/mappedin-js/mappedin-js/src';
758
+ import { Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
822
759
  /**
823
760
  * Internal class representing detailed map data.
824
761
  *
@@ -832,6 +769,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
832
769
  }> {
833
770
  #private;
834
771
  Analytics: AnalyticsInternal;
772
+ Query: Query;
835
773
  /**
836
774
  * Represents the parsed Mappedin Venue Format (MVF) data.
837
775
  */
@@ -860,6 +798,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
860
798
  spacesById: MapDataRecords['spacesById'];
861
799
  floorsById: MapDataRecords['floorsById'];
862
800
  floorStacksById: MapDataRecords['floorStacksById'];
801
+ facadesById: MapDataRecords['facadesById'];
802
+ facadesBySpaceId: MapDataRecords['facadesBySpaceId'];
863
803
  connectionsById: MapDataRecords['connectionsById'];
864
804
  objectsById: MapDataRecords['objectsById'];
865
805
  doorsById: MapDataRecords['doorsById'];
@@ -881,6 +821,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
881
821
  mvfFloorsById: MapDataRecords['mvfFloorsById'];
882
822
  mvfFloorStacksById: MapDataRecords['mvfFloorStacksById'];
883
823
  mvfAreasById: MapDataRecords['mvfAreasById'];
824
+ mvfNodesByFloorId: MapDataRecords['mvfNodesByFloorId'];
825
+ mvfSpacesByFloorId: MapDataRecords['mvfSpacesByFloorId'];
826
+ mvfPoisByFloorId: MapDataRecords['mvfPoisByFloorId'];
827
+ mvfEntrancesByFloorId: MapDataRecords['mvfEntrancesByFloorId'];
828
+ mvfAnnotationsByFloorId: MapDataRecords['mvfAnnotationsByFloorId'];
884
829
  localePacksUrls: LocalePackUrls;
885
830
  currentLanguage?: Language;
886
831
  /**
@@ -934,6 +879,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
934
879
  */
935
880
  get floors(): Floor[];
936
881
  get floorStacks(): FloorStack[];
882
+ get facades(): Facade[];
937
883
  /**
938
884
  * Retrieves all doors in the map.
939
885
  *
@@ -965,6 +911,21 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
965
911
  get categories(): EnterpriseCategory[];
966
912
  get mvfFloors(): MVFFloor[];
967
913
  get mvfFloorStacks(): MVFFloorStack[];
914
+ getByType(type: string): object[];
915
+ getByType(type: 'space'): Space[];
916
+ getByType(type: 'area'): Area[];
917
+ getByType(type: 'door'): Door[];
918
+ getByType(type: 'floor'): Floor[];
919
+ getByType(type: 'floor-stack'): FloorStack[];
920
+ getByType(type: 'connection'): Connection[];
921
+ getByType(type: 'object'): MapObject[];
922
+ getByType(type: 'point-of-interest'): PointOfInterest[];
923
+ getByType(type: 'annotation'): Annotation[];
924
+ getByType(type: 'node'): Node[];
925
+ getByType(type: 'enterprise-location'): EnterpriseLocation[];
926
+ getByType(type: 'enterprise-category'): EnterpriseCategory[];
927
+ getByType(type: 'enterprise-venue'): EnterpriseVenue | undefined;
928
+ getByType(type: 'facade'): Facade[];
968
929
  /**
969
930
  * Retrieves an object by its type and ID.
970
931
  *
@@ -972,18 +933,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
972
933
  * @param id The ID of the object.
973
934
  * @returns {Space | Door | Floor | Connection | MapObject | undefined} The requested object, or undefined if not found.
974
935
  */
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;
936
+ 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;
937
+ getById(type: string, id: string): object | undefined;
987
938
  getMapDataById(id: string): Places | undefined;
988
939
  /**
989
940
  * Retrieves a feature by its type and ID from the Mappedin Venue Format (MVF) data.
@@ -1031,26 +982,28 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
1031
982
  */
1032
983
  destroy(): void;
1033
984
  }
1034
- export { Node, Area, MapDataInternal, Space, Floor, FloorStack, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, };
985
+ export { Node, Area, MapDataInternal, Space, Floor, FloorStack, Facade, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, };
1035
986
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space';
1036
987
  export type { Places };
1037
988
  }
1038
989
 
1039
990
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1040
- import type { RendererCore, WatermarkUpdateOptions } from '@mappedin/core-sdk';
991
+ import type { RendererCore, WatermarkUpdateOptions } from '@mappedin/mappedin-js/geojson/src';
1041
992
  import { PubSub } from '@packages/internal/common';
1042
993
  import { type TEvents, type TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
1043
994
  import type { Navigation } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
1044
995
  import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor, Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
1045
996
  import type { BlueDot } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
1046
997
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
1047
- import type { Annotation, Coordinate, Door, Floor, MapObject, PointOfInterest, Space, Node, EnterpriseLocation, FloorStack } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
1048
- import type { DOORS, WALLS, TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState, TUpdateStates } from '@mappedin/mappedin-js/mappedin-js/src/types';
1049
- import type { Label, Marker, Image, Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
998
+ import type { Annotation, Coordinate, Door, Floor, MapObject, PointOfInterest, Space, Node, EnterpriseLocation, FloorStack, Facade } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
999
+ import type { DOORS, WALLS, TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState, TUpdateStates, GlobalState, UpdateGlobalState } from '@mappedin/mappedin-js/mappedin-js/src/types';
1000
+ import type { Label, Marker, Image, Shape, Text3D as Text3DView } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
1050
1001
  import type { TEventPayload } from '@mappedin/mappedin-js/mappedin-js/src/events';
1051
1002
  import type { Shapes } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes';
1052
1003
  import type { StackedMaps, TCollapseOptions, TExpandOptions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
1053
1004
  import type { InspectorOption } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/inspector/inspector';
1005
+ import { Debug } from '@mappedin/mappedin-js/mappedin-js/src/debug';
1006
+ import type { Text3D } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
1054
1007
  /**
1055
1008
  * The MapView class is the main class for rendering and interacting with the map.
1056
1009
  *
@@ -1068,6 +1021,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1068
1021
  * Controls for the map's labels.
1069
1022
  */
1070
1023
  Labels: Labels;
1024
+ /**
1025
+ * @experimental
1026
+ * Controls for the map's 3D texts.
1027
+ */
1028
+ Text3D: Text3D;
1071
1029
  /**
1072
1030
  * Controls for the map's markers.
1073
1031
  */
@@ -1111,9 +1069,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1111
1069
  */
1112
1070
  Outdoor: Outdoor;
1113
1071
  /**
1114
- * Controls for the stacked maps.
1072
+ * Controls for Stacked Maps.
1115
1073
  */
1116
1074
  get StackedMaps(): StackedMaps;
1075
+ /**
1076
+ * @internal
1077
+ * @experimental
1078
+ */
1079
+ get DynamicFocus(): import("./api-geojson/dynamic-focus").DynamicFocus;
1117
1080
  /**
1118
1081
  * @internal
1119
1082
  */
@@ -1140,8 +1103,16 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1140
1103
  * // Update the color of a space to red.
1141
1104
  * map.updateState(space, { color: 'red' });
1142
1105
  */
1143
- updateState<T extends Space | MapObject | Label | Marker | Shape | Door | WALLS | DOORS>(target: T, state: TUpdateState<T>): any;
1106
+ updateState<T extends Space | Text3DView | MapObject | Label | Marker | Shape | Door | Facade | WALLS | DOORS>(target: T, state: TUpdateState<T>): any;
1144
1107
  updateState<T extends string & NonNullable<unknown>>(target: T, state: TUpdateStates): any;
1108
+ /**
1109
+ * Update global state of the MapView
1110
+ */
1111
+ updateGlobalState(update: UpdateGlobalState): void;
1112
+ /**
1113
+ * Get global state of the MapView
1114
+ */
1115
+ getGlobalState(): GlobalState;
1145
1116
  update: () => void;
1146
1117
  /**
1147
1118
  * Retrieves the map data for the current map.
@@ -1200,7 +1171,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1200
1171
  * @hidden
1201
1172
  */
1202
1173
  updateWatermark(options: WatermarkUpdateOptions): void;
1203
- getState<T extends Space | MapObject | Label | Marker | Image | Shape | string>(target: T): TGetState<T> | undefined;
1174
+ getState<T extends Space | Text3DView | MapObject | Label | Marker | Image | Shape | string>(target: T): TGetState<T>;
1204
1175
  setHoverColor(c: string): void;
1205
1176
  getHoverColor(): string | undefined;
1206
1177
  /**
@@ -1319,6 +1290,88 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1319
1290
  * Enable debug interface. Learn more about the debug interface in the [Debug Mode Guide](https://developer.mappedin.com/web-sdk/getting-started#debug-mode).
1320
1291
  */
1321
1292
  enableDebug(opitons?: InspectorOption): Promise<void>;
1293
+ /**
1294
+ * @experimental
1295
+ * @internal
1296
+ */
1297
+ Debug: Debug;
1298
+ }
1299
+ }
1300
+
1301
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d' {
1302
+ import { Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
1303
+ import type { TAddText3DOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
1304
+ import type { CurrentMapGetter } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/types';
1305
+ import { Text3D as Text3DView } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
1306
+ export class Text3D {
1307
+ #private;
1308
+ /**
1309
+ * @internal
1310
+ */
1311
+ constructor({ currentMapGetter }: {
1312
+ currentMapGetter: CurrentMapGetter;
1313
+ });
1314
+ /**
1315
+ * Creates polygon labels for all spaces.
1316
+ *
1317
+ * @param options - Configuration options for text label creation
1318
+ * @returns An array of Text3DView instances representing the created labels. If the space is already labeled, the designated Text3D instance will be returned.
1319
+ *
1320
+ * @example
1321
+ * ```typescript
1322
+ * const labels = mapView.Text3D.labelAll({
1323
+ * // optional configuration options
1324
+ * });
1325
+ * ```
1326
+ */
1327
+ labelAll(options?: TAddText3DOptions): Text3DView[];
1328
+ /**
1329
+ * Creates a 3D text label for a given space.
1330
+ *
1331
+ * @param target - The target space or enterprise space to label.
1332
+ * @param content - The content of the label. If not provided, target.name will be used
1333
+ * @param options={} - Configuration options for the text label creation.
1334
+ * @returns An array of Text3DView instances representing the created labels.
1335
+ *
1336
+ * @throws {Error} If the target is not a Space.
1337
+ *
1338
+ * @example
1339
+ * ```typescript
1340
+ * const labels = mapView.Text3D.label(space, "Label Content", { fontSize: 12 });
1341
+ * ```
1342
+ */
1343
+ label(target: Space, content?: string, options?: TAddText3DOptions): Text3DView | undefined;
1344
+ /**
1345
+ * Removes one or more Text3D labels from the map
1346
+ *
1347
+ * @param target - Can be either:
1348
+ * - A single Text3DView instance
1349
+ * - An array of Text3DView instances
1350
+ * - A string ID of the Text3DView to remove
1351
+ *
1352
+ * @example
1353
+ * ```typescript
1354
+ * // Remove single text label
1355
+ * mapView.Text3D.remove(text);
1356
+ *
1357
+ * // Remove multiple text labels
1358
+ * mapView.Text3D.remove([text, text]);
1359
+ *
1360
+ * // Remove by ID
1361
+ * mapView.Text3D.remove("text3d-123");
1362
+ * ```
1363
+ */
1364
+ remove(text3dView: Text3DView): void;
1365
+ remove(id: string): void;
1366
+ /**
1367
+ * Removes all Text3D labels from the current map
1368
+ *
1369
+ * @example
1370
+ * ```typescript
1371
+ * mapView.Text3D.removeAll();
1372
+ * ```
1373
+ */
1374
+ removeAll(): void;
1322
1375
  }
1323
1376
  }
1324
1377
 
@@ -1338,20 +1391,26 @@ declare module '@mappedin/mappedin-js/geojson/src' {
1338
1391
  import { mountSceneGraphVisualizer } from '@mappedin/mappedin-js/geojson/examples/src/utils/scene-graph-visualizer';
1339
1392
  import '../../packages/outdoor-context-v4/css/maplibre-gl.css';
1340
1393
  import type { CollisionRankingTier } from '@mappedin/mappedin-js/geojson/src/utils/collision-ranking-tier';
1394
+ export type { Text3DState } from '@mappedin/mappedin-js/geojson/src/components/text3d';
1395
+ export { TEXT3D_STYLE_UPDATE_PROPS } from '@mappedin/mappedin-js/geojson/src/entities/utils';
1341
1396
  export { Navigator } from '@mappedin/mappedin-js/packages/geojson-navigator';
1342
1397
  export { interpolate, debounce } from '@mappedin/mappedin-js/geojson/src/utils';
1343
1398
  export { MAPPEDIN_LAYER_ID } from '@mappedin/mappedin-js/geojson/src/utils/constants';
1399
+ export type { DebugState, Debug } from '@mappedin/mappedin-js/geojson/src/utils/debug';
1344
1400
  /**
1345
1401
  * Enable test mode for the renderer. This will disable the WebGLRenderer and WebGL1Renderer and replace them with a dummy object
1346
1402
  * so you can run tests against it
1347
1403
  */
1348
- export { enableTestMode } from '@mappedin/mappedin-js/geojson/src/services/renderer';
1404
+ export { enableTestMode } from '@mappedin/mappedin-js/geojson/src/services/test-mode';
1349
1405
  export { mountSceneGraphVisualizer };
1350
1406
  export type { EntityId, EntityState, LineStyle, PaintStyle, ModelStyle, ModelProperties, Shading } from '@mappedin/mappedin-js/geojson/src/types';
1351
1407
  export type * from 'geojson';
1352
1408
  export type { WatermarkUpdateOptions, WatermarkOptions, WatermarkPosition } from '@mappedin/mappedin-js/geojson/src/systems/watermark/system';
1409
+ export { preloadFont } from '@mappedin/mappedin-js/geojson/src/systems/text3d/system';
1353
1410
  export type { GLTFExportOptions } from '@mappedin/mappedin-js/geojson/src/systems/exporter';
1354
1411
  export type { AttributionControlOptions, AttributionPosition } from '@mappedin/mappedin-js/geojson/src/systems/html-controls/system';
1412
+ export type { Text3DStyle } from '@mappedin/mappedin-js/geojson/src/components/styles';
1413
+ export type { AddText3DOptions, InitializeText3DState, UpdatableText3DState } from '@mappedin/mappedin-js/geojson/src/components/text3d';
1355
1414
  export { ATTRIBUTION_POSITIONS } from '@mappedin/mappedin-js/geojson/src/systems/html-controls/system';
1356
1415
  export { ANIMATION_TWEENS } from '@mappedin/mappedin-js/geojson/src/camera';
1357
1416
  export type { AddPathOptions, AddMarkerOptions, AddLabelOptions, AnimateToOptions, FocusOnOptions, MapViewState, MarkerState, PathState, GroupContainerState, GeometryGroupState, ShapeState, CustomGeometryBuilder, LabelState, GeometryState, ModelState, EasingCurve, Camera, InsetPadding, InsetPaddingOption, Position, ClickPayload, HoverPayload, CameraPayload, MapEvent, MapEventPayload, CollisionRankingTier, LabelAppearance, RendererCore, };
@@ -1432,10 +1491,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay' {
1432
1491
 
1433
1492
  declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1434
1493
  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';
1436
- import type { Label, Marker, Model, Image, Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
1494
+ import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation, EnterpriseLocation, Node, Area, Facade } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
1495
+ import type { Label, Marker, Model, Image, Shape, Text3D } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
1437
1496
  import type { Language, ParsedMVFLocalePack } from '@mappedin/mvf';
1438
- import type { InsetPaddingOption, Position } from '@mappedin/core-sdk';
1497
+ import type { InsetPaddingOption, Position, UpdatableText3DState, Text3DState, AddText3DOptions } from '@mappedin/mappedin-js/geojson/src';
1439
1498
  export type DeepRequired<T> = Required<{
1440
1499
  [K in keyof T]: T[K] extends Required<T[K]> ? T[K] : DeepRequired<T[K]>;
1441
1500
  }>;
@@ -1573,6 +1632,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1573
1632
  * Visibility of the walls.
1574
1633
  */
1575
1634
  visible: boolean;
1635
+ /**
1636
+ * Height of the walls.
1637
+ */
1638
+ height?: number;
1639
+ /**
1640
+ * Opacity of the walls.
1641
+ */
1642
+ opacity?: number;
1576
1643
  };
1577
1644
  export type TDoorsState = {
1578
1645
  type: 'doors';
@@ -1717,9 +1784,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1717
1784
  /**
1718
1785
  * The type for updating the state of map elements (colors, texts, etc.).
1719
1786
  */
1720
- export type TUpdateState<T> = T extends WALLS ? Partial<TWallsState> : T extends DOORS ? Partial<TDoorsState> : T extends Door ? Partial<TDoorsState> : T extends Marker ? Partial<TMarkerState> : T extends Label ? Partial<TLabelState> : T extends Space | MapObject ? Partial<TGeometryState> : T extends Shape ? Partial<Omit<TShapeState, 'height' | 'type'>> : T extends Door ? Partial<TGeometryState> : T extends string ? Record<string, any> : never;
1787
+ export type TUpdateState<T> = T extends WALLS ? Partial<TWallsState> : T extends DOORS | Door ? Partial<TDoorsState> : T extends Marker ? Partial<TMarkerState> : T extends Label ? Partial<TLabelState> : T extends Space | MapObject | Facade ? Partial<TGeometryState> : T extends Shape ? Partial<Omit<TShapeState, 'height' | 'type'>> : T extends Text3D ? UpdatableText3DState : T extends string ? Record<string, any> : never;
1721
1788
  export type TUpdateStates = Partial<Omit<TGeometryState, 'interactive' | 'hoverColor' | 'type'>> | Partial<TMarkerState> | Partial<TLabelState> | Partial<TGeometryState>;
1722
- export type TGetState<T> = T extends WALLS ? TWallsState | undefined : T extends DOORS ? TDoorsState | undefined : T extends Marker ? TMarkerState | undefined : T extends Shape ? TShapeState | undefined : T extends Model ? TModelState | undefined : T extends Label ? TLabelState | undefined : T extends Image ? TImageState | undefined : T extends Space | MapObject ? TGeometryState | undefined : T extends string ? TLabelState | TGeometryState | TMarkerState | TModelState | undefined : never;
1789
+ export type TGetState<T> = T extends WALLS ? TWallsState | undefined : T extends DOORS ? TDoorsState | undefined : T extends Marker ? TMarkerState | undefined : T extends Shape ? TShapeState | undefined : T extends Model ? TModelState | undefined : T extends Label ? TLabelState | undefined : T extends Image ? TImageState | undefined : T extends Text3D ? Text3DState | undefined : T extends Space | MapObject ? TGeometryState | undefined : T extends string ? TLabelState | TGeometryState | TMarkerState | TModelState | undefined : never;
1723
1790
  /**
1724
1791
  * Options for {@link Camera} animations on the map.
1725
1792
  */
@@ -1800,7 +1867,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1800
1867
  /**
1801
1868
  * A map element that can be focused on by the camera.
1802
1869
  */
1803
- export type TFocusable = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | Area | Node | EnterpriseLocation
1870
+ export type TFocusable = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | Area | Node | EnterpriseLocation | Facade
1804
1871
  /**
1805
1872
  * @experimental
1806
1873
  */
@@ -1835,7 +1902,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1835
1902
  /**
1836
1903
  * Defines the target for navigation operations.
1837
1904
  */
1838
- export type TNavigationTarget = Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation | Node | Area;
1905
+ export type TNavigationTarget = Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation | Node | Area | Facade;
1839
1906
  /**
1840
1907
  * Defines the special zone for navigation operations.
1841
1908
  */
@@ -2192,6 +2259,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
2192
2259
  */
2193
2260
  url: string;
2194
2261
  };
2262
+ /**
2263
+ * @interface
2264
+ */
2265
+ export type TAddText3DOptions = AddText3DOptions;
2195
2266
  /**
2196
2267
  * Options for controlling the behavior of an {@link Image}.
2197
2268
  */
@@ -2405,6 +2476,21 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
2405
2476
  language: Language;
2406
2477
  localePack: ParsedMVFLocalePack;
2407
2478
  };
2479
+ export type GlobalState = {
2480
+ text3d: {
2481
+ /**
2482
+ * hover color of the text3d
2483
+ */
2484
+ hoverColor: string;
2485
+ };
2486
+ geometry: {
2487
+ /**
2488
+ * hover color of the geometries
2489
+ */
2490
+ hoverColor: string;
2491
+ };
2492
+ };
2493
+ export type UpdateGlobalState = DeepPartial<GlobalState>;
2408
2494
  }
2409
2495
 
2410
2496
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot' {
@@ -2694,6 +2780,16 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects' {
2694
2780
  export { Path } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path';
2695
2781
  export { CameraTransform } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/camera-transform';
2696
2782
  export { Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/shape';
2783
+ export { Text3D } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/text3d';
2784
+ }
2785
+
2786
+ declare module '@mappedin/mappedin-js/mappedin-js/src/debug' {
2787
+ import type { RendererCore } from '@mappedin/core-sdk';
2788
+ export class Debug {
2789
+ state: RendererCore['Debug']['state'];
2790
+ constructor(core: RendererCore);
2791
+ update: RendererCore['Debug']['update'];
2792
+ }
2697
2793
  }
2698
2794
 
2699
2795
  declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
@@ -2950,6 +3046,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/search' {
2950
3046
  export { Search } from '@mappedin/mappedin-js/mappedin-js/src/search/external';
2951
3047
  }
2952
3048
 
3049
+ declare module '@mappedin/mappedin-js/mappedin-js/src/query' {
3050
+ export { Query } from '@mappedin/mappedin-js/mappedin-js/src/query/external';
3051
+ export type { TFindNearestOptions, TFindNearestResult, TQueriables } from '@mappedin/mappedin-js/mappedin-js/src/query/external';
3052
+ }
3053
+
2953
3054
  declare module '@mappedin/mappedin-js/mappedin-js/src/analytics' {
2954
3055
  export { Analytics, AnalyticsInternal } from '@mappedin/mappedin-js/mappedin-js/src/analytics/customer';
2955
3056
  export type { AnalyticsUpdateOptions, AnalyticState, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics/customer';
@@ -3483,8 +3584,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3483
3584
  import type { Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3484
3585
  import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle, ParsedMVFLocalePack, OperationHours, SiblingGroup, LocationState } from '@mappedin/mvf';
3485
3586
  import { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
3486
- import type { InsetPadding, InsetPaddingOption, Shading, PaintStyle, LineStyle, WatermarkOptions } from '@mappedin/mappedin-js/geojson/src';
3487
- import { enableTestMode } from '@mappedin/mappedin-js/geojson/src';
3587
+ export type { Text3D as Text3DApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
3588
+ import type { InsetPadding, InsetPaddingOption, Shading, PaintStyle, LineStyle, WatermarkOptions, Text3DState, AddText3DOptions, UpdatableText3DState, InitializeText3DState, MapViewState } from '@mappedin/mappedin-js/geojson/src';
3589
+ import { enableTestMode, preloadFont } from '@mappedin/mappedin-js/geojson/src';
3488
3590
  export type { PubSub } from '@packages/internal/common/pubsub';
3489
3591
  import type { TMappedinMapLibreOverlayEvents } from '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay';
3490
3592
  import { MappedinMapLibreOverlay } from '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay';
@@ -3510,92 +3612,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3510
3612
  */
3511
3613
  quality?: 'low' | 'medium' | 'high' | 'ultra';
3512
3614
  };
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
3615
  /**
3600
3616
  * @interface
3601
3617
  * Options for the watermark.
@@ -3817,19 +3833,25 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3817
3833
  * @experimental
3818
3834
  */
3819
3835
  export const createMapLibreOverlay: (mapData: MapData, showMapOptions?: TShow3DMapOptions) => MappedinMapLibreOverlay;
3820
- export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
3821
3836
  export const show3dMap: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
3822
- 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, };
3837
+ /**
3838
+ * @internal
3839
+ * @deprecated Use {@link show3dMap} instead.
3840
+ */
3841
+ export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
3842
+ export { parseMVF, unzipMVF, enableTestMode, preloadFont };
3843
+ export type { MapView, MapData, MapViewState, 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, Text3DState, AddText3DOptions, UpdatableText3DState, InitializeText3DState, };
3824
3844
  export type * from 'geojson';
3825
3845
  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
3846
  export { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
3827
- export type { Label, Marker, Path, Shape, CameraTransform, Model, Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
3847
+ export type { Label, Marker, Path, Shape, CameraTransform, Model, Image, Text3D } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
3848
+ export type { Debug } from '@mappedin/mappedin-js/mappedin-js/src/debug';
3828
3849
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
3829
3850
  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';
3851
+ 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
3852
  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
3853
  export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search';
3854
+ export type { TFindNearestOptions, TFindNearestResult, TQueriables, Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
3833
3855
  export type { Analytics, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
3834
3856
  }
3835
3857
 
@@ -4159,6 +4181,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space' {
4159
4181
  * @internal
4160
4182
  */
4161
4183
  readonly __type = "space";
4184
+ getMvfData(): import("@mappedin/mvf").Feature<import("@mappedin/mvf").Point | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon, import("@mappedin/mvf").SpaceProperties>;
4162
4185
  /**
4163
4186
  * Checks if the provided instance is of type Space.
4164
4187
  *
@@ -4952,7 +4975,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image' {
4952
4975
 
4953
4976
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-stack' {
4954
4977
  import type { FloorStack as MVFFloorStack } from '@mappedin/mvf';
4955
- import type { MapDataInternal, Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4978
+ import type { MapDataInternal, Floor, Facade } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4956
4979
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
4957
4980
  /**
4958
4981
  * A class representing floor stack data within the map.
@@ -4981,6 +5004,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-sta
4981
5004
  */
4982
5005
  constructor(data: MapDataInternal, options: {
4983
5006
  mvfData: MVFFloorStack;
5007
+ facadeId?: string;
4984
5008
  });
4985
5009
  /**
4986
5010
  * Gets the type of FloorStack.
@@ -5001,7 +5025,15 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-sta
5001
5025
  *
5002
5026
  * @returns {Floor[]} An array of Floor objects in this FloorStack.
5003
5027
  */
5004
- get floors(): Floor[];
5028
+ get floors(): [Floor, ...Floor[]];
5029
+ /**
5030
+ * Get the default floor for this floor stack
5031
+ */
5032
+ get defaultFloor(): Floor;
5033
+ /**
5034
+ * Gets the facade ({@link Facade}) representing this floor stack, if it exists.
5035
+ */
5036
+ get facade(): Facade | undefined;
5005
5037
  /**
5006
5038
  * Serializes the FloorStack data to JSON.
5007
5039
  *
@@ -5023,20 +5055,58 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-sta
5023
5055
  export default FloorStack;
5024
5056
  }
5025
5057
 
5058
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/facade' {
5059
+ import type { Space, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5060
+ import { Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5061
+ import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
5062
+ import type { Facade as MVFFacade } from '@mappedin/mvf';
5063
+ /**
5064
+ * A Facade is a collection of spaces that make up the exterior representation of a Floor Stack ({@link FloorStack}).
5065
+ */
5066
+ class Facade extends BaseMapData {
5067
+ #private;
5068
+ static readonly __type = "facade";
5069
+ readonly __type = "facade";
5070
+ /**
5071
+ * Checks if the provided instance is of type Floor.
5072
+ *
5073
+ * @param instance The instance to check.
5074
+ * @returns {boolean} True if the instance is a Floor, false otherwise.
5075
+ */
5076
+ static is(instance: object): instance is Facade;
5077
+ /** @internal */
5078
+ constructor(data: MapDataInternal, options: {
5079
+ mvfData: MVFFacade;
5080
+ floorStackId: string;
5081
+ });
5082
+ /**
5083
+ * Gets the floor stack that this Facade represents.
5084
+ */
5085
+ get floorStack(): import("./floor-stack").default;
5086
+ /**
5087
+ * Gets the collection of spaces that make up this Facade.
5088
+ */
5089
+ get spaces(): Space[];
5090
+ /**
5091
+ * Gets the center {@link Coordinate} of the Facade.
5092
+ */
5093
+ get center(): Coordinate;
5094
+ }
5095
+ export default Facade;
5096
+ }
5097
+
5026
5098
  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';
5099
+ 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
5100
  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';
5101
+ 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
5102
  export type MapDataRecords = {
5035
5103
  spacesById: Record<string, Space>;
5036
5104
  nodesById: Record<string, Node>;
5037
5105
  objectsById: Record<string, MapObject>;
5038
5106
  floorsById: Record<string, Floor>;
5039
5107
  floorStacksById: Record<string, FloorStack>;
5108
+ facadesById: Record<string, Facade>;
5109
+ facadesBySpaceId: Record<string, Facade>;
5040
5110
  connectionsById: Record<string, Connection>;
5041
5111
  doorsById: Record<string, Door>;
5042
5112
  doorsByNodeId: Record<string, Door>;
@@ -5063,10 +5133,25 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
5063
5133
  mvfCategoriesById: Record<string, MVFEnterpriseCategory>;
5064
5134
  mvfLocationsById: Record<string, MVFEnterpriseLocation>;
5065
5135
  mvfLocationsBySpaceId: Record<string, MVFEnterpriseLocation[]>;
5136
+ mvfNodesByFloorId: {
5137
+ [floorId: string]: NodeCollection['features'][number][];
5138
+ };
5139
+ mvfSpacesByFloorId: {
5140
+ [floorId: string]: SpaceCollection['features'][number][];
5141
+ };
5142
+ mvfPoisByFloorId: {
5143
+ [floorId: string]: FeatureCollection<Point, SpaceProperties>['features'][number][];
5144
+ };
5145
+ mvfEntrancesByFloorId: {
5146
+ [floorId: string]: EntranceCollection['features'][number][];
5147
+ };
5148
+ mvfAnnotationsByFloorId: {
5149
+ [floorId: string]: AnnotationCollection['features'][number][];
5150
+ };
5066
5151
  mvfAreasById: Record<AreaId, AreaCollection['features'][number]>;
5067
5152
  };
5068
5153
  export const processMVFFloors: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorsById" | "mvfFloorsById">;
5069
- export const processMVFFloorStacks: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorStacksById" | "mvfFloorStacksById">;
5154
+ export const processMVFFloorStacks: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorStacksById" | "mvfFloorStacksById" | "facadesById" | "facadesBySpaceId">;
5070
5155
  export const processMVFAreas: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "areasById" | "mvfAreasById">;
5071
5156
  /**
5072
5157
  * @internal
@@ -5090,6 +5175,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
5090
5175
  objectsById: Record<string, MapObject>;
5091
5176
  floorsById: Record<string, Floor>;
5092
5177
  floorStacksById: Record<string, FloorStack>;
5178
+ facadesById: Record<string, Facade>;
5179
+ facadesBySpaceId: Record<string, Facade>;
5093
5180
  connectionsById: Record<string, Connection>;
5094
5181
  doorsById: Record<string, Door>;
5095
5182
  doorsByNodeId: Record<string, Door>;
@@ -5113,7 +5200,26 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
5113
5200
  geometry: Point;
5114
5201
  properties: import("@mappedin/mvf").AnnotationProperties;
5115
5202
  }>;
5203
+ mvfNodesByFloorId: {
5204
+ [floorId: string]: Feature<Point, import("@mappedin/mvf").NodeProperties>[];
5205
+ };
5206
+ mvfSpacesByFloorId: {
5207
+ [floorId: string]: Feature<Point | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon, SpaceProperties>[];
5208
+ };
5209
+ mvfPoisByFloorId: {
5210
+ [floorId: string]: Feature<Point, SpaceProperties>[];
5211
+ };
5116
5212
  mvfAreasById: Record<string, import("@mappedin/mvf").Area>;
5213
+ mvfEntrancesByFloorId: {
5214
+ [floorId: string]: Feature<import("@mappedin/mvf").LineString, import("@mappedin/mvf").EntranceProperties>[];
5215
+ };
5216
+ mvfAnnotationsByFloorId: {
5217
+ [floorId: string]: {
5218
+ type: import("@mappedin/mvf").FeatureType;
5219
+ geometry: Point;
5220
+ properties: import("@mappedin/mvf").AnnotationProperties;
5221
+ }[];
5222
+ };
5117
5223
  };
5118
5224
  }
5119
5225
 
@@ -5242,6 +5348,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/inspector/insp
5242
5348
  export type InspectorOption = Partial<InspectorState>;
5243
5349
  }
5244
5350
 
5351
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/types' {
5352
+ import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
5353
+ export type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
5354
+ }
5355
+
5245
5356
  declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
5246
5357
  import './marker.scss';
5247
5358
  import { Vector2 } from 'three';
@@ -5249,7 +5360,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
5249
5360
  import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
5250
5361
  import type { CollisionRankingTier } from '@mappedin/mappedin-js/geojson/src/utils/collision-ranking-tier';
5251
5362
  import { z } from 'zod';
5252
- import type { PackedBBoxes } from '@mappedin/mappedin-js/geojson/src/systems/collisions/system';
5363
+ import { type PackedBBoxes } from '@mappedin/mappedin-js/geojson/src/systems/collisions/system';
5253
5364
  /**
5254
5365
  * State reprsenting a Marker
5255
5366
  */
@@ -5305,14 +5416,14 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
5305
5416
  }, "strip", z.ZodTypeAny, {
5306
5417
  interactive?: boolean | "pointer-events-auto" | undefined;
5307
5418
  id?: string | undefined;
5308
- anchor?: "center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
5309
- rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
5419
+ anchor?: "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
5420
+ rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5310
5421
  dynamicResize?: boolean | undefined;
5311
5422
  }, {
5312
5423
  interactive?: boolean | "pointer-events-auto" | undefined;
5313
5424
  id?: string | undefined;
5314
- anchor?: "center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
5315
- rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
5425
+ anchor?: "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
5426
+ rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5316
5427
  dynamicResize?: boolean | undefined;
5317
5428
  }>;
5318
5429
  export function validateMarker(coordinate: Position, contentHTML: string, options: AddMarkerOptions): void;
@@ -5403,7 +5514,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
5403
5514
 
5404
5515
  declare module '@mappedin/mappedin-js/geojson/src/components/path' {
5405
5516
  import { Vector3 } from 'three';
5406
- import type { Mesh, BufferGeometry } from 'three';
5517
+ import type { BufferGeometry, LineSegments } from 'three';
5407
5518
  import type { EntityId, Position } from '@mappedin/mappedin-js/geojson/src/types';
5408
5519
  import type { PathMaterial, PatMeshContainer } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
5409
5520
  import type { FeatureCollection, Point } from 'geojson';
@@ -5582,7 +5693,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/path' {
5582
5693
  mesh: PatMeshContainer;
5583
5694
  material?: PathMaterial;
5584
5695
  geometry?: BufferGeometry;
5585
- outline?: Mesh;
5696
+ outline?: LineSegments;
5586
5697
  feature: FeatureCollection<Point, PathProperties>;
5587
5698
  options: AddPathOptions;
5588
5699
  nearRadius: number;
@@ -5698,6 +5809,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
5698
5809
  foregroundColor?: string | undefined;
5699
5810
  backgroundColor?: string | undefined;
5700
5811
  } | undefined;
5812
+ margin?: number | undefined;
5701
5813
  marker?: {
5702
5814
  size?: number | undefined;
5703
5815
  foregroundColor?: {
@@ -5709,7 +5821,6 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
5709
5821
  inactive?: string | undefined;
5710
5822
  } | undefined;
5711
5823
  } | undefined;
5712
- margin?: number | undefined;
5713
5824
  }, {
5714
5825
  text?: {
5715
5826
  size?: number | undefined;
@@ -5719,6 +5830,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
5719
5830
  foregroundColor?: string | undefined;
5720
5831
  backgroundColor?: string | undefined;
5721
5832
  } | undefined;
5833
+ margin?: number | undefined;
5722
5834
  marker?: {
5723
5835
  size?: number | undefined;
5724
5836
  foregroundColor?: {
@@ -5730,11 +5842,10 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
5730
5842
  inactive?: string | undefined;
5731
5843
  } | undefined;
5732
5844
  } | undefined;
5733
- margin?: number | undefined;
5734
5845
  }>>;
5735
5846
  }, "strip", z.ZodTypeAny, {
5736
5847
  interactive?: boolean | undefined;
5737
- rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
5848
+ rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5738
5849
  appearance?: {
5739
5850
  text?: {
5740
5851
  size?: number | undefined;
@@ -5744,6 +5855,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
5744
5855
  foregroundColor?: string | undefined;
5745
5856
  backgroundColor?: string | undefined;
5746
5857
  } | undefined;
5858
+ margin?: number | undefined;
5747
5859
  marker?: {
5748
5860
  size?: number | undefined;
5749
5861
  foregroundColor?: {
@@ -5755,11 +5867,10 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
5755
5867
  inactive?: string | undefined;
5756
5868
  } | undefined;
5757
5869
  } | undefined;
5758
- margin?: number | undefined;
5759
5870
  } | undefined;
5760
5871
  }, {
5761
5872
  interactive?: boolean | undefined;
5762
- rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
5873
+ rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5763
5874
  appearance?: {
5764
5875
  text?: {
5765
5876
  size?: number | undefined;
@@ -5769,6 +5880,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
5769
5880
  foregroundColor?: string | undefined;
5770
5881
  backgroundColor?: string | undefined;
5771
5882
  } | undefined;
5883
+ margin?: number | undefined;
5772
5884
  marker?: {
5773
5885
  size?: number | undefined;
5774
5886
  foregroundColor?: {
@@ -5780,7 +5892,6 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
5780
5892
  inactive?: string | undefined;
5781
5893
  } | undefined;
5782
5894
  } | undefined;
5783
- margin?: number | undefined;
5784
5895
  } | undefined;
5785
5896
  }>;
5786
5897
  export function validateLabel(coordinate: Position, text: string, options: AddLabelOptions): void;
@@ -6127,9 +6238,12 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/group-container' {
6127
6238
  import type { StackComponent } from '@mappedin/mappedin-js/geojson/src/components/stack';
6128
6239
  import type { MarkerState } from '@mappedin/mappedin-js/geojson/src/components/marker';
6129
6240
  import type { LabelState } from '@mappedin/mappedin-js/geojson/src/components/label';
6241
+ import type { Geometry3DTypes } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
6130
6242
  import { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
6131
6243
  import type { PathState } from '@mappedin/mappedin-js/geojson/src/components/path';
6132
6244
  import type { InteractionComponent } from '@mappedin/mappedin-js/geojson/src/components/interaction';
6245
+ import type { BatchedText } from '@mappedin/mappedin-js/geojson/src/services/text3d/text3d';
6246
+ import type { EntityTypes } from '@mappedin/mappedin-js/geojson/src/renderer';
6133
6247
  export enum GroupContainerComponents {
6134
6248
  Stack = 0,
6135
6249
  Interaction = 1
@@ -6156,7 +6270,8 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/group-container' {
6156
6270
  };
6157
6271
  export class GroupContainerObject3D extends Object3D {
6158
6272
  childrenIds: Set<string | number>;
6159
- readonly type = "group-container";
6273
+ children: (GroupContainerObject3D | GeometryGroupObject3D | BatchedText | Geometry2D['object3d'] | NonNullable<Geometry3D['object3d']>)[];
6274
+ readonly type: "group-container";
6160
6275
  userData: {
6161
6276
  entityId: string | number;
6162
6277
  entities2D: Set<string | number>;
@@ -6164,8 +6279,8 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/group-container' {
6164
6279
  };
6165
6280
  components: [StackComponent?, InteractionComponent?];
6166
6281
  constructor(id: string);
6167
- addEntity(entityGroupOrContainer: GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | Geometry3D): void;
6168
- removeEntity(entityGroupOrContainer: GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | Geometry3D): void;
6282
+ addEntity(entityGroupOrContainer: GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | Geometry3DTypes): void;
6283
+ removeEntity(entityGroupOrContainer: EntityTypes): void;
6169
6284
  setVisible(visible: boolean): void;
6170
6285
  setAltitude(altitude: number): void;
6171
6286
  get altitude(): number;
@@ -6245,7 +6360,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry-group' {
6245
6360
  export type ChildUpdatable<T> = T extends LineStyle ? Partial<Pick<LineStyle, 'color' | 'opacity' | 'visible'>> : Partial<Pick<PaintStyle, 'color' | 'opacity' | 'visible'>>;
6246
6361
  export class GeometryGroupObject3D extends Object3D {
6247
6362
  visible: boolean;
6248
- readonly type = "geometry-group";
6363
+ readonly type: "geometry-group";
6249
6364
  components: [GeometryGroupStyleComponent];
6250
6365
  userData: {
6251
6366
  entityId: string | number;
@@ -6276,7 +6391,8 @@ declare module '@mappedin/mappedin-js/geojson/src/types/geometry' {
6276
6391
  }
6277
6392
 
6278
6393
  declare module '@mappedin/mappedin-js/geojson/src/types' {
6279
- import { Mesh, Object3D, InstancedMesh, Camera } from 'three';
6394
+ import type { Camera } from 'three';
6395
+ import { Mesh, Object3D, InstancedMesh } from 'three';
6280
6396
  import type { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
6281
6397
  import type { Position } from '@mappedin/mappedin-js/geojson/src/types/geometry';
6282
6398
  import type { GeometryState } from '@mappedin/mappedin-js/geojson/src/components/mesh';
@@ -6288,13 +6404,14 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
6288
6404
  import type { MarkerState } from '@mappedin/mappedin-js/geojson/src/components/marker';
6289
6405
  import type { ImageState } from '@mappedin/mappedin-js/geojson/src/components/image';
6290
6406
  import type { ShapeState } from '@mappedin/mappedin-js/geojson/src/components/custom';
6291
- import type { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities';
6292
6407
  import type { Group as TweenGroup } from '@tweenjs/tween.js';
6293
- import { MaterialSide } from '@mappedin/mappedin-js/geojson/src/components/style';
6408
+ import type { MaterialSide } from '@mappedin/mappedin-js/geojson/src/components/styles';
6409
+ import type { Geometry3DTypes } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
6410
+ import type { Text3DState } from '@mappedin/mappedin-js/geojson/src/components/text3d';
6294
6411
  /**
6295
6412
  * The state of an entity, which can be a geometry, geometry group, group container, path, model, label, or marker.
6296
6413
  */
6297
- export type EntityState = GeometryState | GeometryGroupState | GroupContainerState | PathState | ModelState | LabelState | MarkerState | ImageState | ShapeState;
6414
+ export type EntityState = GeometryState | GeometryGroupState | GroupContainerState | PathState | ModelState | LabelState | MarkerState | ImageState | Text3DState | ShapeState;
6298
6415
  /**
6299
6416
  * A wrapper object that contains the ID and type of an entity. This is returned when adding entities to the scene, and can be used
6300
6417
  * to `getState` and `setState` of the entity.
@@ -6546,10 +6663,10 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
6546
6663
  */
6547
6664
  'user-interaction-end': undefined;
6548
6665
  /**
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.
6666
+ * 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
6667
  * Geometries can be added to the focus listener via `mapView.setState(.., { focusable: true })`.
6551
6668
  */
6552
- 'geometry-in-focus': string | number | null;
6669
+ 'geometry-in-focus': string[];
6553
6670
  /**
6554
6671
  * Fired before the scene is rendered. Use this to modify the scene before it is rendered.
6555
6672
  */
@@ -6561,14 +6678,18 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
6561
6678
  export type MapEventPayload<EventName extends keyof MapEvent> = MapEvent[EventName] extends {
6562
6679
  data: null;
6563
6680
  } ? MapEvent[EventName]['data'] : MapEvent[EventName];
6564
- export type Geometry3DTypes = Geometry3D | GeometryGroupObject3D | GroupContainerObject3D;
6681
+ /**
6682
+ * All entities in 3D
6683
+ */
6684
+ export type All3DTypes = Geometry3DTypes | GeometryGroupObject3D | GroupContainerObject3D;
6565
6685
  export type RendererState = {
6566
- geometry3DMap: Map<string | number, Geometry3DTypes>;
6686
+ geometry3DMap: Map<string | number, All3DTypes>;
6567
6687
  geometry2DMap: Map<string | number, Geometry2D>;
6568
6688
  geometry2DIdsInScene: Set<Geometry2D['id']>;
6569
- geometry3DIdsInScene: Set<Geometry3DTypes['id']>;
6689
+ geometry3DIdsInScene: Set<All3DTypes['id']>;
6570
6690
  entityScene: GroupContainerObject3D;
6571
6691
  hoverColor: string;
6692
+ text3dHoverColor: string;
6572
6693
  center?: Position;
6573
6694
  insetsPadding: InsetPadding;
6574
6695
  shouldMeasureCanvas: boolean;
@@ -6582,10 +6703,14 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
6582
6703
  tweenGroup: TweenGroup;
6583
6704
  cameraObject: Camera;
6584
6705
  };
6706
+ /**
6707
+ * All of the entities in the scene
6708
+ */
6709
+ export type EntityTypes = Geometry3DTypes | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D;
6585
6710
  }
6586
6711
 
6587
6712
  declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
6588
- import type { Texture, BufferGeometry, LineSegments, Mesh, Object3D } from 'three';
6713
+ import type { Texture, BufferGeometry, LineSegments, Mesh } from 'three';
6589
6714
  import { BatchedMesh, Color, Vector3 } from 'three';
6590
6715
  import type { BatchedStandardMaterial } from '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-optimization/batched-material';
6591
6716
  import type { Position } from '@mappedin/mappedin-js/geojson/src/types';
@@ -6593,7 +6718,9 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
6593
6718
  import type { BBox } from '@turf/turf';
6594
6719
  import { type ImageProperties } from '@mappedin/mappedin-js/geojson/src/components/image';
6595
6720
  import { type BaseTextAreaProperties } from '@mappedin/mvf';
6721
+ import type { Text } from 'troika-three-text';
6596
6722
  export class EntityBatchedMesh extends BatchedMesh {
6723
+ type: "entityBatchedMesh";
6597
6724
  userData: {
6598
6725
  entities: {
6599
6726
  [key: number]: string | number;
@@ -6602,6 +6729,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
6602
6729
  };
6603
6730
  }
6604
6731
  export type MeshComponentProperties = {
6732
+ id: string;
6605
6733
  image?: ImageProperties & {
6606
6734
  position: GeoJsonPosition;
6607
6735
  path: string;
@@ -6681,6 +6809,14 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
6681
6809
  * The top texture URL of the geometry
6682
6810
  */
6683
6811
  topTexture?: string;
6812
+ /**
6813
+ * Whether the geometry is currently in hover state or not
6814
+ */
6815
+ hovered: boolean;
6816
+ /**
6817
+ * The render order of the geometry
6818
+ */
6819
+ renderOrder?: number;
6684
6820
  };
6685
6821
  export class MeshComponent {
6686
6822
  #private;
@@ -6688,7 +6824,11 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
6688
6824
  focusMesh?: Mesh;
6689
6825
  outline?: LineSegments;
6690
6826
  imageMesh?: Mesh;
6691
- textAreaMesh?: Object3D;
6827
+ /**
6828
+ * holds a pointer to space label text if the polygon has label active.
6829
+ */
6830
+ textMesh?: Text;
6831
+ textEntityId?: string;
6692
6832
  readonly type = "geometry";
6693
6833
  dirty: boolean;
6694
6834
  detached: boolean;
@@ -6700,7 +6840,8 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
6700
6840
  constructor(feature: Feature<Polygon | LineString | MultiPolygon | MultiLineString, MeshComponentProperties>);
6701
6841
  get visible(): boolean;
6702
6842
  set visible(visible: boolean);
6703
- setOpacity(opacity: number): void;
6843
+ get renderOrder(): number;
6844
+ set renderOrder(value: number);
6704
6845
  focusable: boolean;
6705
6846
  color: Color;
6706
6847
  topColor: Color;
@@ -7029,9 +7170,9 @@ declare module '@mappedin/mappedin-js/geojson/src/components/model' {
7029
7170
  outline?: LineSegments;
7030
7171
  geometry?: Object3D;
7031
7172
  material?: BatchedStandardMaterial;
7032
- feature: Feature<Point>;
7173
+ feature: Feature<Point, ModelProperties>;
7033
7174
  instanceIndex?: number;
7034
- constructor(feature: Feature<Point>);
7175
+ constructor(feature: Feature<Point, ModelProperties>);
7035
7176
  visible: boolean;
7036
7177
  setOpacity(): void;
7037
7178
  color: Color;
@@ -7050,14 +7191,14 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
7050
7191
  import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
7051
7192
  import { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
7052
7193
  import { PubSub } from '@mappedin/mappedin-js/packages/common/pubsub';
7194
+ import { Renderer } from '@mappedin/mappedin-js/geojson/src/services/renderer';
7053
7195
  import { CollisionSystem } from '@mappedin/mappedin-js/geojson/src/systems/collisions/system';
7054
7196
  import { InteractionSystem } from '@mappedin/mappedin-js/geojson/src/systems/interactions';
7055
- import { ZoomInterpolationSystem } from '@mappedin/mappedin-js/geojson/src/systems/zoom-interpolation/zoom-interpolation';
7056
7197
  import type { AddMarkerOptions, MarkerState } from '@mappedin/mappedin-js/geojson/src/components/marker';
7057
7198
  import type { GLTFExportOptions } from '@mappedin/mappedin-js/geojson/src/systems/exporter';
7058
7199
  import { ExporterSystem } from '@mappedin/mappedin-js/geojson/src/systems/exporter';
7059
7200
  import type { AddLabelOptions, LabelState } from '@mappedin/mappedin-js/geojson/src/components/label';
7060
- import type { LineStyle, PaintStyle, RendererCoreOptions, Position, ModelProperties, ModelStyle, EntityState, EntityId, MapEvent, MapEventPayload, RendererState } from '@mappedin/mappedin-js/geojson/src/types';
7201
+ import type { LineStyle, PaintStyle, RendererCoreOptions, Position, ModelProperties, ModelStyle, EntityState, EntityId, MapEvent, MapEventPayload, RendererState, EntityTypes } from '@mappedin/mappedin-js/geojson/src/types';
7061
7202
  import { MeshCreationAndOptimizationSystem } from '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-optimization/system';
7062
7203
  import { DOMVisibilitySystem } from '@mappedin/mappedin-js/geojson/src/systems/dom-visiblity/system';
7063
7204
  import { TwoDProjectionSystem } from '@mappedin/mappedin-js/geojson/src/systems/2d-projection/system';
@@ -7087,11 +7228,13 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
7087
7228
  import { OutdoorLayers } from '@mappedin/mappedin-js/geojson/src/systems/outdoor-layers/system';
7088
7229
  import { PathSystem } from '@mappedin/mappedin-js/geojson/src/systems/path';
7089
7230
  import { type ImageProperties, type ImageState, type ImageStyle } from '@mappedin/mappedin-js/geojson/src/components/image';
7231
+ import type { AddText3DOptions, Text3DState, UpdatableText3DState } from '@mappedin/mappedin-js/geojson/src/components/text3d';
7090
7232
  import { MeshDetachmentSystem } from '@mappedin/mappedin-js/geojson/src/systems/mesh-detachment/system';
7091
7233
  import { MeshModificationSystem } from '@mappedin/mappedin-js/geojson/src/systems/mesh-modification/system';
7092
7234
  import { PreRenderSystem } from '@mappedin/mappedin-js/geojson/src/systems/pre-render/system';
7093
- import { PolygonLabelSystem } from '@mappedin/mappedin-js/geojson/src/systems/polygon-label/system';
7235
+ import { Text3DSystem } from '@mappedin/mappedin-js/geojson/src/systems/text3d/system';
7094
7236
  import { Group as TweenGroup } from '@tweenjs/tween.js';
7237
+ import { Debug } from '@mappedin/mappedin-js/geojson/src/utils/debug';
7095
7238
  export type * from '@mappedin/mappedin-js/geojson/src/types';
7096
7239
  export const raycaster: Raycaster;
7097
7240
  /**
@@ -7111,7 +7254,6 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
7111
7254
  panBoundsSystem: PanBoundsSystem;
7112
7255
  collisionSystem: CollisionSystem;
7113
7256
  interactionSystem: InteractionSystem;
7114
- zoomInterpolationSystem: ZoomInterpolationSystem;
7115
7257
  meshOptimizationSystem: MeshCreationAndOptimizationSystem;
7116
7258
  domVisiblitySystem: DOMVisibilitySystem;
7117
7259
  domMutationSystem: DOMResizeSystem;
@@ -7134,16 +7276,18 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
7134
7276
  meshDetachmentSystem: MeshDetachmentSystem;
7135
7277
  meshModificationSystem: MeshModificationSystem;
7136
7278
  preRenderSystem: PreRenderSystem;
7137
- polygonLabelSystem: PolygonLabelSystem;
7279
+ text3DSystem: Text3DSystem;
7138
7280
  };
7139
7281
  export type MapViewState = {
7140
7282
  readonly type: 'map-view';
7141
- hoverColor?: string;
7283
+ hoverColor: string;
7284
+ text3dHoverColor: string;
7142
7285
  };
7143
7286
  class Core extends PubSub<MapEvent> {
7144
7287
  #private;
7145
7288
  options: Omit<RendererCoreOptions, 'outdoorView'>;
7146
7289
  container: HTMLElement;
7290
+ Debug: Debug;
7147
7291
  /**
7148
7292
  * The view camera is used for projecting both the outdoor map and our scene
7149
7293
  */
@@ -7203,11 +7347,36 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
7203
7347
  */
7204
7348
  addMarker2D(coordinate: Position, contentHTML: string, options?: AddMarkerOptions, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<MarkerState> | undefined;
7205
7349
  /**
7206
- * Add a 2D label at a GeoJSON coordinate.
7207
- */
7208
- addLabel2D(coordinate: Position, text: string, options?: AddLabelOptions, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<LabelState> | undefined;
7209
- /**
7210
- * Add a Path along a set of GeoJSON coordinates that can be animated.
7350
+ * Labels an existing 3D geometry with a text area.
7351
+ *
7352
+ * @param meshGeometryId - The ID of the target 3D geometry to label.
7353
+ * @param content - The text content to display.
7354
+ * @param options - Additional options for adding the text label, including:
7355
+ * - parentId: Optional ID of the parent container.
7356
+ * - appearance: Optional appearance settings for the text label.
7357
+ *
7358
+ * @returns An object containing the ID and type of the created or existing text label, or undefined if labeling failed. If geometry is already labeld, the same text id will be returned
7359
+ *
7360
+ * @example
7361
+ * ```typescript
7362
+ * const label = renderer.labelText3D('geometry123', 'Hello World', { parentId: 'parent456', appearance: { color: 'red' } });
7363
+ * if (label) {
7364
+ * console.log(`Label created with ID: ${label.id}`);
7365
+ * }
7366
+ *
7367
+ */
7368
+ labelText3D(meshGeometryId: string, content: string, options?: AddText3DOptions & {
7369
+ parentId?: string;
7370
+ }): {
7371
+ id: string | number;
7372
+ type: "text3d";
7373
+ } | undefined;
7374
+ /**
7375
+ * Add a 2D label at a GeoJSON coordinate.
7376
+ */
7377
+ addLabel2D(coordinate: Position, text: string, options?: AddLabelOptions, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<LabelState> | undefined;
7378
+ /**
7379
+ * Add a Path along a set of GeoJSON coordinates that can be animated.
7211
7380
  */
7212
7381
  addPath(geometry: FeatureCollection<Point, PathProperties>, options?: AddPathOptions, parent?: EntityId<GroupContainerState> | string | null): EntityId<PathState> | undefined;
7213
7382
  /**
@@ -7220,6 +7389,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
7220
7389
  * Remove an entity from the renderer and release associated resources.
7221
7390
  */
7222
7391
  remove(object: string | number): void;
7392
+ remove(object: EntityTypes): void;
7223
7393
  /**
7224
7394
  * Show collision boxes for 2D entities for debugging
7225
7395
  */
@@ -7244,13 +7414,13 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
7244
7414
  * Get the current state of the map view, or any entity that was added, regardless of whether it is visible in the scene
7245
7415
  */
7246
7416
  getState(): MapViewState;
7247
- getState<T extends EntityId<EntityState>>(geometryOrGeometryId: T): T extends EntityId<LabelState> ? LabelState : T extends EntityId<GeometryState> ? GeometryState : T extends EntityId<MarkerState> ? MarkerState : T extends EntityId<GeometryGroupState> ? GeometryGroupState : T extends EntityId<GroupContainerState> ? GroupContainerState : T extends EntityId<ModelState> ? ModelState : T extends EntityId<PathState> ? PathState : T extends EntityId<ShapeState> ? ShapeState : T extends EntityId<ImageState> ? ImageState : EntityState;
7417
+ getState<T extends EntityId<EntityState>>(geometryOrGeometryId: T): T extends EntityId<LabelState> ? LabelState : T extends EntityId<GeometryState> ? GeometryState : T extends EntityId<MarkerState> ? MarkerState : T extends EntityId<GeometryGroupState> ? GeometryGroupState : T extends EntityId<GroupContainerState> ? GroupContainerState : T extends EntityId<ModelState> ? ModelState : T extends EntityId<PathState> ? PathState : T extends EntityId<ShapeState> ? ShapeState : T extends EntityId<ImageState> ? ImageState : T extends EntityId<Text3DState> ? Text3DState : EntityState;
7248
7418
  getState(geometryOrGeometryId?: Record<string | number, any> | string | number): EntityState;
7249
7419
  getState<T extends EntityState>(geometryOrGeometryId: T['id']): T extends LabelState ? LabelState : T extends GeometryState ? GeometryState : T extends MarkerState ? MarkerState : T extends GeometryGroupState ? GeometryGroupState : T extends GroupContainerState ? GroupContainerState : T extends ModelState ? ModelState : T extends PathState ? PathState : T extends ShapeState ? ShapeState : T extends ImageState ? ImageState : EntityState;
7250
7420
  /**
7251
7421
  * Set the state of the map view or any entity that was added, regardless of whether it is visible in the scene.
7252
7422
  */
7253
- setState(object: Partial<MapViewState>): void;
7423
+ setState(object: Partial<Omit<MapViewState, 'type'>>): void;
7254
7424
  setState<T extends EntityId<LabelState>>(object: T | T['id'], state: Partial<LabelState>): void;
7255
7425
  setState<T extends EntityId<MarkerState>>(object: T | T['id'], state: Partial<MarkerState>): void;
7256
7426
  setState<T extends EntityId<GeometryGroupState>>(object: T | T['id'], state: Partial<GeometryGroupState>): void;
@@ -7260,6 +7430,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
7260
7430
  setState<T extends EntityId<PathState>>(object: T | T['id'], state: PathUpdateState): void;
7261
7431
  setState<T extends EntityId<ModelState>>(object: T | T['id'], state: Partial<ModelState>): void;
7262
7432
  setState<T extends EntityId<ImageState>>(object: T | T['id'], state: Partial<ImageState>): void;
7433
+ setState<T extends EntityId<Text3DState>>(object: T | T['id'], state: Partial<UpdatableText3DState>): void;
7263
7434
  setState<T extends EntityState>(object: T | T['id'], state: Partial<T>): void;
7264
7435
  /**
7265
7436
  * Project a screen coordinate to a geographic coordinate
@@ -7302,6 +7473,10 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
7302
7473
  * Returns the background color of the renderer. Only applies to "standalone mode"
7303
7474
  */
7304
7475
  get backgroundColor(): import("three").Color;
7476
+ /**
7477
+ * internal
7478
+ */
7479
+ getThreeRenderer(): Renderer;
7305
7480
  /**
7306
7481
  * Returns the current scale of the map in metres per pixel.
7307
7482
  */
@@ -7335,13 +7510,13 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
7335
7510
  * The render happens in an animation frame, not matter how frequently it is called
7336
7511
  * @method render
7337
7512
  */
7338
- render: () => void;
7513
+ render: () => Promise<any> | undefined;
7339
7514
  /**
7340
7515
  * Perform a synchronous render of the scene. This bypasses the animation frame and renders immediately.
7341
7516
  *
7342
7517
  * Note: Only use this if you have an animation frame setup elsewhere
7343
7518
  */
7344
- renderSync: () => void;
7519
+ renderSync: () => Promise<any>;
7345
7520
  /**
7346
7521
  * @internal for testing
7347
7522
  */
@@ -7599,19 +7774,462 @@ declare module '@mappedin/mappedin-js/geojson/src/utils/collision-ranking-tier'
7599
7774
  export function convertNumberToCollisionRankingTier(rank: number): CollisionRankingTier;
7600
7775
  }
7601
7776
 
7777
+ declare module '@mappedin/mappedin-js/geojson/src/components/text3d' {
7778
+ import type { Position } from '@mappedin/mappedin-js/geojson/src/types';
7779
+ import { z } from 'zod';
7780
+ import type { Feature, Point } from 'geojson';
7781
+ import { Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
7782
+ import type { BatchedText, Text } from '@mappedin/mappedin-js/geojson/src/services/text3d/text3d';
7783
+ import type { Text3DStyle } from '@mappedin/mappedin-js/geojson/src/components/styles';
7784
+ import type { MeshComponentProperties } from '@mappedin/mappedin-js/geojson/src/components/mesh';
7785
+ import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
7786
+ /**
7787
+ * State representing an Text3D
7788
+ */
7789
+ export type Text3DState = {
7790
+ readonly id: string | number;
7791
+ readonly type: 'text3d';
7792
+ /**
7793
+ * The position of the Text3D in [lon, lat, altitude]
7794
+ */
7795
+ readonly position: Position;
7796
+ /**
7797
+ * Whether the Text3D is visible
7798
+ */
7799
+ visible: boolean;
7800
+ /**
7801
+ * Attempt to keep the Text3D facing the camera as much as possible
7802
+ */
7803
+ flipToFaceCamera: boolean;
7804
+ /**
7805
+ * Content of the text3d
7806
+ */
7807
+ content: string;
7808
+ } & Text3DStyle;
7809
+ export const text3DStateSchema: z.ZodObject<{
7810
+ visible: z.ZodBoolean;
7811
+ color: z.ZodString;
7812
+ flipToFaceCamera: z.ZodBoolean;
7813
+ font: z.ZodOptional<z.ZodString>;
7814
+ fontSize: z.ZodNumber;
7815
+ margin: z.ZodUnion<[z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>;
7816
+ outlineColor: z.ZodString;
7817
+ outlineOpacity: z.ZodNumber;
7818
+ outlineBlur: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
7819
+ outlineWidth: z.ZodNumber;
7820
+ outlineOffsetX: z.ZodNumber;
7821
+ outlineOffsetY: z.ZodNumber;
7822
+ strokeWidth: z.ZodNumber;
7823
+ maxWidth: z.ZodOptional<z.ZodNumber>;
7824
+ maxHeight: z.ZodOptional<z.ZodNumber>;
7825
+ strokeOpacity: z.ZodNumber;
7826
+ strokeColor: z.ZodString;
7827
+ fillOpacity: z.ZodNumber;
7828
+ hoverColor: z.ZodOptional<z.ZodString>;
7829
+ id: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
7830
+ type: z.ZodLiteral<"text3d">;
7831
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
7832
+ content: z.ZodString;
7833
+ }, "strip", z.ZodTypeAny, {
7834
+ type: "text3d";
7835
+ id: string | number;
7836
+ color: string;
7837
+ position: [number, number, number];
7838
+ visible: boolean;
7839
+ flipToFaceCamera: boolean;
7840
+ fontSize: number;
7841
+ margin: number | [number, number, number, number];
7842
+ outlineColor: string;
7843
+ outlineOpacity: number;
7844
+ outlineBlur: string | number;
7845
+ outlineWidth: number;
7846
+ outlineOffsetX: number;
7847
+ outlineOffsetY: number;
7848
+ strokeWidth: number;
7849
+ strokeOpacity: number;
7850
+ strokeColor: string;
7851
+ fillOpacity: number;
7852
+ content: string;
7853
+ maxWidth?: number | undefined;
7854
+ font?: string | undefined;
7855
+ maxHeight?: number | undefined;
7856
+ hoverColor?: string | undefined;
7857
+ }, {
7858
+ type: "text3d";
7859
+ id: string | number;
7860
+ color: string;
7861
+ position: [number, number, number];
7862
+ visible: boolean;
7863
+ flipToFaceCamera: boolean;
7864
+ fontSize: number;
7865
+ margin: number | [number, number, number, number];
7866
+ outlineColor: string;
7867
+ outlineOpacity: number;
7868
+ outlineBlur: string | number;
7869
+ outlineWidth: number;
7870
+ outlineOffsetX: number;
7871
+ outlineOffsetY: number;
7872
+ strokeWidth: number;
7873
+ strokeOpacity: number;
7874
+ strokeColor: string;
7875
+ fillOpacity: number;
7876
+ content: string;
7877
+ maxWidth?: number | undefined;
7878
+ font?: string | undefined;
7879
+ maxHeight?: number | undefined;
7880
+ hoverColor?: string | undefined;
7881
+ }>;
7882
+ /**
7883
+ * @interface
7884
+ */
7885
+ export type InitializeText3DState = Partial<Omit<Text3DState, 'id' | 'type'>>;
7886
+ export const initializeText3DStateSchema: z.ZodObject<Omit<{
7887
+ visible: z.ZodOptional<z.ZodBoolean>;
7888
+ color: z.ZodOptional<z.ZodString>;
7889
+ flipToFaceCamera: z.ZodOptional<z.ZodBoolean>;
7890
+ font: z.ZodOptional<z.ZodOptional<z.ZodString>>;
7891
+ fontSize: z.ZodOptional<z.ZodNumber>;
7892
+ margin: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>>;
7893
+ outlineColor: z.ZodOptional<z.ZodString>;
7894
+ outlineOpacity: z.ZodOptional<z.ZodNumber>;
7895
+ outlineBlur: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
7896
+ outlineWidth: z.ZodOptional<z.ZodNumber>;
7897
+ outlineOffsetX: z.ZodOptional<z.ZodNumber>;
7898
+ outlineOffsetY: z.ZodOptional<z.ZodNumber>;
7899
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
7900
+ maxWidth: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
7901
+ maxHeight: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
7902
+ strokeOpacity: z.ZodOptional<z.ZodNumber>;
7903
+ strokeColor: z.ZodOptional<z.ZodString>;
7904
+ fillOpacity: z.ZodOptional<z.ZodNumber>;
7905
+ hoverColor: z.ZodOptional<z.ZodOptional<z.ZodString>>;
7906
+ id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
7907
+ type: z.ZodOptional<z.ZodLiteral<"text3d">>;
7908
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
7909
+ content: z.ZodOptional<z.ZodString>;
7910
+ }, "type" | "id">, "strict", z.ZodTypeAny, {
7911
+ maxWidth?: number | undefined;
7912
+ color?: string | undefined;
7913
+ position?: [number, number, number] | undefined;
7914
+ visible?: boolean | undefined;
7915
+ flipToFaceCamera?: boolean | undefined;
7916
+ font?: string | undefined;
7917
+ fontSize?: number | undefined;
7918
+ margin?: number | [number, number, number, number] | undefined;
7919
+ outlineColor?: string | undefined;
7920
+ outlineOpacity?: number | undefined;
7921
+ outlineBlur?: string | number | undefined;
7922
+ outlineWidth?: number | undefined;
7923
+ outlineOffsetX?: number | undefined;
7924
+ outlineOffsetY?: number | undefined;
7925
+ strokeWidth?: number | undefined;
7926
+ maxHeight?: number | undefined;
7927
+ strokeOpacity?: number | undefined;
7928
+ strokeColor?: string | undefined;
7929
+ fillOpacity?: number | undefined;
7930
+ hoverColor?: string | undefined;
7931
+ content?: string | undefined;
7932
+ }, {
7933
+ maxWidth?: number | undefined;
7934
+ color?: string | undefined;
7935
+ position?: [number, number, number] | undefined;
7936
+ visible?: boolean | undefined;
7937
+ flipToFaceCamera?: boolean | undefined;
7938
+ font?: string | undefined;
7939
+ fontSize?: number | undefined;
7940
+ margin?: number | [number, number, number, number] | undefined;
7941
+ outlineColor?: string | undefined;
7942
+ outlineOpacity?: number | undefined;
7943
+ outlineBlur?: string | number | undefined;
7944
+ outlineWidth?: number | undefined;
7945
+ outlineOffsetX?: number | undefined;
7946
+ outlineOffsetY?: number | undefined;
7947
+ strokeWidth?: number | undefined;
7948
+ maxHeight?: number | undefined;
7949
+ strokeOpacity?: number | undefined;
7950
+ strokeColor?: string | undefined;
7951
+ fillOpacity?: number | undefined;
7952
+ hoverColor?: string | undefined;
7953
+ content?: string | undefined;
7954
+ }>;
7955
+ /**
7956
+ * At this moment updating text margin is not supported
7957
+ * Margin and content update are not handled at the moment.
7958
+ * @interface
7959
+ */
7960
+ export type UpdatableText3DState = Omit<InitializeText3DState, 'margin' | 'position' | 'content'>;
7961
+ export const updateText3DStateSchema: z.ZodObject<Omit<Omit<{
7962
+ visible: z.ZodOptional<z.ZodBoolean>;
7963
+ color: z.ZodOptional<z.ZodString>;
7964
+ flipToFaceCamera: z.ZodOptional<z.ZodBoolean>;
7965
+ font: z.ZodOptional<z.ZodOptional<z.ZodString>>;
7966
+ fontSize: z.ZodOptional<z.ZodNumber>;
7967
+ margin: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>>;
7968
+ outlineColor: z.ZodOptional<z.ZodString>;
7969
+ outlineOpacity: z.ZodOptional<z.ZodNumber>;
7970
+ outlineBlur: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
7971
+ outlineWidth: z.ZodOptional<z.ZodNumber>;
7972
+ outlineOffsetX: z.ZodOptional<z.ZodNumber>;
7973
+ outlineOffsetY: z.ZodOptional<z.ZodNumber>;
7974
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
7975
+ maxWidth: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
7976
+ maxHeight: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
7977
+ strokeOpacity: z.ZodOptional<z.ZodNumber>;
7978
+ strokeColor: z.ZodOptional<z.ZodString>;
7979
+ fillOpacity: z.ZodOptional<z.ZodNumber>;
7980
+ hoverColor: z.ZodOptional<z.ZodOptional<z.ZodString>>;
7981
+ id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
7982
+ type: z.ZodOptional<z.ZodLiteral<"text3d">>;
7983
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
7984
+ content: z.ZodOptional<z.ZodString>;
7985
+ }, "type" | "id">, "maxWidth" | "position" | "margin" | "maxHeight" | "content">, "strict", z.ZodTypeAny, {
7986
+ color?: string | undefined;
7987
+ visible?: boolean | undefined;
7988
+ flipToFaceCamera?: boolean | undefined;
7989
+ font?: string | undefined;
7990
+ fontSize?: number | undefined;
7991
+ outlineColor?: string | undefined;
7992
+ outlineOpacity?: number | undefined;
7993
+ outlineBlur?: string | number | undefined;
7994
+ outlineWidth?: number | undefined;
7995
+ outlineOffsetX?: number | undefined;
7996
+ outlineOffsetY?: number | undefined;
7997
+ strokeWidth?: number | undefined;
7998
+ strokeOpacity?: number | undefined;
7999
+ strokeColor?: string | undefined;
8000
+ fillOpacity?: number | undefined;
8001
+ hoverColor?: string | undefined;
8002
+ }, {
8003
+ color?: string | undefined;
8004
+ visible?: boolean | undefined;
8005
+ flipToFaceCamera?: boolean | undefined;
8006
+ font?: string | undefined;
8007
+ fontSize?: number | undefined;
8008
+ outlineColor?: string | undefined;
8009
+ outlineOpacity?: number | undefined;
8010
+ outlineBlur?: string | number | undefined;
8011
+ outlineWidth?: number | undefined;
8012
+ outlineOffsetX?: number | undefined;
8013
+ outlineOffsetY?: number | undefined;
8014
+ strokeWidth?: number | undefined;
8015
+ strokeOpacity?: number | undefined;
8016
+ strokeColor?: string | undefined;
8017
+ fillOpacity?: number | undefined;
8018
+ hoverColor?: string | undefined;
8019
+ }>;
8020
+ export type Text3DProperties = {
8021
+ id: string;
8022
+ content: string;
8023
+ textArea?: MeshComponentProperties['textArea'];
8024
+ };
8025
+ export type AddText3DOptions = {
8026
+ appearance?: Partial<InitializeText3DState>;
8027
+ };
8028
+ export const addText3DOptionsSchema: z.ZodObject<{
8029
+ appearance: z.ZodOptional<z.ZodObject<Omit<{
8030
+ visible: z.ZodOptional<z.ZodBoolean>;
8031
+ color: z.ZodOptional<z.ZodString>;
8032
+ flipToFaceCamera: z.ZodOptional<z.ZodBoolean>;
8033
+ font: z.ZodOptional<z.ZodOptional<z.ZodString>>;
8034
+ fontSize: z.ZodOptional<z.ZodNumber>;
8035
+ margin: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>>;
8036
+ outlineColor: z.ZodOptional<z.ZodString>;
8037
+ outlineOpacity: z.ZodOptional<z.ZodNumber>;
8038
+ outlineBlur: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
8039
+ outlineWidth: z.ZodOptional<z.ZodNumber>;
8040
+ outlineOffsetX: z.ZodOptional<z.ZodNumber>;
8041
+ outlineOffsetY: z.ZodOptional<z.ZodNumber>;
8042
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
8043
+ maxWidth: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
8044
+ maxHeight: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
8045
+ strokeOpacity: z.ZodOptional<z.ZodNumber>;
8046
+ strokeColor: z.ZodOptional<z.ZodString>;
8047
+ fillOpacity: z.ZodOptional<z.ZodNumber>;
8048
+ hoverColor: z.ZodOptional<z.ZodOptional<z.ZodString>>;
8049
+ id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
8050
+ type: z.ZodOptional<z.ZodLiteral<"text3d">>;
8051
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
8052
+ content: z.ZodOptional<z.ZodString>;
8053
+ }, "type" | "id">, "strict", z.ZodTypeAny, {
8054
+ maxWidth?: number | undefined;
8055
+ color?: string | undefined;
8056
+ position?: [number, number, number] | undefined;
8057
+ visible?: boolean | undefined;
8058
+ flipToFaceCamera?: boolean | undefined;
8059
+ font?: string | undefined;
8060
+ fontSize?: number | undefined;
8061
+ margin?: number | [number, number, number, number] | undefined;
8062
+ outlineColor?: string | undefined;
8063
+ outlineOpacity?: number | undefined;
8064
+ outlineBlur?: string | number | undefined;
8065
+ outlineWidth?: number | undefined;
8066
+ outlineOffsetX?: number | undefined;
8067
+ outlineOffsetY?: number | undefined;
8068
+ strokeWidth?: number | undefined;
8069
+ maxHeight?: number | undefined;
8070
+ strokeOpacity?: number | undefined;
8071
+ strokeColor?: string | undefined;
8072
+ fillOpacity?: number | undefined;
8073
+ hoverColor?: string | undefined;
8074
+ content?: string | undefined;
8075
+ }, {
8076
+ maxWidth?: number | undefined;
8077
+ color?: string | undefined;
8078
+ position?: [number, number, number] | undefined;
8079
+ visible?: boolean | undefined;
8080
+ flipToFaceCamera?: boolean | undefined;
8081
+ font?: string | undefined;
8082
+ fontSize?: number | undefined;
8083
+ margin?: number | [number, number, number, number] | undefined;
8084
+ outlineColor?: string | undefined;
8085
+ outlineOpacity?: number | undefined;
8086
+ outlineBlur?: string | number | undefined;
8087
+ outlineWidth?: number | undefined;
8088
+ outlineOffsetX?: number | undefined;
8089
+ outlineOffsetY?: number | undefined;
8090
+ strokeWidth?: number | undefined;
8091
+ maxHeight?: number | undefined;
8092
+ strokeOpacity?: number | undefined;
8093
+ strokeColor?: string | undefined;
8094
+ fillOpacity?: number | undefined;
8095
+ hoverColor?: string | undefined;
8096
+ content?: string | undefined;
8097
+ }>>;
8098
+ parentId: z.ZodOptional<z.ZodString>;
8099
+ }, "strict", z.ZodTypeAny, {
8100
+ parentId?: string | undefined;
8101
+ appearance?: {
8102
+ maxWidth?: number | undefined;
8103
+ color?: string | undefined;
8104
+ position?: [number, number, number] | undefined;
8105
+ visible?: boolean | undefined;
8106
+ flipToFaceCamera?: boolean | undefined;
8107
+ font?: string | undefined;
8108
+ fontSize?: number | undefined;
8109
+ margin?: number | [number, number, number, number] | undefined;
8110
+ outlineColor?: string | undefined;
8111
+ outlineOpacity?: number | undefined;
8112
+ outlineBlur?: string | number | undefined;
8113
+ outlineWidth?: number | undefined;
8114
+ outlineOffsetX?: number | undefined;
8115
+ outlineOffsetY?: number | undefined;
8116
+ strokeWidth?: number | undefined;
8117
+ maxHeight?: number | undefined;
8118
+ strokeOpacity?: number | undefined;
8119
+ strokeColor?: string | undefined;
8120
+ fillOpacity?: number | undefined;
8121
+ hoverColor?: string | undefined;
8122
+ content?: string | undefined;
8123
+ } | undefined;
8124
+ }, {
8125
+ parentId?: string | undefined;
8126
+ appearance?: {
8127
+ maxWidth?: number | undefined;
8128
+ color?: string | undefined;
8129
+ position?: [number, number, number] | undefined;
8130
+ visible?: boolean | undefined;
8131
+ flipToFaceCamera?: boolean | undefined;
8132
+ font?: string | undefined;
8133
+ fontSize?: number | undefined;
8134
+ margin?: number | [number, number, number, number] | undefined;
8135
+ outlineColor?: string | undefined;
8136
+ outlineOpacity?: number | undefined;
8137
+ outlineBlur?: string | number | undefined;
8138
+ outlineWidth?: number | undefined;
8139
+ outlineOffsetX?: number | undefined;
8140
+ outlineOffsetY?: number | undefined;
8141
+ strokeWidth?: number | undefined;
8142
+ maxHeight?: number | undefined;
8143
+ strokeOpacity?: number | undefined;
8144
+ strokeColor?: string | undefined;
8145
+ fillOpacity?: number | undefined;
8146
+ hoverColor?: string | undefined;
8147
+ content?: string | undefined;
8148
+ } | undefined;
8149
+ }>;
8150
+ export class Text3DComponent {
8151
+ mesh: Geometry3DObject3D;
8152
+ textMesh?: Text;
8153
+ readonly type = "text3d";
8154
+ feature: Feature<Point, Text3DProperties>;
8155
+ constructor(feature: Feature<Point, Text3DProperties>);
8156
+ get visible(): boolean;
8157
+ set visible(visible: boolean);
8158
+ parent?: GroupContainerObject3D;
8159
+ batchedText?: BatchedText;
8160
+ /**
8161
+ * if this Text3DComponent is a polygon label, populate this id with the polygon entity id
8162
+ * This id is used to prevent drawing text for the same polygon.
8163
+ */
8164
+ polygonEntityId?: string;
8165
+ }
8166
+ }
8167
+
8168
+ declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
8169
+ import type { CollisionRankingTier, GeometryState, LabelState, RendererCore } from '@mappedin/mappedin-js/geojson/src';
8170
+ import { type MarkerState } from '@mappedin/mappedin-js/geojson/src/components/marker';
8171
+ import type { PathUpdateState } from '@mappedin/mappedin-js/geojson/src/components/path';
8172
+ import type { EntityTypes, All3DTypes, Position, RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
8173
+ import type { KeysOfUnion } from '@mappedin/mappedin-js/geojson/src/utils';
8174
+ import { GeometryGroupObject3D, type GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
8175
+ import { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
8176
+ import type { Geometry3DTypes, TextGeometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
8177
+ import { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
8178
+ import { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
8179
+ import type { StyleComponent } from '@mappedin/mappedin-js/geojson/src/components/styles/style';
8180
+ import type { GeometryGroupStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/geometry-group-style';
8181
+ import { type Text3DState, type UpdatableText3DState } from '@mappedin/mappedin-js/geojson/src/components/text3d';
8182
+ export function updateInteractivity(entity: All3DTypes | Geometry2D, update: boolean | undefined, state: RendererState): boolean;
8183
+ export function updateGroupColor(entity: GeometryGroupObject3D, state: RendererState, update: Partial<Pick<GeometryGroupState, 'color' | 'topColor'>>): boolean | undefined;
8184
+ export function updateGroupShading(entity: GeometryGroupObject3D, update?: GeometryGroupState['shading']): boolean;
8185
+ export function updateImageProps(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Partial<GeometryState>): void;
8186
+ export function updateHeight(entity: Geometry3D | GeometryGroupObject3D, state: RendererState, update?: number): boolean;
8187
+ export function updateColor(entity: Geometry3DTypes | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Partial<GeometryState>): void;
8188
+ export function updatePosition(entity: EntityTypes, update: Position | undefined, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): void;
8189
+ export function updateParent(entity: EntityTypes, update: GroupContainerObject3D | undefined): boolean;
8190
+ export function updateEnabled(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: boolean | undefined): void;
8191
+ export function updateMarker(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<MarkerState> | undefined, state: RendererState): boolean;
8192
+ export function updateRank(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: CollisionRankingTier | undefined): boolean;
8193
+ export function updateLabel(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<LabelState> | undefined, state: RendererState): void;
8194
+ export function updateHoverColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: string): void;
8195
+ /** Sets a geometry to be in hovered state, until manually unset or the user interacts with it. */
8196
+ export function updateHovered(entity: Geometry3D, update?: boolean): boolean;
8197
+ export function updateFlipImageToFaceCamera(entity: EntityTypes, update?: boolean): void;
8198
+ export function updateVisibility(entity: EntityTypes, update?: boolean): boolean;
8199
+ export function updateOpacity(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, state: RendererState, update?: number): boolean;
8200
+ export function updateGroupTexture(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Pick<GeometryGroupStyleComponent, 'texture' | 'topTexture'>): void;
8201
+ export function updateIndividualGeometryTexture(entity: Geometry3D, update?: Pick<StyleComponent, 'texture' | 'topTexture'>): boolean;
8202
+ export function updateIndividualGeometryOpacity(entity: Geometry3D, update?: number): boolean;
8203
+ export function updateAltitude(entity: EntityTypes, update?: number): boolean;
8204
+ export function updateOutline(entity: All3DTypes, update?: boolean): boolean;
8205
+ export function updateFocusable(entity: Geometry3D, update?: boolean): boolean;
8206
+ export function updateIndividualGeometryRenderOrder(entity: Geometry3D, update?: number): boolean;
8207
+ export function handlePathUpdate(geometry: Geometry3DTypes, update: PathUpdateState): void;
8208
+ export function pickPathOptions(update: PathUpdateState): Partial<PathUpdateState>;
8209
+ export function assetGeometryIsText3D(geometry: Geometry3DTypes): asserts geometry is TextGeometry3D;
8210
+ /**
8211
+ * @internal
8212
+ */
8213
+ export const TEXT3D_STYLE_UPDATE_PROPS: KeysOfUnion<UpdatableText3DState>[];
8214
+ /**
8215
+ * Handle state update of the text3d geometry.
8216
+ */
8217
+ export function handleText3DUpdate(geometry: TextGeometry3D, update: Partial<Text3DState>): void;
8218
+ }
8219
+
7602
8220
  declare module '@mappedin/mappedin-js/packages/geojson-navigator' {
7603
8221
  export * from '@mappedin/mappedin-js/packages/geojson-navigator/src';
7604
8222
  }
7605
8223
 
7606
8224
  declare module '@mappedin/mappedin-js/geojson/src/utils' {
7607
- import type { Box3, Camera as THREECamera } from 'three';
8225
+ import type { Box3, Object3D, Camera as THREECamera } from 'three';
7608
8226
  import { Box2 } from 'three';
7609
8227
  import { MercatorCoordinate } from '@mappedin/mappedin-js/packages/outdoor-context-v4';
7610
8228
  import type { CustomLayerInterface } from '@mappedin/mappedin-js/packages/outdoor-context-v4';
7611
8229
  import type { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
7612
8230
  import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
7613
8231
  import type { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
7614
- import type { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
8232
+ import type { Geometry3DTypes } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
7615
8233
  import type { Position, RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
7616
8234
  import type { Camera } from '@mappedin/mappedin-js/geojson/src/camera';
7617
8235
  export function cartesianToGeographic(centerLat: number, centerLon: number, x: number, y: number): {
@@ -7622,7 +8240,7 @@ declare module '@mappedin/mappedin-js/geojson/src/utils' {
7622
8240
  x: number;
7623
8241
  y: number;
7624
8242
  };
7625
- export const populateGeometry3DIdsInScene: (tree: any, entities: RendererState["geometry3DIdsInScene"]) => Set<string | number>;
8243
+ export const populateGeometry3DIdsInScene: (tree: GroupContainerObject3D["children"][0] | Object3D, entities: RendererState["geometry3DIdsInScene"]) => Set<string | number>;
7626
8244
  export const populateGeometry2DIdsInScene: (tree: any, entities: Set<Geometry2D["id"]>) => Set<string | number>;
7627
8245
  export function convertMapLibreStylePaintProps(paint: any): {
7628
8246
  color: any;
@@ -7678,7 +8296,7 @@ declare module '@mappedin/mappedin-js/geojson/src/utils' {
7678
8296
  * so OR = CO * tan(F/2)
7679
8297
  */
7680
8298
  export function getProjectionScaleFactor(FOV: number, canvasHeight: number, zoom: number): number;
7681
- export function getGeometryByGeometryId(state: RendererState, geometryOrGeometryId?: string | number | Record<string, any>): Geometry3D | GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | undefined;
8299
+ export function getGeometryByGeometryId(state: RendererState, geometryOrGeometryId?: string | number | Record<string, any>): Geometry3DTypes | GeometryGroupObject3D | GroupContainerObject3D | Geometry2D | undefined;
7682
8300
  export function getBoundingBoxCenter(bbox: Position[]): [number, number];
7683
8301
  export { getCornersOfBoundingBox } from '@mappedin/mappedin-js/geojson/src/utils/bounding-box';
7684
8302
  export function isFiniteBox(box: Box2 | Box3): boolean;
@@ -7687,6 +8305,7 @@ declare module '@mappedin/mappedin-js/geojson/src/utils' {
7687
8305
  export { shouldDisableOffscreenCanvas } from '@mappedin/mappedin-js/geojson/src/utils/browser';
7688
8306
  export { noop, pick, isEmpty, type KeysOfUnion } from '@mappedin/mappedin-js/geojson/src/utils/fp';
7689
8307
  export { transformRequest } from '@mappedin/mappedin-js/geojson/src/utils/tranform-request';
8308
+ export { normalizeAngle } from '@mappedin/mappedin-js/geojson/src/utils/math';
7690
8309
  }
7691
8310
 
7692
8311
  declare module '@mappedin/mappedin-js/geojson/src/utils/constants' {
@@ -7697,56 +8316,26 @@ declare module '@mappedin/mappedin-js/geojson/src/utils/constants' {
7697
8316
  }
7698
8317
  }
7699
8318
 
7700
- declare module '@mappedin/mappedin-js/geojson/src/services/renderer' {
7701
- import type { Scene, Camera } from 'three';
7702
- import { Color, WebGL1Renderer, WebGLRenderer } from 'three';
7703
- export function enableTestMode(): void;
7704
- export type TRendererOptions = {
7705
- alpha: boolean;
7706
- onWebGLRendererError: (e: Error) => void;
7707
- xRayPath: boolean;
8319
+ declare module '@mappedin/mappedin-js/geojson/src/utils/debug' {
8320
+ import type Core from '@mappedin/mappedin-js/geojson/src/renderer';
8321
+ const DEFAULT_DEBUG_STATE: {
8322
+ showPolygonLabelTextAreaMesh: boolean;
7708
8323
  };
7709
- export class Renderer {
7710
- backgroundAlpha: number;
7711
- backgroundColor: Color;
7712
- width: number;
7713
- height: number;
7714
- options: TRendererOptions;
7715
- renderer?: WebGLRenderer | WebGL1Renderer;
7716
- constructor(renderOptions: any, targetWebGLVersion?: number);
7717
- /**
7718
- * Dispose of the renderer and its buffers.
7719
- */
7720
- destroy(): void;
7721
- /**
7722
- * Re-render the scene, depending on which parts of the scene have been
7723
- * invalidated.
7724
- *
7725
- * @method render
7726
- * @param renderTarget {null or WebGLRenderTarget}
7727
- * @param scene {Scene}
7728
- * @param sceneCamera {Camera}
7729
- */
7730
- render(scene: Scene, sceneCamera: Camera): void;
7731
- clear(): void;
7732
- /**
7733
- * Set the size of the renderer, composer, and all its internal buffers.
7734
- *
7735
- * @method setBufferSize
7736
- * @param width {number}
7737
- * @param height {number}
7738
- */
7739
- setBufferSize(width: number, height: number): void;
7740
- /**
7741
- * Set the color and opacity that will be drawn behind the scene.
7742
- *
7743
- * @method setBackgroundColor
7744
- * @param color {Color}
7745
- * @param alpha {number}
7746
- */
7747
- setBackgroundColor(color: any, alpha: any): void;
7748
- domElement(): HTMLCanvasElement | undefined;
8324
+ export type DebugState = typeof DEFAULT_DEBUG_STATE;
8325
+ export class Debug {
8326
+ state: {
8327
+ showPolygonLabelTextAreaMesh: boolean;
8328
+ };
8329
+ core: Core;
8330
+ constructor(core: Core);
8331
+ update(updateState: Partial<DebugState>): void;
7749
8332
  }
8333
+ export {};
8334
+ }
8335
+
8336
+ declare module '@mappedin/mappedin-js/geojson/src/services/test-mode' {
8337
+ export function enableTestMode(): void;
8338
+ export function isTestMode(): boolean;
7750
8339
  }
7751
8340
 
7752
8341
  declare module '@mappedin/mappedin-js/geojson/src/systems/watermark/system' {
@@ -7834,6 +8423,36 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/watermark/system' {
7834
8423
  }
7835
8424
  }
7836
8425
 
8426
+ declare module '@mappedin/mappedin-js/geojson/src/systems/text3d/system' {
8427
+ import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
8428
+ import type { RendererCore } from '@mappedin/mappedin-js/geojson/src';
8429
+ import { PubSub } from '@packages/internal/common';
8430
+ import type { BatchedText } from '@mappedin/mappedin-js/geojson/src/services/text3d/text3d';
8431
+ import { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
8432
+ import type { Text } from 'troika-three-text';
8433
+ export class Text3DSystem extends PubSub<{
8434
+ render: undefined;
8435
+ }> {
8436
+ textSet: Set<string>;
8437
+ batchedTextMap: Map<GroupContainerObject3D, Promise<BatchedText>>;
8438
+ remove(id: string): void;
8439
+ constructor(rendererState: RendererState, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']);
8440
+ update(cameraRotationRadians: number): Promise<void[]>;
8441
+ showTextAreaMesh(): void;
8442
+ hideTextAreaMesh(): void;
8443
+ }
8444
+ /**
8445
+ * Preload fonts and optionally pre-generate the SDF textures for particular glyphs up front.
8446
+ * This is to avoid ondemand font generation can take long.
8447
+ * @param fontUrl - url of the font file served.
8448
+ * @returns A promise that resolves when the font is loaded
8449
+ *
8450
+ */
8451
+ export function preloadFont(fontUrl?: string): Promise<string>;
8452
+ export function doesBatchedTextContainsText(batchedText: BatchedText, text: Text): boolean;
8453
+ export const DEFAULT_VERTICAL_OFFSET = 0.5;
8454
+ }
8455
+
7837
8456
  declare module '@mappedin/mappedin-js/geojson/src/systems/exporter' {
7838
8457
  export { ExporterSystem, type GLTFExportOptions } from '@mappedin/mappedin-js/geojson/src/systems/exporter/exporter';
7839
8458
  }
@@ -7873,15 +8492,21 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/html-controls/system'
7873
8492
  }
7874
8493
  }
7875
8494
 
8495
+ declare module '@mappedin/mappedin-js/geojson/src/components/styles' {
8496
+ export { StyleComponent, DEFAULT_COLOR, type MaterialSide } from '@mappedin/mappedin-js/geojson/src/components/styles/style';
8497
+ export { Text3DStyleComponent, type Text3DStyle, DEFAULT_TEXT_STYLE } from '@mappedin/mappedin-js/geojson/src/components/styles/text-style';
8498
+ }
8499
+
7876
8500
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
7877
8501
  import type { Position, RendererCore, WatermarkOptions } from '@mappedin/core-sdk';
7878
8502
  import { type TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
7879
8503
  import { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
7880
8504
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
7881
8505
  import type { FloorStack, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7882
- import { Coordinate, MapObject, Space, Floor, Door } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
8506
+ import { Facade, Coordinate, MapObject, Space, Floor, Door } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7883
8507
  import type { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
7884
- import { Label, Marker, type Model, type Image, Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
8508
+ import { Label, Marker, Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
8509
+ import { Text3D as Text3DView, type Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
7885
8510
  import { Navigation } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
7886
8511
  import type { TGetState, TUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/types';
7887
8512
  import { Camera } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/camera';
@@ -7897,6 +8522,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
7897
8522
  import { Shapes } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes';
7898
8523
  import { Style } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/style';
7899
8524
  import Outdoor from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor';
8525
+ import { Text3D } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
7900
8526
  export class GeoJsonApi {
7901
8527
  core: RendererCore;
7902
8528
  mapObjects: GeojsonApiMapObject[];
@@ -7910,6 +8536,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
7910
8536
  mapView: MapView;
7911
8537
  Camera: Camera;
7912
8538
  Labels: Labels;
8539
+ Text3D: Text3D;
7913
8540
  Markers: Markers;
7914
8541
  Models: Models;
7915
8542
  Paths: Paths;
@@ -7920,9 +8547,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
7920
8547
  Shapes: Shapes;
7921
8548
  Style: Style;
7922
8549
  Images: Images;
8550
+ get DynamicFocus(): import("./dynamic-focus").DynamicFocus;
7923
8551
  get StackedMaps(): import("..").StackedMaps;
7924
8552
  constructor(rendererCore: RendererCore, mapView: MapView);
7925
- updateState<T extends Space | MapObject | Label | Shape | Marker | Door | WALLS | DOORS | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
8553
+ updateState<T extends Space | Text3DView | MapObject | Label | Shape | Marker | Door | Facade | WALLS | DOORS | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
7926
8554
  update: () => void;
7927
8555
  getMapDataInternal(): MapDataInternal | undefined;
7928
8556
  getMapData(): MapData | undefined;
@@ -7932,7 +8560,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
7932
8560
  updateWatermark(options: Omit<WatermarkOptions, 'onClick'>): void;
7933
8561
  get currentFloorStack(): FloorStack;
7934
8562
  get currentFloor(): Floor;
7935
- getState<T extends Space | MapObject | Label | Marker | Shape | Model | Image | string>(target: T): TGetState<T> | undefined;
8563
+ getState<T extends Space | Text3DView | MapObject | Label | Marker | Image | Shape | string>(target: T): TGetState<T>;
7936
8564
  setHoverColor(c: string): void;
7937
8565
  getHoverColor(): string | undefined;
7938
8566
  createCoordinate(latitude: number, longitude: number, floor?: Floor): Coordinate;
@@ -7955,15 +8583,17 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
7955
8583
  import type { Position, AddLabelOptions, RendererCore, PathState, MarkerState, LineStyle, PaintStyle, EntityId } from '@mappedin/core-sdk';
7956
8584
  import { FloorObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object';
7957
8585
  import type { Coordinate, Directions, Floor, TAddMarkerOptions, TAddPathOptions, TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
7958
- import type { GLTFExportOptions, TAnimationOptions, TAddModelOptions, TAddModel, TAddImageOptions, TDirectionInstruction } from '@mappedin/mappedin-js/mappedin-js/src/types';
8586
+ import type { GLTFExportOptions, TAnimationOptions, TAddModelOptions, TAddModel, TAddImageOptions, TDirectionInstruction, TAddText3DOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
7959
8587
  import { type AggregatedStyleMap } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils';
7960
8588
  import { StackedMaps } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
7961
8589
  import type { TFloorChangeReason } from '@mappedin/mappedin-js/mappedin-js/src/events';
7962
8590
  import type { Path, Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
7963
- import type { Space, Door, PointOfInterest, MapObject, Node, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
8591
+ import type { Door, PointOfInterest, MapObject, Node, MapDataInternal, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7964
8592
  import { type GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
7965
8593
  import { FloorStackObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-stack-object';
8594
+ import { DynamicFocus } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus';
7966
8595
  export const FLOOR_HEIGHT = 5;
8596
+ import type { Text3DState } from '@mappedin/core-sdk/src/components/text3d';
7967
8597
  export class GeojsonApiMapObject extends PubSub<{
7968
8598
  'floor-change': {
7969
8599
  reason?: TFloorChangeReason;
@@ -7987,12 +8617,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
7987
8617
  floorsById: Map<string, FloorObject>;
7988
8618
  currentFloorId: string;
7989
8619
  currentFloorStackId: string;
8620
+ outdoorFloorStacks: Set<string>;
7990
8621
  id: string;
7991
8622
  renderer: RendererCore;
7992
8623
  api: GeoJsonApi;
7993
8624
  mvf: ParsedMVF;
7994
8625
  styleMap: AggregatedStyleMap;
7995
8626
  StackedMaps: StackedMaps;
8627
+ DynamicFocus: DynamicFocus;
7996
8628
  get currentFloorStack(): FloorStackObject;
7997
8629
  setFloorStack(floorStackId: string): void;
7998
8630
  get currentFloor(): FloorObject;
@@ -8009,7 +8641,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
8009
8641
  Images: {
8010
8642
  add: (target: Position, url: string, opts: TAddImageOptions & {
8011
8643
  floorId?: string;
8012
- }) => EntityId<import("../../../geojson/src/components/image").ImageState> | undefined;
8644
+ }) => EntityId<import("@mappedin/core-sdk/src/components/image").ImageState> | undefined;
8013
8645
  remove: (id: string) => void;
8014
8646
  removeAll: () => void;
8015
8647
  };
@@ -8030,6 +8662,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
8030
8662
  }) => string;
8031
8663
  remove: (customGeometry: Shape) => string;
8032
8664
  };
8665
+ Text3D: {
8666
+ label: (target: Space, content?: string, options?: TAddText3DOptions) => Text3DInfo | undefined;
8667
+ labelAll: (option?: TAddText3DOptions) => Text3DInfo[];
8668
+ remove: (id: string) => string | undefined;
8669
+ };
8033
8670
  Labels: {
8034
8671
  all: ({ onCreate, }: {
8035
8672
  onCreate: (labelId: string | number, text: string, target: Space | Door | Coordinate | PointOfInterest | MapObject | Node) => void;
@@ -8051,6 +8688,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
8051
8688
  };
8052
8689
  constructor(id: string, mapDataInternal: MapDataInternal | undefined, options: TShow3DMapOptions | undefined, api: GeoJsonApi);
8053
8690
  }
8691
+ export type Text3DInfo = {
8692
+ target: Space;
8693
+ textInfo: EntityId<Text3DState>;
8694
+ };
8054
8695
  }
8055
8696
 
8056
8697
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/label' {
@@ -8298,6 +8939,39 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/shape' {
8298
8939
  }
8299
8940
  }
8300
8941
 
8942
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/text3d' {
8943
+ import type { Space, EnterpriseLocation } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
8944
+ /**
8945
+ * Class representing an Text3D on the {@link MapView}.
8946
+ */
8947
+ export class Text3D {
8948
+ /**
8949
+ * The text3d's id
8950
+ */
8951
+ readonly id: string;
8952
+ /**
8953
+ * @internal
8954
+ */
8955
+ constructor(id: string, target: Space | EnterpriseLocation);
8956
+ /**
8957
+ * The text3d's target
8958
+ */
8959
+ readonly target: Space | EnterpriseLocation;
8960
+ /**
8961
+ * @internal
8962
+ */
8963
+ static readonly __type = "Text3D";
8964
+ readonly __type = "Text3D";
8965
+ /**
8966
+ * Checks if the provided instance is of type Text3D
8967
+ *
8968
+ * @param instance The instance to check.
8969
+ * @returns {boolean} True if the instance is a text3d, false otherwise.
8970
+ */
8971
+ static is(instance: object): instance is Text3D;
8972
+ }
8973
+ }
8974
+
8301
8975
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/camera' {
8302
8976
  import type { TCameraAnimationOptions, TCameraFocusOnTarget, TCameraTarget, TFocusOnOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
8303
8977
  import type { InsetPadding, RendererCore } from '@mappedin/core-sdk';
@@ -8618,7 +9292,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/markers' {
8618
9292
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/models' {
8619
9293
  import type { TAddModelOptions, TAddModel } from '@mappedin/mappedin-js/mappedin-js/src/types';
8620
9294
  import { Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
8621
- import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
9295
+ import type { CurrentMapGetter } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/types';
8622
9296
  /**
8623
9297
  * Adding 3D models to a map can be a great way to represent landmarks to help users find key locations. They could also be used to show the location of assets or represent furniture to provide a rich indoor layout.
8624
9298
 
@@ -8637,7 +9311,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/models' {
8637
9311
  /**
8638
9312
  * @internal
8639
9313
  */
8640
- get currentMap(): GeojsonApiMapObject | undefined;
9314
+ get currentMap(): import("./map-object").GeojsonApiMapObject | undefined;
8641
9315
  /**
8642
9316
  * @internal
8643
9317
  */
@@ -8679,8 +9353,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/models' {
8679
9353
  */
8680
9354
  removeAll(): Model[];
8681
9355
  }
8682
- type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
8683
- export {};
8684
9356
  }
8685
9357
 
8686
9358
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/paths' {
@@ -9169,7 +9841,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
9169
9841
 
9170
9842
  declare module '@mappedin/mappedin-js/mappedin-js/src/search/internal' {
9171
9843
  import type { SearchResult as MiniSearchResult, Suggestion, MatchInfo } from 'minisearch';
9172
- import { EnterpriseLocation, EnterpriseCategory, Places } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9844
+ import type { Places } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9845
+ import { EnterpriseLocation, EnterpriseCategory } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9173
9846
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
9174
9847
  import { z } from 'zod';
9175
9848
  export class InternalSearch {
@@ -9524,6 +10197,52 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/search/external' {
9524
10197
  };
9525
10198
  }
9526
10199
 
10200
+ declare module '@mappedin/mappedin-js/mappedin-js/src/query/external' {
10201
+ import type { Annotation, Coordinate, Door, MapDataInternal, Node, PointOfInterest } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
10202
+ /**
10203
+ * Query allows users to query for nodes, locations, categories, and other points of interest within the venue.
10204
+ */
10205
+ export class Query {
10206
+ #private;
10207
+ /**
10208
+ * @internal
10209
+ */
10210
+ constructor(mapDataInternal: MapDataInternal);
10211
+ /**
10212
+ * Find the nearest feature to the origin
10213
+ * @param origin - The origin object
10214
+ * @param options - The options for the query
10215
+ * @returns The nearest feature to the origin
10216
+ */
10217
+ nearest(origin: Coordinate | PointOfInterest | Door | Annotation | Node, options: TFindNearestOptions): TFindNearestResult | undefined;
10218
+ }
10219
+ export type TFindNearestResult = {
10220
+ distance: number;
10221
+ feature: TQueriables;
10222
+ }[];
10223
+ export type TFindNearestOptions = {
10224
+ /**
10225
+ * 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.
10226
+ *
10227
+ * @default 'same-floor'
10228
+ */
10229
+ limit?: 'same-floor'
10230
+ /**
10231
+ * Limit query to all floors at the same elevation as the origin
10232
+ */
10233
+ | 'same-elevation';
10234
+ /**
10235
+ * The radius to search for features within
10236
+ */
10237
+ radius?: number;
10238
+ /**
10239
+ * The types to query for
10240
+ */
10241
+ types: [TQueriables['__type'], ...TQueriables['__type'][]];
10242
+ };
10243
+ export type TQueriables = PointOfInterest | Door | Annotation | Node;
10244
+ }
10245
+
9527
10246
  declare module '@mappedin/mappedin-js/mappedin-js/src/analytics/customer' {
9528
10247
  /**
9529
10248
  * Valid track-analytics API contexts. These should match the expected values of that endpoint or the requests will fail.
@@ -9826,20 +10545,24 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry3d' {
9826
10545
  import type { MeshComponent } from '@mappedin/mappedin-js/geojson/src/components/mesh';
9827
10546
  import type { ModelComponent } from '@mappedin/mappedin-js/geojson/src/components/model';
9828
10547
  import type { PathComponent } from '@mappedin/mappedin-js/geojson/src/components/path';
9829
- import type { StyleComponent } from '@mappedin/mappedin-js/geojson/src/components/style';
10548
+ import type { StyleComponent } from '@mappedin/mappedin-js/geojson/src/components/styles/style';
9830
10549
  import type { ImageComponent } from '@mappedin/mappedin-js/geojson/src/components/image';
9831
10550
  import type { CustomGeometryComponent } from '@mappedin/mappedin-js/geojson/src/components/custom';
9832
10551
  import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
9833
10552
  import type { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
10553
+ import type { Text3DComponent } from '@mappedin/mappedin-js/geojson/src/components/text3d';
10554
+ import type { Text3DStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/styles';
9834
10555
  export enum Geometry3DComponents {
9835
10556
  Mesh = 0,
9836
10557
  Style = 1,
9837
10558
  Interaction = 2
9838
10559
  }
10560
+ type Geometry3DObjectTypes = 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image' | 'text3d';
9839
10561
  export class Geometry3DObject3D extends Object3D {
10562
+ type: Geometry3DObjectTypes;
9840
10563
  userData: {
9841
10564
  entityId: string;
9842
- type: 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
10565
+ type: Geometry3DObjectTypes;
9843
10566
  };
9844
10567
  }
9845
10568
  export type PathMaterial = ShaderMaterial & {
@@ -9849,15 +10572,23 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry3d' {
9849
10572
  export class PatMeshContainer extends Geometry3DObject3D {
9850
10573
  children: [PathMesh, PathMesh];
9851
10574
  }
9852
- export type MeshComponentTypes = MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent;
9853
- export class Geometry3D {
10575
+ export type MeshComponentTypes = MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | Text3DComponent | ImageComponent;
10576
+ type MappedComponentType<M> = M extends MeshComponent ? 'geometry' : M extends PathComponent ? 'path' : M extends ModelComponent ? 'model' : M extends CustomGeometryComponent ? 'custom-geometry' : M extends ImageComponent ? 'image' : M extends Text3DComponent ? 'text3d' : never;
10577
+ export class Geometry3D<M extends MeshComponentTypes = MeshComponent, S extends StyleComponent | Text3DStyleComponent = StyleComponent, I extends InteractionComponent = InteractionComponent, T extends MappedComponentType<M> = MappedComponentType<M>> {
9854
10578
  id: string | number;
9855
- components: [MeshComponentTypes, StyleComponent, InteractionComponent?];
9856
- get object3d(): Geometry3DObject3D | PatMeshContainer | import("../components/mesh").EntityBatchedMesh | undefined;
10579
+ components: [M, S, I?];
10580
+ get object3d(): M["mesh"];
9857
10581
  get parent(): GroupContainerObject3D | GeometryGroupObject3D | null;
9858
- get type(): 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
9859
- constructor(meshComponent: MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent, styleComponent: StyleComponent);
9860
- }
10582
+ get type(): T;
10583
+ constructor(meshComponent: M, styleComponent: S);
10584
+ }
10585
+ export type TextGeometry3D = Geometry3D<Text3DComponent, Text3DStyleComponent, InteractionComponent, 'text3d'>;
10586
+ export type CustomGeometry3D = Geometry3D<CustomGeometryComponent, StyleComponent, InteractionComponent, 'custom-geometry'>;
10587
+ export type ModelGeometry3D = Geometry3D<ModelComponent, StyleComponent, InteractionComponent, 'model'>;
10588
+ export type PathGeometry3D = Geometry3D<PathComponent, StyleComponent, InteractionComponent, 'path'>;
10589
+ export type ImageGeometry3D = Geometry3D<ImageComponent, StyleComponent, InteractionComponent, 'image'>;
10590
+ export type MeshGeometry3D = Geometry3D<MeshComponent, StyleComponent, InteractionComponent, 'geometry'>;
10591
+ export type Geometry3DTypes = TextGeometry3D | CustomGeometry3D | PathGeometry3D | ImageGeometry3D | MeshGeometry3D | ModelGeometry3D;
9861
10592
  export interface PathUniforms {
9862
10593
  vertexes: {
9863
10594
  type: 'f';
@@ -9940,6 +10671,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry3d' {
9940
10671
  value: number;
9941
10672
  };
9942
10673
  }
10674
+ export {};
9943
10675
  }
9944
10676
 
9945
10677
  declare module '@mappedin/mappedin-js/geojson/src/entities/geometry2d' {
@@ -9953,6 +10685,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry2d' {
9953
10685
  Interaction = 1
9954
10686
  }
9955
10687
  export class Geometry2DObject3D extends Object3D {
10688
+ readonly type: "geometry2dObject3d";
9956
10689
  }
9957
10690
  export class Geometry2D {
9958
10691
  id: string | number;
@@ -9981,17 +10714,44 @@ declare module '@mappedin/mappedin-js/geojson/src/components/stack' {
9981
10714
 
9982
10715
  declare module '@mappedin/mappedin-js/geojson/src/components/interaction' {
9983
10716
  export class InteractionComponent {
9984
- hover: boolean;
10717
+ hover: boolean | 'user-interaction';
9985
10718
  dirty: boolean;
9986
10719
  }
9987
10720
  }
9988
10721
 
10722
+ declare module '@mappedin/mappedin-js/geojson/src/services/text3d/text3d' {
10723
+ import { type Text3DStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/styles';
10724
+ import { Text, BatchedText } from 'troika-three-text';
10725
+ import type { RendererCore } from '@mappedin/mappedin-js/geojson/src';
10726
+ import type { Text3DComponent } from '@mappedin/mappedin-js/geojson/src/components/text3d';
10727
+ export function createTroikaText(entityId: string | number, text3DComponent: Text3DComponent, styleComponent: Text3DStyleComponent, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): Promise<{
10728
+ text: Text;
10729
+ } | undefined>;
10730
+ export { BatchedText, Text };
10731
+ /**
10732
+ * typeof module is forbiten in typescript. see: [@typescript-eslint/consistent-type-imports]
10733
+ */
10734
+ export type ModuleType = {
10735
+ createTroikaText: typeof createTroikaText;
10736
+ preloadFont: typeof preloadFont;
10737
+ BatchedText: typeof BatchedText;
10738
+ };
10739
+ /**
10740
+ * Preloads a font from the given URL. Enable developer to preload font way before scene is ready
10741
+ *
10742
+ * @param fontUrl - The URL of the font to preload. When undefined, default font (Roboto) is loaded
10743
+ * @returns A promise that resolves when the font is successfully preloaded, or rejects with an error if the font cannot be loaded.
10744
+ */
10745
+ export function preloadFont(fontUrl?: string): Promise<string>;
10746
+ }
10747
+
9989
10748
  declare module '@mappedin/mappedin-js/geojson/src/components/geometry-group-style' {
9990
10749
  import { type Shading } from '@mappedin/mappedin-js/geojson/src/types';
9991
10750
  type GeometryGroupStyle = {
9992
10751
  color: string;
9993
10752
  topColor?: string;
9994
10753
  opacity: number;
10754
+ height?: number;
9995
10755
  shading?: Shading;
9996
10756
  outline: boolean;
9997
10757
  texture?: string;
@@ -10002,6 +10762,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/geometry-group-styl
10002
10762
  color: string;
10003
10763
  topColor?: string;
10004
10764
  opacity: number;
10765
+ height?: number;
10005
10766
  outline: boolean;
10006
10767
  texture?: string;
10007
10768
  topTexture?: string;
@@ -10148,68 +10909,6 @@ declare module '@mappedin/mappedin-js/geojson/src/components/image' {
10148
10909
  }
10149
10910
  }
10150
10911
 
10151
- declare module '@mappedin/mappedin-js/geojson/src/entities' {
10152
- export { updateInteractivity } from '@mappedin/mappedin-js/geojson/src/entities/utils';
10153
- export { Geometry2D, Geometry2DComponents } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
10154
- export { Geometry3D, Geometry3DComponents, type PathMesh, type PatMeshContainer, type PathMaterial, } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
10155
- }
10156
-
10157
- declare module '@mappedin/mappedin-js/geojson/src/components/style' {
10158
- import type { LineStyle } from '@mappedin/mappedin-js/geojson/src/renderer';
10159
- export const DEFAULT_COLOR = "#ffffff";
10160
- export const DEFAULT_HEIGHT = 0.1;
10161
- /**
10162
- * Determines how a material is rendered, back face, front face or both (default)
10163
- */
10164
- export type MaterialSide = 'back' | 'front' | 'double';
10165
- type Style = {
10166
- color: string;
10167
- width: number;
10168
- opacity: number;
10169
- visible: boolean;
10170
- height: number;
10171
- altitude: number;
10172
- join: LineStyle['join'];
10173
- cap: LineStyle['cap'];
10174
- topColor?: string;
10175
- texture?: string;
10176
- topTexture?: string;
10177
- outline: boolean;
10178
- showImage: boolean;
10179
- showTextLabel: boolean;
10180
- flipImageToFaceCamera: boolean;
10181
- flipTextToFaceCamera: boolean;
10182
- url?: string;
10183
- side?: MaterialSide;
10184
- };
10185
- export class StyleComponent implements Style {
10186
- initialColor: string;
10187
- color: string;
10188
- topColor?: string;
10189
- topTexture?: string;
10190
- texture?: string;
10191
- hoverColor?: string;
10192
- dirty: boolean;
10193
- visible: boolean;
10194
- opacity: number;
10195
- width: number;
10196
- height: number;
10197
- initialHeight: number;
10198
- altitude: number;
10199
- join: LineStyle['join'];
10200
- cap: LineStyle['cap'];
10201
- outline: boolean;
10202
- showImage: boolean;
10203
- showTextLabel: boolean;
10204
- flipImageToFaceCamera: boolean;
10205
- flipTextToFaceCamera: boolean;
10206
- url?: string;
10207
- side: MaterialSide;
10208
- constructor(style?: Partial<Style>);
10209
- }
10210
- export {};
10211
- }
10212
-
10213
10912
  declare module '@mappedin/mappedin-js/geojson/src/types/options' {
10214
10913
  import type { Position } from '@mappedin/mappedin-js/geojson/src/types/geometry';
10215
10914
  import type { Map as MapLibreMap } from '@mappedin/mappedin-js/packages/outdoor-context-v4';
@@ -10310,31 +11009,82 @@ declare module '@mappedin/mappedin-js/packages/common/pubsub' {
10310
11009
  * };
10311
11010
  * map.on('click', handler);
10312
11011
  */
10313
- on<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, fn: (payload: EVENT_PAYLOAD[EVENT_NAME] extends {
10314
- data: null;
10315
- } ? EVENT_PAYLOAD[EVENT_NAME]['data'] : EVENT_PAYLOAD[EVENT_NAME]) => void): void;
11012
+ on<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, fn: (payload: EVENT_PAYLOAD[EVENT_NAME] extends {
11013
+ data: null;
11014
+ } ? EVENT_PAYLOAD[EVENT_NAME]['data'] : EVENT_PAYLOAD[EVENT_NAME]) => void): void;
11015
+ /**
11016
+ * Unsubscribe a function previously subscribed with {@link on}
11017
+ *
11018
+ * @param eventName An event name to which the provided function was previously
11019
+ * subscribed.
11020
+ * @param fn A function that was previously passed to {@link on}. The function must
11021
+ * have the same reference as the function that was subscribed.
11022
+ * @example
11023
+ * // Unsubscribe from the 'click' event
11024
+ * const handler = (event) => {
11025
+ * console.log('Map was clicked', event);
11026
+ * };
11027
+ * map.off('click', handler);
11028
+ */
11029
+ off<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, fn: (payload: EVENT_PAYLOAD[EVENT_NAME] extends {
11030
+ data: null;
11031
+ } ? EVENT_PAYLOAD[EVENT_NAME]['data'] : EVENT_PAYLOAD[EVENT_NAME]) => void): void;
11032
+ /**
11033
+ * @private
11034
+ * @internal
11035
+ */
11036
+ destroy(): void;
11037
+ }
11038
+ }
11039
+
11040
+ declare module '@mappedin/mappedin-js/geojson/src/services/renderer' {
11041
+ import type { Scene, Camera } from 'three';
11042
+ import { Color, WebGL1Renderer, WebGLRenderer } from 'three';
11043
+ export type TRendererOptions = {
11044
+ alpha: boolean;
11045
+ onWebGLRendererError: (e: Error) => void;
11046
+ xRayPath: boolean;
11047
+ };
11048
+ export class Renderer {
11049
+ backgroundAlpha: number;
11050
+ backgroundColor: Color;
11051
+ width: number;
11052
+ height: number;
11053
+ options: TRendererOptions;
11054
+ renderer?: WebGLRenderer | WebGL1Renderer;
11055
+ constructor(renderOptions: any, targetWebGLVersion?: number);
11056
+ /**
11057
+ * Dispose of the renderer and its buffers.
11058
+ */
11059
+ destroy(): void;
11060
+ /**
11061
+ * Re-render the scene, depending on which parts of the scene have been
11062
+ * invalidated.
11063
+ *
11064
+ * @method render
11065
+ * @param renderTarget {null or WebGLRenderTarget}
11066
+ * @param scene {Scene}
11067
+ * @param sceneCamera {Camera}
11068
+ */
11069
+ render(scene: Scene, sceneCamera: Camera): void;
11070
+ clear(): void;
10316
11071
  /**
10317
- * Unsubscribe a function previously subscribed with {@link on}
11072
+ * Set the size of the renderer, composer, and all its internal buffers.
10318
11073
  *
10319
- * @param eventName An event name to which the provided function was previously
10320
- * subscribed.
10321
- * @param fn A function that was previously passed to {@link on}. The function must
10322
- * have the same reference as the function that was subscribed.
10323
- * @example
10324
- * // Unsubscribe from the 'click' event
10325
- * const handler = (event) => {
10326
- * console.log('Map was clicked', event);
10327
- * };
10328
- * map.off('click', handler);
11074
+ * @method setBufferSize
11075
+ * @param width {number}
11076
+ * @param height {number}
10329
11077
  */
10330
- off<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, fn: (payload: EVENT_PAYLOAD[EVENT_NAME] extends {
10331
- data: null;
10332
- } ? EVENT_PAYLOAD[EVENT_NAME]['data'] : EVENT_PAYLOAD[EVENT_NAME]) => void): void;
11078
+ setBufferSize(width: number, height: number): void;
10333
11079
  /**
10334
- * @private
10335
- * @internal
11080
+ * Set the color and opacity that will be drawn behind the scene.
11081
+ *
11082
+ * @method setBackgroundColor
11083
+ * @param color {Color}
11084
+ * @param alpha {number}
10336
11085
  */
10337
- destroy(): void;
11086
+ setBackgroundColor(color: any, alpha: any): void;
11087
+ domElement(): HTMLCanvasElement | undefined;
10338
11088
  }
10339
11089
  }
10340
11090
 
@@ -10342,34 +11092,16 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/interactions' {
10342
11092
  export { InteractionSystem } from '@mappedin/mappedin-js/geojson/src/systems/interactions/system';
10343
11093
  }
10344
11094
 
10345
- declare module '@mappedin/mappedin-js/geojson/src/systems/zoom-interpolation/zoom-interpolation' {
10346
- import { PubSub } from '@mappedin/mappedin-js/packages/common/pubsub';
10347
- import LabelComponent from '@mappedin/mappedin-js/geojson/src/components/label';
10348
- import type { MarkerComponent } from '@mappedin/mappedin-js/geojson/src/components/marker';
10349
- import { MeshComponent } from '@mappedin/mappedin-js/geojson/src/components/mesh';
10350
- type SomeEvent = {
10351
- 'invalidate:2d': undefined;
10352
- };
10353
- export class ZoomInterpolationSystem extends PubSub<SomeEvent, keyof SomeEvent> {
10354
- constructor();
10355
- interpolators: Map<any, any>;
10356
- addEntity3D(meshComponent: MeshComponent, interpolateProps: any): void;
10357
- addEntity2D(uiComponent: MarkerComponent | LabelComponent, interpolateProps: any): void;
10358
- addAny(id: string, interpolateFn: any): void;
10359
- update: (zoomLevel: number) => void;
10360
- destroy(): void;
10361
- }
10362
- export {};
10363
- }
10364
-
10365
11095
  declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-optimization/system' {
10366
11096
  import type { BufferGeometry } from 'three';
10367
11097
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
10368
11098
  import { Geometry3D, Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
10369
- import { type MeshComponentProperties } from '@mappedin/mappedin-js/geojson/src/components/mesh';
11099
+ import { MeshComponent, type MeshComponentProperties } from '@mappedin/mappedin-js/geojson/src/components/mesh';
11100
+ import { StyleComponent } from '@mappedin/mappedin-js/geojson/src/components/styles/style';
10370
11101
  import type { Feature, LineString, MultiPolygon, Point, Polygon } from 'geojson';
10371
11102
  import type { LineStyle, ModelProperties, ModelStyle, PaintStyle } from '@mappedin/mappedin-js/geojson/src/types';
10372
11103
  import type { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
11104
+ import type { ModelGeometry3D } from '@mappedin/mappedin-js/geojson/src/entities';
10373
11105
  import { PubSub } from '@packages/internal/common';
10374
11106
  export class MeshCreationAndOptimizationSystem extends PubSub<{
10375
11107
  'model-loaded': void;
@@ -10379,8 +11111,8 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-opti
10379
11111
  loader?: GLTFLoader;
10380
11112
  constructor(state: RendererState, convertTo3DMapPosition: any);
10381
11113
  getGLTFLoader(): Promise<void>;
10382
- createEntityFromFeature(id: string | number, feature: Feature<Polygon | LineString | MultiPolygon, MeshComponentProperties>, style?: LineStyle | PaintStyle): Geometry3D;
10383
- createModelFromFeature(id: string | number, feature: Feature<Point, ModelProperties>, style?: ModelStyle): Geometry3D;
11114
+ createEntityFromFeature(id: string | number, feature: Feature<Polygon | LineString | MultiPolygon, MeshComponentProperties>, style?: LineStyle | PaintStyle): Geometry3D<MeshComponent, StyleComponent, import("../../components/interaction").InteractionComponent, "geometry">;
11115
+ createModelFromFeature(id: string | number, feature: Feature<Point, ModelProperties>, style?: ModelStyle): ModelGeometry3D;
10384
11116
  populateEntityMesh(entity: Geometry3D, geometry: BufferGeometry): void;
10385
11117
  populateModelGroup(entities: Set<string | number>, url: string, tree: any): Promise<Geometry3DObject3D>;
10386
11118
  populateEntityGroup(entities: Set<string | number>): Set<string | number>;
@@ -10464,9 +11196,9 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/2d-draw/system' {
10464
11196
  declare module '@mappedin/mappedin-js/geojson/src/systems/draw/system' {
10465
11197
  import { PubSub } from '@packages/internal/common';
10466
11198
  import { MeshComponent } from '@mappedin/mappedin-js/geojson/src/components/mesh';
10467
- import { StyleComponent } from '@mappedin/mappedin-js/geojson/src/components/style';
11199
+ import type { StyleComponent } from '@mappedin/mappedin-js/geojson/src/components/styles/style';
10468
11200
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
10469
- import { InteractionComponent } from '@mappedin/mappedin-js/geojson/src/components/interaction';
11201
+ import type { InteractionComponent } from '@mappedin/mappedin-js/geojson/src/components/interaction';
10470
11202
  import type { GeometryGroupStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/geometry-group-style';
10471
11203
  export class DrawSystem extends PubSub<{
10472
11204
  'texture-loaded': void;
@@ -10513,7 +11245,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/render/system' {
10513
11245
  constructor(renderer: Renderer, state: RendererState, mode: RendererCore['mode'], scene: Scene, cameraObject: PerspectiveCamera, viewCamera: Camera, systems: Systems);
10514
11246
  twoDdirty: boolean;
10515
11247
  threeDdirty: boolean;
10516
- update: (sync?: boolean) => void;
11248
+ update: (sync?: boolean) => Promise<any>;
10517
11249
  destroy(): void;
10518
11250
  }
10519
11251
  }
@@ -10797,16 +11529,19 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/geometry-in-focus/syst
10797
11529
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
10798
11530
  import { type PerspectiveCamera } from 'three';
10799
11531
  export class GeometryInFocusSystem extends PubSub<{
10800
- 'geometry-in-focus': string | number | null;
11532
+ /**
11533
+ * Returns the list of entities that are likely in focus, sorted by the weight of the raycast.
11534
+ */
11535
+ 'geometry-in-focus': string[];
10801
11536
  }> {
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;
11537
+ #private;
11538
+ cameraDirty: boolean;
11539
+ focusablesDirty: boolean;
11540
+ constructor(state: RendererState, camera: PerspectiveCamera);
11541
+ resize(): void;
11542
+ update: () => void;
11543
+ updateRaf(): void;
11544
+ destroy(): void;
10810
11545
  }
10811
11546
  }
10812
11547
 
@@ -10826,7 +11561,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/path' {
10826
11561
  }
10827
11562
 
10828
11563
  declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-detachment/system' {
10829
- import { type Geometry3DTypes, type RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
11564
+ import { type All3DTypes, type RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
10830
11565
  /**
10831
11566
  * This system is responsible for updating the opacity of the mesh, which results in the mesh
10832
11567
  * being detached from the parent's optimized geometry group and rendered as a separate mesh.
@@ -10836,16 +11571,13 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-detachment/system
10836
11571
  rendererState: RendererState;
10837
11572
  dirty: boolean;
10838
11573
  constructor(rendererState: RendererState);
10839
- updateOne(geometry: Geometry3DTypes | undefined): void;
11574
+ updateOne(geometry: All3DTypes | undefined): void;
10840
11575
  update(): void;
10841
11576
  }
10842
11577
  }
10843
11578
 
10844
11579
  declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-modification/system' {
10845
- import { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities';
10846
- import type { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
10847
- import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
10848
- import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
11580
+ import type { EntityTypes, RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
10849
11581
  /**
10850
11582
  * Any physical changes to geometry should go in here. This includes height changes, etc.
10851
11583
  * This is to ensure that physical changes apply before any other systems need to do their work,
@@ -10858,7 +11590,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-modification/syst
10858
11590
  rendererState: RendererState;
10859
11591
  dirty: boolean;
10860
11592
  constructor(rendererState: RendererState);
10861
- updateOne(entity: Geometry3D | GeometryGroupObject3D | GroupContainerObject3D | undefined): void;
11593
+ updateOne(entity?: EntityTypes): void;
10862
11594
  update(): void;
10863
11595
  cleanup(): void;
10864
11596
  }
@@ -10877,14 +11609,58 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/pre-render/system' {
10877
11609
  }
10878
11610
  }
10879
11611
 
10880
- declare module '@mappedin/mappedin-js/geojson/src/systems/polygon-label/system' {
10881
- import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
10882
- import type { RendererCore } from '@mappedin/mappedin-js/geojson/src';
10883
- export const DEFAULT_VERTICAL_OFFSET = 0.01;
10884
- export class PolygonLabelSystem {
10885
- constructor(rendererState: RendererState, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']);
10886
- update(cameraRotationRadians: number): void;
11612
+ declare module '@mappedin/mappedin-js/geojson/src/components/styles/style' {
11613
+ import type { LineStyle } from '@mappedin/mappedin-js/geojson/src/renderer';
11614
+ export const DEFAULT_COLOR = "#ffffff";
11615
+ export const DEFAULT_HEIGHT = 0.1;
11616
+ /**
11617
+ * Determines how a material is rendered, back face, front face or both (default)
11618
+ */
11619
+ export type MaterialSide = 'back' | 'front' | 'double';
11620
+ type Style = {
11621
+ color: string;
11622
+ width: number;
11623
+ opacity: number;
11624
+ visible: boolean;
11625
+ height: number;
11626
+ altitude: number;
11627
+ join: LineStyle['join'];
11628
+ cap: LineStyle['cap'];
11629
+ topColor?: string;
11630
+ texture?: string;
11631
+ topTexture?: string;
11632
+ outline: boolean;
11633
+ showImage: boolean;
11634
+ flipImageToFaceCamera: boolean;
11635
+ url?: string;
11636
+ side?: MaterialSide;
11637
+ renderOrder?: number;
11638
+ };
11639
+ export class StyleComponent implements Style {
11640
+ initialColor: string;
11641
+ color: string;
11642
+ topColor?: string;
11643
+ topTexture?: string;
11644
+ texture?: string;
11645
+ hoverColor?: string;
11646
+ dirty: boolean;
11647
+ visible: boolean;
11648
+ opacity: number;
11649
+ width: number;
11650
+ height: number;
11651
+ initialHeight: number;
11652
+ altitude: number;
11653
+ join: LineStyle['join'];
11654
+ cap: LineStyle['cap'];
11655
+ outline: boolean;
11656
+ showImage: boolean;
11657
+ flipImageToFaceCamera: boolean;
11658
+ url?: string;
11659
+ side: MaterialSide;
11660
+ renderOrder: number;
11661
+ constructor(style?: Partial<Style>);
10887
11662
  }
11663
+ export {};
10888
11664
  }
10889
11665
 
10890
11666
  declare module '@mappedin/mappedin-js/packages/geojson-navigator/src' {
@@ -10979,6 +11755,17 @@ declare module '@mappedin/mappedin-js/geojson/src/utils/tranform-request' {
10979
11755
  };
10980
11756
  }
10981
11757
 
11758
+ declare module '@mappedin/mappedin-js/geojson/src/utils/math' {
11759
+ export function normalizeAngle(angle: number): number;
11760
+ }
11761
+
11762
+ declare module '@mappedin/mappedin-js/geojson/src/entities' {
11763
+ export { updateInteractivity } from '@mappedin/mappedin-js/geojson/src/entities/utils';
11764
+ export { Geometry2D, Geometry2DComponents } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
11765
+ export { Geometry3D, Geometry3DComponents } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
11766
+ export type { PathMesh, PatMeshContainer, PathMaterial, Geometry3DTypes, ImageGeometry3D, TextGeometry3D, ModelGeometry3D, CustomGeometry3D, MeshGeometry3D, } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
11767
+ }
11768
+
10982
11769
  declare module '@mappedin/mappedin-js/geojson/src/systems/exporter/exporter' {
10983
11770
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
10984
11771
  export type GLTFExportOptions = {
@@ -11009,6 +11796,155 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/exporter/exporter' {
11009
11796
  }
11010
11797
  }
11011
11798
 
11799
+ declare module '@mappedin/mappedin-js/geojson/src/components/styles/text-style' {
11800
+ /**
11801
+ * avoid storying default values on the text style to save space
11802
+ */
11803
+ export class Text3DStyleComponent implements Partial<Text3DStyle> {
11804
+ visible?: boolean;
11805
+ altitude?: number;
11806
+ color?: string;
11807
+ dirty: boolean;
11808
+ maxWidth?: number;
11809
+ maxHeight?: number;
11810
+ hoverByPolygon?: boolean;
11811
+ flipToFaceCamera?: boolean | undefined;
11812
+ font?: string;
11813
+ fillOpacity?: number;
11814
+ fontSize?: number;
11815
+ margin?: number;
11816
+ outlineWidth?: number;
11817
+ outlineBlur?: number | string;
11818
+ outlineOffsetX?: number;
11819
+ strokeColor?: string;
11820
+ strokeOpacity?: number;
11821
+ strokeWidth?: number;
11822
+ hoverColor?: string | undefined;
11823
+ outlineOffsetY?: number;
11824
+ outlineColor?: string;
11825
+ outlineOpacity?: number;
11826
+ constructor(initialState?: Partial<Text3DStyle>);
11827
+ /**
11828
+ * Put together a json ignore all the undefined fields.
11829
+ * This is helpful when we Object.assign(instance, json) to update the instance.
11830
+ */
11831
+ getState(includeDirty?: boolean): Partial<Text3DStyle>;
11832
+ }
11833
+ /**
11834
+ * Not directly storing default values on the text style to save space
11835
+ * TODO: lookign at text style spec from maplibre. we can also support:
11836
+ * letterSpacing?: number;
11837
+ * lineHeight: number;
11838
+ * anchor: number; => .anchorX & .anchorY
11839
+ * justify: nubmer; => .textAlign
11840
+ * tarnsform: string;
11841
+ * offset: number;
11842
+ */
11843
+ export const DEFAULT_TEXT_STYLE: Readonly<Text3DStyle>;
11844
+ export type Text3DStyle = {
11845
+ /**
11846
+ * Controls the visibility of the text element.
11847
+ * @default true
11848
+ */
11849
+ visible: boolean;
11850
+ /**
11851
+ * The color of the text. Will change to hoverColor when the associated polygon is hovered.
11852
+ * Accepts any CSS color string.
11853
+ * @default 'black'
11854
+ */
11855
+ color: string;
11856
+ /**
11857
+ * When true, the text will flip to face the camera while maintaining its position.
11858
+ * @default true
11859
+ */
11860
+ flipToFaceCamera: boolean;
11861
+ /**
11862
+ * URL to a custom font file (.ttf, .otf, .woff).
11863
+ * Falls back to Roboto if undefined.
11864
+ */
11865
+ font: string | undefined;
11866
+ /**
11867
+ * The size of the text in meters. Will be automatically adjusted if it exceeds
11868
+ * the text area bounds.
11869
+ */
11870
+ fontSize: number;
11871
+ /**
11872
+ * Padding between the text and its bounding box, in meters.
11873
+ * Can be specified as either:
11874
+ * - A single number for uniform padding on all sides
11875
+ * - An array of 4 numbers [top, right, bottom, left] for individual side padding
11876
+ * @default [0.2, 1, 0.2, 1.5]
11877
+ */
11878
+ margin: number | [number, number, number, number];
11879
+ /**
11880
+ * Color of the text outline.
11881
+ * Accepts any CSS color string.
11882
+ * @default 'black'
11883
+ */
11884
+ outlineColor: string;
11885
+ /**
11886
+ * Opacity of the text outline.
11887
+ * Accepts values between 0 and 1.
11888
+ * @default 1
11889
+ */
11890
+ outlineOpacity: number;
11891
+ /**
11892
+ * Blur radius for the text outline.
11893
+ * Can be a number in pixels or a string with units.
11894
+ */
11895
+ outlineBlur: number | string;
11896
+ /**
11897
+ * Width of the text outline effect in pixels.
11898
+ */
11899
+ outlineWidth: number;
11900
+ /**
11901
+ * Horizontal offset of the outline effect from the text, in pixels.
11902
+ */
11903
+ outlineOffsetX: number;
11904
+ /**
11905
+ * Vertical offset of the outline effect from the text, in pixels.
11906
+ */
11907
+ outlineOffsetY: number;
11908
+ /**
11909
+ * Width of the inner stroke of each text glyph.
11910
+ * @default 0
11911
+ */
11912
+ strokeWidth: number;
11913
+ /**
11914
+ * Maximum width constraint for the text area in meters.
11915
+ * Overrides default text field constraints when set.
11916
+ */
11917
+ maxWidth: number | undefined;
11918
+ /**
11919
+ * Maximum height constraint for the text area in meters.
11920
+ * Overrides default text field constraints when set.
11921
+ */
11922
+ maxHeight: number | undefined;
11923
+ /**
11924
+ * Opacity of the text stroke when strokeWidth > 0.
11925
+ * @default 1
11926
+ */
11927
+ strokeOpacity: number;
11928
+ /**
11929
+ * Color of the text stroke when strokeWidth > 0.
11930
+ * Accepts any CSS color string.
11931
+ * @default 'black'
11932
+ */
11933
+ strokeColor: string;
11934
+ /**
11935
+ * Opacity of the text fill, independent of stroke and outline opacity.
11936
+ * Set to 0 to show only stroke/outline.
11937
+ * Accepts values between 0 and 1.
11938
+ */
11939
+ fillOpacity: number;
11940
+ /**
11941
+ * Color to display when text is hovered.
11942
+ * Falls back to global hover color if undefined.
11943
+ */
11944
+ hoverColor: string | undefined;
11945
+ };
11946
+ }
11947
+
11012
11948
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object' {
11013
11949
  import type { Polygon, MultiPolygon, FloorProperties as MVFFloor, ParsedMVF, Feature } from '@mappedin/mvf';
11014
11950
  import type { RendererCore } from '@mappedin/core-sdk';
@@ -11033,6 +11969,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object'
11033
11969
  floorStackId: string;
11034
11970
  constructor(parentId: string, floor: MVFFloor, renderer: RendererCore, multiFloorView: Required<TShow3DMapOptions['multiFloorView']>, options: TShow3DMapOptions, mvf?: ParsedMVF, styleMap?: AggregatedStyleMap);
11035
11971
  load: () => this;
11972
+ get visible(): boolean;
11973
+ setVisible(visible: boolean): void;
11036
11974
  }
11037
11975
  export {};
11038
11976
  }
@@ -11045,7 +11983,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils' {
11045
11983
  import type { LabelState, MarkerState, GeometryState, CollisionRankingTier, LineStyle, PaintStyle } from '@mappedin/core-sdk';
11046
11984
  import { type TGeometryState, type TLabelState, type TDirectionInstructionAction, type TShow3DMapOptions, type Label, type Marker, type Model } from '@mappedin/mappedin-js/mappedin-js/src';
11047
11985
  import type { TDoorsState, TMarkerState, TWallsState } from '@mappedin/mappedin-js/mappedin-js/src/types';
11048
- import type { Image, Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
11986
+ import type { Image, Shape, Text3D } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
11049
11987
  import type { GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
11050
11988
  import type { Tween } from '@tweenjs/tween.js';
11051
11989
  export function convertCoordinateToPosition(coord: Coordinate): Position;
@@ -11074,32 +12012,41 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils' {
11074
12012
  };
11075
12013
  export function groupGeometryByStyle(features: Feature<LineString | Polygon | Point, SpaceProperties | ObstructionProperties>[], styleMap: AggregatedStyleMap): Map<WithId<PolygonStyle> | WithId<LineStringStyle> | WithId<PointStyle>, Feature<Point | LineString | Polygon, WithPolygonImage<SpaceProperties> | WithPolygonImage<ObstructionProperties>>[]>;
11076
12014
  export function translateToCoreStyle(style: PolygonStyle | LineStringStyle, userOptions?: TShow3DMapOptions): PaintStyle | LineStyle;
11077
- export const getTargetID: <T extends Space | Shape | MapObject | Label | Marker | Model | Image | string>(target: T, api: GeoJsonApi) => string | undefined;
12015
+ export const getTargetID: <T extends Space | Shape | MapObject | Label | Text3D | Marker | Model | Image | string>(target: T, api: GeoJsonApi) => string | undefined;
11078
12016
  export function tweenToPromise(tween: Tween): Promise<void>;
12017
+ export function unique<T>(array: T[]): T[];
11079
12018
  }
11080
12019
 
11081
12020
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-stack-object' {
11082
12021
  import type { RendererCore } from '@mappedin/core-sdk';
11083
- import type { FloorId, FloorStack as MVFFloorStack } from '@mappedin/mvf';
12022
+ import type { FloorId, FloorStack as MVFFloorStack, Facade as MVFFacade } from '@mappedin/mvf';
11084
12023
  import type { FloorObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object';
11085
- export class FloorStackObject implements Omit<MVFFloorStack, 'maps' | 'floors'> {
12024
+ export class FloorStackObject implements Omit<MVFFloorStack, 'maps' | 'floors' | 'defaultFloor'> {
12025
+ #private;
11086
12026
  id: MVFFloorStack['id'];
11087
12027
  externalId: MVFFloorStack['externalId'];
11088
12028
  name: MVFFloorStack['name'];
11089
12029
  type: MVFFloorStack['type'];
11090
12030
  floorIds: FloorId[];
12031
+ defaultFloorId?: MVFFloorStack['defaultFloor'];
11091
12032
  /** Sorted floor objects by elevation */
11092
12033
  floorObjects: FloorObject[];
11093
12034
  floorObjectsByElevation: Map<number, FloorObject>;
11094
12035
  metadata?: MVFFloorStack['metadata'];
11095
12036
  footprint?: MVFFloorStack['footprint'];
11096
12037
  containerId: string;
11097
- constructor(floorStack: MVFFloorStack, parentId: string, renderer: RendererCore);
12038
+ facade?: MVFFacade;
12039
+ constructor(floorStack: MVFFloorStack, parentId: string, renderer: RendererCore, facade?: MVFFacade);
11098
12040
  get defaultFloor(): FloorObject;
11099
12041
  addFloor(floor: FloorObject): void;
12042
+ setFacadeVisible(visible: boolean): void;
11100
12043
  }
11101
12044
  }
11102
12045
 
12046
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus' {
12047
+ export { DynamicFocus } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus/dynamic-focus';
12048
+ }
12049
+
11103
12050
  declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-processor' {
11104
12051
  import { Rectangle } from '@packages/internal/quad-tree';
11105
12052
  export type TSerializedCollider = {
@@ -11129,42 +12076,6 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-pr
11129
12076
  };
11130
12077
  }
11131
12078
 
11132
- declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
11133
- import type { CollisionRankingTier, GeometryState, LabelState, RendererCore } from '@mappedin/mappedin-js/geojson/src';
11134
- import { type MarkerState } from '@mappedin/mappedin-js/geojson/src/components/marker';
11135
- import type { PathUpdateState } from '@mappedin/mappedin-js/geojson/src/components/path';
11136
- import type { Geometry3DTypes, Position, RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
11137
- import { GeometryGroupObject3D, type GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
11138
- import { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
11139
- import { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
11140
- import { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
11141
- import type { StyleComponent } from '@mappedin/mappedin-js/geojson/src/components/style';
11142
- import type { GeometryGroupStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/geometry-group-style';
11143
- export function updateInteractivity(entity: Geometry3DTypes | Geometry2D, update: boolean | undefined, state: RendererState): boolean;
11144
- export function updateGroupColor(entity: GeometryGroupObject3D, state: RendererState, update: Partial<Pick<GeometryGroupState, 'color' | 'topColor'>>): boolean | undefined;
11145
- export function updateGroupShading(entity: GeometryGroupObject3D, update?: GeometryGroupState['shading']): boolean;
11146
- export function updateImageProps(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Partial<GeometryState>): void;
11147
- export function updateHeight(entity: Geometry3D | GeometryGroupObject3D, state: RendererState, update?: number): boolean;
11148
- export function updateColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Partial<GeometryState>): void;
11149
- export function updatePosition(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Position | undefined, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): void;
11150
- export function updateParent(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: GroupContainerObject3D | undefined): boolean;
11151
- export function updateEnabled(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: boolean | undefined): void;
11152
- export function updateMarker(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<MarkerState> | undefined, state: RendererState): boolean;
11153
- export function updateRank(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: CollisionRankingTier | undefined): boolean;
11154
- export function updateLabel(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<LabelState> | undefined, state: RendererState): void;
11155
- export function updateHoverColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: string): void;
11156
- export function updateFlipImageToFaceCamera(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: boolean): void;
11157
- 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;
11159
- export function updateGroupTexture(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Pick<GeometryGroupStyleComponent, 'texture' | 'topTexture'>): void;
11160
- export function updateIndividualGeometryTexture(entity: Geometry3D, update?: Pick<StyleComponent, 'texture' | 'topTexture'>): boolean;
11161
- export function updateIndividualGeometryOpacity(entity: Geometry3D, update?: number): boolean;
11162
- export function updateAltitude(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: number): boolean;
11163
- export function updateOutline(entity: Geometry3DTypes, update?: boolean): boolean;
11164
- export function handlePathUpdate(geometry: Geometry3D, update: PathUpdateState): void;
11165
- export function pickPathOptions(update: PathUpdateState): Partial<PathUpdateState>;
11166
- }
11167
-
11168
12079
  declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/system' {
11169
12080
  import type { PerspectiveCamera, Vector3, Object3D, Mesh } from 'three';
11170
12081
  import { Raycaster } from 'three';
@@ -19747,11 +20658,10 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator'
19747
20658
 
19748
20659
  declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator/navigator' {
19749
20660
  import type { Position, Feature, MultiPolygon, Polygon } from 'geojson';
19750
- import type { NodeCollection, NodeFeature } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/node';
20661
+ import type { NodeCollection } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/node';
19751
20662
  import type { ObstructionCollection } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/obstruction';
19752
20663
  import type { SpaceCollection } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/space';
19753
20664
  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
20665
  /**
19756
20666
  * Options for simplifying directions in the Navigator class.
19757
20667
  */
@@ -19795,7 +20705,6 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator/n
19795
20705
  geojsonCollection?: ObstructionCollection | SpaceCollection;
19796
20706
  groupBy?: string;
19797
20707
  });
19798
- findNearestNode: (feature: CoordinateFeature) => NodeFeature | null;
19799
20708
  /**
19800
20709
  * Calculates and returns a set of directions from origin nodes to destination nodes, including detailed properties.
19801
20710
  *
@@ -19944,6 +20853,77 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/types/coord
19944
20853
  export type CoordinateFeature = Feature<Point, CoordinateProperties>;
19945
20854
  }
19946
20855
 
20856
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus/dynamic-focus' {
20857
+ import { type RendererCore } from '@mappedin/core-sdk';
20858
+ import { PubSub } from '@packages/internal/common';
20859
+ import type { Floor, FloorStack } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
20860
+ import type { GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
20861
+ import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
20862
+ /**
20863
+ * @experimental
20864
+ * @internal
20865
+ */
20866
+ export type TDynamicFocusEvents = {
20867
+ 'focus-change': {
20868
+ facades: string[];
20869
+ spaces: string[];
20870
+ };
20871
+ };
20872
+ /**
20873
+ * @experimental
20874
+ * @internal
20875
+ */
20876
+ export type TDynamicFocusOptions = {
20877
+ /**
20878
+ * The minimum zoom level at which Dynamic Focus will detect a Facade and reveal the interior spaces.
20879
+ * @default 17
20880
+ */
20881
+ minZoomLevel?: number;
20882
+ };
20883
+ /**
20884
+ * @experimental
20885
+ * @internal
20886
+ */
20887
+ export class DynamicFocus extends PubSub<TDynamicFocusEvents> {
20888
+ #private;
20889
+ /** @internal */
20890
+ constructor(core: RendererCore, geoJSONApi: GeoJsonApi, { currentMapGetter }: {
20891
+ currentMapGetter: CurrentMapGetter;
20892
+ });
20893
+ /**
20894
+ * @experimental
20895
+ * Enables Dynamic Focus and allows the camera to automatically set the floor stack when a facade is hovered.
20896
+ */
20897
+ enable(options?: TDynamicFocusOptions): void;
20898
+ /**
20899
+ * @experimental
20900
+ * Disables Dynamic Focus and prevents the camera from automatically setting the floor stack when a facade is hovered.
20901
+ */
20902
+ disable(): void;
20903
+ /**
20904
+ * @experimental
20905
+ * Returns the enabled state of Dynamic Focus.
20906
+ */
20907
+ get enabled(): boolean;
20908
+ /**
20909
+ * @experimental
20910
+ * Sets the default floor for a floor stack. This is the floor that will be shown when the floor stack is in focus.
20911
+ * See {@link resetDefaultFloorForStack} to reset the default floor.
20912
+ * @param floorStack - The floor stack to set the default floor for.
20913
+ * @param floor - The floor to set as the default floor.
20914
+ */
20915
+ setDefaultFloorForStack(floorStack: FloorStack, floor: Floor): void;
20916
+ /**
20917
+ * @experimental
20918
+ * Resets the default floor for a floor stack to it's initial value.
20919
+ * @param floorStack - The floor stack to reset the default floor for.
20920
+ */
20921
+ resetDefaultFloorForStack(floorStack: FloorStack): void;
20922
+ }
20923
+ type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
20924
+ export {};
20925
+ }
20926
+
19947
20927
  declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/tap-controller' {
19948
20928
  export enum TapType {
19949
20929
  onefinger = 0,