@mappedin/react-sdk 6.0.1-beta.30 → 6.0.1-beta.32

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.
@@ -22,7 +22,7 @@
22
22
  // ../react/@packages/internal/quad-tree
23
23
  // ../react/@mappedin/core-sdk/src/components/text3d
24
24
  // ../react/minisearch
25
- // ../react/three/addons/loaders/GLTFLoader.js
25
+ // ../react/three/examples/jsm/loaders/GLTFLoader.js
26
26
  // ../react/@mapbox/point-geometry
27
27
  // ../react/@maplibre/maplibre-gl-style-spec
28
28
  // ../react/gl-matrix
@@ -65,12 +65,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
65
65
  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';
66
66
  import { MapView } from '@mappedin/react-sdk/mappedin-js/src/map-view';
67
67
  export type { Text3D as Text3DApi } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/text3d';
68
- import type { InsetPadding, InsetPaddingOption, Shading, PaintStyle, LineStyle, WatermarkOptions, Text3DState, AddText3DOptions, UpdatableText3DState, InitializeText3DState, MapViewState } from '@mappedin/react-sdk/geojson/src';
68
+ import type { InsetPadding, InsetPaddingOption, Shading, PaintStyle, LineStyle, WatermarkOptions, Text3DState, AddText3DOptions, UpdatableText3DState, InitializeText3DState, EnvMapOptions, MapViewState, UpdateModelState, InitializeModelState } from '@mappedin/react-sdk/geojson/src';
69
69
  import { enableTestMode, preloadFont } from '@mappedin/react-sdk/geojson/src';
70
70
  export type { PubSub } from '@packages/internal/common/pubsub';
71
71
  import type { TMappedinMapLibreOverlayEvents } from '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay';
72
72
  import { MappedinMapLibreOverlay } from '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay';
73
73
  import type { LanguagePackHydrationItem } from '@mappedin/react-sdk/mappedin-js/src/types';
74
+ import { MAPPEDIN_COLORS } from '@mappedin/react-sdk/mappedin-js/src/constants';
74
75
  import { type Environment } from '@packages/internal/mvf-utils/mvf-utils';
75
76
  import type { TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TFollowMode, TFollowCameraOptions } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot';
76
77
  import type { TExpandOptions, TStackedMapsEvents, TStackedMapsState } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
@@ -252,6 +253,18 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
252
253
  * @default false
253
254
  */
254
255
  keepOutdoorGeometryVisible?: boolean;
256
+ /**
257
+ * @experimental
258
+ *
259
+ * Enable occlusion of labels, markers and floors.
260
+ */
261
+ occlusion?: {
262
+ /**
263
+ * Enable occlusion.
264
+ * @default false
265
+ */
266
+ enabled?: boolean;
267
+ };
255
268
  };
256
269
  /**
257
270
  * @internal
@@ -330,8 +343,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
330
343
  * @deprecated Use {@link show3dMap} instead.
331
344
  */
332
345
  export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
333
- export { parseMVF, unzipMVF, enableTestMode, preloadFont };
334
- 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, };
346
+ export { parseMVF, unzipMVF, enableTestMode, preloadFont, MAPPEDIN_COLORS };
347
+ 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, EnvMapOptions, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, Text3DState, AddText3DOptions, UpdatableText3DState, InitializeText3DState, UpdateModelState, InitializeModelState, };
335
348
  export type * from 'geojson';
336
349
  export type { TUpdateState, TUpdateStates, TLabelState, TGeometryState, TModelState, TShapeState, TDoorsState, TImageState, TWallsState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TAddImageOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, TBlueDotPositionUpdate, TFocusTarget, IFocusable, IAnchorable, TMapDataObjectTypes, } from '@mappedin/react-sdk/mappedin-js/src/types';
337
350
  export { WALLS, DOORS } from '@mappedin/react-sdk/mappedin-js/src/types';
@@ -1068,6 +1081,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/events' {
1068
1081
  directions: Directions;
1069
1082
  path: Path;
1070
1083
  };
1084
+ /**
1085
+ * Emitted before the scene is drawn to the screen.
1086
+ */
1087
+ 'pre-render': undefined;
1088
+ /**
1089
+ * Emitted after the scene is drawn to the screen.
1090
+ */
1091
+ 'post-render': undefined;
1071
1092
  } & TStackedMapsEvents;
1072
1093
  export type TEventPayload<EventName extends keyof TEvents> = TEvents[EventName] extends {
1073
1094
  data: null;
@@ -1100,7 +1121,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1100
1121
  import FloorStack from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor-stack';
1101
1122
  import Facade from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/facade';
1102
1123
  import type { MapDataRecords, EnterpriseMapDataRecords } from '@mappedin/react-sdk/mappedin-js/src/utils/data-creation';
1103
- 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';
1124
+ 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, TilesetStyle } from '@mappedin/mvf';
1104
1125
  import { AnalyticsInternal } from '@mappedin/react-sdk/mappedin-js/src/analytics';
1105
1126
  import EnterpriseLocation from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location';
1106
1127
  import EnterpriseCategory from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/category';
@@ -1113,6 +1134,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1113
1134
  import { type Directions, DirectionsInternal } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions';
1114
1135
  import { type THydrateMapDataBundle } from '@mappedin/react-sdk/mappedin-js/src';
1115
1136
  import { Query } from '@mappedin/react-sdk/mappedin-js/src/query';
1137
+ import LocationProfile from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location-profile';
1138
+ import LocationCategory from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location-category';
1116
1139
  /**
1117
1140
  * Internal class representing detailed map data.
1118
1141
  *
@@ -1163,7 +1186,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1163
1186
  pointsOfInterestById: MapDataRecords['poisById'];
1164
1187
  annotationsById: MapDataRecords['annotationsById'];
1165
1188
  areasById: MapDataRecords['areasById'];
1189
+ locationProfilesById: MapDataRecords['locationProfilesById'];
1190
+ locationCategoriesById: MapDataRecords['locationCategoriesById'];
1191
+ locationProfilesByExternalId: MapDataRecords['locationProfilesByExternalId'];
1166
1192
  locationsById: EnterpriseMapDataRecords['locationsById'];
1193
+ locationProfilesByCategoryId: MapDataRecords['locationProfilesByCategoryId'];
1194
+ locationCategoriesByParentId: MapDataRecords['locationCategoriesByParentId'];
1167
1195
  categoriesById: EnterpriseMapDataRecords['categoriesById'];
1168
1196
  doorsByNodeId: MapDataRecords['doorsByNodeId'];
1169
1197
  mvfLocationsBySpaceId: EnterpriseMapDataRecords['mvfLocationsBySpaceId'];
@@ -1202,6 +1230,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1202
1230
  languagePacks: {
1203
1231
  [languageCode: string]: LanguagePack;
1204
1232
  };
1233
+ tilesets: {
1234
+ [tilesetId: string]: TilesetStyle;
1235
+ };
1205
1236
  binaryBundle?: Uint8Array;
1206
1237
  envControl: EnvControl;
1207
1238
  /**
@@ -1277,9 +1308,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1277
1308
  get nodes(): Node[];
1278
1309
  get locations(): EnterpriseLocation[];
1279
1310
  get categories(): EnterpriseCategory[];
1311
+ get locationProfiles(): LocationProfile[];
1312
+ get locationCategories(): LocationCategory[];
1280
1313
  get mvfFloors(): MVFFloor[];
1281
1314
  get mvfFloorStacks(): MVFFloorStack[];
1282
1315
  getByType(type: string): object[];
1316
+ getByType(type: 'location-profile'): LocationProfile[];
1317
+ getByType(type: 'location-category'): LocationCategory[];
1283
1318
  getByType(type: 'space'): Space[];
1284
1319
  getByType(type: 'area'): Area[];
1285
1320
  getByType(type: 'door'): Door[];
@@ -1350,7 +1385,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1350
1385
  */
1351
1386
  destroy(): void;
1352
1387
  }
1353
- export { Node, Area, MapDataInternal, Space, Floor, FloorStack, Facade, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, };
1388
+ export { Node, Area, MapDataInternal, Space, Floor, FloorStack, Facade, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, LocationCategory, LocationProfile, };
1354
1389
  export type { TSpaceType } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space';
1355
1390
  export type { Places };
1356
1391
  }
@@ -1365,7 +1400,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1365
1400
  import type MapData from '@mappedin/react-sdk/mappedin-js/src/map-data';
1366
1401
  import type { Annotation, Coordinate, Door, Floor, MapObject, PointOfInterest, Space, Node, EnterpriseLocation, FloorStack, Facade } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1367
1402
  import type { DOORS, WALLS, TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState, TUpdateStates, GlobalState, UpdateGlobalState } from '@mappedin/react-sdk/mappedin-js/src/types';
1368
- import type { Label, Marker, Image, Shape, Text3D as Text3DView } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
1403
+ import type { Label, Marker, Image, Shape, Text3D as Text3DView, Model } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
1369
1404
  import type { TEventPayload } from '@mappedin/react-sdk/mappedin-js/src/events';
1370
1405
  import type { Shapes } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/shapes';
1371
1406
  import type { StackedMaps, TCollapseOptions, TExpandOptions } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
@@ -1471,7 +1506,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1471
1506
  * // Update the color of a space to red.
1472
1507
  * map.updateState(space, { color: 'red' });
1473
1508
  */
1474
- updateState<T extends Space | Text3DView | MapObject | Label | Marker | Shape | Door | Facade | WALLS | DOORS>(target: T, state: TUpdateState<T>): any;
1509
+ updateState<T extends Space | Text3DView | MapObject | Label | Marker | Shape | Door | Facade | WALLS | DOORS | Model>(target: T, state: TUpdateState<T>): any;
1475
1510
  updateState<T extends string & NonNullable<unknown>>(target: T, state: TUpdateStates): any;
1476
1511
  /**
1477
1512
  * Update global state of the MapView
@@ -1539,7 +1574,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1539
1574
  * @hidden
1540
1575
  */
1541
1576
  updateWatermark(options: WatermarkUpdateOptions): void;
1542
- getState<T extends Space | Text3DView | MapObject | Label | Marker | Image | Shape | string>(target: T): TGetState<T>;
1577
+ getState<T extends Space | Model | Text3DView | MapObject | Label | Marker | Image | Shape | string>(target: T): TGetState<T>;
1543
1578
  setHoverColor(c: string): void;
1544
1579
  getHoverColor(): string | undefined;
1545
1580
  /**
@@ -1750,10 +1785,10 @@ declare module '@mappedin/react-sdk/geojson/src' {
1750
1785
  import type { GroupContainerState } from '@mappedin/react-sdk/geojson/src/entities/group-container';
1751
1786
  import type { GeometryGroupState } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
1752
1787
  import type { Position } from '@mappedin/react-sdk/geojson/src/types/geometry';
1753
- import type { InsetPadding, InsetPaddingOption, RendererCoreOptions, ClickPayload, HoverPayload, CameraPayload, MapEvent, MapEventPayload } from '@mappedin/react-sdk/geojson/src/types';
1788
+ import type { InsetPadding, InsetPaddingOption, RendererCoreOptions, ClickPayload, HoverPayload, CameraPayload, MapEvent, MapEventPayload, EnvMapOptions } from '@mappedin/react-sdk/geojson/src/types';
1754
1789
  import type { GeometryState } from '@mappedin/react-sdk/geojson/src/components/mesh';
1755
1790
  import type { ShapeState, CustomGeometryBuilder } from '@mappedin/react-sdk/geojson/src/components/custom';
1756
- import type { ModelState } from '@mappedin/react-sdk/geojson/src/components/model';
1791
+ import type { ModelState, UpdateModelState, InitializeModelState } from '@mappedin/react-sdk/geojson/src/components/model';
1757
1792
  import RendererCore, { type MapViewState } from '@mappedin/react-sdk/geojson/src/renderer';
1758
1793
  import type { Camera, AnimateToOptions, FocusOnOptions, EasingCurve } from '@mappedin/react-sdk/geojson/src/camera';
1759
1794
  import { mountSceneGraphVisualizer } from '@mappedin/react-sdk/geojson/examples/src/utils/scene-graph-visualizer';
@@ -1771,17 +1806,17 @@ declare module '@mappedin/react-sdk/geojson/src' {
1771
1806
  */
1772
1807
  export { enableTestMode } from '@mappedin/react-sdk/geojson/src/services/test-mode';
1773
1808
  export { mountSceneGraphVisualizer };
1774
- export type { EntityId, EntityState, LineStyle, PaintStyle, ModelStyle, ModelProperties, Shading } from '@mappedin/react-sdk/geojson/src/types';
1809
+ export type { EntityId, EntityState, LineStyle, PaintStyle, ModelProperties, Shading } from '@mappedin/react-sdk/geojson/src/types';
1775
1810
  export type * from 'geojson';
1776
1811
  export type { WatermarkUpdateOptions, WatermarkOptions, WatermarkPosition } from '@mappedin/react-sdk/geojson/src/systems/watermark/system';
1777
1812
  export { preloadFont } from '@mappedin/react-sdk/geojson/src/systems/text3d/system';
1778
1813
  export type { GLTFExportOptions } from '@mappedin/react-sdk/geojson/src/systems/exporter';
1779
1814
  export type { AttributionControlOptions, AttributionPosition } from '@mappedin/react-sdk/geojson/src/systems/html-controls/system';
1780
- export type { Text3DStyle } from '@mappedin/react-sdk/geojson/src/components/styles';
1815
+ export type { Text3DStyle, ModelStyle } from '@mappedin/react-sdk/geojson/src/components/styles';
1781
1816
  export type { AddText3DOptions, InitializeText3DState, UpdatableText3DState } from '@mappedin/react-sdk/geojson/src/components/text3d';
1782
1817
  export { ATTRIBUTION_POSITIONS } from '@mappedin/react-sdk/geojson/src/systems/html-controls/system';
1783
1818
  export { ANIMATION_TWEENS } from '@mappedin/react-sdk/geojson/src/camera';
1784
- 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, RendererCoreOptions, };
1819
+ export type { AddPathOptions, AddMarkerOptions, AddLabelOptions, AnimateToOptions, FocusOnOptions, MapViewState, MarkerState, PathState, GroupContainerState, GeometryGroupState, ShapeState, CustomGeometryBuilder, LabelState, GeometryState, ModelState, UpdateModelState, InitializeModelState, EasingCurve, Camera, InsetPadding, InsetPaddingOption, Position, ClickPayload, HoverPayload, CameraPayload, MapEvent, MapEventPayload, CollisionRankingTier, LabelAppearance, RendererCore, EnvMapOptions, RendererCoreOptions, };
1785
1820
  export function createRenderer(container: HTMLElement, options?: RendererCoreOptions & {
1786
1821
  [key: string]: any;
1787
1822
  }): Promise<RendererCore>;
@@ -1859,10 +1894,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay' {
1859
1894
 
1860
1895
  declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1861
1896
  import type { Feature, MultiPolygon, Polygon } from 'geojson';
1862
- import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, EnterpriseLocation, Node, Area, Facade, FloorStack, Annotation, EnterpriseCategory, EnterpriseVenue } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1897
+ import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, EnterpriseLocation, Node, Area, Facade, FloorStack, Annotation, EnterpriseCategory, EnterpriseVenue, LocationCategory, LocationProfile } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1863
1898
  import type { Label, Marker, Model, Image, Shape, Text3D } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
1864
1899
  import type { Language, ParsedMVFLocalePack } from '@mappedin/mvf';
1865
- import type { InsetPaddingOption, UpdatableText3DState, Text3DState, AddText3DOptions } from '@mappedin/react-sdk/geojson/src';
1900
+ import type { InsetPaddingOption, UpdatableText3DState, Text3DState, AddText3DOptions, EnvMapOptions, InitializeModelState, ModelState, UpdateModelState } from '@mappedin/react-sdk/geojson/src';
1866
1901
  export type DeepRequired<T> = Required<{
1867
1902
  [K in keyof T]: T[K] extends Required<T[K]> ? T[K] : DeepRequired<T[K]>;
1868
1903
  }>;
@@ -1951,7 +1986,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1951
1986
  */
1952
1987
  export type TModelState = {
1953
1988
  type: 'model';
1954
- };
1989
+ } & ModelState;
1955
1990
  /**
1956
1991
  * Defines the state for an image when its appearance is updated.
1957
1992
  */
@@ -2123,7 +2158,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2123
2158
  /**
2124
2159
  * The type for updating the state of map elements (colors, texts, etc.).
2125
2160
  */
2126
- 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;
2161
+ export type TUpdateState<T> = T extends WALLS ? Partial<TWallsState> : T extends DOORS | Door ? Partial<TDoorsState> : T extends Model ? Partial<UpdateModelState> : 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;
2127
2162
  export type TUpdateStates = Partial<Omit<TGeometryState, 'interactive' | 'hoverColor' | 'type'>> | Partial<TMarkerState> | Partial<TLabelState> | Partial<TGeometryState>;
2128
2163
  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;
2129
2164
  /**
@@ -2239,7 +2274,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2239
2274
  /**
2240
2275
  * Defines the target for navigation operations.
2241
2276
  */
2242
- export type TNavigationTarget = Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation | Node | Area | Facade;
2277
+ export type TNavigationTarget = LocationProfile | Annotation | Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation | Node | Area | Facade;
2243
2278
  /**
2244
2279
  * Defines the special zone for navigation operations.
2245
2280
  */
@@ -2594,16 +2629,15 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2594
2629
  * @default false
2595
2630
  */
2596
2631
  interactive?: boolean;
2632
+ /**
2633
+ * Vertical offset of the model in meters.
2634
+ */
2635
+ verticalOffset?: number;
2597
2636
  };
2598
2637
  /**
2599
2638
  * Options for controlling the behavior of a {@link Model}.
2600
2639
  */
2601
- export type TAddModelOptions = {
2602
- /**
2603
- * Model's URL.
2604
- */
2605
- url: string;
2606
- };
2640
+ export type TAddModelOptions = Omit<InitializeModelState, 'verticalOffset'>;
2607
2641
  /**
2608
2642
  * @interface
2609
2643
  */
@@ -2814,6 +2848,20 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2814
2848
  localePack: ParsedMVFLocalePack;
2815
2849
  };
2816
2850
  export type GlobalState = {
2851
+ /**
2852
+ * The color of the background, in hex format(#000000).
2853
+ */
2854
+ backgroundColor: string;
2855
+ /**
2856
+ * The alpha value of the background, between 0 and 1.
2857
+ * @default 1
2858
+ */
2859
+ backgroundAlpha: number;
2860
+ /**
2861
+ * environment map for reflections.
2862
+ * @default 'basic'
2863
+ */
2864
+ environment: EnvMapOptions;
2817
2865
  text3d: {
2818
2866
  /**
2819
2867
  * hover color of the text3d
@@ -2838,6 +2886,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2838
2886
  export interface IFocusable {
2839
2887
  get focusTarget(): TFocusTarget | TFocusTarget[];
2840
2888
  }
2889
+ export interface INavigatable {
2890
+ get navigationTarget(): TNavigationTarget | TNavigationTarget[];
2891
+ }
2841
2892
  /**
2842
2893
  * A class that implements IAnchorable can have 2D elements like {@link Label}s and {@link Marker}s anchored to it.
2843
2894
  */
@@ -2848,6 +2899,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2848
2899
  * Associates MapData type strings with their corresponding classes.
2849
2900
  */
2850
2901
  export type TMapDataObjectTypes = {
2902
+ 'location-profile': LocationProfile;
2903
+ 'location-category': LocationCategory;
2851
2904
  node: Node;
2852
2905
  space: Space;
2853
2906
  door: Door;
@@ -2865,6 +2918,45 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2865
2918
  };
2866
2919
  }
2867
2920
 
2921
+ declare module '@mappedin/react-sdk/mappedin-js/src/constants' {
2922
+ /**
2923
+ * Default map options used if no custom options are provided.
2924
+ *
2925
+ * @internal
2926
+ */
2927
+ export const DEFAULT_MAP_OPTIONS: {
2928
+ auto: true;
2929
+ debug: false;
2930
+ pitch: number;
2931
+ bearing: number;
2932
+ antialiasing: {
2933
+ enabled: true;
2934
+ };
2935
+ shadingAndOutlines: true;
2936
+ outdoorView: {
2937
+ layersHiddenByGeometry: string[];
2938
+ };
2939
+ };
2940
+ export const EXTERIOR_WALLS_ID = "ExteriorWalls";
2941
+ export const WALLS_ID = "Walls";
2942
+ export const ADD_MAP_FOCUS_ON_DURATION = 0;
2943
+ export const INTERIOR_DOORS_ID = "InteriorDoors";
2944
+ export const EXTERIOR_DOORS_ID = "ExteriorDoors";
2945
+ export const GEOMETRY_LAYER = "GeometryLayer";
2946
+ export const LABELS_LAYER = "LabelsLayer";
2947
+ export const MARKERS_LAYER = "MarkersLayer";
2948
+ export const FOOTPRINT_LAYER = "FootprintLayer";
2949
+ export const OCCLUSION_LAYER = "OcclusionLayer";
2950
+ export const IMAGES_LAYER = "ImagesLayer";
2951
+ export const SELF_SERVE_API_AUDIENCE: string[];
2952
+ export const ENTERPRISE_API_AUDIENCE: string[];
2953
+ export const MAPPEDIN_COLORS: {
2954
+ orange: string;
2955
+ teal: string;
2956
+ lightTeal: string;
2957
+ };
2958
+ }
2959
+
2868
2960
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot' {
2869
2961
  import type { EasingCurve, RendererCore } from '@mappedin/core-sdk';
2870
2962
  import { PubSub } from '@packages/internal/common';
@@ -3477,11 +3569,19 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions' {
3477
3569
  /**
3478
3570
  * @internal
3479
3571
  */
3480
- constructor(directions: DirectionsCollection, mapData: MapDataInternal);
3572
+ constructor(directions: DirectionsCollection, mapData: MapDataInternal, from: TNavigationTarget[], to: TNavigationTarget[]);
3481
3573
  /**
3482
3574
  * @internal
3483
3575
  */
3484
3576
  get path(): Node[];
3577
+ /**
3578
+ * The selected departure.
3579
+ */
3580
+ get departure(): TNavigationTarget;
3581
+ /**
3582
+ * The selected destination.
3583
+ */
3584
+ get destination(): TNavigationTarget;
3485
3585
  /**
3486
3586
  * All the coordinates ({@link Coordinate}) of the directions.
3487
3587
  */
@@ -3531,6 +3631,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions' {
3531
3631
  */
3532
3632
  getExcludedNodeIds: (accessible: boolean, excludedConnections: Connection[]) => string[];
3533
3633
  }
3634
+ /**
3635
+ * Get the nodes from the navigation target.
3636
+ *
3637
+ * @hidden
3638
+ * @param target
3639
+ * @param mapData
3640
+ */
3641
+ export function getNodesFromTarget(target: TNavigationTarget, mapData: MapDataInternal): string[];
3534
3642
  }
3535
3643
 
3536
3644
  declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types' {
@@ -4001,6 +4109,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space' {
4001
4109
  * @internal
4002
4110
  */
4003
4111
  readonly __type = "space";
4112
+ /**
4113
+ * @internal
4114
+ * @hidden
4115
+ */
4004
4116
  getMvfData(): import("@mappedin/mvf").Feature<import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon | import("@mappedin/mvf").Point, import("@mappedin/mvf").SpaceProperties>;
4005
4117
  /**
4006
4118
  * Checks if the provided instance is of type Space.
@@ -4147,6 +4259,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor' {
4147
4259
  * @returns {string} The name of the floor.
4148
4260
  */
4149
4261
  get name(): string;
4262
+ /**
4263
+ * Gets the short name of the floor (i.e. "F1", "L, "2", etc.).
4264
+ * Used in space constrained lists and Often aligns with what is displayed on an elevator.
4265
+ *
4266
+ * @returns {string} The short name of the floor.
4267
+ */
4268
+ get shortName(): string;
4150
4269
  /**
4151
4270
  * Gets the external ID of the floor.
4152
4271
  *
@@ -4991,8 +5110,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/facade' {
4991
5110
 
4992
5111
  declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
4993
5112
  import type { AnnotationCollection, EntranceCollection, 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';
4994
- import type { MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4995
- import { Annotation, Area, Connection, Door, EnterpriseCategory, EnterpriseLocation, Facade, Floor, FloorStack, MapObject, Node, PointOfInterest, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5113
+ import { Annotation, Area, Connection, Door, EnterpriseCategory, EnterpriseLocation, Facade, Floor, FloorStack, MapObject, Node, PointOfInterest, Space, LocationCategory, LocationProfile, type MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4996
5114
  export type MapDataRecords = {
4997
5115
  spacesById: Record<string, Space>;
4998
5116
  nodesById: Record<string, Node>;
@@ -5007,6 +5125,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
5007
5125
  poisById: Record<string, PointOfInterest>;
5008
5126
  annotationsById: Record<string, Annotation>;
5009
5127
  areasById: Record<AreaId, Area>;
5128
+ locationProfilesById: Record<string, LocationProfile>;
5129
+ locationCategoriesById: Record<string, LocationCategory>;
5130
+ locationProfilesByCategoryId: Record<string, LocationProfile[]>;
5131
+ locationCategoriesByParentId: Record<string, LocationCategory[]>;
5010
5132
  spacesByExternalId: Record<string, Space[]>;
5011
5133
  nodesByExternalId: Record<string, Node[]>;
5012
5134
  poisByExternalId: Record<string, PointOfInterest[]>;
@@ -5015,6 +5137,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
5015
5137
  floorsByExternalId: Record<string, Floor[]>;
5016
5138
  objectsByExternalId: Record<string, MapObject[]>;
5017
5139
  areasByExternalId: Record<string, Area[]>;
5140
+ locationProfilesByExternalId: Record<string, LocationProfile[]>;
5018
5141
  spaceIdsByDestinationNodeId: Record<string, string[]>;
5019
5142
  objectEntranceNodeIdsByObstructionId: Record<string, string[]>;
5020
5143
  obstructionIdByEntranceId: Record<string, string>;
@@ -5058,6 +5181,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
5058
5181
  mvfLocationsById: Record<string, MVFEnterpriseLocation>;
5059
5182
  mvfLocationsBySpaceId: Record<string, MVFEnterpriseLocation[]>;
5060
5183
  };
5184
+ export const processMVFLocationProfilesAndCategories: (mvf: ParsedMVF, data: MapDataInternal) => {
5185
+ locationCategoriesByParentId: Record<string, LocationCategory[]>;
5186
+ locationProfilesById: Record<string, LocationProfile>;
5187
+ locationCategoriesById: Record<string, LocationCategory>;
5188
+ locationProfilesByExternalId: Record<string, LocationProfile[]>;
5189
+ locationProfilesByCategoryId: Record<string, LocationProfile[]>;
5190
+ };
5061
5191
  export const processMVFSpaces: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "spacesById" | "spacesByExternalId" | "spaceIdsByDestinationNodeId" | "poisById" | "poisByExternalId" | "mvfSpacesById" | "objectEntranceNodeIdsByObstructionId" | "connectionsById" | "connectionIdsByLatLon" | "mvfSpacesByFloorId" | "mvfPoisByFloorId">;
5062
5192
  export const processMVFNodes: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "nodesById" | "nodesByExternalId" | "mvfNodesById" | "mvfNodesByFloorId">;
5063
5193
  export const processMVFObstructions: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "objectsById" | "objectsByExternalId" | "mvfObstructionById" | "obstructionIdByEntranceId">;
@@ -5093,7 +5223,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location' {
5093
5223
  *
5094
5224
  * Refer to the [EnterpriseLocation Guide](https://developer.mappedin.com/web-sdk/enterprise-data#enterprise-locations) for more information and interactive examples.
5095
5225
  */
5096
- class EnterpriseLocation extends BaseMetaData implements Omit<MVFEnterpriseLocation, 'polygons' | 'nodes' | 'links'>, IFocusable {
5226
+ class EnterpriseLocation extends BaseMetaData implements Omit<MVFEnterpriseLocation, 'polygons' | 'nodes' | 'links' | 'spaces'>, IFocusable {
5097
5227
  #private;
5098
5228
  /**
5099
5229
  * @internal
@@ -5484,6 +5614,158 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/venue' {
5484
5614
  export default EnterpriseVenue;
5485
5615
  }
5486
5616
 
5617
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location-profile' {
5618
+ import type { LocationId, LocationLink, LocationPicture, LocationSocial, Location as MVFLocation } from '@mappedin/mvf';
5619
+ import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
5620
+ import type { Annotation, Connection, Door, LocationCategory, MapDataInternal, Space, MapObject } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5621
+ import type { TFocusTarget, TNavigationTarget, IFocusable, INavigatable } from '@mappedin/react-sdk/mappedin-js/src/types';
5622
+ class LocationProfile extends BaseMetaData implements Omit<MVFLocation, 'categories' | 'spaces' | 'obstructions' | 'entrances' | 'shapes' | 'connections' | 'annotations'>, IFocusable, INavigatable {
5623
+ #private;
5624
+ /**
5625
+ * Checks if the provided instance is of type EnterpriseLocation.
5626
+ *
5627
+ * @param instance The instance to check.
5628
+ * @returns {boolean} True if the instance is a EnterpriseLocation, false otherwise.
5629
+ */
5630
+ static is(instance: object): instance is LocationProfile;
5631
+ /**
5632
+ * @internal
5633
+ */
5634
+ static readonly __type = "location-profile";
5635
+ /**
5636
+ * @internal
5637
+ */
5638
+ readonly __type = "location-profile";
5639
+ id: LocationId;
5640
+ name: string;
5641
+ externalId?: string;
5642
+ description?: string;
5643
+ /**
5644
+ * The location's logo
5645
+ *
5646
+ * @format uri
5647
+ */
5648
+ logo?: string;
5649
+ phone?: string;
5650
+ /**
5651
+ * The location's social media links.
5652
+ */
5653
+ social: LocationSocial[];
5654
+ /**
5655
+ * The location's pictures
5656
+ */
5657
+ pictures: LocationPicture[];
5658
+ /**
5659
+ * Web links for the location
5660
+ */
5661
+ links: LocationLink[];
5662
+ constructor(data: MapDataInternal, options: {
5663
+ mvfData: MVFLocation;
5664
+ });
5665
+ /**
5666
+ * Gets the {@link Space}s associated with the location.
5667
+ *
5668
+ * @returns {Space[]} The spaces array.
5669
+ */
5670
+ get spaces(): Space[];
5671
+ /**
5672
+ * Gets the {@link Door}s associated with the location.
5673
+ *
5674
+ * @returns {Door[]} The doors array.
5675
+ */
5676
+ get doors(): Door[];
5677
+ /**
5678
+ * Gets the {@link Connection}s associated with the location.
5679
+ *
5680
+ * @returns {Connection[]} The connections array.
5681
+ */
5682
+ get connections(): Connection[];
5683
+ /**
5684
+ * Gets the {@link Annotation}s associated with the location.
5685
+ *
5686
+ * @returns {Annotation[]} The annotations array.
5687
+ */
5688
+ get annotations(): Annotation[];
5689
+ /**
5690
+ * Gets the {@link LocationCategory}s associated with the location.
5691
+ *
5692
+ * @returns {LocationCategory[]} The location categories array.
5693
+ */
5694
+ get categories(): LocationCategory[];
5695
+ /**
5696
+ * Gets the {@link MapObject}s associated with the location.
5697
+ *
5698
+ * @returns {MapObject[]} The map objects array.
5699
+ */
5700
+ get mapObjects(): MapObject[];
5701
+ /** @internal */
5702
+ get focusTarget(): TFocusTarget[];
5703
+ /**
5704
+ * @internal
5705
+ */
5706
+ get navigationTarget(): TNavigationTarget[];
5707
+ toJSON(): {
5708
+ id: string;
5709
+ name: string;
5710
+ };
5711
+ }
5712
+ export default LocationProfile;
5713
+ }
5714
+
5715
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/location-category' {
5716
+ import type { CategoryId, Category as MVFCategory } from '@mappedin/mvf';
5717
+ import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
5718
+ import type { LocationProfile, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
5719
+ class LocationCategory extends BaseMetaData implements Omit<MVFCategory, 'parent'> {
5720
+ #private;
5721
+ /**
5722
+ * Checks if the provided instance is of type EnterpriseLocation.
5723
+ *
5724
+ * @param instance The instance to check.
5725
+ * @returns {boolean} True if the instance is a EnterpriseLocation, false otherwise.
5726
+ */
5727
+ static is(instance: object): instance is LocationCategory;
5728
+ /**
5729
+ * @internal
5730
+ */
5731
+ static readonly __type = "location-category";
5732
+ /**
5733
+ * @internal
5734
+ */
5735
+ readonly __type = "location-category";
5736
+ id: CategoryId;
5737
+ name: string;
5738
+ /**
5739
+ * The category's icon
5740
+ *
5741
+ * @format uri
5742
+ */
5743
+ icon: string;
5744
+ constructor(data: MapDataInternal, options: {
5745
+ mvfData: MVFCategory;
5746
+ });
5747
+ /**
5748
+ * Gets the parent {@link LocationCategory}.
5749
+ *
5750
+ * @returns {LocationCategory | undefined} The parent location category.
5751
+ */
5752
+ get parent(): LocationCategory | undefined;
5753
+ /**
5754
+ * Gets the children {@link LocationCategory}s.
5755
+ */
5756
+ get children(): LocationCategory[];
5757
+ /**
5758
+ * Gets the {@link LocationProfile}s that are associated with this category.
5759
+ */
5760
+ get locationProfiles(): LocationProfile[];
5761
+ toJSON(): {
5762
+ id: string;
5763
+ name: string;
5764
+ };
5765
+ }
5766
+ export default LocationCategory;
5767
+ }
5768
+
5487
5769
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/shapes' {
5488
5770
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
5489
5771
  import { Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
@@ -5649,16 +5931,16 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5649
5931
  dynamicResize: z.ZodOptional<z.ZodBoolean>;
5650
5932
  zIndex: z.ZodOptional<z.ZodNumber>;
5651
5933
  }, "strip", z.ZodTypeAny, {
5652
- interactive?: boolean | "pointer-events-auto" | undefined;
5653
- id?: string | undefined;
5654
5934
  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;
5935
+ id?: string | undefined;
5936
+ interactive?: boolean | "pointer-events-auto" | undefined;
5655
5937
  dynamicResize?: boolean | undefined;
5656
5938
  zIndex?: number | undefined;
5657
5939
  rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5658
5940
  }, {
5659
- interactive?: boolean | "pointer-events-auto" | undefined;
5660
- id?: string | undefined;
5661
5941
  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;
5942
+ id?: string | undefined;
5943
+ interactive?: boolean | "pointer-events-auto" | undefined;
5662
5944
  dynamicResize?: boolean | undefined;
5663
5945
  zIndex?: number | undefined;
5664
5946
  rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
@@ -5695,6 +5977,10 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5695
5977
  * Dynamic resize of the marker. If set to true, the marker will resize based on the content.
5696
5978
  */
5697
5979
  dynamicResize?: boolean;
5980
+ /**
5981
+ * @internal
5982
+ */
5983
+ occluderId?: number;
5698
5984
  /**
5699
5985
  * The z-index of the marker. Can be used used in conjunction with rank: 'always-visible' to make certain markers appear over others
5700
5986
  */
@@ -5718,6 +6004,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5718
6004
  */
5719
6005
  canShow: boolean;
5720
6006
  visible: boolean;
6007
+ isOccluded: boolean;
5721
6008
  offscreen: boolean;
5722
6009
  strategyIndex: number;
5723
6010
  activeBoundingBox: {
@@ -5878,16 +6165,16 @@ declare module '@mappedin/react-sdk/geojson/src/components/path' {
5878
6165
  displayArrowsOnPath: z.ZodOptional<z.ZodBoolean>;
5879
6166
  animateArrowsOnPath: z.ZodOptional<z.ZodBoolean>;
5880
6167
  }, "strip", z.ZodTypeAny, {
5881
- interactive?: boolean | undefined;
5882
6168
  id?: string | undefined;
6169
+ interactive?: boolean | undefined;
5883
6170
  accentColor?: string | undefined;
5884
6171
  displayArrowsOnPath?: boolean | undefined;
5885
6172
  animateArrowsOnPath?: boolean | undefined;
5886
6173
  nearRadius?: number | undefined;
5887
6174
  farRadius?: number | undefined;
5888
6175
  }, {
5889
- interactive?: boolean | undefined;
5890
6176
  id?: string | undefined;
6177
+ interactive?: boolean | undefined;
5891
6178
  accentColor?: string | undefined;
5892
6179
  displayArrowsOnPath?: boolean | undefined;
5893
6180
  animateArrowsOnPath?: boolean | undefined;
@@ -6324,6 +6611,10 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
6324
6611
  * @internal
6325
6612
  */
6326
6613
  id?: string;
6614
+ /**
6615
+ * @internal
6616
+ */
6617
+ occluderId?: number;
6327
6618
  };
6328
6619
  type TStyle = {
6329
6620
  top?: number;
@@ -6437,6 +6728,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
6437
6728
  options: LabelOptions;
6438
6729
  visible: boolean;
6439
6730
  enabled: boolean;
6731
+ isOccluded: boolean;
6440
6732
  offscreen: boolean;
6441
6733
  /**
6442
6734
  * Whether the label can be shown, which is decided by the collision engine
@@ -6499,6 +6791,7 @@ declare module '@mappedin/react-sdk/geojson/src/entities/group-container' {
6499
6791
  import type { InteractionComponent } from '@mappedin/react-sdk/geojson/src/components/interaction';
6500
6792
  import type { BatchedText } from '@mappedin/react-sdk/geojson/src/services/text3d/text3d';
6501
6793
  import type { EntityTypes } from '@mappedin/react-sdk/geojson/src/renderer';
6794
+ import type { Feature, MultiPolygon, Polygon } from 'geojson';
6502
6795
  export enum GroupContainerComponents {
6503
6796
  Stack = 0,
6504
6797
  Interaction = 1
@@ -6531,9 +6824,13 @@ declare module '@mappedin/react-sdk/geojson/src/entities/group-container' {
6531
6824
  entityId: string | number;
6532
6825
  entities2D: Set<string | number>;
6533
6826
  dirty: boolean;
6827
+ occluderDirty: boolean;
6828
+ occluderId?: number;
6829
+ occluderFeature?: Feature<Polygon | MultiPolygon, any>;
6534
6830
  };
6535
6831
  components: [StackComponent?, InteractionComponent?];
6536
6832
  constructor(id: string);
6833
+ addOccluderFeature(feature: Feature<Polygon | MultiPolygon, any>, occluderId: number): void;
6537
6834
  addEntity(entityGroupOrContainer: GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | Geometry3DTypes): void;
6538
6835
  removeEntity(entityGroupOrContainer: EntityTypes): void;
6539
6836
  setVisible(visible: boolean): void;
@@ -6579,10 +6876,18 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry-group' {
6579
6876
  * The opacity of the geometry group. This will affect all children of the geometry group and override their opacity.
6580
6877
  */
6581
6878
  opacity: number;
6879
+ /**
6880
+ * The initial color of the geometry and its children. This is used to reset the color of the geometry to its initial value.
6881
+ */
6882
+ initialColor: string;
6582
6883
  /**
6583
6884
  * The color of the geometry and its children. Updating this will affect any children whose color was not updated after generation
6584
6885
  */
6585
6886
  color: string;
6887
+ /**
6888
+ * The initial top color of the geometry and its children. This is used to reset the top color of the geometry to its initial value.
6889
+ */
6890
+ initialTopColor?: string;
6586
6891
  /**
6587
6892
  * The top color of the geometry and its children. Updating this will affect any children whose top color was not updated after generation
6588
6893
  */
@@ -6778,15 +7083,23 @@ declare module '@mappedin/react-sdk/geojson/src/types' {
6778
7083
  export * from '@mappedin/react-sdk/geojson/src/types/options';
6779
7084
  export type ModelProperties = {
6780
7085
  rotation?: [number, number, number];
6781
- altitude?: number;
6782
7086
  scale?: [number, number, number];
6783
7087
  interactive?: boolean;
6784
7088
  id?: string | number;
7089
+ verticalOffset?: number;
6785
7090
  };
6786
- export type ModelStyle = {
7091
+ export type ModelGroupStyle = {
6787
7092
  url: string;
6788
7093
  color?: string;
6789
7094
  opacity?: number;
7095
+ /**
7096
+ * traverse the scene and update the materials by name
7097
+ */
7098
+ material?: {
7099
+ [name: string]: {
7100
+ color: string;
7101
+ };
7102
+ };
6790
7103
  };
6791
7104
  export type InsetPadding = {
6792
7105
  top: number;
@@ -6926,6 +7239,10 @@ declare module '@mappedin/react-sdk/geojson/src/types' {
6926
7239
  * Fired before the scene is rendered. Use this to modify the scene before it is rendered.
6927
7240
  */
6928
7241
  'pre-render': undefined;
7242
+ /**
7243
+ * Fired when the synchronous tasks of the scene render are complete.
7244
+ */
7245
+ 'post-render': undefined;
6929
7246
  };
6930
7247
  /**
6931
7248
  * The payload of an event. See also {@link MapEvent}.
@@ -7015,6 +7332,10 @@ declare module '@mappedin/react-sdk/geojson/src/components/mesh' {
7015
7332
  * The color of the geometry
7016
7333
  */
7017
7334
  color: string;
7335
+ /**
7336
+ * The initial top color of the geometry. This is used to reset the top color of the geometry to its initial value.
7337
+ */
7338
+ initialTopColor?: string;
7018
7339
  /**
7019
7340
  * The color of geometry faces that are facing up
7020
7341
  */
@@ -7192,24 +7513,28 @@ declare module '@mappedin/react-sdk/geojson/src/components/custom' {
7192
7513
  constructor(feature: Feature<Point>, builder: CustomGeometryBuilder);
7193
7514
  get visible(): boolean;
7194
7515
  set visible(value: boolean);
7195
- setOpacity(): void;
7516
+ set opacity(_v: number);
7517
+ get opacity(): number;
7196
7518
  color: Color;
7197
7519
  setColor(): void;
7198
7520
  get position(): import("three").Vector3;
7199
7521
  get altitude(): number;
7200
7522
  set altitude(value: number);
7523
+ get renderOrder(): number;
7524
+ set renderOrder(_: number);
7201
7525
  }
7202
7526
  }
7203
7527
 
7204
7528
  declare module '@mappedin/react-sdk/geojson/src/components/model' {
7205
- import type { LineSegments, Object3D } from 'three';
7529
+ import type { Group, LineSegments, Object3D } from 'three';
7206
7530
  import { Color, Vector3 } from 'three';
7207
7531
  import type { BatchedStandardMaterial } from '@mappedin/react-sdk/geojson/src/systems/mesh-creation-and-optimization/batched-material';
7208
- import type { Position, EntityId, ModelProperties, ModelStyle } from '@mappedin/react-sdk/geojson/src/types';
7532
+ import type { Position, EntityId, ModelProperties, ModelGroupStyle } from '@mappedin/react-sdk/geojson/src/types';
7209
7533
  import type { Feature, FeatureCollection, Point } from 'geojson';
7210
7534
  import type { Geometry3DObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
7211
7535
  import type { GeometryGroupState } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
7212
7536
  import { z } from 'zod';
7537
+ import type { ModelStyle } from '@mappedin/react-sdk/geojson/src/components/styles';
7213
7538
  /**
7214
7539
  * State representing a Model, typically loaded via a URL
7215
7540
  */
@@ -7233,25 +7558,38 @@ declare module '@mappedin/react-sdk/geojson/src/components/model' {
7233
7558
  * ```
7234
7559
  */
7235
7560
  interactive: boolean;
7236
- };
7561
+ } & Partial<ModelStyle>;
7562
+ /**
7563
+ * initialize model state
7564
+ * @interface
7565
+ */
7566
+ export type InitializeModelState = Omit<Partial<Omit<ModelState, 'url'> & Pick<ModelStyle, 'url'>>, 'id' | 'type' | 'parent' | 'position'>;
7567
+ /**
7568
+ * updatable model state
7569
+ * @interface
7570
+ */
7571
+ export type UpdateModelState = Omit<InitializeModelState, 'url'>;
7237
7572
  export const modelPropertiesSchema: z.ZodObject<{
7238
7573
  rotation: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
7239
7574
  altitude: z.ZodOptional<z.ZodNumber>;
7240
7575
  scale: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
7241
7576
  interactive: z.ZodOptional<z.ZodBoolean>;
7577
+ verticalOffset: z.ZodOptional<z.ZodNumber>;
7242
7578
  id: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
7243
7579
  }, "strip", z.ZodTypeAny, {
7244
- rotation?: number[] | undefined;
7245
7580
  altitude?: number | undefined;
7246
- scale?: number[] | undefined;
7247
- interactive?: boolean | undefined;
7581
+ verticalOffset?: number | undefined;
7248
7582
  id?: string | number | undefined;
7249
- }, {
7583
+ interactive?: boolean | undefined;
7250
7584
  rotation?: number[] | undefined;
7251
- altitude?: number | undefined;
7252
7585
  scale?: number[] | undefined;
7253
- interactive?: boolean | undefined;
7586
+ }, {
7587
+ altitude?: number | undefined;
7588
+ verticalOffset?: number | undefined;
7254
7589
  id?: string | number | undefined;
7590
+ interactive?: boolean | undefined;
7591
+ rotation?: number[] | undefined;
7592
+ scale?: number[] | undefined;
7255
7593
  }>;
7256
7594
  export const featureSchema: z.ZodObject<{
7257
7595
  type: z.ZodEnum<["Feature"]>;
@@ -7270,19 +7608,22 @@ declare module '@mappedin/react-sdk/geojson/src/components/model' {
7270
7608
  altitude: z.ZodOptional<z.ZodNumber>;
7271
7609
  scale: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
7272
7610
  interactive: z.ZodOptional<z.ZodBoolean>;
7611
+ verticalOffset: z.ZodOptional<z.ZodNumber>;
7273
7612
  id: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
7274
7613
  }, "strip", z.ZodTypeAny, {
7275
- rotation?: number[] | undefined;
7276
7614
  altitude?: number | undefined;
7277
- scale?: number[] | undefined;
7278
- interactive?: boolean | undefined;
7615
+ verticalOffset?: number | undefined;
7279
7616
  id?: string | number | undefined;
7280
- }, {
7617
+ interactive?: boolean | undefined;
7281
7618
  rotation?: number[] | undefined;
7282
- altitude?: number | undefined;
7283
7619
  scale?: number[] | undefined;
7284
- interactive?: boolean | undefined;
7620
+ }, {
7621
+ altitude?: number | undefined;
7622
+ verticalOffset?: number | undefined;
7285
7623
  id?: string | number | undefined;
7624
+ interactive?: boolean | undefined;
7625
+ rotation?: number[] | undefined;
7626
+ scale?: number[] | undefined;
7286
7627
  }>;
7287
7628
  }, "strip", z.ZodTypeAny, {
7288
7629
  type: "Feature";
@@ -7291,11 +7632,12 @@ declare module '@mappedin/react-sdk/geojson/src/components/model' {
7291
7632
  coordinates: number[];
7292
7633
  };
7293
7634
  properties: {
7294
- rotation?: number[] | undefined;
7295
7635
  altitude?: number | undefined;
7296
- scale?: number[] | undefined;
7297
- interactive?: boolean | undefined;
7636
+ verticalOffset?: number | undefined;
7298
7637
  id?: string | number | undefined;
7638
+ interactive?: boolean | undefined;
7639
+ rotation?: number[] | undefined;
7640
+ scale?: number[] | undefined;
7299
7641
  };
7300
7642
  }, {
7301
7643
  type: "Feature";
@@ -7304,11 +7646,12 @@ declare module '@mappedin/react-sdk/geojson/src/components/model' {
7304
7646
  coordinates: number[];
7305
7647
  };
7306
7648
  properties: {
7307
- rotation?: number[] | undefined;
7308
7649
  altitude?: number | undefined;
7309
- scale?: number[] | undefined;
7310
- interactive?: boolean | undefined;
7650
+ verticalOffset?: number | undefined;
7311
7651
  id?: string | number | undefined;
7652
+ interactive?: boolean | undefined;
7653
+ rotation?: number[] | undefined;
7654
+ scale?: number[] | undefined;
7312
7655
  };
7313
7656
  }>;
7314
7657
  export const addModelFeatureSchema: z.ZodObject<{
@@ -7330,19 +7673,22 @@ declare module '@mappedin/react-sdk/geojson/src/components/model' {
7330
7673
  altitude: z.ZodOptional<z.ZodNumber>;
7331
7674
  scale: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
7332
7675
  interactive: z.ZodOptional<z.ZodBoolean>;
7676
+ verticalOffset: z.ZodOptional<z.ZodNumber>;
7333
7677
  id: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
7334
7678
  }, "strip", z.ZodTypeAny, {
7335
- rotation?: number[] | undefined;
7336
7679
  altitude?: number | undefined;
7337
- scale?: number[] | undefined;
7338
- interactive?: boolean | undefined;
7680
+ verticalOffset?: number | undefined;
7339
7681
  id?: string | number | undefined;
7340
- }, {
7682
+ interactive?: boolean | undefined;
7341
7683
  rotation?: number[] | undefined;
7342
- altitude?: number | undefined;
7343
7684
  scale?: number[] | undefined;
7344
- interactive?: boolean | undefined;
7685
+ }, {
7686
+ altitude?: number | undefined;
7687
+ verticalOffset?: number | undefined;
7345
7688
  id?: string | number | undefined;
7689
+ interactive?: boolean | undefined;
7690
+ rotation?: number[] | undefined;
7691
+ scale?: number[] | undefined;
7346
7692
  }>;
7347
7693
  }, "strip", z.ZodTypeAny, {
7348
7694
  type: "Feature";
@@ -7351,11 +7697,12 @@ declare module '@mappedin/react-sdk/geojson/src/components/model' {
7351
7697
  coordinates: number[];
7352
7698
  };
7353
7699
  properties: {
7354
- rotation?: number[] | undefined;
7355
7700
  altitude?: number | undefined;
7356
- scale?: number[] | undefined;
7357
- interactive?: boolean | undefined;
7701
+ verticalOffset?: number | undefined;
7358
7702
  id?: string | number | undefined;
7703
+ interactive?: boolean | undefined;
7704
+ rotation?: number[] | undefined;
7705
+ scale?: number[] | undefined;
7359
7706
  };
7360
7707
  }, {
7361
7708
  type: "Feature";
@@ -7364,11 +7711,12 @@ declare module '@mappedin/react-sdk/geojson/src/components/model' {
7364
7711
  coordinates: number[];
7365
7712
  };
7366
7713
  properties: {
7367
- rotation?: number[] | undefined;
7368
7714
  altitude?: number | undefined;
7369
- scale?: number[] | undefined;
7370
- interactive?: boolean | undefined;
7715
+ verticalOffset?: number | undefined;
7371
7716
  id?: string | number | undefined;
7717
+ interactive?: boolean | undefined;
7718
+ rotation?: number[] | undefined;
7719
+ scale?: number[] | undefined;
7372
7720
  };
7373
7721
  }>, "many">;
7374
7722
  }, "strip", z.ZodTypeAny, {
@@ -7380,11 +7728,12 @@ declare module '@mappedin/react-sdk/geojson/src/components/model' {
7380
7728
  coordinates: number[];
7381
7729
  };
7382
7730
  properties: {
7383
- rotation?: number[] | undefined;
7384
7731
  altitude?: number | undefined;
7385
- scale?: number[] | undefined;
7386
- interactive?: boolean | undefined;
7732
+ verticalOffset?: number | undefined;
7387
7733
  id?: string | number | undefined;
7734
+ interactive?: boolean | undefined;
7735
+ rotation?: number[] | undefined;
7736
+ scale?: number[] | undefined;
7388
7737
  };
7389
7738
  }[];
7390
7739
  }, {
@@ -7396,31 +7745,45 @@ declare module '@mappedin/react-sdk/geojson/src/components/model' {
7396
7745
  coordinates: number[];
7397
7746
  };
7398
7747
  properties: {
7399
- rotation?: number[] | undefined;
7400
7748
  altitude?: number | undefined;
7401
- scale?: number[] | undefined;
7402
- interactive?: boolean | undefined;
7749
+ verticalOffset?: number | undefined;
7403
7750
  id?: string | number | undefined;
7751
+ interactive?: boolean | undefined;
7752
+ rotation?: number[] | undefined;
7753
+ scale?: number[] | undefined;
7404
7754
  };
7405
7755
  }[];
7406
7756
  }>;
7407
- export const modelStyleSchema: z.ZodObject<{
7757
+ export const modelGroupStyleSchema: z.ZodObject<{
7408
7758
  url: z.ZodString;
7409
7759
  color: z.ZodOptional<z.ZodString>;
7410
7760
  opacity: z.ZodOptional<z.ZodNumber>;
7761
+ material: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
7762
+ color: z.ZodString;
7763
+ }, "strip", z.ZodTypeAny, {
7764
+ color: string;
7765
+ }, {
7766
+ color: string;
7767
+ }>>>;
7411
7768
  }, "strip", z.ZodTypeAny, {
7412
7769
  url: string;
7413
7770
  color?: string | undefined;
7414
7771
  opacity?: number | undefined;
7772
+ material?: Record<string, {
7773
+ color: string;
7774
+ }> | undefined;
7415
7775
  }, {
7416
7776
  url: string;
7417
7777
  color?: string | undefined;
7418
7778
  opacity?: number | undefined;
7779
+ material?: Record<string, {
7780
+ color: string;
7781
+ }> | undefined;
7419
7782
  }>;
7420
- export function validateModelGroup(id: string | number, geometry: FeatureCollection<Point, ModelProperties>, style: ModelStyle): void;
7783
+ export function validateModelGroup(id: string | number, geometry: FeatureCollection<Point, ModelProperties>, style: Partial<ModelGroupStyle>): void;
7421
7784
  export class ModelComponent {
7422
7785
  #private;
7423
- mesh?: Geometry3DObject3D;
7786
+ mesh?: Geometry3DObject3D | Group;
7424
7787
  readonly type = "model";
7425
7788
  outline?: LineSegments;
7426
7789
  geometry?: Object3D;
@@ -7442,7 +7805,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/model' {
7442
7805
 
7443
7806
  declare module '@mappedin/react-sdk/geojson/src/renderer' {
7444
7807
  import './utils/object-this-polyfill';
7445
- import { Vector3, Raycaster, Camera as ThreeCamera } from 'three';
7808
+ import { Scene, Vector3, Raycaster, Camera as ThreeCamera } from 'three';
7446
7809
  import type { GroupContainerState } from '@mappedin/react-sdk/geojson/src/entities/group-container';
7447
7810
  import { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
7448
7811
  import { PubSub } from '@mappedin/react-sdk/packages/common/pubsub';
@@ -7453,7 +7816,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7453
7816
  import type { GLTFExportOptions } from '@mappedin/react-sdk/geojson/src/systems/exporter';
7454
7817
  import { ExporterSystem } from '@mappedin/react-sdk/geojson/src/systems/exporter';
7455
7818
  import type { AddLabelOptions, LabelState } from '@mappedin/react-sdk/geojson/src/components/label';
7456
- import type { LineStyle, PaintStyle, RendererCoreOptions, Position, ModelProperties, ModelStyle, EntityState, EntityId, MapEvent, MapEventPayload, RendererState, EntityTypes } from '@mappedin/react-sdk/geojson/src/types';
7819
+ import type { LineStyle, PaintStyle, RendererCoreOptions, Position, ModelProperties, EntityState, EntityId, MapEvent, MapEventPayload, RendererState, EntityTypes, EnvMapOptions } from '@mappedin/react-sdk/geojson/src/types';
7457
7820
  import { MeshCreationAndOptimizationSystem } from '@mappedin/react-sdk/geojson/src/systems/mesh-creation-and-optimization/system';
7458
7821
  import { DOMVisibilitySystem } from '@mappedin/react-sdk/geojson/src/systems/dom-visiblity/system';
7459
7822
  import { TwoDProjectionSystem } from '@mappedin/react-sdk/geojson/src/systems/2d-projection/system';
@@ -7468,7 +7831,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7468
7831
  import { DOMDrawSystem } from '@mappedin/react-sdk/geojson/src/systems/dom-draw/system';
7469
7832
  import { type Map as MapLibreMap } from '@mappedin/react-sdk/packages/outdoor-context-v4';
7470
7833
  import type { GeometryState } from '@mappedin/react-sdk/geojson/src/components/mesh';
7471
- import type { ModelState } from '@mappedin/react-sdk/geojson/src/components/model';
7834
+ import type { InitializeModelState, ModelState, UpdateModelState } from '@mappedin/react-sdk/geojson/src/components/model';
7472
7835
  import type { GeometryGroupState } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
7473
7836
  import { DOMResizeSystem } from '@mappedin/react-sdk/geojson/src/systems/dom-resize/system';
7474
7837
  import { Camera } from '@mappedin/react-sdk/geojson/src/camera';
@@ -7486,10 +7849,10 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7486
7849
  import type { AddText3DOptions, Text3DState, UpdatableText3DState } from '@mappedin/react-sdk/geojson/src/components/text3d';
7487
7850
  import { MeshDetachmentSystem } from '@mappedin/react-sdk/geojson/src/systems/mesh-detachment/system';
7488
7851
  import { MeshModificationSystem } from '@mappedin/react-sdk/geojson/src/systems/mesh-modification/system';
7489
- import { PreRenderSystem } from '@mappedin/react-sdk/geojson/src/systems/pre-render/system';
7490
7852
  import { Text3DSystem } from '@mappedin/react-sdk/geojson/src/systems/text3d/system';
7491
7853
  import { Group as TweenGroup } from '@tweenjs/tween.js';
7492
7854
  import { Debug } from '@mappedin/react-sdk/geojson/src/utils/debug';
7855
+ import { Occlusion2DSystem } from '@mappedin/react-sdk/geojson/src/systems/2d-occlusion/system';
7493
7856
  export type * from '@mappedin/react-sdk/geojson/src/types';
7494
7857
  export const raycaster: Raycaster;
7495
7858
  /**
@@ -7530,8 +7893,8 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7530
7893
  geometryInFocusSystem: GeometryInFocusSystem;
7531
7894
  meshDetachmentSystem: MeshDetachmentSystem;
7532
7895
  meshModificationSystem: MeshModificationSystem;
7533
- preRenderSystem: PreRenderSystem;
7534
7896
  text3DSystem: Text3DSystem;
7897
+ occlusion2DSystem: Occlusion2DSystem;
7535
7898
  };
7536
7899
  export type MapViewState = {
7537
7900
  readonly type: 'map-view';
@@ -7592,11 +7955,15 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7592
7955
  * Add a geometry group from GeoJSON data
7593
7956
  */
7594
7957
  addGeometryGroup<T extends FeatureCollection<Polygon | MultiPolygon | LineString, any>>(id: string, geometry: T, style?: T extends FeatureCollection<LineString, any> ? LineStyle : PaintStyle, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<GeometryGroupState>;
7958
+ addOccluder<T extends Feature<Polygon | MultiPolygon, any>>(feature: T, parent?: EntityId<GroupContainerState> | string | number | null): number;
7595
7959
  addImage(id: string, geometry: Feature<Point, ImageProperties>, style: ImageStyle, parent?: EntityId<GroupContainerState> | string | null): EntityId<ImageState> | undefined;
7596
7960
  /**
7597
7961
  * Add a group of models from GeoJSON data. These will be instanced automatically for better performance.
7598
7962
  */
7599
- addModelGroup(id: string, geometry: FeatureCollection<Point, ModelProperties>, style: ModelStyle, parent?: EntityId<GroupContainerState> | string | null): EntityId<GeometryGroupState> | undefined;
7963
+ addModelGroup(id: string, geometry: FeatureCollection<Point, ModelProperties>, style: Partial<InitializeModelState>, { parent, onComplete: onAdd, }?: {
7964
+ parent?: EntityId<GroupContainerState> | string | null;
7965
+ onComplete?: () => void;
7966
+ }): EntityId<GeometryGroupState> | undefined;
7600
7967
  /**
7601
7968
  * Add an HTML Marker at a GeoJSON coordinate.
7602
7969
  */
@@ -7657,6 +8024,9 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7657
8024
  * Recursively get the state for the whole scene. Can be an expensive operation.
7658
8025
  */
7659
8026
  getScene(): GroupContainerState;
8027
+ getThreeScene(): Scene | undefined;
8028
+ setEnvironment(update: EnvMapOptions): Promise<void>;
8029
+ getEnvironment(): EnvMapOptions;
7660
8030
  /**
7661
8031
  * Get the current scene as a GLB file
7662
8032
  */
@@ -7683,7 +8053,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7683
8053
  setState<T extends EntityId<GeometryState>>(object: T | T['id'], state: Partial<GeometryState>): void;
7684
8054
  setState<T extends EntityId<ShapeState>>(object: T | T['id'], state: Partial<ShapeState>): void;
7685
8055
  setState<T extends EntityId<PathState>>(object: T | T['id'], state: PathUpdateState): void;
7686
- setState<T extends EntityId<ModelState>>(object: T | T['id'], state: Partial<ModelState>): void;
8056
+ setState<T extends EntityId<ModelState>>(object: T | T['id'], state: Partial<UpdateModelState>): void;
7687
8057
  setState<T extends EntityId<ImageState>>(object: T | T['id'], state: Partial<ImageState>): void;
7688
8058
  setState<T extends EntityId<Text3DState>>(object: T | T['id'], state: Partial<UpdatableText3DState>): void;
7689
8059
  setState<T extends EntityState>(object: T | T['id'], state: Partial<T>): void;
@@ -7723,11 +8093,15 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7723
8093
  /**
7724
8094
  * Sets the background color of the renderer. Only applies to "standalone mode"
7725
8095
  */
7726
- setBackgroundColor: (color: any, alpha: any) => void;
8096
+ setBackgroundColor: (color: string, alpha: number) => void;
7727
8097
  /**
7728
8098
  * Returns the background color of the renderer. Only applies to "standalone mode"
7729
8099
  */
7730
- get backgroundColor(): import("three").Color;
8100
+ get backgroundColor(): string;
8101
+ /**
8102
+ * Returns the background alpha of the renderer. Only applies to "standalone mode"
8103
+ */
8104
+ get backgroundAlpha(): number;
7731
8105
  /**
7732
8106
  * internal
7733
8107
  */
@@ -7778,7 +8152,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7778
8152
  *
7779
8153
  * Note: Only use this if you have an animation frame setup elsewhere
7780
8154
  */
7781
- renderSync: () => Promise<any>;
8155
+ renderSync: () => Promise<any> | undefined;
7782
8156
  /**
7783
8157
  * @internal for testing
7784
8158
  */
@@ -7985,7 +8359,7 @@ declare module '@mappedin/react-sdk/geojson/src/camera' {
7985
8359
  /**
7986
8360
  * The camera's current pan mode.
7987
8361
  */
7988
- get panMode(): "elevation" | "default";
8362
+ get panMode(): "default" | "elevation";
7989
8363
  /**
7990
8364
  * Set the camera's pan mode. 'elevation' moves the camera up and down, while 'default' allows the camera to pan along the ground.
7991
8365
  */
@@ -7996,6 +8370,10 @@ declare module '@mappedin/react-sdk/geojson/src/camera' {
7996
8370
  */
7997
8371
  setInsetPadding(padding: InsetPadding): void;
7998
8372
  animateTo(options: AnimateToOptions): Promise<void>;
8373
+ getCameraFrameForCoordinates(coordinates: (GeoJSONPosition | Position)[], options?: FocusOnOptions): {
8374
+ center: Position;
8375
+ zoomLevel: number;
8376
+ };
7999
8377
  /**
8000
8378
  * Focuses the camera on a set of coordinates, with optional animation
8001
8379
  *
@@ -8099,10 +8477,8 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8099
8477
  content: z.ZodString;
8100
8478
  }, "strip", z.ZodTypeAny, {
8101
8479
  type: "text3d";
8102
- id: string | number;
8103
- color: string;
8104
- position: [number, number, number];
8105
8480
  visible: boolean;
8481
+ color: string;
8106
8482
  flipToFaceCamera: boolean;
8107
8483
  fontSize: number;
8108
8484
  margin: number | [number, number, number, number];
@@ -8116,6 +8492,8 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8116
8492
  strokeOpacity: number;
8117
8493
  strokeColor: string;
8118
8494
  fillOpacity: number;
8495
+ id: string | number;
8496
+ position: [number, number, number];
8119
8497
  content: string;
8120
8498
  maxWidth?: number | undefined;
8121
8499
  font?: string | undefined;
@@ -8123,10 +8501,8 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8123
8501
  hoverColor?: string | undefined;
8124
8502
  }, {
8125
8503
  type: "text3d";
8126
- id: string | number;
8127
- color: string;
8128
- position: [number, number, number];
8129
8504
  visible: boolean;
8505
+ color: string;
8130
8506
  flipToFaceCamera: boolean;
8131
8507
  fontSize: number;
8132
8508
  margin: number | [number, number, number, number];
@@ -8140,6 +8516,8 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8140
8516
  strokeOpacity: number;
8141
8517
  strokeColor: string;
8142
8518
  fillOpacity: number;
8519
+ id: string | number;
8520
+ position: [number, number, number];
8143
8521
  content: string;
8144
8522
  maxWidth?: number | undefined;
8145
8523
  font?: string | undefined;
@@ -8176,9 +8554,8 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8176
8554
  content: z.ZodOptional<z.ZodString>;
8177
8555
  }, "type" | "id">, "strict", z.ZodTypeAny, {
8178
8556
  maxWidth?: number | undefined;
8179
- color?: string | undefined;
8180
- position?: [number, number, number] | undefined;
8181
8557
  visible?: boolean | undefined;
8558
+ color?: string | undefined;
8182
8559
  flipToFaceCamera?: boolean | undefined;
8183
8560
  font?: string | undefined;
8184
8561
  fontSize?: number | undefined;
@@ -8195,12 +8572,12 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8195
8572
  strokeColor?: string | undefined;
8196
8573
  fillOpacity?: number | undefined;
8197
8574
  hoverColor?: string | undefined;
8575
+ position?: [number, number, number] | undefined;
8198
8576
  content?: string | undefined;
8199
8577
  }, {
8200
8578
  maxWidth?: number | undefined;
8201
- color?: string | undefined;
8202
- position?: [number, number, number] | undefined;
8203
8579
  visible?: boolean | undefined;
8580
+ color?: string | undefined;
8204
8581
  flipToFaceCamera?: boolean | undefined;
8205
8582
  font?: string | undefined;
8206
8583
  fontSize?: number | undefined;
@@ -8217,6 +8594,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8217
8594
  strokeColor?: string | undefined;
8218
8595
  fillOpacity?: number | undefined;
8219
8596
  hoverColor?: string | undefined;
8597
+ position?: [number, number, number] | undefined;
8220
8598
  content?: string | undefined;
8221
8599
  }>;
8222
8600
  /**
@@ -8249,9 +8627,9 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8249
8627
  type: z.ZodOptional<z.ZodLiteral<"text3d">>;
8250
8628
  position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
8251
8629
  content: z.ZodOptional<z.ZodString>;
8252
- }, "type" | "id">, "maxWidth" | "position" | "margin" | "maxHeight" | "content">, "strict", z.ZodTypeAny, {
8253
- color?: string | undefined;
8630
+ }, "type" | "id">, "maxWidth" | "margin" | "maxHeight" | "position" | "content">, "strict", z.ZodTypeAny, {
8254
8631
  visible?: boolean | undefined;
8632
+ color?: string | undefined;
8255
8633
  flipToFaceCamera?: boolean | undefined;
8256
8634
  font?: string | undefined;
8257
8635
  fontSize?: number | undefined;
@@ -8267,8 +8645,8 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8267
8645
  fillOpacity?: number | undefined;
8268
8646
  hoverColor?: string | undefined;
8269
8647
  }, {
8270
- color?: string | undefined;
8271
8648
  visible?: boolean | undefined;
8649
+ color?: string | undefined;
8272
8650
  flipToFaceCamera?: boolean | undefined;
8273
8651
  font?: string | undefined;
8274
8652
  fontSize?: number | undefined;
@@ -8319,9 +8697,8 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8319
8697
  content: z.ZodOptional<z.ZodString>;
8320
8698
  }, "type" | "id">, "strict", z.ZodTypeAny, {
8321
8699
  maxWidth?: number | undefined;
8322
- color?: string | undefined;
8323
- position?: [number, number, number] | undefined;
8324
8700
  visible?: boolean | undefined;
8701
+ color?: string | undefined;
8325
8702
  flipToFaceCamera?: boolean | undefined;
8326
8703
  font?: string | undefined;
8327
8704
  fontSize?: number | undefined;
@@ -8338,12 +8715,12 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8338
8715
  strokeColor?: string | undefined;
8339
8716
  fillOpacity?: number | undefined;
8340
8717
  hoverColor?: string | undefined;
8718
+ position?: [number, number, number] | undefined;
8341
8719
  content?: string | undefined;
8342
8720
  }, {
8343
8721
  maxWidth?: number | undefined;
8344
- color?: string | undefined;
8345
- position?: [number, number, number] | undefined;
8346
8722
  visible?: boolean | undefined;
8723
+ color?: string | undefined;
8347
8724
  flipToFaceCamera?: boolean | undefined;
8348
8725
  font?: string | undefined;
8349
8726
  fontSize?: number | undefined;
@@ -8360,6 +8737,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8360
8737
  strokeColor?: string | undefined;
8361
8738
  fillOpacity?: number | undefined;
8362
8739
  hoverColor?: string | undefined;
8740
+ position?: [number, number, number] | undefined;
8363
8741
  content?: string | undefined;
8364
8742
  }>>;
8365
8743
  parentId: z.ZodOptional<z.ZodString>;
@@ -8367,9 +8745,8 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8367
8745
  parentId?: string | undefined;
8368
8746
  appearance?: {
8369
8747
  maxWidth?: number | undefined;
8370
- color?: string | undefined;
8371
- position?: [number, number, number] | undefined;
8372
8748
  visible?: boolean | undefined;
8749
+ color?: string | undefined;
8373
8750
  flipToFaceCamera?: boolean | undefined;
8374
8751
  font?: string | undefined;
8375
8752
  fontSize?: number | undefined;
@@ -8386,15 +8763,15 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8386
8763
  strokeColor?: string | undefined;
8387
8764
  fillOpacity?: number | undefined;
8388
8765
  hoverColor?: string | undefined;
8766
+ position?: [number, number, number] | undefined;
8389
8767
  content?: string | undefined;
8390
8768
  } | undefined;
8391
8769
  }, {
8392
8770
  parentId?: string | undefined;
8393
8771
  appearance?: {
8394
8772
  maxWidth?: number | undefined;
8395
- color?: string | undefined;
8396
- position?: [number, number, number] | undefined;
8397
8773
  visible?: boolean | undefined;
8774
+ color?: string | undefined;
8398
8775
  flipToFaceCamera?: boolean | undefined;
8399
8776
  font?: string | undefined;
8400
8777
  fontSize?: number | undefined;
@@ -8411,6 +8788,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8411
8788
  strokeColor?: string | undefined;
8412
8789
  fillOpacity?: number | undefined;
8413
8790
  hoverColor?: string | undefined;
8791
+ position?: [number, number, number] | undefined;
8414
8792
  content?: string | undefined;
8415
8793
  } | undefined;
8416
8794
  }>;
@@ -8433,14 +8811,15 @@ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
8433
8811
  }
8434
8812
 
8435
8813
  declare module '@mappedin/react-sdk/geojson/src/entities/utils' {
8436
- import type { CollisionRankingTier, GeometryState, LabelState, RendererCore } from '@mappedin/react-sdk/geojson/src';
8814
+ import type { CollisionRankingTier, GeometryState, LabelState, ModelState, RendererCore } from '@mappedin/react-sdk/geojson/src';
8437
8815
  import { type MarkerState } from '@mappedin/react-sdk/geojson/src/components/marker';
8438
8816
  import type { PathUpdateState } from '@mappedin/react-sdk/geojson/src/components/path';
8439
8817
  import type { EntityTypes, All3DTypes, Position, RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
8440
8818
  import type { KeysOfUnion } from '@mappedin/react-sdk/geojson/src/utils';
8441
8819
  import { GeometryGroupObject3D, type GeometryGroupState } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
8442
8820
  import { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
8443
- import { Geometry3D, Geometry3DObject3D, type Geometry3DTypes, type TextGeometry3D } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
8821
+ import { Geometry3D, Geometry3DObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
8822
+ import type { ModelGeometry3D, Geometry3DTypes, TextGeometry3D } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
8444
8823
  import { Geometry2D, Geometry2DObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry2d';
8445
8824
  import type { StyleComponent } from '@mappedin/react-sdk/geojson/src/components/styles/style';
8446
8825
  import type { GeometryGroupStyleComponent } from '@mappedin/react-sdk/geojson/src/components/geometry-group-style';
@@ -8482,6 +8861,11 @@ declare module '@mappedin/react-sdk/geojson/src/entities/utils' {
8482
8861
  * Handle state update of the text3d geometry.
8483
8862
  */
8484
8863
  export function handleText3DUpdate(geometry: TextGeometry3D, update: Partial<Text3DState>): void;
8864
+ /**
8865
+ * @internal
8866
+ */
8867
+ export const MODEL_UPATE_PROPS: KeysOfUnion<ModelState>[];
8868
+ export function handleModelStyleUpdate(geometry: ModelGeometry3D, update: Partial<ModelState>): void;
8485
8869
  }
8486
8870
 
8487
8871
  declare module '@mappedin/react-sdk/packages/geojson-navigator' {
@@ -8587,11 +8971,13 @@ declare module '@mappedin/react-sdk/geojson/src/utils/debug' {
8587
8971
  import type Core from '@mappedin/react-sdk/geojson/src/renderer';
8588
8972
  const DEFAULT_DEBUG_STATE: {
8589
8973
  showPolygonLabelTextAreaMesh: boolean;
8974
+ showEnvMap: boolean;
8590
8975
  };
8591
8976
  export type DebugState = typeof DEFAULT_DEBUG_STATE;
8592
8977
  export class Debug {
8593
8978
  state: {
8594
8979
  showPolygonLabelTextAreaMesh: boolean;
8980
+ showEnvMap: boolean;
8595
8981
  };
8596
8982
  core: Core;
8597
8983
  constructor(core: Core);
@@ -8764,6 +9150,7 @@ declare module '@mappedin/react-sdk/geojson/src/systems/html-controls/system' {
8764
9150
  declare module '@mappedin/react-sdk/geojson/src/components/styles' {
8765
9151
  export { StyleComponent, DEFAULT_COLOR, type MaterialSide } from '@mappedin/react-sdk/geojson/src/components/styles/style';
8766
9152
  export { Text3DStyleComponent, type Text3DStyle, DEFAULT_TEXT_STYLE } from '@mappedin/react-sdk/geojson/src/components/styles/text-style';
9153
+ export { ModelStyleComponnet, type ModelStyle } from '@mappedin/react-sdk/geojson/src/components/styles/model-style';
8767
9154
  }
8768
9155
 
8769
9156
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
@@ -8775,7 +9162,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
8775
9162
  import { Facade, Coordinate, MapObject, Space, Floor, Door } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
8776
9163
  import type { MapView } from '@mappedin/react-sdk/mappedin-js/src/map-view';
8777
9164
  import { Label, Marker, Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
8778
- import { Text3D as Text3DView, type Image } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
9165
+ import { Text3D as Text3DView, Model, type Image } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
8779
9166
  import { Navigation } from '@mappedin/react-sdk/mappedin-js/src/navigation';
8780
9167
  import type { TGetState, TUpdateState } from '@mappedin/react-sdk/mappedin-js/src/types';
8781
9168
  import { Camera } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera';
@@ -8824,7 +9211,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
8824
9211
  get DynamicFocus(): import("..").DynamicFocus;
8825
9212
  get StackedMaps(): import("..").StackedMaps;
8826
9213
  constructor(rendererCore: RendererCore, mapView: MapView);
8827
- updateState<T extends Space | Text3DView | MapObject | Label | Shape | Marker | Door | Facade | WALLS | DOORS | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
9214
+ updateState<T extends Space | Text3DView | MapObject | Label | Shape | Marker | Model | Door | Facade | WALLS | DOORS | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
8828
9215
  update: () => void;
8829
9216
  getMapDataInternal(): MapDataInternal | undefined;
8830
9217
  getMapData(): MapData | undefined;
@@ -8834,7 +9221,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
8834
9221
  updateWatermark(options: WatermarkUpdateOptions): void;
8835
9222
  get currentFloorStack(): FloorStack;
8836
9223
  get currentFloor(): Floor;
8837
- getState<T extends Space | Text3DView | MapObject | Label | Marker | Image | Shape | string>(target: T): TGetState<T>;
9224
+ getState<T extends Space | Text3DView | MapObject | Label | Marker | Image | Shape | Model | string>(target: T): TGetState<T>;
8838
9225
  setHoverColor(c: string): void;
8839
9226
  getHoverColor(): string | undefined;
8840
9227
  createCoordinate(latitude: number, longitude: number, floor?: Floor): Coordinate;
@@ -8856,13 +9243,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
8856
9243
  import { PubSub } from '@packages/internal/common';
8857
9244
  import type { Position, AddLabelOptions, RendererCore, PathState, MarkerState, LineStyle, PaintStyle, EntityId } from '@mappedin/core-sdk';
8858
9245
  import { FloorObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-object';
8859
- import type { Coordinate, Directions, Floor, TAddMarkerOptions, TAddPathOptions, TShow3DMapOptions } from '@mappedin/react-sdk/mappedin-js/src';
9246
+ import type { Directions, Floor, TAddMarkerOptions, TAddPathOptions, TShow3DMapOptions } from '@mappedin/react-sdk/mappedin-js/src';
8860
9247
  import type { GLTFExportOptions, TAnimationOptions, TAddModelOptions, TAddModel, TAddImageOptions, TDirectionInstruction, TAddText3DOptions, IAnchorable } from '@mappedin/react-sdk/mappedin-js/src/types';
8861
9248
  import { type AggregatedStyleMap } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/utils';
8862
9249
  import { StackedMaps } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
8863
9250
  import type { TFloorChangeReason } from '@mappedin/react-sdk/mappedin-js/src/events';
8864
9251
  import type { Path, Shape, Label } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
8865
- import { type MapDataInternal, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
9252
+ import { Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
9253
+ import type { Coordinate, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
8866
9254
  import { type GeoJsonApi } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/api';
8867
9255
  import { FloorStackObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-stack-object';
8868
9256
  import { DynamicFocus } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/dynamic-focus';
@@ -9296,6 +9684,18 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
9296
9684
  * @param panMode The new pan mode.
9297
9685
  */
9298
9686
  setPanMode(panMode: 'default' | 'elevation'): void;
9687
+ /**
9688
+ * Get the camera transform that can be used to focus on a target or array of targets. Similar to {@link Camera.focusOn} but returns the transform directly.
9689
+ * @param target The target(s) to get the camera transform for.
9690
+ * @param options Optional settings for the camera transform.
9691
+ * @returns The camera transform which can then be passed to {@link Camera.set} or {@link Camera.animateTo}.
9692
+ *
9693
+ * @example
9694
+ * // Focus on a single space
9695
+ * const transform = mapView.Camera.getCameraFocusTransform(space, { minZoomLevel: 5 });
9696
+ * mapView.Camera.animateTo(transform);
9697
+ */
9698
+ getFocusOnTransform(target: IFocusable | IFocusable[], options?: TFocusOnOptions): TCameraTarget;
9299
9699
  /**
9300
9700
  * Focuses the camera on a specific target or array of targets.
9301
9701
  *
@@ -9622,7 +10022,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/models' {
9622
10022
  * // Add a {@link Model} to the map.
9623
10023
  * mapView.Models.add(coordinate);
9624
10024
  */
9625
- add(models: TAddModel | TAddModel[], options: TAddModelOptions): Model[];
10025
+ add(models: TAddModel, options: TAddModelOptions): Model;
9626
10026
  /**
9627
10027
  * Removes a model from the map.
9628
10028
  *
@@ -10848,7 +11248,7 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry3d' {
10848
11248
  import type { Geometry2D } from '@mappedin/react-sdk/geojson/src/entities/geometry2d';
10849
11249
  import { GeometryGroupObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
10850
11250
  import type { Text3DComponent } from '@mappedin/react-sdk/geojson/src/components/text3d';
10851
- import type { Text3DStyleComponent } from '@mappedin/react-sdk/geojson/src/components/styles';
11251
+ import type { ModelStyleComponnet, Text3DStyleComponent } from '@mappedin/react-sdk/geojson/src/components/styles';
10852
11252
  export enum Geometry3DComponents {
10853
11253
  Mesh = 0,
10854
11254
  Style = 1,
@@ -10859,6 +11259,10 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry3d' {
10859
11259
  type: Geometry3DObjectTypes;
10860
11260
  userData: {
10861
11261
  entityId: string;
11262
+ /**
11263
+ * TODO: remove this when proper instancing is handled
11264
+ */
11265
+ isSingleModel?: boolean;
10862
11266
  type: Geometry3DObjectTypes;
10863
11267
  };
10864
11268
  }
@@ -10871,7 +11275,7 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry3d' {
10871
11275
  }
10872
11276
  export type MeshComponentTypes = MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | Text3DComponent | ImageComponent;
10873
11277
  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;
10874
- export class Geometry3D<M extends MeshComponentTypes = MeshComponent, S extends StyleComponent | Text3DStyleComponent = StyleComponent, I extends InteractionComponent = InteractionComponent, T extends MappedComponentType<M> = MappedComponentType<M>> {
11278
+ export class Geometry3D<M extends MeshComponentTypes = MeshComponent, S extends StyleComponent | Text3DStyleComponent | ModelStyleComponnet = StyleComponent, I extends InteractionComponent = InteractionComponent, T extends MappedComponentType<M> = MappedComponentType<M>> {
10875
11279
  id: string | number;
10876
11280
  components: [M, S, I?];
10877
11281
  get object3d(): M["mesh"];
@@ -10885,7 +11289,7 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry3d' {
10885
11289
  }
10886
11290
  export type TextGeometry3D = Geometry3D<Text3DComponent, Text3DStyleComponent, InteractionComponent, 'text3d'>;
10887
11291
  export type CustomGeometry3D = Geometry3D<CustomGeometryComponent, StyleComponent, InteractionComponent, 'custom-geometry'>;
10888
- export type ModelGeometry3D = Geometry3D<ModelComponent, StyleComponent, InteractionComponent, 'model'>;
11292
+ export type ModelGeometry3D = Geometry3D<ModelComponent, ModelStyleComponnet, InteractionComponent, 'model'>;
10889
11293
  export type PathGeometry3D = Geometry3D<PathComponent, StyleComponent, InteractionComponent, 'path'>;
10890
11294
  export type ImageGeometry3D = Geometry3D<ImageComponent, StyleComponent, InteractionComponent, 'image'>;
10891
11295
  export type MeshGeometry3D = Geometry3D<MeshComponent, StyleComponent, InteractionComponent, 'geometry'>;
@@ -10996,6 +11400,7 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry2d' {
10996
11400
  * When the position of the entity changes, this should be set to true, so that systems like pan bounds can update
10997
11401
  */
10998
11402
  positionDirty: boolean;
11403
+ occluderId?: number;
10999
11404
  object3d: Geometry2DObject3D;
11000
11405
  components: [MarkerComponent | LabelComponent, InteractionComponent?];
11001
11406
  disposed: boolean;
@@ -11062,7 +11467,9 @@ declare module '@mappedin/react-sdk/geojson/src/components/geometry-group-style'
11062
11467
  export class GeometryGroupStyleComponent implements GeometryGroupStyle {
11063
11468
  #private;
11064
11469
  color: string;
11470
+ initialColor: string;
11065
11471
  topColor?: string;
11472
+ initialTopColor?: string;
11066
11473
  opacity: number;
11067
11474
  height?: number;
11068
11475
  outline: boolean;
@@ -11128,13 +11535,13 @@ declare module '@mappedin/react-sdk/geojson/src/components/image' {
11128
11535
  }, "strip", z.ZodTypeAny, {
11129
11536
  height: number;
11130
11537
  width: number;
11131
- rotation?: number | undefined;
11132
11538
  verticalOffset?: number | undefined;
11539
+ rotation?: number | undefined;
11133
11540
  }, {
11134
11541
  height: number;
11135
11542
  width: number;
11136
- rotation?: number | undefined;
11137
11543
  verticalOffset?: number | undefined;
11544
+ rotation?: number | undefined;
11138
11545
  }>;
11139
11546
  geometry: z.ZodObject<{
11140
11547
  type: z.ZodEnum<["Point"]>;
@@ -11155,8 +11562,8 @@ declare module '@mappedin/react-sdk/geojson/src/components/image' {
11155
11562
  properties: {
11156
11563
  height: number;
11157
11564
  width: number;
11158
- rotation?: number | undefined;
11159
11565
  verticalOffset?: number | undefined;
11566
+ rotation?: number | undefined;
11160
11567
  };
11161
11568
  }, {
11162
11569
  type: "Feature";
@@ -11167,8 +11574,8 @@ declare module '@mappedin/react-sdk/geojson/src/components/image' {
11167
11574
  properties: {
11168
11575
  height: number;
11169
11576
  width: number;
11170
- rotation?: number | undefined;
11171
11577
  verticalOffset?: number | undefined;
11578
+ rotation?: number | undefined;
11172
11579
  };
11173
11580
  }>;
11174
11581
  export function validateImage(id: string | number, feature: Feature<Point, ImageProperties>, style: ImageStyle): void;
@@ -11216,6 +11623,7 @@ declare module '@mappedin/react-sdk/geojson/src/types/options' {
11216
11623
  import type { Map as MapLibreMap } from '@mappedin/react-sdk/packages/outdoor-context-v4';
11217
11624
  import type { AttributionControlOptions } from '@mappedin/react-sdk/geojson/src/systems/html-controls/system';
11218
11625
  import type { WatermarkOptions } from '@mappedin/react-sdk/geojson/src';
11626
+ export type EnvMapOptions = 'basic' | false;
11219
11627
  export type RendererCoreOptions = Partial<{
11220
11628
  center?: Position;
11221
11629
  zoomLevel?: number;
@@ -11240,6 +11648,12 @@ declare module '@mappedin/react-sdk/geojson/src/types/options' {
11240
11648
  onWebGLRendererError?: (error: Error) => void;
11241
11649
  watermark?: WatermarkOptions;
11242
11650
  attribution?: AttributionControlOptions;
11651
+ /**
11652
+ * environment map for reflections.
11653
+ * @default 'basic'
11654
+ */
11655
+ environment?: EnvMapOptions;
11656
+ occlusionEnabled?: boolean;
11243
11657
  }>;
11244
11658
  }
11245
11659
 
@@ -11341,7 +11755,7 @@ declare module '@mappedin/react-sdk/packages/common/pubsub' {
11341
11755
 
11342
11756
  declare module '@mappedin/react-sdk/geojson/src/services/renderer' {
11343
11757
  import type { Scene, Camera } from 'three';
11344
- import { Color, WebGL1Renderer, WebGLRenderer } from 'three';
11758
+ import { Color, WebGLRenderer } from 'three';
11345
11759
  export type TRendererOptions = {
11346
11760
  alpha: boolean;
11347
11761
  onWebGLRendererError: (e: Error) => void;
@@ -11353,12 +11767,13 @@ declare module '@mappedin/react-sdk/geojson/src/services/renderer' {
11353
11767
  width: number;
11354
11768
  height: number;
11355
11769
  options: TRendererOptions;
11356
- renderer?: WebGLRenderer | WebGL1Renderer;
11357
- constructor(renderOptions: any, targetWebGLVersion?: number);
11770
+ renderer?: WebGLRenderer;
11771
+ constructor(renderOptions: any);
11358
11772
  /**
11359
11773
  * Dispose of the renderer and its buffers.
11360
11774
  */
11361
11775
  destroy(): void;
11776
+ enabledLayers: Set<number>;
11362
11777
  /**
11363
11778
  * Re-render the scene, depending on which parts of the scene have been
11364
11779
  * invalidated.
@@ -11401,10 +11816,12 @@ declare module '@mappedin/react-sdk/geojson/src/systems/mesh-creation-and-optimi
11401
11816
  import { MeshComponent, type MeshComponentProperties } from '@mappedin/react-sdk/geojson/src/components/mesh';
11402
11817
  import { StyleComponent } from '@mappedin/react-sdk/geojson/src/components/styles/style';
11403
11818
  import type { Feature, LineString, MultiPolygon, Point, Polygon } from 'geojson';
11404
- import type { LineStyle, ModelProperties, ModelStyle, PaintStyle } from '@mappedin/react-sdk/geojson/src/types';
11405
- import type { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
11819
+ import type { LineStyle, ModelProperties, PaintStyle } from '@mappedin/react-sdk/geojson/src/types';
11820
+ import { GeometryGroupObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
11406
11821
  import type { ModelGeometry3D } from '@mappedin/react-sdk/geojson/src/entities';
11407
11822
  import { PubSub } from '@packages/internal/common';
11823
+ import type { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
11824
+ import type { ModelStyle } from '@mappedin/react-sdk/geojson/src/components/styles';
11408
11825
  export class MeshCreationAndOptimizationSystem extends PubSub<{
11409
11826
  'model-loaded': void;
11410
11827
  }> {
@@ -11412,14 +11829,14 @@ declare module '@mappedin/react-sdk/geojson/src/systems/mesh-creation-and-optimi
11412
11829
  convertTo3DMapPosition: any;
11413
11830
  loader?: GLTFLoader;
11414
11831
  constructor(state: RendererState, convertTo3DMapPosition: any);
11415
- getGLTFLoader(): Promise<void>;
11832
+ getGLTFLoader(): Promise<GLTFLoader>;
11416
11833
  createEntityFromFeature(id: string | number, feature: Feature<Polygon | LineString | MultiPolygon, MeshComponentProperties>, style?: LineStyle | PaintStyle): Geometry3D<MeshComponent, StyleComponent, import("../../components/interaction").InteractionComponent, "geometry">;
11417
- createModelFromFeature(id: string | number, feature: Feature<Point, ModelProperties>, style?: ModelStyle): ModelGeometry3D;
11834
+ createModelFromFeature(id: string | number, feature: Feature<Point, ModelProperties>, style?: Partial<ModelStyle>): ModelGeometry3D;
11418
11835
  populateEntityMesh(entity: Geometry3D, geometry: BufferGeometry): void;
11419
- populateModelGroup(entities: Set<string | number>, url: string, tree: any): Promise<Geometry3DObject3D>;
11836
+ populateModelGroup(entities: Set<string | number>, url: string, tree: GeometryGroupObject3D): Promise<Geometry3DObject3D>;
11420
11837
  populateEntityGroup(entities: Set<string | number>): Set<string | number>;
11421
11838
  optimize(tree: any): void;
11422
- update(): void;
11839
+ update(): Promise<void[]> | undefined;
11423
11840
  }
11424
11841
  }
11425
11842
 
@@ -11543,11 +11960,13 @@ declare module '@mappedin/react-sdk/geojson/src/systems/render/system' {
11543
11960
  import { PubSub } from '@packages/internal/common';
11544
11961
  export class RenderSystem extends PubSub<{
11545
11962
  'measure-canvas': undefined;
11963
+ 'pre-render': undefined;
11964
+ 'post-render': undefined;
11546
11965
  }> {
11547
11966
  constructor(renderer: Renderer, state: RendererState, mode: RendererCore['mode'], scene: Scene, cameraObject: PerspectiveCamera, viewCamera: Camera, systems: Systems);
11548
11967
  twoDdirty: boolean;
11549
11968
  threeDdirty: boolean;
11550
- update: (sync?: boolean) => Promise<any>;
11969
+ update: (sync?: boolean) => Promise<any> | undefined;
11551
11970
  destroy(): void;
11552
11971
  }
11553
11972
  }
@@ -11902,16 +12321,21 @@ declare module '@mappedin/react-sdk/geojson/src/systems/mesh-modification/system
11902
12321
  }
11903
12322
  }
11904
12323
 
11905
- declare module '@mappedin/react-sdk/geojson/src/systems/pre-render/system' {
11906
- import type { RendererCore } from '@mappedin/react-sdk/geojson/src';
11907
- /**
11908
- * This system runs any tasks at the very start of the render loop.
11909
- * This is useful for ensuring that animations are synced with the render loop.
11910
- */
11911
- export class PreRenderSystem {
11912
- #private;
11913
- constructor(core: RendererCore);
11914
- update(): void;
12324
+ declare module '@mappedin/react-sdk/geojson/src/systems/2d-occlusion/system' {
12325
+ import type { RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
12326
+ import { type Vector3 } from 'three';
12327
+ import type { Renderer } from '@mappedin/react-sdk/geojson/src/services/renderer';
12328
+ import type { Position as GeoJsonPosition } from 'geojson';
12329
+ export function fillArrayWithColor(array: Float32Array | Uint8Array, count: number, color: number): void;
12330
+ export class Occlusion2DSystem {
12331
+ constructor(state: RendererState, convertTo3DMapPosition: (position: GeoJsonPosition) => Vector3, renderer?: Renderer);
12332
+ reserveOccluderId(): number;
12333
+ enable(): void;
12334
+ disable(): void;
12335
+ resize: () => void;
12336
+ activeOccluders: Set<unknown>;
12337
+ update: () => void;
12338
+ destroy(): void;
11915
12339
  }
11916
12340
  }
11917
12341
 
@@ -11945,6 +12369,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/styles/style' {
11945
12369
  export class StyleComponent implements Style {
11946
12370
  initialColor: string;
11947
12371
  color: string;
12372
+ initialTopColor?: string;
11948
12373
  topColor?: string;
11949
12374
  topTexture?: string;
11950
12375
  texture?: string;
@@ -12251,6 +12676,59 @@ declare module '@mappedin/react-sdk/geojson/src/components/styles/text-style' {
12251
12676
  };
12252
12677
  }
12253
12678
 
12679
+ declare module '@mappedin/react-sdk/geojson/src/components/styles/model-style' {
12680
+ type MaterialStyle = {
12681
+ color: string;
12682
+ };
12683
+ export type ModelStyle = {
12684
+ /**
12685
+ * Model's URL. Can be based64 inlined url.
12686
+ */
12687
+ url: string;
12688
+ /**
12689
+ * Visiiblity of the model group
12690
+ */
12691
+ visible: boolean;
12692
+ /**
12693
+ * Opacity of the model group.
12694
+ */
12695
+ opacity: number;
12696
+ /**
12697
+ * Change material state by name
12698
+ * @example
12699
+ * ```ts
12700
+ * mapView.Models.add(
12701
+ * { target: new Coordinate(45, -75) },
12702
+ * {
12703
+ * url: 'bed.glb',
12704
+ * materials: {
12705
+ * Default: {
12706
+ * color: MAPPEDIN_COLOR.orange,
12707
+ * },
12708
+ * },
12709
+ * },
12710
+ * );
12711
+ * ```
12712
+ */
12713
+ material: {
12714
+ [name: string]: MaterialStyle;
12715
+ };
12716
+ /**
12717
+ * vertical offset of the model in meters off the floor
12718
+ */
12719
+ verticalOffset: number;
12720
+ };
12721
+ export class ModelStyleComponnet implements Partial<ModelStyle> {
12722
+ dirty: boolean;
12723
+ visible: boolean;
12724
+ opacity: number;
12725
+ verticalOffset: number;
12726
+ material?: ModelStyle['material'];
12727
+ constructor(init?: Partial<ModelStyle>);
12728
+ }
12729
+ export {};
12730
+ }
12731
+
12254
12732
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-object' {
12255
12733
  import type { Polygon, MultiPolygon, FloorProperties as MVFFloor, ParsedMVF, Feature } from '@mappedin/mvf';
12256
12734
  import type { RendererCore } from '@mappedin/core-sdk';
@@ -12274,6 +12752,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-object' {
12274
12752
  metadata?: Partial<Record<string, unknown>> | undefined;
12275
12753
  shortName?: string | undefined;
12276
12754
  subtitle?: string | undefined;
12755
+ occluderId?: number;
12277
12756
  layers: Map<string, Layer>;
12278
12757
  footprint?: Feature<Polygon | MultiPolygon | null, MVFFloor>;
12279
12758
  floorStackId: string;
@@ -12537,6 +13016,7 @@ declare module '@mappedin/react-sdk/geojson/src/systems/interactions/system' {
12537
13016
  getCursor(): CursorTypes;
12538
13017
  resize: () => void;
12539
13018
  }
13019
+ export function findModelParent(object: Object3D): Object3D<import("three").Object3DEventMap> | undefined;
12540
13020
  export {};
12541
13021
  }
12542
13022
 
@@ -12978,6 +13458,12 @@ declare module '@mappedin/react-sdk/geojson/src/systems/camera/system' {
12978
13458
  convertZoomLevelToAltitude: (zoomLevel: number) => number;
12979
13459
  static CAMERA_FRAME_PADDING_SIDES: readonly ["top", "bottom", "left", "right"];
12980
13460
  debugContainer: Object3D<import("three").Object3DEventMap>;
13461
+ getCameraFrameForCoordinates(pointCloud: Vector3[], options: CameraFocusOnOptions & {
13462
+ padding: InsetPadding;
13463
+ }): {
13464
+ center: Vector3;
13465
+ zoomLevel: number;
13466
+ };
12981
13467
  focusOn(pointCloud: Vector3[], options: CameraFocusOnOptions & {
12982
13468
  padding: InsetPadding;
12983
13469
  }): void;