@mappedin/mappedin-js 6.0.0-rc.0 → 6.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/THIRD_PARTY_LICENSES.txt +19 -1039
  2. package/lib/esm/{GLTFExporter-OD4NIP5J.js → GLTFExporter-LCU7NXUM.js} +2 -2
  3. package/lib/esm/{GLTFLoader-2KHURE2O.js → GLTFLoader-M52U7R6R.js} +2 -2
  4. package/lib/esm/{browser-MJVP6R3A.js → browser-WC4BWEDX.js} +2 -2
  5. package/lib/esm/chunk-4EZCNQDU.js +3 -0
  6. package/lib/esm/chunk-4EZCNQDU.js.map +7 -0
  7. package/lib/esm/{chunk-J66EV4D7.js → chunk-DGI3RI5M.js} +2 -2
  8. package/lib/esm/{chunk-TJG5BXTK.js → chunk-MTBSFIDI.js} +2 -2
  9. package/lib/esm/chunk-OPUPAKD3.js +2343 -0
  10. package/lib/esm/chunk-OPUPAKD3.js.map +7 -0
  11. package/lib/esm/{chunk-R6ACEBVD.js → chunk-QVO3EAE3.js} +3 -3
  12. package/lib/esm/{chunk-R6ACEBVD.js.map → chunk-QVO3EAE3.js.map} +2 -2
  13. package/lib/esm/chunk-SYPB4R2Y.js +2 -0
  14. package/lib/esm/{chunk-LLHXGTB2.js.map → chunk-SYPB4R2Y.js.map} +1 -1
  15. package/lib/esm/index.d.ts +889 -691
  16. package/lib/esm/index.js +1 -1
  17. package/lib/esm/{inspector-KMBZXTF5.js → inspector-2WXCEJZC.js} +2 -2
  18. package/lib/esm/{internal-LZTQU5W2.js → internal-MR2VGL5Y.js} +2 -2
  19. package/lib/esm/{outdoor-context-v5-DPTEYL6O.js → outdoor-context-v5-QR4KQTZR.js} +2 -2
  20. package/lib/esm/{text3d-AEQ2USTW.js → text3d-ROTRSMZX.js} +2 -2
  21. package/lib/index-rn.js +223 -228
  22. package/package.json +2 -2
  23. package/lib/esm/chunk-2RJ5UTHX.js +0 -3
  24. package/lib/esm/chunk-2RJ5UTHX.js.map +0 -7
  25. package/lib/esm/chunk-LLHXGTB2.js +0 -2
  26. package/lib/esm/chunk-SWYBY4H7.js +0 -2269
  27. package/lib/esm/chunk-SWYBY4H7.js.map +0 -7
  28. /package/lib/esm/{GLTFExporter-OD4NIP5J.js.map → GLTFExporter-LCU7NXUM.js.map} +0 -0
  29. /package/lib/esm/{GLTFLoader-2KHURE2O.js.map → GLTFLoader-M52U7R6R.js.map} +0 -0
  30. /package/lib/esm/{browser-MJVP6R3A.js.map → browser-WC4BWEDX.js.map} +0 -0
  31. /package/lib/esm/{chunk-J66EV4D7.js.map → chunk-DGI3RI5M.js.map} +0 -0
  32. /package/lib/esm/{chunk-TJG5BXTK.js.map → chunk-MTBSFIDI.js.map} +0 -0
  33. /package/lib/esm/{inspector-KMBZXTF5.js.map → inspector-2WXCEJZC.js.map} +0 -0
  34. /package/lib/esm/{internal-LZTQU5W2.js.map → internal-MR2VGL5Y.js.map} +0 -0
  35. /package/lib/esm/{outdoor-context-v5-DPTEYL6O.js.map → outdoor-context-v5-QR4KQTZR.js.map} +0 -0
  36. /package/lib/esm/{text3d-AEQ2USTW.js.map → text3d-ROTRSMZX.js.map} +0 -0
@@ -23,6 +23,7 @@
23
23
  // ../mappedin-js/@packages/internal/quad-tree
24
24
  // ../mappedin-js/@mappedin/core-sdk/src/components/image
25
25
  // ../mappedin-js/minisearch
26
+ // ../mappedin-js/@packages/internal/common/interpolate
26
27
  // ../mappedin-js/three/examples/jsm/loaders/GLTFLoader.js
27
28
  // ../mappedin-js/@mapbox/point-geometry
28
29
  // ../mappedin-js/@maplibre/maplibre-gl-style-spec
@@ -42,15 +43,14 @@ declare module '@mappedin/mappedin-js' {
42
43
  import type { Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
43
44
  import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle, OperationHours, SiblingGroup, LocationState } from '@mappedin/mvf-v2';
44
45
  import { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
45
- export type { Text3D as Text3DApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
46
46
  import type { InsetPadding, InsetPaddingOption, Shading, PaintStyle, LineStyle, AddText3DOptions, InitializeText3DState, EnvMapOptions, MapViewState, InitializeModelState, WatermarkUpdateOptions, Interpolation, LabelAppearance, ColorString, InterpolateOn } from '@mappedin/mappedin-js/geojson/src';
47
- import { enableTestMode, preloadFont } from '@mappedin/mappedin-js/geojson/src';
47
+ import { enableTestMode, preloadFont, ANIMATION_TWEENS } from '@mappedin/mappedin-js/geojson/src';
48
48
  export type { PubSub } from '@packages/internal/common/pubsub';
49
49
  export type { MappedinError, MappedinRenderError } from '@packages/internal/common/errors';
50
50
  import type { LanguagePackHydrationItem, TImagePlacementOptions, TMultiFloorViewOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
51
51
  import { MAPPEDIN_COLORS } from '@mappedin/mappedin-js/mappedin-js/src/constants';
52
52
  import { unzipAndParseMVFv2 } from '@packages/internal/mvf-utils/mvf-utils';
53
- import type { GeolocationPositionExtended } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
53
+ import type { GeolocationPositionExtended, TBlueDotPositionUpdateWithFloor, TBlueDotPositionProcessor } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
54
54
  import { hydrateMapData, type THydrateMapDataBundle } from '@mappedin/mappedin-js/mappedin-js/src/hydrate-map-data';
55
55
  export { disableText3DWorker } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
56
56
  export { hydrateMapData, type THydrateMapDataBundle };
@@ -357,27 +357,31 @@ declare module '@mappedin/mappedin-js' {
357
357
  maplibre: boolean;
358
358
  }>;
359
359
  export const show3dMap: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
360
+ /**
361
+ * Returns the package version of the SDK.
362
+ */
363
+ export const getVersion: () => string | undefined;
360
364
  /**
361
365
  * @internal
362
366
  * @deprecated Use {@link show3dMap} instead.
363
367
  */
364
368
  export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
365
- export { parseMVF, unzipMVF, enableTestMode, preloadFont, MAPPEDIN_COLORS };
366
- export type { MapData, MapViewState, GeolocationPositionExtended, TEvents, TMapDataEvents, TStateChangedInternalPayload, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TSearchOptions, TGetMapDataSharedOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, EnvMapOptions, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, AddText3DOptions, InitializeText3DState, InitializeModelState, Interpolation, LabelAppearance, ColorString, InterpolateOn, };
369
+ export { parseMVF, unzipMVF, enableTestMode, preloadFont, MAPPEDIN_COLORS, ANIMATION_TWEENS };
370
+ export type { MapData, MapViewState, GeolocationPositionExtended, TBlueDotPositionUpdateWithFloor, TBlueDotPositionProcessor, TEvents, TMapDataEvents, TStateChangedInternalPayload, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TSearchOptions, TGetMapDataSharedOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, EnvMapOptions, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, AddText3DOptions, InitializeText3DState, InitializeModelState, Interpolation, LabelAppearance, ColorString, InterpolateOn, };
367
371
  export { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
368
372
  export type * from 'geojson';
369
373
  export type { TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TAddMarkerOptions, TAddPathOptions, TAddLabelOptions, TAddModelOptions, TAddModel, TAddImageOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerPlacement, TDirectionInstruction, TDirectionInstructionAction, TFocusTarget, IFocusable, IAnchorable, TMapDataObjectTypes, TSetFloorOptions, TCancellablePromise, TAnimateStateResult, GlobalState, TActionType, TBearingType, TConnectionType, TMultiFloorViewOptions, MapViewElements, MapDataElements, MapElementsWithState, TGetState, TUpdateState, } from '@mappedin/mappedin-js/mappedin-js/src/types';
370
- export type { TModelState, TModelUpdateState, TLabelState, TLabelUpdateState, TMarkerState, TMarkerUpdateState, TPathState, TPathUpdateState, TShapeState, TShapeUpdateState, TText3DState, TText3DUpdateState, TWallsState, TWallsUpdateState, TDoorsState, TDoorsUpdateState, TFacadeState, TFacadeUpdateState, TFloorState, TFloorUpdateState, TGeometryState, TGeometryUpdateState, TImageState, TImageUpdateState, MapElementToState, MapElementToUpdateState, } from '@mappedin/mappedin-js/mappedin-js/src/states';
374
+ export type { TModelState, TModelUpdateState, TLabelState, TLabelUpdateState, TMarkerState, TMarkerUpdateState, TPathState, TPathUpdateState, TShapeState, TShapeUpdateState, TText3DState, TText3DUpdateState, TWallsState, TWallsUpdateState, TDoorsState, TDoorsUpdateState, TFacadeState, TFacadeUpdateState, TFloorState, TFloorUpdateState, TGeometryState, TGeometryUpdateState, TImage3DState as TImageState, TImage3DUpdateState as TImageUpdateState, MapElementToGetState, MapElementToUpdateState, } from '@mappedin/mappedin-js/mappedin-js/src/states';
371
375
  export { WALLS, DOORS, ACTION_TYPE, BEARING_TYPE, CONNECTION_TYPE } from '@mappedin/mappedin-js/mappedin-js/src/types';
372
- export type { Label, Marker, Path, PathSegment, Shape, CameraTransform, Model, Image, Text3D, } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
376
+ export type { Label, Marker, Path, PathSegment, Shape, CameraTransform, Model, Image3DView, Text3DView, } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
373
377
  export type { Debug } from '@mappedin/mappedin-js/mappedin-js/src/debug';
374
378
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
375
379
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
376
- export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, ImageMetaData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, LocationProfile, LocationCategory, Facade, Node, Area, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
380
+ export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, ImageMetaData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, LocationProfile, LocationCategory, Facade, Node, Area, type Places, type OpeningHours, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
377
381
  export { setWorkersUrl } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
378
382
  export { findPreferredLanguageInVenue } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/language';
379
383
  export type { TFindPreferredLanguageInVenueOptions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/language';
380
- export type { Camera, Models, Labels, Markers, Paths, Exporter, Style, Shapes, Outdoor, Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
384
+ export type { Camera, Models, Labels, Markers, Paths, Exporter, Style, Shapes, Outdoor, Image3D, Text3D, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
381
385
  export { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions/directions';
382
386
  export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search';
383
387
  export type { TFindNearestOptions, TFindNearestResult, TQueriables, Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
@@ -1650,8 +1654,17 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
1650
1654
  destroy(): void;
1651
1655
  }
1652
1656
  export { Node, Area, MapDataInternal, Space, Floor, FloorStack, Facade, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, ImageMetaData, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, LocationCategory, LocationProfile, };
1657
+ export type { OpeningHours } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/opening-hours';
1653
1658
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space';
1654
1659
  export type { Places };
1660
+ /**
1661
+ * Determines smoothing configuration based on enterprise mode and user input
1662
+ * @internal
1663
+ */
1664
+ export const getSmoothingConfig: (enterpriseMode: boolean, opt?: TGetDirectionsOptions) => {
1665
+ enabled: boolean;
1666
+ radius: number;
1667
+ };
1655
1668
  }
1656
1669
 
1657
1670
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
@@ -1659,7 +1672,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1659
1672
  import type { EasingCurve, ExtractDeep } from '@packages/internal/common';
1660
1673
  import { type TEvents, type TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
1661
1674
  import type { Navigation } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
1662
- import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor, Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
1675
+ import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor, Image3D, Text3D } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
1663
1676
  import type { BlueDot } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
1664
1677
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
1665
1678
  import { Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
@@ -1671,10 +1684,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1671
1684
  import type { Shapes } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes';
1672
1685
  import type { InspectorOption } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/inspector/inspector';
1673
1686
  import { Debug } from '@mappedin/mappedin-js/mappedin-js/src/debug';
1674
- import type { Text3D } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
1675
1687
  import type { Tween } from '@tweenjs/tween.js';
1676
- import type { PartialDeep, ValueOf } from 'type-fest';
1677
- import type { MapElementToState, MapElementToUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states';
1688
+ import type { PartialDeep, ReadonlyDeep, ValueOf } from 'type-fest';
1689
+ import type { MapElementToGetState, MapElementToUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states';
1678
1690
  /**
1679
1691
  * ## MapView in Mappedin JS
1680
1692
  *
@@ -1838,20 +1850,20 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1838
1850
  */
1839
1851
  Markers: Markers;
1840
1852
  /**
1841
- * Controls for the map's images.
1853
+ * Controls for the map's 3D images.
1842
1854
  *
1843
1855
  * Manages image overlays and custom image elements on the map.
1844
1856
  *
1845
1857
  * @example
1846
1858
  * ```ts
1847
1859
  * // Add an image
1848
- * const image = mapView.Images.add(coordinate, 'path/to/image.png', {
1860
+ * const image = mapView.Image3D.add(coordinate, 'path/to/image.png', {
1849
1861
  * width: 100,
1850
1862
  * height: 100
1851
1863
  * });
1852
1864
  * ```
1853
1865
  */
1854
- Images: Images;
1866
+ Image3D: Image3D;
1855
1867
  /**
1856
1868
  * Controls for the map's models.
1857
1869
  *
@@ -1955,16 +1967,17 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
1955
1967
  *
1956
1968
  * | Target | State Type | Description |
1957
1969
  * |--------|------------|-------------|
1958
- * | {@link Space} | {@link TGeometryState} | Color, opacity, visibility |
1959
- * | {@link Door} | {@link TDoorsState} | Open/closed state, color |
1960
- * | {@link Label} | {@link TLabelState} | Text, color, visibility |
1961
- * | {@link Marker} | {@link TMarkerState} | Color, size, icon |
1962
- * | {@link Model} | {@link UpdateModelState} | Scale, rotation, visibility |
1963
- * | {@link Path} | {@link TGeometryState} | Color, width, visibility |
1964
- * | {@link Shape} | {@link TShapeState} | Color, opacity, geometry |
1965
- * | {@link Text3DView} | {@link UpdatableText3DState} | Text, color, height |
1966
- * | {@link DOORS} | {@link TDoorsState} | Global door settings |
1967
- * | {@link WALLS} | {@link TWallsState} | Global wall settings |
1970
+ * | {@link Door} | {@link TDoorsUpdateState} | Open/closed state, color |
1971
+ * | {@link Floor} | {@link TFloorUpdateState} | Color, opacity, visibility |
1972
+ * | {@link Label} | {@link TLabelUpdateState} | Text, color, visibility |
1973
+ * | {@link Marker} | {@link TMarkerUpdateState} | Color, size, icon |
1974
+ * | {@link Model} | {@link TModelUpdateState} | Scale, rotation, visibility |
1975
+ * | {@link Path} | {@link TPathUpdateState} | Color, width, visibility |
1976
+ * | {@link Shape} | {@link TShapeUpdateState} | Color, opacity, geometry |
1977
+ * | {@link Space} | {@link TGeometryUpdateState} | Color, opacity, visibility |
1978
+ * | {@link Text3DView} | {@link TText3DUpdateState} | Text, color, height |
1979
+ * | {@link DOORS} | {@link TDoorsUpdateState} | Global door settings |
1980
+ * | {@link WALLS} | {@link TWallsUpdateState} | Global wall settings |
1968
1981
  *
1969
1982
  * @param target The map element to update.
1970
1983
  * @param state The new state to apply.
@@ -2007,6 +2020,24 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
2007
2020
  * Animate the state of a given target on the map from the current state to a new state. Only numeric properties and
2008
2021
  * colors can be animated.
2009
2022
  *
2023
+ * Use `updateState()` for immediate updates.
2024
+ *
2025
+ * The following table maps targets to their available states:
2026
+ *
2027
+ * | Target | State Type | Description |
2028
+ * |--------|------------|-------------|
2029
+ * | {@link Door} | {@link TDoorsUpdateState} | Open/closed state, color |
2030
+ * | {@link Floor} | {@link TFloorUpdateState} | Color, opacity, visibility |
2031
+ * | {@link Label} | {@link TLabelUpdateState} | Text, color, visibility |
2032
+ * | {@link Marker} | {@link TMarkerUpdateState} | Color, size, icon |
2033
+ * | {@link Model} | {@link TModelUpdateState} | Scale, rotation, visibility |
2034
+ * | {@link Path} | {@link TPathUpdateState} | Color, width, visibility |
2035
+ * | {@link Shape} | {@link TShapeUpdateState} | Color, opacity, geometry |
2036
+ * | {@link Space} | {@link TGeometryUpdateState} | Color, opacity, visibility |
2037
+ * | {@link Text3DView} | {@link TText3DUpdateState} | Text, color, height |
2038
+ * | {@link DOORS} | {@link TDoorsUpdateState} | Global door settings |
2039
+ * | {@link WALLS} | {@link TWallsUpdateState} | Global wall settings |
2040
+ *
2010
2041
  * @param target The map element to animate.
2011
2042
  * @param state The target state to animate to.
2012
2043
  * @param options Animation configuration options.
@@ -2057,13 +2088,13 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
2057
2088
  */
2058
2089
  updateGlobalState(update: UpdateGlobalState): void;
2059
2090
  /**
2060
- * The options passed in to the {@link MapView.show3DMap} method during initialization.
2091
+ * The options passed in to the {@link show3dMap} method during initialization.
2061
2092
  */
2062
- get options(): Readonly<TShow3DMapOptions>;
2093
+ get options(): ReadonlyDeep<TShow3DMapOptions>;
2063
2094
  /**
2064
2095
  * Get global state of the MapView
2065
2096
  */
2066
- getGlobalState(): GlobalState;
2097
+ getGlobalState(): ReadonlyDeep<GlobalState>;
2067
2098
  /**
2068
2099
  * Triggers a manual update of the map view.
2069
2100
  *
@@ -2165,19 +2196,19 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
2165
2196
  * Create a tween object that will be updated on every render frame.
2166
2197
  * See https://tweenjs.github.io/tween.js/docs/user_guide.html for more information.
2167
2198
  *
2168
- * When creating a large number of tween objects, it may be important to call {@link removeTween} to prevent memory leaks.
2199
+ * When creating a large number of tween objects, it may be important to call {@link MapView.removeTween | removeTween} to prevent memory leaks.
2169
2200
  *
2170
2201
  * @param object The data to be tweened.
2171
2202
  * @returns The tween object.
2172
2203
  */
2173
2204
  tween<T extends Record<string, unknown>>(object: T): Tween<T>;
2174
2205
  /**
2175
- * Remove a tween created with {@link tween}.
2206
+ * Remove a tween created with {@link MapView.tween | tween}.
2176
2207
  * @param tween The tween to remove.
2177
2208
  */
2178
2209
  removeTween(tween: Tween<any>): void;
2179
2210
  /**
2180
- * The group which manages all tweens created with {@link tween} or {@link animateState}.
2211
+ * The group which manages all tweens created with {@link MapView.tween | tween} or {@link MapView.animateState | animateState}.
2181
2212
  */
2182
2213
  get tweenGroup(): import("@tweenjs/tween.js").Group;
2183
2214
  /**
@@ -2241,7 +2272,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
2241
2272
  * ```
2242
2273
  */
2243
2274
  getState<T extends MapElementsWithState>(target: T): TGetState<T>;
2244
- getState<T extends string & NonNullable<unknown>>(target: T): ValueOf<MapElementToState>;
2275
+ getState<T extends string & NonNullable<unknown>>(target: T): ValueOf<MapElementToGetState>;
2245
2276
  /**
2246
2277
  * Sets the hover color for map elements.
2247
2278
  *
@@ -2292,6 +2323,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
2292
2323
  *
2293
2324
  * Provides turn-by-turn navigation instructions and route visualization. This method delegates to the MapData instance.
2294
2325
  *
2326
+ * @note In enterprise mode, path smoothing is disabled by default. Use the `smoothing` option to explicitly enable it if needed.
2327
+ *
2295
2328
  * @param from The starting location(s).
2296
2329
  * @param to The destination location(s).
2297
2330
  * @param options Optional configuration for the directions calculation.
@@ -2349,6 +2382,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
2349
2382
  *
2350
2383
  * Provides routes from a single starting point to multiple destinations. This method delegates to the MapData instance.
2351
2384
  *
2385
+ * @note In enterprise mode, path smoothing is disabled by default. Use the `smoothing` option to explicitly enable it if needed.
2386
+ *
2352
2387
  * @param from The starting location.
2353
2388
  * @param to An array of destination locations or arrays of destinations.
2354
2389
  * @param options Optional configuration for the directions calculation.
@@ -2470,9 +2505,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
2470
2505
  *
2471
2506
  * @returns An object containing auto-created labels
2472
2507
  */
2473
- __EXPERIMENTAL__auto(): {
2474
- labels: Label[];
2475
- };
2508
+ __EXPERIMENTAL__auto(): void;
2476
2509
  /**
2477
2510
  * Subscribe a function to an event.
2478
2511
  *
@@ -2587,170 +2620,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
2587
2620
  }
2588
2621
  }
2589
2622
 
2590
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d' {
2591
- import { Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2592
- import type { TAddText3DOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
2593
- import type { CurrentMapGetter } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/types';
2594
- import { Text3D as Text3DView } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
2595
- /**
2596
- * Disables the Text3D web worker and falls back to processing on the main thread.
2597
- *
2598
- * This function should be called when using Text3D features in environments
2599
- * with strict Content Security Policy (CSP) that blocks web workers from
2600
- * being created using blob: URLs or unsafe-eval directives.
2601
- *
2602
- * While disabling the worker may slightly impact performance for complex text
2603
- * rendering, it enables Text3D functionality in CSP-restricted environments.
2604
- *
2605
- * Ensure calling this before calling preloadFont
2606
- *
2607
- * @example
2608
- * ```typescript
2609
- * import {disableText3DWorker} from '@mappedin/mappedin-js';
2610
- * // Disable Text3D worker for CSP compatibility
2611
- * disableText3DWorker();
2612
- *
2613
- * // Then use Text3D features as normal
2614
- * mapView.Text3D.labelAll();
2615
- * ```
2616
- */
2617
- export function disableText3DWorker(): void;
2618
- /**
2619
- * ## Text3D in Mappedin JS
2620
- *
2621
- * Text3D creates three-dimensional text labels that are rendered directly in the 3D scene. These labels are perfect for displaying space names, room numbers, or any text that needs to be visible from any angle in the 3D environment.
2622
- *
2623
- * ### Features
2624
- * - 3D text rendering with depth and perspective
2625
- * - Automatic text wrapping and sizing
2626
- * - Customizable fonts, colors, and materials
2627
- * - Performance-optimized with web worker support
2628
- *
2629
- * ### Example Usage
2630
- * ```ts
2631
- * // Create labels for all spaces
2632
- * const labels = mapView.Text3D.labelAll();
2633
- *
2634
- * // Create a label for a specific space
2635
- * const label = mapView.Text3D.label(space, "Room 101", { fontSize: 12 });
2636
- *
2637
- * // Remove a specific label
2638
- * mapView.Text3D.remove(label);
2639
- *
2640
- * // Remove all labels
2641
- * mapView.Text3D.removeAll();
2642
- * ```
2643
- *
2644
- * ### Performance Considerations
2645
- * - Use `labelAll()` for better performance when creating multiple labels.
2646
- *
2647
- * ### Advanced
2648
- * - Customize text appearance with fonts, colors, and materials.
2649
- * - Use `labelAll()` with options to apply consistent styling to all labels.
2650
- * - Text3D labels are automatically positioned and sized based on space geometry.
2651
- *
2652
- * This class is accessed using {@link MapView.Text3D}.
2653
- */
2654
- export class Text3D {
2655
- #private;
2656
- /**
2657
- * @internal
2658
- */
2659
- constructor({ currentMapGetter }: {
2660
- currentMapGetter: CurrentMapGetter;
2661
- });
2662
- /**
2663
- * Creates polygon labels for all spaces.
2664
- *
2665
- * @param options Configuration options for text label creation (see {@link AddText3DOptions}).
2666
- * @returns An array of Text3DView instances representing the created labels. If a space is already labeled, the existing Text3D instance will be returned.
2667
- *
2668
- * @example Create labels for all spaces with default settings
2669
- * ```ts
2670
- * const labels = mapView.Text3D.labelAll();
2671
- * ```
2672
- *
2673
- * @example Create labels with custom styling
2674
- * ```ts
2675
- * const labels = mapView.Text3D.labelAll({
2676
- * fontSize: 14,
2677
- * color: 'white',
2678
- * backgroundColor: 'rgba(0, 0, 0, 0.7)'
2679
- * });
2680
- * ```
2681
- *
2682
- * @see [Text3D Guide](https://developer.mappedin.com/web-sdk/text3d)
2683
- */
2684
- labelAll(options?: TAddText3DOptions): Text3DView[];
2685
- /**
2686
- * Creates a 3D text label for a given space.
2687
- *
2688
- * @param target The target space to label.
2689
- * @param content The content of the label. If not provided, target.name will be used.
2690
- * @param options Configuration options for the text label creation (see {@link AddText3DOptions}).
2691
- * @returns A Text3DView instance representing the created label, or undefined if creation failed.
2692
- *
2693
- * @throws {Error} If the target is not a Space.
2694
- *
2695
- * @example Create a label with custom text
2696
- * ```ts
2697
- * const label = mapView.Text3D.label(space, "Conference Room A", { fontSize: 12 });
2698
- * ```
2699
- *
2700
- * @example Create a label using space name
2701
- * ```ts
2702
- * const label = mapView.Text3D.label(space); // Uses space.name
2703
- * ```
2704
- *
2705
- * @example Create a label with custom styling
2706
- * ```ts
2707
- * const label = mapView.Text3D.label(space, "VIP Room", {
2708
- * fontSize: 16,
2709
- * color: 'gold',
2710
- * backgroundColor: 'rgba(0, 0, 0, 0.8)'
2711
- * });
2712
- * ```
2713
- *
2714
- * @see [Text3D Guide](https://developer.mappedin.com/web-sdk/text3d)
2715
- */
2716
- label(target: Space, content?: string, options?: TAddText3DOptions): Text3DView | undefined;
2717
- /**
2718
- * Removes one or more Text3D labels from the map.
2719
- *
2720
- * @param target Can be either:
2721
- * - A single Text3DView instance
2722
- * - An array of Text3DView instances
2723
- * - A string ID of the Text3DView to remove
2724
- *
2725
- * @example Remove a single text label
2726
- * ```ts
2727
- * mapView.Text3D.remove(text3dView);
2728
- * ```
2729
- *
2730
- * @example Remove multiple text labels
2731
- * ```ts
2732
- * mapView.Text3D.remove([text3dView1, text3dView2]);
2733
- * ```
2734
- *
2735
- * @example Remove by ID
2736
- * ```ts
2737
- * mapView.Text3D.remove("text3d-123");
2738
- * ```
2739
- */
2740
- remove(text3dView: Text3DView): void;
2741
- remove(id: string): void;
2742
- /**
2743
- * Removes all Text3D labels from the current map.
2744
- *
2745
- * @example
2746
- * ```ts
2747
- * mapView.Text3D.removeAll();
2748
- * ```
2749
- */
2750
- removeAll(): void;
2751
- }
2752
- }
2753
-
2754
2623
  declare module '@mappedin/mappedin-js/geojson/src' {
2755
2624
  import type { MarkerState, AddMarkerOptions } from '@mappedin/mappedin-js/geojson/src/components/marker';
2756
2625
  import type { PathState, AddPathOptions } from '@mappedin/mappedin-js/geojson/src/components/path';
@@ -2759,7 +2628,7 @@ declare module '@mappedin/mappedin-js/geojson/src' {
2759
2628
  import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
2760
2629
  import type { GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
2761
2630
  import type { Position } from '@mappedin/mappedin-js/geojson/src/types/geometry';
2762
- import type { InsetPadding, InsetPaddingOption, RendererCoreOptions, ClickPayload, HoverPayload, CameraPayload, MapEvent, MapEventPayload, EnvMapOptions, Interpolation, ColorString, InterpolateOn } from '@mappedin/mappedin-js/geojson/src/types';
2631
+ import type { InsetPadding, InsetPaddingOption, RendererCoreOptions, ClickPayload, HoverPayload, CameraPayload, MapEvent, MapEventPayload, EnvMapOptions, Interpolation, ColorString, InterpolateOn, BevelState } from '@mappedin/mappedin-js/geojson/src/types';
2763
2632
  import type { GeometryState } from '@mappedin/mappedin-js/geojson/src/components/mesh';
2764
2633
  import type { ShapeState, CustomGeometryBuilder } from '@mappedin/mappedin-js/geojson/src/components/custom';
2765
2634
  import type { ModelState, UpdateModelState, InitializeModelState } from '@mappedin/mappedin-js/geojson/src/components/model';
@@ -2824,7 +2693,7 @@ declare module '@mappedin/mappedin-js/geojson/src' {
2824
2693
  export type { AddText3DOptions, InitializeText3DState, UpdatableText3DState } from '@mappedin/mappedin-js/geojson/src/components/text3d';
2825
2694
  export { ATTRIBUTION_POSITIONS } from '@mappedin/mappedin-js/geojson/src/systems/html-controls/system';
2826
2695
  export { ANIMATION_TWEENS } from '@mappedin/mappedin-js/geojson/src/camera';
2827
- export type { AddPathOptions, AddMarkerOptions, AddLabelOptionsInternal, AnimateToOptions, FocusOnOptions, MapViewState, MarkerState, PathState, GroupContainerState, GeometryGroupState, ShapeState, CustomGeometryBuilder, LabelState, GeometryState, ModelState, UpdateModelState, InitializeModelState, Camera, InsetPadding, InsetPaddingOption, Position, ClickPayload, HoverPayload, CameraPayload, MapEvent, MapEventPayload, CollisionRankingTier, LabelAppearance, RendererCore, EnvMapOptions, RendererCoreOptions, Interpolation, ColorString, InterpolateOn, };
2696
+ export type { AddPathOptions, AddMarkerOptions, AddLabelOptionsInternal, AnimateToOptions, FocusOnOptions, MapViewState, MarkerState, PathState, GroupContainerState, GeometryGroupState, ShapeState, CustomGeometryBuilder, LabelState, GeometryState, ModelState, UpdateModelState, InitializeModelState, Camera, InsetPadding, InsetPaddingOption, Position, ClickPayload, HoverPayload, CameraPayload, MapEvent, MapEventPayload, CollisionRankingTier, LabelAppearance, RendererCore, EnvMapOptions, RendererCoreOptions, Interpolation, ColorString, InterpolateOn, BevelState, };
2828
2697
  export function createRenderer(container: HTMLElement, options?: RendererCoreOptions & {
2829
2698
  [key: string]: any;
2830
2699
  }): Promise<RendererCore>;
@@ -2837,10 +2706,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
2837
2706
  import type { AddText3DOptions, EnvMapOptions, ImagePlacementOptions, InitializeModelState, InsetPaddingOption, Interpolation, LabelAppearance } from '@mappedin/mappedin-js/geojson/src';
2838
2707
  import type { TFloorChangeReason } from '@mappedin/mappedin-js/mappedin-js/src/events';
2839
2708
  import type { Annotation, Area, Connection, Coordinate, Door, EnterpriseCategory, EnterpriseLocation, EnterpriseVenue, Facade, Floor, FloorStack, LocationCategory, LocationProfile, MapObject, Node, PointOfInterest, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2840
- import type { Image, Label, Marker, Model, Path, Shape, Text3D } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
2841
- import type { PathSegment } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path';
2709
+ import type { Image3DView, Label, Marker, Model, Path, Shape, Text3DView, PathSegment } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
2842
2710
  import type { PartialDeep } from 'type-fest';
2843
- import type { MapElementToState, MapElementToUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states';
2711
+ import type { MapElementToGetState, MapElementToUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states';
2844
2712
  export type TAnimateStateResult = {
2845
2713
  result: 'completed' | 'cancelled';
2846
2714
  };
@@ -2957,7 +2825,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
2957
2825
  /**
2958
2826
  * Elements created by the MapView.
2959
2827
  */
2960
- export type MapViewElements = Label | Marker | Model | Shape | Text3D | Path | PathSegment | Image;
2828
+ export type MapViewElements = Label | Marker | Model | Shape | Text3DView | Path | PathSegment | Image3DView;
2961
2829
  /**
2962
2830
  * All map elements from the MapData and MapView.
2963
2831
  */
@@ -3174,26 +3042,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
3174
3042
  */
3175
3043
  interactive?: boolean;
3176
3044
  /**
3177
- * The path will be adjusted vertically to the tallest altitude along the path.
3178
- * The altitude is in meters.
3179
- *
3180
- * @defaultValue false
3181
- */
3182
- adjustedAltitude?: boolean;
3183
- /**
3184
- * The maximum altitude of the path in meters.
3185
- * The altitude is in meters.
3045
+ * How much the path hovers above the floor plane in meters.
3186
3046
  *
3187
- * @defaultValue Infinite
3047
+ * @defaultValue 0.1
3188
3048
  */
3189
- maxAdjustedAltitude?: number;
3190
- /**
3191
- * The minimum altitude of the path in meters.
3192
- * The altitude is in meters.
3193
- *
3194
- * @defaultValue -Infinite
3195
- */
3196
- minAdjustedAltitude?: number;
3049
+ verticalOffset?: number;
3197
3050
  /**
3198
3051
  * Whether the path should be dashed.
3199
3052
  *
@@ -3260,7 +3113,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
3260
3113
  *
3261
3114
  * Can be a boolean to enable or disable smoothing, or an object with a radius property to specify the line of sight radius in metres.
3262
3115
  *
3263
- * @default true
3116
+ * @default true for non-enterprise mode, false for enterprise mode
3264
3117
  *
3265
3118
  * @example
3266
3119
  * ```ts
@@ -3270,6 +3123,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
3270
3123
  * radius: 3,
3271
3124
  * }
3272
3125
  * })
3126
+ *
3127
+ * // Explicitly enable smoothing in enterprise mode
3128
+ * mapView.getDirections(firstSpace, secondSpace, {
3129
+ * smoothing: true
3130
+ * })
3273
3131
  * ```
3274
3132
  */
3275
3133
  smoothing?: boolean | {
@@ -3547,6 +3405,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
3547
3405
  * @default false
3548
3406
  */
3549
3407
  debug?: boolean;
3408
+ /**
3409
+ * The maximum acceptable accuracy in meters. Position updates with accuracy exceeding this value will be dropped.
3410
+ * @default 50
3411
+ */
3412
+ accuracyThreshold?: number;
3550
3413
  };
3551
3414
  /**
3552
3415
  * Position update options for the {@link BlueDot.update} method.
@@ -3580,6 +3443,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
3580
3443
  * Set to `undefined` to disable floor level and show the BlueDot on all floors.
3581
3444
  */
3582
3445
  floorOrFloorId?: Floor | string | 'device' | undefined;
3446
+ /**
3447
+ * Timestamp of the position update in milliseconds.
3448
+ */
3449
+ timestamp?: number;
3583
3450
  };
3584
3451
  export type LanguagePackHydrationItem = {
3585
3452
  language: Language;
@@ -3594,7 +3461,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
3594
3461
  */
3595
3462
  export type WithState<T> = T extends {
3596
3463
  __type: infer U;
3597
- } ? U extends keyof MapElementToState ? T : never : T extends string ? T extends keyof MapElementToState ? T : never : never;
3464
+ } ? U extends keyof MapElementToGetState ? T : never : T extends string ? T extends keyof MapElementToGetState ? T : never : never;
3598
3465
  /**
3599
3466
  * The type for updating the state of map elements (colors, texts, etc.).
3600
3467
  * Accepts partial state updates for all element types.
@@ -3608,7 +3475,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
3608
3475
  */
3609
3476
  export type TGetState<T extends MapElementsWithState | string> = T extends {
3610
3477
  __type: infer U;
3611
- } ? U extends keyof MapElementToState ? MapElementToState[U] : never : T extends string ? T extends keyof MapElementToState ? MapElementToState[T] : Record<string, any> : never;
3478
+ } ? U extends keyof MapElementToGetState ? MapElementToGetState[U] : never : T extends string ? T extends keyof MapElementToGetState ? MapElementToGetState[T] : Record<string, any> : never;
3612
3479
  export type GlobalState = {
3613
3480
  /**
3614
3481
  * The color of the background, in hex format(#000000).
@@ -3712,7 +3579,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
3712
3579
  export type TMultiFloorViewOptions = {
3713
3580
  /**
3714
3581
  * Enable multi-floor view to show floors stacked vertically below the active floor.
3715
- * @default false
3582
+ * @default true
3716
3583
  */
3717
3584
  enabled?: boolean;
3718
3585
  /**
@@ -3841,6 +3708,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-
3841
3708
  export type TBlueDotPositionUpdateWithFloor = Omit<TBlueDotPositionUpdate, 'floorOrFloorId'> & {
3842
3709
  floor?: Floor | 'device' | undefined;
3843
3710
  };
3711
+ export type TBlueDotPositionProcessor = (current: TBlueDotPositionUpdateWithFloor, incoming: TBlueDotPositionUpdateWithFloor) => TBlueDotPositionUpdateWithFloor | undefined;
3844
3712
  /**
3845
3713
  * ## BlueDot in Mappedin JS
3846
3714
  *
@@ -3968,6 +3836,36 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-
3968
3836
  * mapView.BlueDot.follow('position-and-heading', { zoomLevel: 21, pitch: 45 });
3969
3837
  */
3970
3838
  follow: (mode: TFollowMode, cameraOptions?: TFollowCameraOptions) => void;
3839
+ /**
3840
+ * Set a position processor callback that allows intercepting and modifying device/geolocation position updates before they are applied.
3841
+ *
3842
+ * **Note**: This processor only applies to automatic position updates from device geolocation.
3843
+ * Manual position updates via `update()` method bypass the processor and are applied directly.
3844
+ *
3845
+ * @param processor - A callback function that receives current state and incoming update. Return undefined to discard the update, or return a modified update object.
3846
+ *
3847
+ * @example Discard inaccurate positions
3848
+ * ```ts
3849
+ * blueDot.setPositionProcessor((current, incoming) => {
3850
+ * if (incoming.accuracy && incoming.accuracy > 50) {
3851
+ * return undefined; // Discard update
3852
+ * }
3853
+ * return incoming; // Accept update
3854
+ * });
3855
+ * ```
3856
+ *
3857
+ * @example Modify incoming positions
3858
+ * ```ts
3859
+ * blueDot.setPositionProcessor((current, incoming) => {
3860
+ * // Apply custom smoothing or validation logic
3861
+ * return {
3862
+ * ...incoming,
3863
+ * accuracy: Math.min(incoming.accuracy || 100, 10) // Cap accuracy
3864
+ * };
3865
+ * });
3866
+ * ```
3867
+ */
3868
+ setPositionProcessor(processor?: TBlueDotPositionProcessor): void;
3971
3869
  }
3972
3870
  export type TFollowMode =
3973
3871
  /** Camera position follows the Blue Dot's position. */
@@ -4070,6 +3968,170 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/hydrate-map-data' {
4070
3968
  export const hydrateMapData: (backup: THydrateMapDataBundle | TMVF, userOptions?: TGetMapDataOptions) => Promise<MapData>;
4071
3969
  }
4072
3970
 
3971
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d' {
3972
+ import { Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3973
+ import type { TAddText3DOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
3974
+ import type { CurrentMapGetter } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/types';
3975
+ import { Text3DView } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
3976
+ /**
3977
+ * Disables the Text3D web worker and falls back to processing on the main thread.
3978
+ *
3979
+ * This function should be called when using Text3D features in environments
3980
+ * with strict Content Security Policy (CSP) that blocks web workers from
3981
+ * being created using blob: URLs or unsafe-eval directives.
3982
+ *
3983
+ * While disabling the worker may slightly impact performance for complex text
3984
+ * rendering, it enables Text3D functionality in CSP-restricted environments.
3985
+ *
3986
+ * Ensure calling this before calling preloadFont
3987
+ *
3988
+ * @example
3989
+ * ```typescript
3990
+ * import {disableText3DWorker} from '@mappedin/mappedin-js';
3991
+ * // Disable Text3D worker for CSP compatibility
3992
+ * disableText3DWorker();
3993
+ *
3994
+ * // Then use Text3D features as normal
3995
+ * mapView.Text3D.labelAll();
3996
+ * ```
3997
+ */
3998
+ export function disableText3DWorker(): void;
3999
+ /**
4000
+ * ## Text3D in Mappedin JS
4001
+ *
4002
+ * Text3D creates three-dimensional text labels that are rendered directly in the 3D scene. These labels are perfect for displaying space names, room numbers, or any text that needs to be visible from any angle in the 3D environment.
4003
+ *
4004
+ * ### Features
4005
+ * - 3D text rendering with depth and perspective
4006
+ * - Automatic text wrapping and sizing
4007
+ * - Customizable fonts, colors, and materials
4008
+ * - Performance-optimized with web worker support
4009
+ *
4010
+ * ### Example Usage
4011
+ * ```ts
4012
+ * // Create labels for all spaces
4013
+ * const labels = mapView.Text3D.labelAll();
4014
+ *
4015
+ * // Create a label for a specific space
4016
+ * const label = mapView.Text3D.label(space, "Room 101", { fontSize: 12 });
4017
+ *
4018
+ * // Remove a specific label
4019
+ * mapView.Text3D.remove(label);
4020
+ *
4021
+ * // Remove all labels
4022
+ * mapView.Text3D.removeAll();
4023
+ * ```
4024
+ *
4025
+ * ### Performance Considerations
4026
+ * - Use `labelAll()` for better performance when creating multiple labels.
4027
+ *
4028
+ * ### Advanced
4029
+ * - Customize text appearance with fonts, colors, and materials.
4030
+ * - Use `labelAll()` with options to apply consistent styling to all labels.
4031
+ * - Text3D labels are automatically positioned and sized based on space geometry.
4032
+ *
4033
+ * This class is accessed using {@link MapView.Text3D}.
4034
+ */
4035
+ export class Text3D {
4036
+ #private;
4037
+ /**
4038
+ * @internal
4039
+ */
4040
+ constructor({ currentMapGetter }: {
4041
+ currentMapGetter: CurrentMapGetter;
4042
+ });
4043
+ /**
4044
+ * Creates polygon labels for all spaces.
4045
+ *
4046
+ * @param options Configuration options for text label creation (see {@link AddText3DOptions}).
4047
+ * @returns An array of Text3DView instances representing the created labels. If a space is already labeled, the existing Text3D instance will be returned.
4048
+ *
4049
+ * @example Create labels for all spaces with default settings
4050
+ * ```ts
4051
+ * const labels = mapView.Text3D.labelAll();
4052
+ * ```
4053
+ *
4054
+ * @example Create labels with custom styling
4055
+ * ```ts
4056
+ * const labels = mapView.Text3D.labelAll({
4057
+ * fontSize: 14,
4058
+ * color: 'white',
4059
+ * backgroundColor: 'rgba(0, 0, 0, 0.7)'
4060
+ * });
4061
+ * ```
4062
+ *
4063
+ * @see [Text3D Guide](https://developer.mappedin.com/web-sdk/text3d)
4064
+ */
4065
+ labelAll(options?: TAddText3DOptions): Text3DView[];
4066
+ /**
4067
+ * Creates a 3D text label for a given space.
4068
+ *
4069
+ * @param target The target space to label.
4070
+ * @param content The content of the label. If not provided, target.name will be used.
4071
+ * @param options Configuration options for the text label creation (see {@link AddText3DOptions}).
4072
+ * @returns A Text3DView instance representing the created label, or undefined if creation failed.
4073
+ *
4074
+ * @throws {Error} If the target is not a Space.
4075
+ *
4076
+ * @example Create a label with custom text
4077
+ * ```ts
4078
+ * const label = mapView.Text3D.label(space, "Conference Room A", { fontSize: 12 });
4079
+ * ```
4080
+ *
4081
+ * @example Create a label using space name
4082
+ * ```ts
4083
+ * const label = mapView.Text3D.label(space); // Uses space.name
4084
+ * ```
4085
+ *
4086
+ * @example Create a label with custom styling
4087
+ * ```ts
4088
+ * const label = mapView.Text3D.label(space, "VIP Room", {
4089
+ * fontSize: 16,
4090
+ * color: 'gold',
4091
+ * backgroundColor: 'rgba(0, 0, 0, 0.8)'
4092
+ * });
4093
+ * ```
4094
+ *
4095
+ * @see [Text3D Guide](https://developer.mappedin.com/web-sdk/text3d)
4096
+ */
4097
+ label(target: Space, content?: string, options?: TAddText3DOptions): Text3DView | undefined;
4098
+ /**
4099
+ * Removes one or more Text3D labels from the map.
4100
+ *
4101
+ * @param target Can be either:
4102
+ * - A single Text3DView instance
4103
+ * - An array of Text3DView instances
4104
+ * - A string ID of the Text3DView to remove
4105
+ *
4106
+ * @example Remove a single text label
4107
+ * ```ts
4108
+ * mapView.Text3D.remove(text3dView);
4109
+ * ```
4110
+ *
4111
+ * @example Remove multiple text labels
4112
+ * ```ts
4113
+ * mapView.Text3D.remove([text3dView1, text3dView2]);
4114
+ * ```
4115
+ *
4116
+ * @example Remove by ID
4117
+ * ```ts
4118
+ * mapView.Text3D.remove("text3d-123");
4119
+ * ```
4120
+ */
4121
+ remove(target: Text3DView): void;
4122
+ remove(target: string): void;
4123
+ /**
4124
+ * Removes all Text3D labels from the current map.
4125
+ *
4126
+ * @example
4127
+ * ```ts
4128
+ * mapView.Text3D.removeAll();
4129
+ * ```
4130
+ */
4131
+ removeAll(): void;
4132
+ }
4133
+ }
4134
+
4073
4135
  declare module '@mappedin/mappedin-js/mappedin-js/src/states' {
4074
4136
  export * from '@mappedin/mappedin-js/mappedin-js/src/states/doors-state';
4075
4137
  export * from '@mappedin/mappedin-js/mappedin-js/src/states/facade-state';
@@ -4089,12 +4151,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states' {
4089
4151
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects' {
4090
4152
  export { Label } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/label';
4091
4153
  export { Marker } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/marker';
4092
- export { Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/image';
4154
+ export { Image3DView } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/image3d';
4093
4155
  export { Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/model';
4094
4156
  export { Path, PathSegment } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path';
4095
4157
  export { CameraTransform, type CameraTransformOptions } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/camera-transform';
4096
4158
  export { Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/shape';
4097
- export { Text3D } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/text3d';
4159
+ export { Text3DView } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/text3d';
4098
4160
  }
4099
4161
 
4100
4162
  declare module '@mappedin/mappedin-js/mappedin-js/src/debug' {
@@ -4107,12 +4169,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/debug' {
4107
4169
  }
4108
4170
 
4109
4171
  declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
4110
- import { type TDirectionInstruction } from '@mappedin/mappedin-js/mappedin-js/src';
4172
+ import { type TAddPathOptions, type TDirectionInstruction } from '@mappedin/mappedin-js/mappedin-js/src';
4111
4173
  import type { Directions, GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
4112
4174
  import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
4113
4175
  import type { Floor, FloorStack } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4114
4176
  import { Path, Marker } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
4115
- import type { RendererCore, Interpolation } from '@mappedin/core-sdk';
4177
+ import type { RendererCore } from '@mappedin/core-sdk';
4116
4178
  export type TCreateMarker = boolean | ((instruction: TDirectionInstruction) => Marker);
4117
4179
  /**
4118
4180
  * Options for navigation.
@@ -4151,45 +4213,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
4151
4213
  /**
4152
4214
  * Path Options for the non-current path in multi-destination mode.
4153
4215
  */
4154
- inactivePathOptions?: {
4155
- /**
4156
- * Duration in milliseconds for the path to be drawn.
4157
- * @default 1000
4158
- */
4159
- drawDuration?: number;
4160
- /**
4161
- * The color of the path.
4162
- * @default '#40A9FF'
4163
- */
4164
- color?: string;
4165
- /**
4166
- * Whether the path should be clickable.
4167
- *
4168
- * @defaultValue false
4169
- */
4170
- interactive?: boolean;
4171
- /**
4172
- * The accent color of the path. This is applied to arrows if they are displayed
4173
- * @default 'blue'
4174
- */
4175
- accentColor?: string;
4176
- /**
4177
- * The width of the path in meters. Can be a number or an {@link Interpolation}.
4178
- *
4179
- * @defaultValue Interpolation { on: 'zoom-level', input: [17, 22], output: [0.8, 0.4] }
4180
- */
4181
- width?: number | Interpolation<'zoom-level', number[]>;
4182
- /**
4183
- * Controls whether arrows are displayed on the path.
4184
- * @default false
4185
- */
4186
- displayArrowsOnPath?: boolean;
4187
- /**
4188
- * Controls whether arrows are animated.
4189
- * @default false
4190
- */
4191
- animateArrowsOnPath?: boolean;
4192
- };
4216
+ inactivePathOptions?: Partial<TAddPathOptions>;
4193
4217
  /**
4194
4218
  * Controls whether the path drawing is animated across floors.
4195
4219
  * @default true
@@ -4198,45 +4222,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
4198
4222
  /**
4199
4223
  * Options for the path.
4200
4224
  */
4201
- pathOptions?: {
4202
- /**
4203
- * Duration in milliseconds for the path to be drawn.
4204
- * @default 1000
4205
- */
4206
- drawDuration?: number;
4207
- /**
4208
- * The color of the path.
4209
- * @default '#40A9FF'
4210
- */
4211
- color?: string;
4212
- /**
4213
- * Whether the path should be clickable.
4214
- *
4215
- * @defaultValue false
4216
- */
4217
- interactive?: boolean;
4218
- /**
4219
- * The accent color of the path. This is applied to arrows if they are displayed
4220
- * @default 'blue'
4221
- */
4222
- accentColor?: string;
4223
- /**
4224
- * The width of the path in meters. Can be a number or an {@link Interpolation}.
4225
- *
4226
- * @defaultValue Interpolation { on: 'zoom-level', input: [17, 22], output: [0.8, 0.4] }
4227
- */
4228
- width?: number | Interpolation<'zoom-level', number[]>;
4229
- /**
4230
- * Controls whether arrows are displayed on the path.
4231
- * @default false
4232
- */
4233
- displayArrowsOnPath?: boolean;
4234
- /**
4235
- * Controls whether arrows are animated.
4236
- * @default false
4237
- */
4238
- animateArrowsOnPath?: boolean;
4239
- };
4225
+ pathOptions?: Partial<TAddPathOptions>;
4240
4226
  /**
4241
4227
  * Options for the markers at the departure and destination.
4242
4228
  */
@@ -4391,7 +4377,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
4391
4377
  import { Labels } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/labels';
4392
4378
  import { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
4393
4379
  import { Markers } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/markers';
4394
- import { Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images';
4380
+ import { Image3D } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images';
4395
4381
  import { Models } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/models';
4396
4382
  import { Paths } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/paths';
4397
4383
  import type { BlueDotState } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot';
@@ -4444,7 +4430,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
4444
4430
  BlueDot: BlueDot;
4445
4431
  Shapes: Shapes;
4446
4432
  Style: Style;
4447
- Images: Images;
4433
+ Image3D: Image3D;
4448
4434
  constructor(rendererCore: RendererCore, mapView: MapView, externalPubSub: PubSub<TEvents>);
4449
4435
  preloadFloors(floors: Floor[]): void;
4450
4436
  updateState<T extends MapElementsWithState>(target: T, state: TUpdateState<T>): void;
@@ -4590,7 +4576,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson' {
4590
4576
  export { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions';
4591
4577
  export { Style } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/style';
4592
4578
  export { default as Outdoor } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor';
4593
- export { Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images';
4579
+ export { Image3D } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images';
4580
+ export { Text3D } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
4594
4581
  }
4595
4582
 
4596
4583
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions/directions' {
@@ -4610,7 +4597,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions/dir
4610
4597
  /**
4611
4598
  * @internal
4612
4599
  */
4613
- constructor(directions: DirectionsCollection, mapData: MapDataInternal, from: TNavigationTarget[], to: TNavigationTarget[], options?: {
4600
+ constructor(directions: DirectionsCollection, mapData: MapDataInternal, departure: TNavigationTarget, destination: TNavigationTarget, options?: {
4614
4601
  id?: string;
4615
4602
  });
4616
4603
  /**
@@ -4620,11 +4607,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions/dir
4620
4607
  /**
4621
4608
  * The selected departure.
4622
4609
  */
4623
- get departure(): TNavigationTarget | undefined;
4610
+ departure: TNavigationTarget;
4624
4611
  /**
4625
4612
  * The selected destination.
4626
4613
  */
4627
- get destination(): TNavigationTarget | undefined;
4614
+ destination: TNavigationTarget;
4628
4615
  /**
4629
4616
  * All the coordinates ({@link Coordinate}) of the directions.
4630
4617
  */
@@ -4647,8 +4634,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions/dir
4647
4634
  id: string;
4648
4635
  directions: DirectionFeature[];
4649
4636
  __type: string;
4650
- from: TNavigationTarget[];
4651
- to: TNavigationTarget[];
4637
+ from: TNavigationTarget;
4638
+ to: TNavigationTarget;
4652
4639
  };
4653
4640
  }
4654
4641
  }
@@ -4815,15 +4802,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
4815
4802
  import type { Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4816
4803
  import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle, OperationHours, SiblingGroup, LocationState } from '@mappedin/mvf-v2';
4817
4804
  import { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
4818
- export type { Text3D as Text3DApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
4819
4805
  import type { InsetPadding, InsetPaddingOption, Shading, PaintStyle, LineStyle, AddText3DOptions, InitializeText3DState, EnvMapOptions, MapViewState, InitializeModelState, WatermarkUpdateOptions, Interpolation, LabelAppearance, ColorString, InterpolateOn } from '@mappedin/mappedin-js/geojson/src';
4820
- import { enableTestMode, preloadFont } from '@mappedin/mappedin-js/geojson/src';
4806
+ import { enableTestMode, preloadFont, ANIMATION_TWEENS } from '@mappedin/mappedin-js/geojson/src';
4821
4807
  export type { PubSub } from '@packages/internal/common/pubsub';
4822
4808
  export type { MappedinError, MappedinRenderError } from '@packages/internal/common/errors';
4823
4809
  import type { LanguagePackHydrationItem, TImagePlacementOptions, TMultiFloorViewOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
4824
4810
  import { MAPPEDIN_COLORS } from '@mappedin/mappedin-js/mappedin-js/src/constants';
4825
4811
  import { unzipAndParseMVFv2 } from '@packages/internal/mvf-utils/mvf-utils';
4826
- import type { GeolocationPositionExtended } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
4812
+ import type { GeolocationPositionExtended, TBlueDotPositionUpdateWithFloor, TBlueDotPositionProcessor } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
4827
4813
  import { hydrateMapData, type THydrateMapDataBundle } from '@mappedin/mappedin-js/mappedin-js/src/hydrate-map-data';
4828
4814
  export { disableText3DWorker } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
4829
4815
  export { hydrateMapData, type THydrateMapDataBundle };
@@ -5130,27 +5116,31 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
5130
5116
  maplibre: boolean;
5131
5117
  }>;
5132
5118
  export const show3dMap: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
5119
+ /**
5120
+ * Returns the package version of the SDK.
5121
+ */
5122
+ export const getVersion: () => string | undefined;
5133
5123
  /**
5134
5124
  * @internal
5135
5125
  * @deprecated Use {@link show3dMap} instead.
5136
5126
  */
5137
5127
  export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
5138
- export { parseMVF, unzipMVF, enableTestMode, preloadFont, MAPPEDIN_COLORS };
5139
- export type { MapData, MapViewState, GeolocationPositionExtended, TEvents, TMapDataEvents, TStateChangedInternalPayload, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TSearchOptions, TGetMapDataSharedOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, EnvMapOptions, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, AddText3DOptions, InitializeText3DState, InitializeModelState, Interpolation, LabelAppearance, ColorString, InterpolateOn, };
5128
+ export { parseMVF, unzipMVF, enableTestMode, preloadFont, MAPPEDIN_COLORS, ANIMATION_TWEENS };
5129
+ export type { MapData, MapViewState, GeolocationPositionExtended, TBlueDotPositionUpdateWithFloor, TBlueDotPositionProcessor, TEvents, TMapDataEvents, TStateChangedInternalPayload, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TSearchOptions, TGetMapDataSharedOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, EnvMapOptions, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, AddText3DOptions, InitializeText3DState, InitializeModelState, Interpolation, LabelAppearance, ColorString, InterpolateOn, };
5140
5130
  export { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
5141
5131
  export type * from 'geojson';
5142
5132
  export type { TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TAddMarkerOptions, TAddPathOptions, TAddLabelOptions, TAddModelOptions, TAddModel, TAddImageOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerPlacement, TDirectionInstruction, TDirectionInstructionAction, TFocusTarget, IFocusable, IAnchorable, TMapDataObjectTypes, TSetFloorOptions, TCancellablePromise, TAnimateStateResult, GlobalState, TActionType, TBearingType, TConnectionType, TMultiFloorViewOptions, MapViewElements, MapDataElements, MapElementsWithState, TGetState, TUpdateState, } from '@mappedin/mappedin-js/mappedin-js/src/types';
5143
- export type { TModelState, TModelUpdateState, TLabelState, TLabelUpdateState, TMarkerState, TMarkerUpdateState, TPathState, TPathUpdateState, TShapeState, TShapeUpdateState, TText3DState, TText3DUpdateState, TWallsState, TWallsUpdateState, TDoorsState, TDoorsUpdateState, TFacadeState, TFacadeUpdateState, TFloorState, TFloorUpdateState, TGeometryState, TGeometryUpdateState, TImageState, TImageUpdateState, MapElementToState, MapElementToUpdateState, } from '@mappedin/mappedin-js/mappedin-js/src/states';
5133
+ export type { TModelState, TModelUpdateState, TLabelState, TLabelUpdateState, TMarkerState, TMarkerUpdateState, TPathState, TPathUpdateState, TShapeState, TShapeUpdateState, TText3DState, TText3DUpdateState, TWallsState, TWallsUpdateState, TDoorsState, TDoorsUpdateState, TFacadeState, TFacadeUpdateState, TFloorState, TFloorUpdateState, TGeometryState, TGeometryUpdateState, TImage3DState as TImageState, TImage3DUpdateState as TImageUpdateState, MapElementToGetState, MapElementToUpdateState, } from '@mappedin/mappedin-js/mappedin-js/src/states';
5144
5134
  export { WALLS, DOORS, ACTION_TYPE, BEARING_TYPE, CONNECTION_TYPE } from '@mappedin/mappedin-js/mappedin-js/src/types';
5145
- export type { Label, Marker, Path, PathSegment, Shape, CameraTransform, Model, Image, Text3D, } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
5135
+ export type { Label, Marker, Path, PathSegment, Shape, CameraTransform, Model, Image3DView, Text3DView, } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
5146
5136
  export type { Debug } from '@mappedin/mappedin-js/mappedin-js/src/debug';
5147
5137
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
5148
5138
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5149
- export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, ImageMetaData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, LocationProfile, LocationCategory, Facade, Node, Area, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5139
+ export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, ImageMetaData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, LocationProfile, LocationCategory, Facade, Node, Area, type Places, type OpeningHours, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5150
5140
  export { setWorkersUrl } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
5151
5141
  export { findPreferredLanguageInVenue } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/language';
5152
5142
  export type { TFindPreferredLanguageInVenueOptions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/language';
5153
- export type { Camera, Models, Labels, Markers, Paths, Exporter, Style, Shapes, Outdoor, Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
5143
+ export type { Camera, Models, Labels, Markers, Paths, Exporter, Style, Shapes, Outdoor, Image3D, Text3D, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
5154
5144
  export { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions/directions';
5155
5145
  export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search';
5156
5146
  export type { TFindNearestOptions, TFindNearestResult, TQueriables, Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
@@ -5409,7 +5399,16 @@ declare module '@mappedin/mappedin-js/packages/mvf-utils/mvf-types' {
5409
5399
  export type WithTextures<T extends SpaceProperties | ObstructionProperties> = T & {
5410
5400
  textures?: EnterpriseTexture[];
5411
5401
  };
5412
- export type PolygonFeatureProperties<T extends SpaceProperties | ObstructionProperties> = WithEntepriseStyle<T> | WithPolygonImage<T> | WithTextures<T>;
5402
+ export type WithBevel<T extends SpaceProperties | ObstructionProperties> = T & {
5403
+ bevel?: {
5404
+ enabled?: boolean;
5405
+ thickness?: number;
5406
+ size?: number;
5407
+ offset?: number;
5408
+ segments?: number;
5409
+ };
5410
+ };
5411
+ export type PolygonFeatureProperties<T extends SpaceProperties | ObstructionProperties> = WithEntepriseStyle<T> | WithPolygonImage<T> | WithTextures<T> | WithBevel<T>;
5413
5412
  export type MVFv1PolygonLikeProperties = {
5414
5413
  id: string;
5415
5414
  altitude?: number;
@@ -5674,7 +5673,7 @@ declare module '@mappedin/mappedin-js/packages/mvf-utils/mvf-utils' {
5674
5673
  * @private
5675
5674
  */
5676
5675
  shouldPopulateBundledImagesAsBlobs?: boolean;
5677
- mvfVersion?: '2.0.0' | '3.0.0';
5676
+ mvfVersion?: '2.0.0' | '2.0.0-c' | '3.0.0';
5678
5677
  };
5679
5678
  /** @internal */
5680
5679
  export type TGetVenueMVFOptions = TGetVenueBundleOptions & {
@@ -5779,7 +5778,7 @@ declare module '@mappedin/mappedin-js/packages/mvf-utils/mvf-utils' {
5779
5778
  * @hidden
5780
5779
  * @internal
5781
5780
  */
5782
- mvfVersion?: '2.0.0' | '3.0.0';
5781
+ mvfVersion?: '2.0.0' | '2.0.0-c' | '3.0.0';
5783
5782
  };
5784
5783
  /**
5785
5784
  * @interface
@@ -5863,6 +5862,10 @@ declare module '@mappedin/mappedin-js/packages/mvf-utils/mvf-utils' {
5863
5862
  export function downloadLanguagePack(url: string, { signal }: {
5864
5863
  signal: AbortSignal;
5865
5864
  }): Promise<ParsedMVFLocalePack | undefined>;
5865
+ export function getMVFBundlePathAPIGateway(options: {
5866
+ mvfVersion?: string;
5867
+ useDraftData?: boolean;
5868
+ }): string;
5866
5869
  export function downloadVenueBundleMVFAPIGateway(options: TGetVenueBundleOptions): Promise<{
5867
5870
  compressed: Uint8Array;
5868
5871
  localePacks: LocalePackUrls;
@@ -5918,7 +5921,7 @@ declare module '@mappedin/mappedin-js/packages/mvf-utils/mvf-utils' {
5918
5921
  */
5919
5922
  tileServerUri: string;
5920
5923
  };
5921
- type InternalServiceEnvironment = 'us' | 'eu' | 'us-staging-enterprise' | 'us-staging-self-serve';
5924
+ type InternalServiceEnvironment = 'us' | 'us-enterprise' | 'eu' | 'us-staging-enterprise' | 'us-staging-self-serve';
5922
5925
  export type ServiceEnvironment = 'us' | 'eu';
5923
5926
  export function createEnvControl(): {
5924
5927
  /**
@@ -5933,8 +5936,12 @@ declare module '@mappedin/mappedin-js/packages/mvf-utils/mvf-utils' {
5933
5936
  * @internal
5934
5937
  */
5935
5938
  updateEnvironment(env: InternalServiceEnvironment): void;
5936
- getBaseUri(enterprise: boolean): string;
5937
- getBaseAuthUri(enterprise?: boolean): string;
5939
+ /**
5940
+ * @internal
5941
+ */
5942
+ setEnterprise(isEnterprise: boolean): void;
5943
+ getBaseUri(): string;
5944
+ getBaseAuthUri(): string;
5938
5945
  getAnalyticsBaseUri(): string;
5939
5946
  getTileServerUri(): string;
5940
5947
  reset(): void;
@@ -5949,7 +5956,7 @@ declare module '@mappedin/mappedin-js/packages/mvf-utils/mvf-utils' {
5949
5956
  * outdoor map. If a map is not a multi-building map, an empty array is returned.
5950
5957
  */
5951
5958
  export const getBuildingIds: (mvf: ParsedMVF) => string[];
5952
- export function unzipAndParseMVFv2(data: Uint8Array, inputVersion?: '2.0.0' | '3.0.0'): Promise<ParsedMVF>;
5959
+ export function unzipAndParseMVFv2(data: Uint8Array, inputVersion?: string): Promise<ParsedMVF>;
5953
5960
  }
5954
5961
 
5955
5962
  declare module '@mappedin/mappedin-js/packages/mvf-utils/geometry' {
@@ -7744,7 +7751,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category'
7744
7751
  }
7745
7752
 
7746
7753
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue' {
7747
- import type { EnterpriseVenue as MVFEnterpriseVenue, Language } from '@mappedin/mvf-v2';
7754
+ import type { EnterpriseVenue as MVFEnterpriseVenue, Language, OperationHours } from '@mappedin/mvf-v2';
7748
7755
  import type { Hyperlink, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7749
7756
  import BaseMetaData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-metadata-object';
7750
7757
  /**
@@ -7771,6 +7778,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue' {
7771
7778
  * The country code of the venue.
7772
7779
  */
7773
7780
  countrycode?: string | undefined;
7781
+ /**
7782
+ * The venue's cover image.
7783
+ * @format uri
7784
+ */
7785
+ coverImage?: string | undefined;
7774
7786
  /**
7775
7787
  * The external ID of the venue.
7776
7788
  */
@@ -7780,9 +7792,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue' {
7780
7792
  */
7781
7793
  defaultLanguage: Language;
7782
7794
  /**
7783
- * The default map of the venue.
7795
+ * The default floor of the venue.
7784
7796
  */
7785
- defaultMap?: string | undefined;
7797
+ defaultFloor?: string | undefined;
7786
7798
  /**
7787
7799
  * Extra properties of the venue.
7788
7800
  */
@@ -7807,6 +7819,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue' {
7807
7819
  * A URL to a web page with [Mappedin Web](https://developer.mappedin.com/docs/enterprise-apps/mappedin-web-v2) for this venue.
7808
7820
  */
7809
7821
  mappedinWebUrl?: string | undefined;
7822
+ /**
7823
+ * When this venue is open.
7824
+ */
7825
+ operationHours?: OperationHours[] | undefined;
7810
7826
  /**
7811
7827
  * The slug of the venue.
7812
7828
  */
@@ -7838,6 +7854,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue' {
7838
7854
  * @returns {string} The name of the EnterpriseVenue.
7839
7855
  */
7840
7856
  get name(): string;
7857
+ /**
7858
+ * @deprecated Use `defaultFloor` instead
7859
+ * The default map of the venue.
7860
+ */
7861
+ get defaultMap(): string;
7841
7862
  /**
7842
7863
  * Serializes the EnterpriseVenue data to JSON.
7843
7864
  *
@@ -8048,6 +8069,21 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location-
8048
8069
  export default LocationCategory;
8049
8070
  }
8050
8071
 
8072
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/opening-hours' {
8073
+ import type { OpeningHoursSpecification } from '@mappedin/mvf-v2';
8074
+ /**
8075
+ * Represents the opening hours of a location.
8076
+ */
8077
+ export class OpeningHours {
8078
+ #private;
8079
+ constructor(mvfData: OpeningHoursSpecification[]);
8080
+ /**
8081
+ * Gets the raw opening hours data.
8082
+ */
8083
+ get raw(): OpeningHoursSpecification[];
8084
+ }
8085
+ }
8086
+
8051
8087
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes' {
8052
8088
  import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
8053
8089
  import { Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
@@ -8230,11 +8266,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/inspector/insp
8230
8266
  export type InspectorOption = Partial<InspectorState>;
8231
8267
  }
8232
8268
 
8233
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/types' {
8234
- import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
8235
- export type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
8236
- }
8237
-
8238
8269
  declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
8239
8270
  import '../styles/marker.scss';
8240
8271
  import { Vector2 } from 'three';
@@ -8339,7 +8370,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
8339
8370
  id?: string | undefined;
8340
8371
  interactive?: boolean | "pointer-events-auto" | undefined;
8341
8372
  rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
8342
- placement?: "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;
8373
+ placement?: "top" | "bottom" | "left" | "right" | "center" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("top" | "bottom" | "left" | "right" | "center" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
8343
8374
  dynamicResize?: boolean | undefined;
8344
8375
  zIndex?: number | undefined;
8345
8376
  lowPriorityPin?: {
@@ -8351,7 +8382,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
8351
8382
  id?: string | undefined;
8352
8383
  interactive?: boolean | "pointer-events-auto" | undefined;
8353
8384
  rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
8354
- placement?: "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;
8385
+ placement?: "top" | "bottom" | "left" | "right" | "center" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("top" | "bottom" | "left" | "right" | "center" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
8355
8386
  dynamicResize?: boolean | undefined;
8356
8387
  zIndex?: number | undefined;
8357
8388
  lowPriorityPin?: {
@@ -8515,9 +8546,9 @@ declare module '@mappedin/mappedin-js/geojson/src/components/path' {
8515
8546
  */
8516
8547
  readonly position: Position;
8517
8548
  /**
8518
- * The altitude of the geometry, in meters
8549
+ * How much the path hovers above the floor plane in meters.
8519
8550
  */
8520
- altitude?: number;
8551
+ verticalOffset?: number;
8521
8552
  /**
8522
8553
  * Whether the path is visible.
8523
8554
  */
@@ -8570,7 +8601,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/path' {
8570
8601
  /**
8571
8602
  * The width of the path.
8572
8603
  *
8573
- * @default Interpolation { on: 'zoom-level', input: [17, 22], output: [0.4, 0.8] }
8604
+ * @default Interpolation { on: 'zoom-level', input: [17, 22], output: [0.8, 0.4] }
8574
8605
  */
8575
8606
  width?: number | Interpolation<'zoom-level', number[]>;
8576
8607
  /**
@@ -8597,6 +8628,10 @@ declare module '@mappedin/mappedin-js/geojson/src/components/path' {
8597
8628
  * Whether the path should be dashed.
8598
8629
  */
8599
8630
  dashed?: boolean;
8631
+ /**
8632
+ * How much the path hovers above the floor plane in meters.
8633
+ */
8634
+ verticalOffset?: number;
8600
8635
  };
8601
8636
  export const addPathOptionsSchema: z.ZodObject<{
8602
8637
  interactive: z.ZodOptional<z.ZodBoolean>;
@@ -9900,11 +9935,9 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/group-container' {
9900
9935
  }
9901
9936
 
9902
9937
  declare module '@mappedin/mappedin-js/geojson/src/entities/geometry-group' {
9903
- import type { LineStyle, PaintStyle, Shading } from '@mappedin/mappedin-js/geojson/src/types';
9938
+ import type { BevelState, LineStyle, PaintStyle, Shading } from '@mappedin/mappedin-js/geojson/src/types';
9904
9939
  import { Object3D } from 'three';
9905
- import { type GeometryState } from '@mappedin/mappedin-js/geojson/src/components/mesh';
9906
- import type { ModelState } from '@mappedin/mappedin-js/geojson/src/components/model';
9907
- import { MaterialSide } from '@mappedin/mappedin-js/geojson/src/components/styles';
9940
+ import type { MaterialSide } from '@mappedin/mappedin-js/geojson/src/components/styles';
9908
9941
  /**
9909
9942
  * State representing a Geometry Group, which is a container for Geometries and Models.
9910
9943
  */
@@ -9912,9 +9945,9 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry-group' {
9912
9945
  readonly id: string | number;
9913
9946
  readonly type: 'geometry-group';
9914
9947
  /**
9915
- * The states of the children of the geometry group
9948
+ * The ids of the children of the geometry group
9916
9949
  */
9917
- readonly children: (GeometryState | ModelState)[];
9950
+ readonly children: (string | number)[];
9918
9951
  /**
9919
9952
  * Whether the geometry group is visible
9920
9953
  */
@@ -9939,6 +9972,10 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry-group' {
9939
9972
  outline?: boolean;
9940
9973
  shading?: Shading;
9941
9974
  side?: MaterialSide;
9975
+ /**
9976
+ * Bevel configuration for extruded shapes.
9977
+ */
9978
+ bevel?: BevelState;
9942
9979
  };
9943
9980
  export type ChildUpdatable<T> = T extends LineStyle ? Partial<Pick<LineStyle, 'color' | 'opacity' | 'visible'>> : Partial<Pick<PaintStyle, 'color' | 'opacity' | 'visible'>>;
9944
9981
  export class GeometryGroupObject3D extends Object3D {
@@ -10037,6 +10074,35 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
10037
10074
  };
10038
10075
  }>;
10039
10076
  };
10077
+ /**
10078
+ * Options for configuring bevel effects on extruded geometry.
10079
+ */
10080
+ export type BevelState = {
10081
+ /**
10082
+ * Whether beveling is enabled.
10083
+ */
10084
+ enabled: boolean;
10085
+ /**
10086
+ * The thickness of the bevel.
10087
+ * @default 0
10088
+ */
10089
+ thickness: number;
10090
+ /**
10091
+ * How far from the shape outline the bevel extends inward.
10092
+ * @default Same as thickness
10093
+ */
10094
+ size?: number;
10095
+ /**
10096
+ * How far from the shape outline the bevel starts.
10097
+ * @default 0
10098
+ */
10099
+ offset?: number;
10100
+ /**
10101
+ * The number of bevel layers for smoother bevels.
10102
+ * @default 3
10103
+ */
10104
+ segments?: number;
10105
+ };
10040
10106
  export type PaintStyle = {
10041
10107
  color: string;
10042
10108
  topColor?: string;
@@ -10052,6 +10118,10 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
10052
10118
  flipImageToFaceCamera?: boolean;
10053
10119
  side?: MaterialSide;
10054
10120
  renderOrder?: number;
10121
+ /**
10122
+ * Bevel configuration for extruded shapes.
10123
+ */
10124
+ bevel?: BevelState;
10055
10125
  };
10056
10126
  export type Shading = {
10057
10127
  start?: number;
@@ -10382,9 +10452,9 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
10382
10452
  import type { Texture, BufferGeometry, Mesh, BatchedMeshGeometryRange } from 'three';
10383
10453
  import { BatchedMesh, Color, Vector3 } from 'three';
10384
10454
  import type { BatchedStandardMaterial } from '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-optimization/batched-material';
10385
- import type { EntityId, Position, Shading } from '@mappedin/mappedin-js/geojson/src/types';
10455
+ import type { BevelState, EntityId, Position, Shading } from '@mappedin/mappedin-js/geojson/src/types';
10386
10456
  import type { Feature, LineString, MultiLineString, MultiPolygon, Polygon, Position as GeoJsonPosition, BBox } from 'geojson';
10387
- import { MaterialSide } from '@mappedin/mappedin-js/geojson/src/components/styles/style';
10457
+ import type { MaterialSide } from '@mappedin/mappedin-js/geojson/src/components/styles/style';
10388
10458
  import { type ImageProperties } from '@mappedin/mappedin-js/geojson/src/components/image';
10389
10459
  import { type BaseTextAreaProperties, type EnterpriseTexture } from '@mappedin/mvf-v2';
10390
10460
  import type { Text } from 'troika-three-text';
@@ -10408,6 +10478,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
10408
10478
  position: GeoJsonPosition;
10409
10479
  };
10410
10480
  textures?: EnterpriseTexture[];
10481
+ bevel?: BevelState;
10411
10482
  };
10412
10483
  /**
10413
10484
  * State representing a Geometry
@@ -10508,6 +10579,10 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
10508
10579
  * The side of the geometry
10509
10580
  */
10510
10581
  side?: MaterialSide;
10582
+ /**
10583
+ * Bevel configuration for extruded shapes.
10584
+ */
10585
+ bevel?: BevelState;
10511
10586
  };
10512
10587
  export class MeshComponent {
10513
10588
  #private;
@@ -10964,7 +11039,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
10964
11039
  import type { AddPathOptions, PathProperties, PathState, PathUpdateState } from '@mappedin/mappedin-js/geojson/src/components/path';
10965
11040
  import { CameraSystem } from '@mappedin/mappedin-js/geojson/src/systems/camera';
10966
11041
  import { DOMDrawSystem } from '@mappedin/mappedin-js/geojson/src/systems/dom-draw/system';
10967
- import { type Map as MapLibreMap } from '@mappedin/mappedin-js/packages/outdoor-context-v5';
11042
+ import { type Map as MapLibreMap, type MapEventType as MapLibreMapEventType } from '@mappedin/mappedin-js/packages/outdoor-context-v5';
10968
11043
  import type { GeometryState } from '@mappedin/mappedin-js/geojson/src/components/mesh';
10969
11044
  import type { InitializeModelState, ModelState, UpdateModelState } from '@mappedin/mappedin-js/geojson/src/components/model';
10970
11045
  import type { GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
@@ -10990,6 +11065,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
10990
11065
  import { Occlusion2DSystem } from '@mappedin/mappedin-js/geojson/src/systems/2d-occlusion/system';
10991
11066
  import type { FloatingFloorTextProperties } from '@mappedin/mvf-v2';
10992
11067
  import { GeometryDisposalSystem } from '@mappedin/mappedin-js/geojson/src/systems/geometry-disposal/system';
11068
+ import type { LiteralUnion } from 'type-fest';
10993
11069
  export type * from '@mappedin/mappedin-js/geojson/src/types';
10994
11070
  export const raycaster: Raycaster;
10995
11071
  /**
@@ -11198,9 +11274,9 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
11198
11274
  setState<T extends EntityId<PathState>>(object: T | T['id'], state: Partial<PathState>): void;
11199
11275
  setState<T extends EntityState>(object: T | T['id'], state: Partial<T>): void;
11200
11276
  /**
11201
- * Project a screen coordinate to a geographic coordinate
11277
+ * Project a clientX/clientY screen coordinate to a geographic coordinate
11202
11278
  */
11203
- projectScreenXYToCoordinate: (x: number, y: number, useWorldPlane?: boolean) => {
11279
+ projectScreenXYToCoordinate: (clientX: MouseEvent["clientX"], clientY: MouseEvent["clientY"], useWorldPlane?: boolean) => {
11204
11280
  coordinate: Position;
11205
11281
  groupContainers: GroupContainerObject3D[] | undefined;
11206
11282
  } | undefined;
@@ -11296,6 +11372,23 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
11296
11372
  * Note: Only use this if you have an animation frame setup elsewhere
11297
11373
  */
11298
11374
  renderSync: () => Promise<any>;
11375
+ /**
11376
+ * Register a MapLibre event listener
11377
+ */
11378
+ onMapLibreEvent(event: LiteralUnion<keyof MapLibreMapEventType, string>, handler: (...args: any[]) => void): void;
11379
+ /**
11380
+ * Remove a MapLibre event listener
11381
+ */
11382
+ offMapLibreEvent(event: keyof MapLibreMapEventType, handler: (...args: any[]) => void): void;
11383
+ /**
11384
+ * Returns true if the renderer has been aborted.
11385
+ */
11386
+ get aborted(): boolean;
11387
+ /**
11388
+ * Register a handler once to be called when the renderer is aborted.
11389
+ * The handler will be removed after it is called.
11390
+ */
11391
+ onAbort(handler: () => void): void;
11299
11392
  /**
11300
11393
  * @internal for testing
11301
11394
  */
@@ -11646,9 +11739,9 @@ declare module '@mappedin/mappedin-js/geojson/src/components/text3d' {
11646
11739
  position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
11647
11740
  content: z.ZodString;
11648
11741
  }, "strip", z.ZodTypeAny, {
11649
- type: "text3d";
11650
- visible: boolean;
11651
11742
  color: string;
11743
+ visible: boolean;
11744
+ type: "text3d";
11652
11745
  flipToFaceCamera: boolean;
11653
11746
  fontSize: number;
11654
11747
  margin: number | [number, number, number, number];
@@ -11670,9 +11763,9 @@ declare module '@mappedin/mappedin-js/geojson/src/components/text3d' {
11670
11763
  maxHeight?: number | undefined;
11671
11764
  hoverColor?: string | undefined;
11672
11765
  }, {
11673
- type: "text3d";
11674
- visible: boolean;
11675
11766
  color: string;
11767
+ visible: boolean;
11768
+ type: "text3d";
11676
11769
  flipToFaceCamera: boolean;
11677
11770
  fontSize: number;
11678
11771
  margin: number | [number, number, number, number];
@@ -11724,8 +11817,8 @@ declare module '@mappedin/mappedin-js/geojson/src/components/text3d' {
11724
11817
  content: z.ZodOptional<z.ZodString>;
11725
11818
  }, "type" | "id">, "strict", z.ZodTypeAny, {
11726
11819
  maxWidth?: number | undefined;
11727
- visible?: boolean | undefined;
11728
11820
  color?: string | undefined;
11821
+ visible?: boolean | undefined;
11729
11822
  flipToFaceCamera?: boolean | undefined;
11730
11823
  font?: string | undefined;
11731
11824
  fontSize?: number | undefined;
@@ -11746,8 +11839,8 @@ declare module '@mappedin/mappedin-js/geojson/src/components/text3d' {
11746
11839
  content?: string | undefined;
11747
11840
  }, {
11748
11841
  maxWidth?: number | undefined;
11749
- visible?: boolean | undefined;
11750
11842
  color?: string | undefined;
11843
+ visible?: boolean | undefined;
11751
11844
  flipToFaceCamera?: boolean | undefined;
11752
11845
  font?: string | undefined;
11753
11846
  fontSize?: number | undefined;
@@ -11798,8 +11891,8 @@ declare module '@mappedin/mappedin-js/geojson/src/components/text3d' {
11798
11891
  position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
11799
11892
  content: z.ZodOptional<z.ZodString>;
11800
11893
  }, "type" | "id">, "maxWidth" | "margin" | "maxHeight" | "position" | "content">, "strict", z.ZodTypeAny, {
11801
- visible?: boolean | undefined;
11802
11894
  color?: string | undefined;
11895
+ visible?: boolean | undefined;
11803
11896
  flipToFaceCamera?: boolean | undefined;
11804
11897
  font?: string | undefined;
11805
11898
  fontSize?: number | undefined;
@@ -11815,8 +11908,8 @@ declare module '@mappedin/mappedin-js/geojson/src/components/text3d' {
11815
11908
  fillOpacity?: number | undefined;
11816
11909
  hoverColor?: string | undefined;
11817
11910
  }, {
11818
- visible?: boolean | undefined;
11819
11911
  color?: string | undefined;
11912
+ visible?: boolean | undefined;
11820
11913
  flipToFaceCamera?: boolean | undefined;
11821
11914
  font?: string | undefined;
11822
11915
  fontSize?: number | undefined;
@@ -11867,8 +11960,8 @@ declare module '@mappedin/mappedin-js/geojson/src/components/text3d' {
11867
11960
  content: z.ZodOptional<z.ZodString>;
11868
11961
  }, "type" | "id">, "strict", z.ZodTypeAny, {
11869
11962
  maxWidth?: number | undefined;
11870
- visible?: boolean | undefined;
11871
11963
  color?: string | undefined;
11964
+ visible?: boolean | undefined;
11872
11965
  flipToFaceCamera?: boolean | undefined;
11873
11966
  font?: string | undefined;
11874
11967
  fontSize?: number | undefined;
@@ -11889,8 +11982,8 @@ declare module '@mappedin/mappedin-js/geojson/src/components/text3d' {
11889
11982
  content?: string | undefined;
11890
11983
  }, {
11891
11984
  maxWidth?: number | undefined;
11892
- visible?: boolean | undefined;
11893
11985
  color?: string | undefined;
11986
+ visible?: boolean | undefined;
11894
11987
  flipToFaceCamera?: boolean | undefined;
11895
11988
  font?: string | undefined;
11896
11989
  fontSize?: number | undefined;
@@ -11915,8 +12008,8 @@ declare module '@mappedin/mappedin-js/geojson/src/components/text3d' {
11915
12008
  parentId?: string | undefined;
11916
12009
  appearance?: {
11917
12010
  maxWidth?: number | undefined;
11918
- visible?: boolean | undefined;
11919
12011
  color?: string | undefined;
12012
+ visible?: boolean | undefined;
11920
12013
  flipToFaceCamera?: boolean | undefined;
11921
12014
  font?: string | undefined;
11922
12015
  fontSize?: number | undefined;
@@ -11940,8 +12033,8 @@ declare module '@mappedin/mappedin-js/geojson/src/components/text3d' {
11940
12033
  parentId?: string | undefined;
11941
12034
  appearance?: {
11942
12035
  maxWidth?: number | undefined;
11943
- visible?: boolean | undefined;
11944
12036
  color?: string | undefined;
12037
+ visible?: boolean | undefined;
11945
12038
  flipToFaceCamera?: boolean | undefined;
11946
12039
  font?: string | undefined;
11947
12040
  fontSize?: number | undefined;
@@ -11992,8 +12085,8 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
11992
12085
  import type { KeysOfUnion } from '@mappedin/mappedin-js/geojson/src/utils';
11993
12086
  import { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
11994
12087
  import { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
11995
- import { ImageGeometry3D, Geometry3D, Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
11996
- import type { ModelGeometry3D, Geometry3DTypes, TextGeometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
12088
+ import { Geometry3D, Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
12089
+ import type { ModelGeometry3D, Geometry3DTypes, TextGeometry3D, ImageGeometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
11997
12090
  import { Geometry2D, Geometry2DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
11998
12091
  import type { StyleComponent } from '@mappedin/mappedin-js/geojson/src/components/styles/style';
11999
12092
  import type { GeometryGroupStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/geometry-group-style';
@@ -12049,19 +12142,42 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator' {
12049
12142
  }
12050
12143
 
12051
12144
  declare module '@mappedin/mappedin-js/geojson/src/utils/constants' {
12052
- import type { InsetPadding } from '@mappedin/mappedin-js/geojson/src/types';
12145
+ import type { InsetPadding, BevelState } from '@mappedin/mappedin-js/geojson/src/types';
12053
12146
  export const DEFAULT_INSET_PADDING: InsetPadding;
12147
+ /**
12148
+ * Default bevel values for ExtrudeGeometry
12149
+ */
12150
+ export const DEFAULT_BEVEL_VALUES: {
12151
+ readonly enabled: false;
12152
+ readonly thickness: 0;
12153
+ readonly size: 0;
12154
+ readonly offset: 0;
12155
+ readonly segments: 3;
12156
+ };
12157
+ /**
12158
+ * Creates ExtrudeGeometry settings with proper bevel defaults
12159
+ * @param bevel - Bevel options from style
12160
+ * @param height - Geometry depth/height
12161
+ */
12162
+ export function createExtrudeSettings(bevel: BevelState | undefined, height: number): {
12163
+ bevelEnabled: boolean;
12164
+ bevelThickness: number;
12165
+ bevelSize: number;
12166
+ bevelOffset: number;
12167
+ bevelSegments: number;
12168
+ depth: number;
12169
+ };
12054
12170
  export const MAPPEDIN_LAYER_ID = "mappedin";
12055
12171
  export enum RAYCAST_LAYERS {
12056
- DEFAULT = 0,
12057
- OUTLINES = 1
12172
+ DEFAULT = 0,
12173
+ OUTLINES = 1
12058
12174
  }
12059
12175
  export const RENDER_LAYERS: {
12060
- ALWAYS_ON_TOP: number;
12176
+ ALWAYS_ON_TOP: number;
12061
12177
  };
12062
12178
  /**
12063
- * Duration of zoom in/out animation when double tapping with one finger or single tapping with two fingers.
12064
- */
12179
+ * Duration of zoom in/out animation when double tapping with one finger or single tapping with two fingers.
12180
+ */
12065
12181
  export const TAP_ZOOM_DURATION = 250;
12066
12182
  export const COLLISION_WORKER_PATH = "collision-worker.csp.js";
12067
12183
  export const MAPLIBRE_WORKER_PATH = "maplibre-worker.csp.js";
@@ -12974,89 +13090,9 @@ declare module '@mappedin/mappedin-js/geojson/src/components/styles' {
12974
13090
  export { DEFAULT_ROTATION, DEFAULT_SCALE } from '@mappedin/mappedin-js/geojson/src/components/styles/constants';
12975
13091
  }
12976
13092
 
12977
- declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path' {
12978
- import { type Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
12979
- import type { IFocusable } from '@mappedin/mappedin-js/mappedin-js/src/types';
12980
- /**
12981
- * @experimental
12982
- *
12983
- * A segment of a complete path. This can be a continuous portion of the path on a single floor, or
12984
- * the transition of a path between two floors, or a transition between indoors and outdoors.
12985
- */
12986
- export class PathSegment implements IFocusable {
12987
- readonly id: string;
12988
- readonly coordinates: Coordinate[];
12989
- /**
12990
- * @internal
12991
- */
12992
- static readonly __type = "PathSegment";
12993
- /**
12994
- * @internal
12995
- */
12996
- readonly __type = "PathSegment";
12997
- /**
12998
- * Checks if the provided instance is a PathSegment.
12999
- */
13000
- static is(instance: object): instance is PathSegment;
13001
- constructor(id: string, coordinates: Coordinate[]);
13002
- /** @internal */
13003
- get focusTarget(): Coordinate[];
13004
- }
13005
- /**
13006
- * Class representing a path on the {@link MapView}.
13007
- *
13008
- * Paths are used to indicate a route on the map and can be added and removed using {@link Paths.add} and {@link Paths.remove}.
13009
- */
13010
- export class Path implements IFocusable {
13011
- /**
13012
- * The path's id
13013
- */
13014
- id: string;
13015
- /**
13016
- * The promise that resolves when the current path animation is complete.
13017
- */
13018
- animation: Promise<void>;
13019
- /**
13020
- * The coordinates of the path.
13021
- */
13022
- coordinates: Coordinate[];
13023
- /**
13024
- * @experimental
13025
- *
13026
- * The segments of the path.
13027
- */
13028
- segments: PathSegment[];
13029
- /**
13030
- * @internal
13031
- */
13032
- static readonly __type = "Path";
13033
- /**
13034
- * @internal
13035
- */
13036
- readonly __type = "Path";
13037
- /**
13038
- * Checks if the provided instance is a Path.
13039
- *
13040
- * @param instance The instance to check.
13041
- * @returns {boolean} True if the instance is a Path, false otherwise.
13042
- */
13043
- static is(instance: object): instance is Path;
13044
- /** @internal */
13045
- get focusTarget(): Coordinate[];
13046
- /**
13047
- * @internal
13048
- */
13049
- constructor(id: string, drawAnimation: Promise<void>, coordinates: Coordinate[], segments: {
13050
- id: string | number;
13051
- coordinates: Coordinate[];
13052
- }[]);
13053
- toJSON(): {
13054
- __type: string;
13055
- id: string;
13056
- coordinates: Coordinate[];
13057
- segments: PathSegment[];
13058
- };
13059
- }
13093
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/types' {
13094
+ import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
13095
+ export type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
13060
13096
  }
13061
13097
 
13062
13098
  declare module '@mappedin/mappedin-js/mappedin-js/src/states/doors-state' {
@@ -14611,7 +14647,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/path-state' {
14611
14647
  readonly width: 1;
14612
14648
  readonly completeFraction: 0;
14613
14649
  readonly visible: true;
14614
- readonly altitude: 0;
14650
+ readonly verticalOffset: 0.1;
14615
14651
  };
14616
14652
  export const pathStateSchema: z.ZodObject<{
14617
14653
  type: z.ZodDefault<z.ZodLiteral<"path">>;
@@ -14635,22 +14671,22 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/path-state' {
14635
14671
  visible: z.ZodDefault<z.ZodBoolean>;
14636
14672
  /**
14637
14673
  * The altitude of the geometry, in meters
14638
- * @default 0
14674
+ * @default 0.1
14639
14675
  */
14640
- altitude: z.ZodDefault<z.ZodNumber>;
14676
+ verticalOffset: z.ZodDefault<z.ZodNumber>;
14641
14677
  }, "strip", z.ZodTypeAny, {
14642
14678
  type: "path";
14643
14679
  width: number | Interpolation<"zoom-level", number[]>;
14644
14680
  color: string;
14645
- altitude: number;
14646
14681
  visible: boolean;
14682
+ verticalOffset: number;
14647
14683
  completeFraction: number;
14648
14684
  }, {
14649
14685
  width: number | Interpolation<"zoom-level", number[]>;
14650
14686
  type?: "path" | undefined;
14651
14687
  color?: string | undefined;
14652
- altitude?: number | undefined;
14653
14688
  visible?: boolean | undefined;
14689
+ verticalOffset?: number | undefined;
14654
14690
  completeFraction?: number | undefined;
14655
14691
  }>;
14656
14692
  const pathStateSchemaPartial: z.ZodObject<{
@@ -14659,20 +14695,20 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/path-state' {
14659
14695
  width: z.ZodOptional<z.ZodType<number | Interpolation<"zoom-level", number[]>, z.ZodTypeDef, number | Interpolation<"zoom-level", number[]>>>;
14660
14696
  completeFraction: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
14661
14697
  visible: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
14662
- altitude: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
14698
+ verticalOffset: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
14663
14699
  }, "strip", z.ZodTypeAny, {
14664
14700
  type?: "path" | undefined;
14665
14701
  width?: number | Interpolation<"zoom-level", number[]> | undefined;
14666
14702
  color?: string | undefined;
14667
- altitude?: number | undefined;
14668
14703
  visible?: boolean | undefined;
14704
+ verticalOffset?: number | undefined;
14669
14705
  completeFraction?: number | undefined;
14670
14706
  }, {
14671
14707
  type?: "path" | undefined;
14672
14708
  width?: number | Interpolation<"zoom-level", number[]> | undefined;
14673
14709
  color?: string | undefined;
14674
- altitude?: number | undefined;
14675
14710
  visible?: boolean | undefined;
14711
+ verticalOffset?: number | undefined;
14676
14712
  completeFraction?: number | undefined;
14677
14713
  }>;
14678
14714
  const pathStateSchemaStrict: z.ZodObject<{
@@ -14697,22 +14733,22 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/path-state' {
14697
14733
  visible: z.ZodDefault<z.ZodBoolean>;
14698
14734
  /**
14699
14735
  * The altitude of the geometry, in meters
14700
- * @default 0
14736
+ * @default 0.1
14701
14737
  */
14702
- altitude: z.ZodDefault<z.ZodNumber>;
14738
+ verticalOffset: z.ZodDefault<z.ZodNumber>;
14703
14739
  }, "strict", z.ZodTypeAny, {
14704
14740
  type: "path";
14705
14741
  width: number | Interpolation<"zoom-level", number[]>;
14706
14742
  color: string;
14707
- altitude: number;
14708
14743
  visible: boolean;
14744
+ verticalOffset: number;
14709
14745
  completeFraction: number;
14710
14746
  }, {
14711
14747
  width: number | Interpolation<"zoom-level", number[]>;
14712
14748
  type?: "path" | undefined;
14713
14749
  color?: string | undefined;
14714
- altitude?: number | undefined;
14715
14750
  visible?: boolean | undefined;
14751
+ verticalOffset?: number | undefined;
14716
14752
  completeFraction?: number | undefined;
14717
14753
  }>;
14718
14754
  export type TPathState = z.infer<typeof pathStateSchemaStrict>;
@@ -14763,6 +14799,28 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/shape-state' {
14763
14799
  * @default false
14764
14800
  */
14765
14801
  interactive: z.ZodDefault<z.ZodBoolean>;
14802
+ /**
14803
+ * Bevel configuration for extruded shapes.
14804
+ */
14805
+ bevel: z.ZodOptional<z.ZodObject<{
14806
+ enabled: z.ZodOptional<z.ZodBoolean>;
14807
+ thickness: z.ZodOptional<z.ZodNumber>;
14808
+ size: z.ZodOptional<z.ZodNumber>;
14809
+ offset: z.ZodOptional<z.ZodNumber>;
14810
+ segments: z.ZodOptional<z.ZodNumber>;
14811
+ }, "strip", z.ZodTypeAny, {
14812
+ size?: number | undefined;
14813
+ enabled?: boolean | undefined;
14814
+ thickness?: number | undefined;
14815
+ offset?: number | undefined;
14816
+ segments?: number | undefined;
14817
+ }, {
14818
+ size?: number | undefined;
14819
+ enabled?: boolean | undefined;
14820
+ thickness?: number | undefined;
14821
+ offset?: number | undefined;
14822
+ segments?: number | undefined;
14823
+ }>>;
14766
14824
  }, "strip", z.ZodTypeAny, {
14767
14825
  type: "shape";
14768
14826
  height: number;
@@ -14771,12 +14829,26 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/shape-state' {
14771
14829
  opacity: number;
14772
14830
  visible: boolean;
14773
14831
  interactive: boolean;
14832
+ bevel?: {
14833
+ size?: number | undefined;
14834
+ enabled?: boolean | undefined;
14835
+ thickness?: number | undefined;
14836
+ offset?: number | undefined;
14837
+ segments?: number | undefined;
14838
+ } | undefined;
14774
14839
  }, {
14775
14840
  type?: "shape" | undefined;
14776
14841
  height?: number | undefined;
14777
14842
  color?: string | undefined;
14778
14843
  altitude?: number | undefined;
14779
14844
  opacity?: number | undefined;
14845
+ bevel?: {
14846
+ size?: number | undefined;
14847
+ enabled?: boolean | undefined;
14848
+ thickness?: number | undefined;
14849
+ offset?: number | undefined;
14850
+ segments?: number | undefined;
14851
+ } | undefined;
14780
14852
  visible?: boolean | undefined;
14781
14853
  interactive?: boolean | undefined;
14782
14854
  }>;
@@ -14788,12 +14860,38 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/shape-state' {
14788
14860
  height: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
14789
14861
  opacity: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
14790
14862
  interactive: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
14863
+ bevel: z.ZodOptional<z.ZodOptional<z.ZodObject<{
14864
+ enabled: z.ZodOptional<z.ZodBoolean>;
14865
+ thickness: z.ZodOptional<z.ZodNumber>;
14866
+ size: z.ZodOptional<z.ZodNumber>;
14867
+ offset: z.ZodOptional<z.ZodNumber>;
14868
+ segments: z.ZodOptional<z.ZodNumber>;
14869
+ }, "strip", z.ZodTypeAny, {
14870
+ size?: number | undefined;
14871
+ enabled?: boolean | undefined;
14872
+ thickness?: number | undefined;
14873
+ offset?: number | undefined;
14874
+ segments?: number | undefined;
14875
+ }, {
14876
+ size?: number | undefined;
14877
+ enabled?: boolean | undefined;
14878
+ thickness?: number | undefined;
14879
+ offset?: number | undefined;
14880
+ segments?: number | undefined;
14881
+ }>>>;
14791
14882
  }, "strip", z.ZodTypeAny, {
14792
14883
  type?: "shape" | undefined;
14793
14884
  height?: number | undefined;
14794
14885
  color?: string | undefined;
14795
14886
  altitude?: number | undefined;
14796
14887
  opacity?: number | undefined;
14888
+ bevel?: {
14889
+ size?: number | undefined;
14890
+ enabled?: boolean | undefined;
14891
+ thickness?: number | undefined;
14892
+ offset?: number | undefined;
14893
+ segments?: number | undefined;
14894
+ } | undefined;
14797
14895
  visible?: boolean | undefined;
14798
14896
  interactive?: boolean | undefined;
14799
14897
  }, {
@@ -14802,6 +14900,13 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/shape-state' {
14802
14900
  color?: string | undefined;
14803
14901
  altitude?: number | undefined;
14804
14902
  opacity?: number | undefined;
14903
+ bevel?: {
14904
+ size?: number | undefined;
14905
+ enabled?: boolean | undefined;
14906
+ thickness?: number | undefined;
14907
+ offset?: number | undefined;
14908
+ segments?: number | undefined;
14909
+ } | undefined;
14805
14910
  visible?: boolean | undefined;
14806
14911
  interactive?: boolean | undefined;
14807
14912
  }>;
@@ -14840,6 +14945,28 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/shape-state' {
14840
14945
  * @default false
14841
14946
  */
14842
14947
  interactive: z.ZodDefault<z.ZodBoolean>;
14948
+ /**
14949
+ * Bevel configuration for extruded shapes.
14950
+ */
14951
+ bevel: z.ZodOptional<z.ZodObject<{
14952
+ enabled: z.ZodOptional<z.ZodBoolean>;
14953
+ thickness: z.ZodOptional<z.ZodNumber>;
14954
+ size: z.ZodOptional<z.ZodNumber>;
14955
+ offset: z.ZodOptional<z.ZodNumber>;
14956
+ segments: z.ZodOptional<z.ZodNumber>;
14957
+ }, "strip", z.ZodTypeAny, {
14958
+ size?: number | undefined;
14959
+ enabled?: boolean | undefined;
14960
+ thickness?: number | undefined;
14961
+ offset?: number | undefined;
14962
+ segments?: number | undefined;
14963
+ }, {
14964
+ size?: number | undefined;
14965
+ enabled?: boolean | undefined;
14966
+ thickness?: number | undefined;
14967
+ offset?: number | undefined;
14968
+ segments?: number | undefined;
14969
+ }>>;
14843
14970
  }, "strict", z.ZodTypeAny, {
14844
14971
  type: "shape";
14845
14972
  height: number;
@@ -14848,12 +14975,26 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/shape-state' {
14848
14975
  opacity: number;
14849
14976
  visible: boolean;
14850
14977
  interactive: boolean;
14978
+ bevel?: {
14979
+ size?: number | undefined;
14980
+ enabled?: boolean | undefined;
14981
+ thickness?: number | undefined;
14982
+ offset?: number | undefined;
14983
+ segments?: number | undefined;
14984
+ } | undefined;
14851
14985
  }, {
14852
14986
  type?: "shape" | undefined;
14853
14987
  height?: number | undefined;
14854
14988
  color?: string | undefined;
14855
14989
  altitude?: number | undefined;
14856
14990
  opacity?: number | undefined;
14991
+ bevel?: {
14992
+ size?: number | undefined;
14993
+ enabled?: boolean | undefined;
14994
+ thickness?: number | undefined;
14995
+ offset?: number | undefined;
14996
+ segments?: number | undefined;
14997
+ } | undefined;
14857
14998
  visible?: boolean | undefined;
14858
14999
  interactive?: boolean | undefined;
14859
15000
  }>;
@@ -14873,7 +15014,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/state-utils' {
14873
15014
  import type { TFacadeState, TFacadeUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states/facade-state';
14874
15015
  import type { TFloorState, TFloorUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states/floor-state';
14875
15016
  import type { TGeometryState, TGeometryUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states/geometry-state';
14876
- import type { TImageState, TImageUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states/image-state';
15017
+ import type { TImage3DState, TImage3DUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states/image-state';
14877
15018
  import type { TLabelState, TLabelUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states/label-state';
14878
15019
  import type { TMarkerState, TMarkerUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states/marker-state';
14879
15020
  import type { TModelState, TModelUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states/model-state';
@@ -14881,9 +15022,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/state-utils' {
14881
15022
  import type { TShapeState, TShapeUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states/shape-state';
14882
15023
  import type { TText3DState, TText3DUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states/text3d-state';
14883
15024
  import type { TWallsState, TWallsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/states/walls-state';
14884
- import type { Label, Marker, Model, Path, PathSegment, Shape, Text3D, Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
15025
+ import type { Label, Marker, Model, Path, PathSegment, Shape, Text3DView, Image3DView } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
14885
15026
  import type { DOORS, WALLS } from '@mappedin/mappedin-js/mappedin-js/src/types';
14886
15027
  import type { Door, Facade, Floor, MapObject, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
15028
+ import type { ReadonlyDeep } from 'type-fest';
14887
15029
  type ParseStateOptions = {
14888
15030
  warn?: boolean;
14889
15031
  };
@@ -14908,26 +15050,26 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/state-utils' {
14908
15050
  */
14909
15051
  export function parseCompleteState<T extends z.ZodObject<any>>(schema: T, state: object, options?: ParseStateOptions): z.infer<Complete<T>>;
14910
15052
  /**
14911
- * Centralized mapping of element types to their state types.
14912
- */
14913
- export type MapElementToState = {
14914
- [Marker.__type]: TMarkerState;
14915
- [Label.__type]: TLabelState;
14916
- [Shape.__type]: TShapeState;
14917
- [Model.__type]: TModelState;
14918
- [Path.__type]: TPathState;
14919
- [PathSegment.__type]: TPathState;
14920
- [Text3D.__type]: TText3DState;
14921
- [Image.__type]: TImageState;
14922
- [Space.__type]: TGeometryState;
14923
- [MapObject.__type]: TGeometryState;
14924
- [Floor.__type]: TFloorState;
14925
- [Facade.__type]: TFacadeState;
14926
- [Door.__type]: TDoorsState;
14927
- [WALLS.Exterior]: TWallsState;
14928
- [WALLS.Interior]: TWallsState;
14929
- [DOORS.Exterior]: TDoorsState;
14930
- [DOORS.Interior]: TDoorsState;
15053
+ * Centralized mapping of element types to their get state types.
15054
+ */
15055
+ export type MapElementToGetState = {
15056
+ [Marker.__type]: ReadonlyDeep<TMarkerState>;
15057
+ [Label.__type]: ReadonlyDeep<TLabelState>;
15058
+ [Shape.__type]: ReadonlyDeep<TShapeState>;
15059
+ [Model.__type]: ReadonlyDeep<TModelState>;
15060
+ [Path.__type]: ReadonlyDeep<TPathState>;
15061
+ [PathSegment.__type]: ReadonlyDeep<TPathState>;
15062
+ [Text3DView.__type]: ReadonlyDeep<TText3DState>;
15063
+ [Image3DView.__type]: ReadonlyDeep<TImage3DState>;
15064
+ [Space.__type]: ReadonlyDeep<TGeometryState>;
15065
+ [MapObject.__type]: ReadonlyDeep<TGeometryState>;
15066
+ [Floor.__type]: ReadonlyDeep<TFloorState>;
15067
+ [Facade.__type]: ReadonlyDeep<TFacadeState>;
15068
+ [Door.__type]: ReadonlyDeep<TDoorsState>;
15069
+ [WALLS.Exterior]: ReadonlyDeep<TWallsState>;
15070
+ [WALLS.Interior]: ReadonlyDeep<TWallsState>;
15071
+ [DOORS.Exterior]: ReadonlyDeep<TDoorsState>;
15072
+ [DOORS.Interior]: ReadonlyDeep<TDoorsState>;
14931
15073
  };
14932
15074
  /**
14933
15075
  * Centralized mapping of element types to their update state types.
@@ -14939,8 +15081,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/state-utils' {
14939
15081
  [Model.__type]: TModelUpdateState;
14940
15082
  [Path.__type]: TPathUpdateState;
14941
15083
  [PathSegment.__type]: TPathUpdateState;
14942
- [Text3D.__type]: TText3DUpdateState;
14943
- [Image.__type]: TImageUpdateState;
15084
+ [Text3DView.__type]: TText3DUpdateState;
15085
+ [Image3DView.__type]: TImage3DUpdateState;
14944
15086
  [Space.__type]: TGeometryUpdateState;
14945
15087
  [MapObject.__type]: TGeometryUpdateState;
14946
15088
  [Floor.__type]: TFloorUpdateState;
@@ -15382,9 +15524,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/image-state' {
15382
15524
  /**
15383
15525
  * Defines the state for an image when its appearance is updated.
15384
15526
  */
15385
- export const IMAGE_STATE_TYPE = "image";
15527
+ export const IMAGE_STATE_TYPE = "image3d";
15386
15528
  export const imageStateSchema: z.ZodObject<{
15387
- type: z.ZodDefault<z.ZodLiteral<"image">>;
15529
+ type: z.ZodDefault<z.ZodLiteral<"image3d">>;
15388
15530
  /**
15389
15531
  * Whether the image is visible.
15390
15532
  * @default true
@@ -15428,7 +15570,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/image-state' {
15428
15570
  */
15429
15571
  flipImagesToFaceCamera: z.ZodDefault<z.ZodBoolean>;
15430
15572
  }, "strip", z.ZodTypeAny, {
15431
- type: "image";
15573
+ type: "image3d";
15432
15574
  width: number;
15433
15575
  height: number;
15434
15576
  opacity: number;
@@ -15439,7 +15581,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/image-state' {
15439
15581
  position: Coordinate;
15440
15582
  }, {
15441
15583
  position: Coordinate;
15442
- type?: "image" | undefined;
15584
+ type?: "image3d" | undefined;
15443
15585
  width?: number | undefined;
15444
15586
  height?: number | undefined;
15445
15587
  opacity?: number | undefined;
@@ -15449,7 +15591,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/image-state' {
15449
15591
  flipImagesToFaceCamera?: boolean | undefined;
15450
15592
  }>;
15451
15593
  const imageStateSchemaPartial: z.ZodObject<{
15452
- type: z.ZodOptional<z.ZodDefault<z.ZodLiteral<"image">>>;
15594
+ type: z.ZodOptional<z.ZodDefault<z.ZodLiteral<"image3d">>>;
15453
15595
  visible: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
15454
15596
  opacity: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
15455
15597
  position: z.ZodOptional<z.ZodType<Coordinate, z.ZodTypeDef, Coordinate>>;
@@ -15459,7 +15601,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/image-state' {
15459
15601
  verticalOffset: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
15460
15602
  flipImagesToFaceCamera: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
15461
15603
  }, "strip", z.ZodTypeAny, {
15462
- type?: "image" | undefined;
15604
+ type?: "image3d" | undefined;
15463
15605
  width?: number | undefined;
15464
15606
  height?: number | undefined;
15465
15607
  opacity?: number | undefined;
@@ -15469,7 +15611,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/image-state' {
15469
15611
  flipImagesToFaceCamera?: boolean | undefined;
15470
15612
  position?: Coordinate | undefined;
15471
15613
  }, {
15472
- type?: "image" | undefined;
15614
+ type?: "image3d" | undefined;
15473
15615
  width?: number | undefined;
15474
15616
  height?: number | undefined;
15475
15617
  opacity?: number | undefined;
@@ -15479,9 +15621,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/states/image-state' {
15479
15621
  flipImagesToFaceCamera?: boolean | undefined;
15480
15622
  position?: Coordinate | undefined;
15481
15623
  }>;
15482
- export type TImageState = z.infer<typeof imageStateSchema>;
15483
- export type TImageUpdateState = z.infer<typeof imageStateSchemaPartial>;
15484
- export function getImageState(state: ImageState): TImageState;
15624
+ export type TImage3DState = z.infer<typeof imageStateSchema>;
15625
+ export type TImage3DUpdateState = z.infer<typeof imageStateSchemaPartial>;
15626
+ export function getImageState(state: ImageState): TImage3DState;
15485
15627
  export {};
15486
15628
  }
15487
15629
 
@@ -15758,12 +15900,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/marker' {
15758
15900
  }
15759
15901
  }
15760
15902
 
15761
- declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/image' {
15903
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/image3d' {
15762
15904
  import type { IAnchorable } from '@mappedin/mappedin-js/mappedin-js/src/types';
15763
15905
  /**
15764
15906
  * Class representing an Image on the {@link MapView}.
15765
15907
  */
15766
- export class Image {
15908
+ export class Image3DView {
15767
15909
  #private;
15768
15910
  /**
15769
15911
  * The image's target
@@ -15772,18 +15914,18 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/image' {
15772
15914
  /**
15773
15915
  * @internal
15774
15916
  */
15775
- static readonly __type = "Image";
15917
+ static readonly __type = "Image3D";
15776
15918
  /**
15777
15919
  * @internal
15778
15920
  */
15779
- readonly __type = "Image";
15921
+ readonly __type = "Image3D";
15780
15922
  /**
15781
15923
  * Checks if the provided instance is of type Image"
15782
15924
  *
15783
15925
  * @param instance The instance to check.
15784
15926
  * @returns {boolean} True if the instance is a Image, false otherwise.
15785
15927
  */
15786
- static is(instance: object): instance is Image;
15928
+ static is(instance: object): instance is Image3DView;
15787
15929
  /**
15788
15930
  * @internal
15789
15931
  */
@@ -15859,6 +16001,91 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/model' {
15859
16001
  }
15860
16002
  }
15861
16003
 
16004
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path' {
16005
+ import { type Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
16006
+ import type { IFocusable } from '@mappedin/mappedin-js/mappedin-js/src/types';
16007
+ /**
16008
+ * @experimental
16009
+ *
16010
+ * A segment of a complete path. This can be a continuous portion of the path on a single floor, or
16011
+ * the transition of a path between two floors, or a transition between indoors and outdoors.
16012
+ */
16013
+ export class PathSegment implements IFocusable {
16014
+ readonly id: string;
16015
+ readonly coordinates: Coordinate[];
16016
+ /**
16017
+ * @internal
16018
+ */
16019
+ static readonly __type = "PathSegment";
16020
+ /**
16021
+ * @internal
16022
+ */
16023
+ readonly __type = "PathSegment";
16024
+ /**
16025
+ * Checks if the provided instance is a PathSegment.
16026
+ */
16027
+ static is(instance: object): instance is PathSegment;
16028
+ constructor(id: string, coordinates: Coordinate[]);
16029
+ /** @internal */
16030
+ get focusTarget(): Coordinate[];
16031
+ }
16032
+ /**
16033
+ * Class representing a path on the {@link MapView}.
16034
+ *
16035
+ * Paths are used to indicate a route on the map and can be added and removed using {@link Paths.add} and {@link Paths.remove}.
16036
+ */
16037
+ export class Path implements IFocusable {
16038
+ /**
16039
+ * The path's id
16040
+ */
16041
+ id: string;
16042
+ /**
16043
+ * The promise that resolves when the current path animation is complete.
16044
+ */
16045
+ animation: Promise<void>;
16046
+ /**
16047
+ * The coordinates of the path.
16048
+ */
16049
+ coordinates: Coordinate[];
16050
+ /**
16051
+ * @experimental
16052
+ *
16053
+ * The segments of the path.
16054
+ */
16055
+ segments: PathSegment[];
16056
+ /**
16057
+ * @internal
16058
+ */
16059
+ static readonly __type = "Path";
16060
+ /**
16061
+ * @internal
16062
+ */
16063
+ readonly __type = "Path";
16064
+ /**
16065
+ * Checks if the provided instance is a Path.
16066
+ *
16067
+ * @param instance The instance to check.
16068
+ * @returns {boolean} True if the instance is a Path, false otherwise.
16069
+ */
16070
+ static is(instance: object): instance is Path;
16071
+ /** @internal */
16072
+ get focusTarget(): Coordinate[];
16073
+ /**
16074
+ * @internal
16075
+ */
16076
+ constructor(id: string, drawAnimation: Promise<void>, coordinates: Coordinate[], segments: {
16077
+ id: string | number;
16078
+ coordinates: Coordinate[];
16079
+ }[]);
16080
+ toJSON(): {
16081
+ __type: string;
16082
+ id: string;
16083
+ coordinates: Coordinate[];
16084
+ segments: PathSegment[];
16085
+ };
16086
+ }
16087
+ }
16088
+
15862
16089
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/shape' {
15863
16090
  import type { IFocusable } from '@mappedin/mappedin-js/mappedin-js/src/types';
15864
16091
  /**
@@ -15900,7 +16127,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/text3d' {
15900
16127
  /**
15901
16128
  * Class representing an Text3D on the {@link MapView}.
15902
16129
  */
15903
- export class Text3D {
16130
+ export class Text3DView {
15904
16131
  /**
15905
16132
  * The text3d's id
15906
16133
  */
@@ -15924,7 +16151,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/text3d' {
15924
16151
  * @param instance The instance to check.
15925
16152
  * @returns {boolean} True if the instance is a text3d, false otherwise.
15926
16153
  */
15927
- static is(instance: object): instance is Text3D;
16154
+ static is(instance: object): instance is Text3DView;
15928
16155
  }
15929
16156
  }
15930
16157
 
@@ -15932,7 +16159,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
15932
16159
  import type { ParsedMVF } from '@mappedin/mvf-v2';
15933
16160
  import type { FeatureCollection, LineString, MultiPolygon, Polygon } from 'geojson';
15934
16161
  import { PubSub } from '@packages/internal/common';
15935
- import type { Position, AddLabelOptionsInternal, RendererCore, PathState, MarkerState, LineStyle, PaintStyle, EntityId, Text3DState } from '@mappedin/core-sdk';
16162
+ import { type Position, type AddLabelOptionsInternal, type RendererCore, type PathState, type MarkerState, type LineStyle, type PaintStyle, type EntityId, type Text3DState } from '@mappedin/core-sdk';
15936
16163
  import { FloorObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object';
15937
16164
  import type { TAddMarkerOptions, TAddPathOptions, TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
15938
16165
  import type { GLTFExportOptions, TAnimationOptions, TAddModelOptions, TAddImageOptions, TAddText3DOptions, IAnchorable, TAddLabelOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
@@ -15984,10 +16211,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
15984
16211
  add: (id: string, targets: Coordinate[], opts: TAddModelOptions & {
15985
16212
  floorId?: string;
15986
16213
  url: string;
15987
- }) => (import("@mappedin/core-sdk").GeometryState | import("@mappedin/core-sdk").ModelState)[];
16214
+ }) => (string | number)[];
15988
16215
  remove: (_id: string, _groupId: string) => void;
15989
16216
  };
15990
- Images: {
16217
+ Image3D: {
15991
16218
  add: (target: Position, url: string, opts: TAddImageOptions & {
15992
16219
  floorId?: string;
15993
16220
  }) => EntityId<import("@mappedin/core-sdk/src/components/image").ImageState> | undefined;
@@ -16605,10 +16832,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/markers' {
16605
16832
 
16606
16833
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
16607
16834
  import type { IAnchorable, TAddImageOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
16608
- import { Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
16835
+ import { Image3DView } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
16609
16836
  import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
16610
16837
  /**
16611
- * ## Images in Mappedin JS
16838
+ * ## 3D images in Mappedin JS
16612
16839
  *
16613
16840
  * Images can enhance indoor maps by adding custom branding, highlighting important features, or providing additional visual information. They can be placed on any {@link Door}, {@link Space}, or {@link Coordinate} and support various positioning and styling options.
16614
16841
  *
@@ -16629,10 +16856,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
16629
16856
  * ### Example Usage
16630
16857
  * ```ts
16631
16858
  * // Add a simple image
16632
- * mapView.Images.add(coordinate, 'https://example.com/logo.png', { width: 2, height: 1 });
16859
+ * mapView.Image3D.add(coordinate, 'https://example.com/logo.png', { width: 2, height: 1 });
16633
16860
  *
16634
16861
  * // Add an image with custom positioning
16635
- * mapView.Images.add(space, 'https://example.com/banner.jpg', {
16862
+ * mapView.Image3D.add(space, 'https://example.com/banner.jpg', {
16636
16863
  * width: 3,
16637
16864
  * height: 1.5,
16638
16865
  * rotation: 45,
@@ -16640,7 +16867,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
16640
16867
  * });
16641
16868
  *
16642
16869
  * // Add an image that faces the camera
16643
- * mapView.Images.add(coordinate, 'https://example.com/icon.png', {
16870
+ * mapView.Image3D.add(coordinate, 'https://example.com/icon.png', {
16644
16871
  * width: 1,
16645
16872
  * height: 1,
16646
16873
  * flipImageToFaceCamera: true
@@ -16666,9 +16893,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
16666
16893
  * ### More Information
16667
16894
  * - [Images Guide](https://developer.mappedin.com/web-sdk/images-textures)
16668
16895
  *
16669
- * This class is accessed using {@link MapView.Images}.
16896
+ * This class is accessed using {@link MapView.Image3D}.
16670
16897
  */
16671
- export class Images {
16898
+ export class Image3D {
16672
16899
  #private;
16673
16900
  /**
16674
16901
  * @internal
@@ -16684,7 +16911,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
16684
16911
  * @internal
16685
16912
  */
16686
16913
  getById(id: string): {
16687
- image: Image;
16914
+ image: Image3DView;
16688
16915
  entityId: string;
16689
16916
  } | undefined;
16690
16917
  /**
@@ -16697,12 +16924,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
16697
16924
  *
16698
16925
  * @example Add a simple image
16699
16926
  * ```ts
16700
- * mapView.Images.add(coordinate, 'https://example.com/logo.png', { width: 2, height: 1 });
16927
+ * mapView.Image3D.add(coordinate, 'https://example.com/logo.png', { width: 2, height: 1 });
16701
16928
  * ```
16702
16929
  *
16703
16930
  * @example Add an image with custom positioning
16704
16931
  * ```ts
16705
- * mapView.Images.add(space, 'https://example.com/banner.jpg', {
16932
+ * mapView.Image3D.add(space, 'https://example.com/banner.jpg', {
16706
16933
  * width: 3,
16707
16934
  * height: 1.5,
16708
16935
  * rotation: 45,
@@ -16712,7 +16939,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
16712
16939
  *
16713
16940
  * @example Add a billboard-style image
16714
16941
  * ```ts
16715
- * mapView.Images.add(coordinate, 'https://example.com/icon.png', {
16942
+ * mapView.Image3D.add(coordinate, 'https://example.com/icon.png', {
16716
16943
  * width: 1,
16717
16944
  * height: 1,
16718
16945
  * flipImageToFaceCamera: true
@@ -16721,7 +16948,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
16721
16948
  *
16722
16949
  * @see [Images Guide](https://developer.mappedin.com/web-sdk/images-textures)
16723
16950
  */
16724
- add(target: IAnchorable, url: string, options: TAddImageOptions): Image;
16951
+ add(target: IAnchorable, url: string, options: TAddImageOptions): Image3DView;
16725
16952
  /**
16726
16953
  * Removes an image from the map.
16727
16954
  *
@@ -16729,7 +16956,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
16729
16956
  * @example
16730
16957
  * mapView.Images.remove(image);
16731
16958
  */
16732
- remove(image: Image): void;
16959
+ remove(image: Image3DView): void;
16733
16960
  /**
16734
16961
  * Remove all the images from the map.
16735
16962
  *
@@ -16737,7 +16964,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
16737
16964
  * @example
16738
16965
  * const removedImages = mapView.Images.removeAll();
16739
16966
  */
16740
- removeAll(): Image[];
16967
+ removeAll(): Image3DView[];
16741
16968
  }
16742
16969
  type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
16743
16970
  export {};
@@ -16916,8 +17143,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/paths' {
16916
17143
  * - `dashed`: Use dashed line style
16917
17144
  *
16918
17145
  * ### Advanced
16919
- * - Use `flattenPath: true` for 2D paths that don't follow elevation changes.
16920
- * - Use `adjustedAltitude` to automatically adjust path height to avoid obstacles.
16921
17146
  * - Use `interactive: true` to make paths clickable.
16922
17147
  *
16923
17148
  * ### More Information
@@ -17096,12 +17321,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor' {
17096
17321
  }
17097
17322
 
17098
17323
  declare module '@mappedin/mappedin-js/mappedin-js/src/navigation/index' {
17099
- import { type TDirectionInstruction } from '@mappedin/mappedin-js/mappedin-js/src';
17324
+ import { type TAddPathOptions, type TDirectionInstruction } from '@mappedin/mappedin-js/mappedin-js/src';
17100
17325
  import type { Directions, GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
17101
17326
  import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
17102
17327
  import type { Floor, FloorStack } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
17103
17328
  import { Path, Marker } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
17104
- import type { RendererCore, Interpolation } from '@mappedin/core-sdk';
17329
+ import type { RendererCore } from '@mappedin/core-sdk';
17105
17330
  export type TCreateMarker = boolean | ((instruction: TDirectionInstruction) => Marker);
17106
17331
  /**
17107
17332
  * Options for navigation.
@@ -17140,45 +17365,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation/index' {
17140
17365
  /**
17141
17366
  * Path Options for the non-current path in multi-destination mode.
17142
17367
  */
17143
- inactivePathOptions?: {
17144
- /**
17145
- * Duration in milliseconds for the path to be drawn.
17146
- * @default 1000
17147
- */
17148
- drawDuration?: number;
17149
- /**
17150
- * The color of the path.
17151
- * @default '#40A9FF'
17152
- */
17153
- color?: string;
17154
- /**
17155
- * Whether the path should be clickable.
17156
- *
17157
- * @defaultValue false
17158
- */
17159
- interactive?: boolean;
17160
- /**
17161
- * The accent color of the path. This is applied to arrows if they are displayed
17162
- * @default 'blue'
17163
- */
17164
- accentColor?: string;
17165
- /**
17166
- * The width of the path in meters. Can be a number or an {@link Interpolation}.
17167
- *
17168
- * @defaultValue Interpolation { on: 'zoom-level', input: [17, 22], output: [0.8, 0.4] }
17169
- */
17170
- width?: number | Interpolation<'zoom-level', number[]>;
17171
- /**
17172
- * Controls whether arrows are displayed on the path.
17173
- * @default false
17174
- */
17175
- displayArrowsOnPath?: boolean;
17176
- /**
17177
- * Controls whether arrows are animated.
17178
- * @default false
17179
- */
17180
- animateArrowsOnPath?: boolean;
17181
- };
17368
+ inactivePathOptions?: Partial<TAddPathOptions>;
17182
17369
  /**
17183
17370
  * Controls whether the path drawing is animated across floors.
17184
17371
  * @default true
@@ -17187,45 +17374,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation/index' {
17187
17374
  /**
17188
17375
  * Options for the path.
17189
17376
  */
17190
- pathOptions?: {
17191
- /**
17192
- * Duration in milliseconds for the path to be drawn.
17193
- * @default 1000
17194
- */
17195
- drawDuration?: number;
17196
- /**
17197
- * The color of the path.
17198
- * @default '#40A9FF'
17199
- */
17200
- color?: string;
17201
- /**
17202
- * Whether the path should be clickable.
17203
- *
17204
- * @defaultValue false
17205
- */
17206
- interactive?: boolean;
17207
- /**
17208
- * The accent color of the path. This is applied to arrows if they are displayed
17209
- * @default 'blue'
17210
- */
17211
- accentColor?: string;
17212
- /**
17213
- * The width of the path in meters. Can be a number or an {@link Interpolation}.
17214
- *
17215
- * @defaultValue Interpolation { on: 'zoom-level', input: [17, 22], output: [0.8, 0.4] }
17216
- */
17217
- width?: number | Interpolation<'zoom-level', number[]>;
17218
- /**
17219
- * Controls whether arrows are displayed on the path.
17220
- * @default false
17221
- */
17222
- displayArrowsOnPath?: boolean;
17223
- /**
17224
- * Controls whether arrows are animated.
17225
- * @default false
17226
- */
17227
- animateArrowsOnPath?: boolean;
17228
- };
17377
+ pathOptions?: Partial<TAddPathOptions>;
17229
17378
  /**
17230
17379
  * Options for the markers at the departure and destination.
17231
17380
  */
@@ -17723,8 +17872,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/search/external' {
17723
17872
  }
17724
17873
 
17725
17874
  declare module '@mappedin/mappedin-js/mappedin-js/src/query/external' {
17726
- import type { Annotation, Coordinate, Door, MapDataInternal, Node, PointOfInterest } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
17727
- export type TQueriables = PointOfInterest | Door | Annotation | Node;
17875
+ import { Node } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
17876
+ import type { Coordinate, MapDataInternal, Door, PointOfInterest, Annotation, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
17877
+ export type TQueriables = PointOfInterest | Door | Annotation | Node | Space;
17728
17878
  /**
17729
17879
  * Query allows users to query for nodes, locations, categories, and other points of interest within the venue.
17730
17880
  */
@@ -17734,23 +17884,24 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/query/external' {
17734
17884
  * @internal
17735
17885
  */
17736
17886
  constructor(mapDataInternal: MapDataInternal);
17887
+ /**
17888
+ * @internal
17889
+ */
17890
+ __LEGACY_NEAREST_SYNC: <T extends TQueriables>(origin: Coordinate | PointOfInterest | Door | Annotation | Node, include: T[], options?: TFindNearestOptions) => TFindNearestResult<T> | undefined;
17737
17891
  /**
17738
17892
  * Find the nearest feature to the origin
17739
17893
  * @param origin - The origin object
17894
+ * @param include - The features to include in the query
17740
17895
  * @param options - The options for the query
17741
- * @returns The nearest feature to the origin
17896
+ * @returns Objects with the distance and the feature, sorted by distance
17742
17897
  */
17743
- nearest<T extends TQueriables['__type'][]>(origin: Coordinate | PointOfInterest | Door | Annotation | Node, options: TFindNearestOptions<T>): TFindNearestResult<T> | undefined;
17898
+ nearest<T extends TQueriables>(origin: Coordinate | PointOfInterest | Door | Annotation | Node, include: T[], options?: TFindNearestOptions): Promise<TFindNearestResult<T> | undefined>;
17744
17899
  }
17745
- type TypeMap = {
17746
- [K in TQueriables as K['__type']]: K;
17747
- };
17748
- type ExtractTypes<T extends TQueriables['__type'][]> = T[number] extends infer U ? U extends TQueriables['__type'] ? TypeMap[U] : never : never;
17749
- export type TFindNearestResult<T extends TQueriables['__type'][]> = {
17900
+ export type TFindNearestResult<T extends TQueriables> = {
17750
17901
  distance: number;
17751
- feature: ExtractTypes<T>;
17902
+ feature: T;
17752
17903
  }[];
17753
- export type TFindNearestOptions<T extends TQueriables['__type'][]> = {
17904
+ export type TFindNearestOptions = {
17754
17905
  /**
17755
17906
  * Limit query to a set of floors. Only applies if the origin has floor information. If it doesn't, it limits the query to all floor-stacks' default floors.
17756
17907
  *
@@ -17761,25 +17912,22 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/query/external' {
17761
17912
  * Limit query to all floors at the same elevation as the origin
17762
17913
  */
17763
17914
  | 'same-elevation';
17764
- /**
17765
- * The radius to search for features within, only used if useLineOfSight is true
17766
- */
17767
- radius?: number;
17768
17915
  /**
17769
17916
  * Whether to use line of sight checks to filter results. This ensures that results aren't obstructed by walls, etc.
17770
- * @default true
17917
+ * When 'auto', heuristics are used to determine whether to use line of sight checks. These are currently experimental, and are subject to change.
17918
+ * @experimental
17919
+ * @default 'auto'
17771
17920
  */
17772
- lineOfSight?: boolean;
17921
+ lineOfSight?: boolean | 'auto';
17773
17922
  /**
17774
- * The types to query for
17923
+ * The mode to use for the query
17775
17924
  */
17776
- types: T;
17925
+ mode?: 'travel-distance' | 'absolute-distance';
17777
17926
  /**
17778
- * Queriables to exclude from this query
17927
+ * The max distance to search for features within
17779
17928
  */
17780
- exclude?: ExtractTypes<T>[];
17929
+ maxDistance?: number;
17781
17930
  };
17782
- export {};
17783
17931
  }
17784
17932
 
17785
17933
  declare module '@mappedin/mappedin-js/mappedin-js/src/analytics/customer' {
@@ -17787,7 +17935,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/analytics/customer' {
17787
17935
  * Valid track-analytics API contexts. These should match the expected values of that endpoint or the requests will fail.
17788
17936
  * If a set context is not in this list, it will default to the first VALID_CONTEXTS value.
17789
17937
  */
17790
- export const VALID_CONTEXTS: readonly ["websdk", "web", "webv2", "kiosk-v2", "mobile", "iossdk", "androidsdk", "reactnativesdk", "gen7", "bespoke"];
17938
+ export const VALID_CONTEXTS: readonly ["websdk", "web", "webv2", "kiosk-v2", "mobile", "iossdk", "androidsdk", "reactnativesdk", "gen7", "bespoke", "reactsdk"];
17791
17939
  type ValidContext = (typeof VALID_CONTEXTS)[number];
17792
17940
  export const DEFAULT_CONTEXT: "websdk";
17793
17941
  export const ANALYTICS_URL = "https://api-gateway.mappedin.com/track-analytics/a/";
@@ -17840,7 +17988,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/analytics/customer' {
17840
17988
  /**
17841
17989
  * @internal
17842
17990
  */
17843
- sendGetDirectionsEvent: (start: string, end: string) => void;
17991
+ sendGetDirectionsEvent: (start: string, end: string, accessible?: boolean | undefined) => void;
17844
17992
  sendBlueDotEvents(event: BlueDotEvents): void | Promise<Response> | Promise<void>;
17845
17993
  }
17846
17994
  type UpdateStateParam = Partial<Pick<AnalyticState, 'geolocationMode' | 'context' | 'logEvents' | 'userPosition' | 'mapId' | 'sendEvents' | 'logEvents' | 'accessToken' | 'sessionId' | 'deviceId'>>;
@@ -18127,21 +18275,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-obje
18127
18275
  }
18128
18276
  }
18129
18277
 
18130
- declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/opening-hours' {
18131
- import type { OpeningHoursSpecification } from '@mappedin/mvf-v2';
18132
- /**
18133
- * Represents the opening hours of a location.
18134
- */
18135
- export class OpeningHours {
18136
- #private;
18137
- constructor(mvfData: OpeningHoursSpecification[]);
18138
- /**
18139
- * Gets the raw opening hours data.
18140
- */
18141
- get raw(): OpeningHoursSpecification[];
18142
- }
18143
- }
18144
-
18145
18278
  declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/system' {
18146
18279
  import { QuadTree } from '@packages/internal/quad-tree';
18147
18280
  import '../../styles/collisions.scss';
@@ -18280,6 +18413,10 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry3d' {
18280
18413
  export class Geometry3D<M extends MeshComponentTypes = MeshComponent, S extends StyleComponent | Text3DStyleComponent | ModelStyleComponnet = StyleComponent, I extends InteractionComponent = InteractionComponent, T extends MappedComponentType<M> = MappedComponentType<M>, O extends OutlineComponent | undefined = OutlineComponent | undefined, F extends FocusableComponent | undefined = FocusableComponent | undefined> {
18281
18414
  id: string | number;
18282
18415
  components: [M, S, I?, O?, F?];
18416
+ /**
18417
+ * Parent geometry group ID
18418
+ */
18419
+ parentId?: string | number;
18283
18420
  get object3d(): M["mesh"];
18284
18421
  get parentObject3D(): GroupContainerObject3D | GeometryGroupObject3D | null;
18285
18422
  get type(): T;
@@ -18400,8 +18537,9 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/2d-draw/constants' {
18400
18537
  }
18401
18538
 
18402
18539
  declare module '@mappedin/mappedin-js/geojson/src/types/interpolation' {
18403
- import { type EasingCurve } from '@packages/internal/common';
18540
+ import { type EasingCurve } from '@packages/internal/common/interpolate';
18404
18541
  import z from 'zod';
18542
+ export const easingCurveSchema: z.ZodEnum<["ease-in", "ease-out", "ease-in-out", "linear"]>;
18405
18543
  /**
18406
18544
  * Different properties that can be interpolated on, and what input values are expected.
18407
18545
  */
@@ -18794,7 +18932,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-opti
18794
18932
  }
18795
18933
 
18796
18934
  declare module '@mappedin/mappedin-js/geojson/src/components/styles/style' {
18797
- import type { LineStyle, Shading } from '@mappedin/mappedin-js/geojson/src/renderer';
18935
+ import type { BevelState, LineStyle, Shading } from '@mappedin/mappedin-js/geojson/src/types';
18798
18936
  export const DEFAULT_COLOR = "#ffffff";
18799
18937
  export const DEFAULT_HEIGHT = 0.1;
18800
18938
  /**
@@ -18819,6 +18957,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/styles/style' {
18819
18957
  side?: MaterialSide;
18820
18958
  renderOrder?: number;
18821
18959
  shading?: Shading;
18960
+ bevel?: BevelState;
18822
18961
  };
18823
18962
  export class StyleComponent implements Style {
18824
18963
  #private;
@@ -18847,6 +18986,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/styles/style' {
18847
18986
  side: MaterialSide;
18848
18987
  renderOrder: number;
18849
18988
  shading?: Shading;
18989
+ bevel?: BevelState;
18850
18990
  constructor(style?: Partial<Style>);
18851
18991
  }
18852
18992
  export {};
@@ -18860,11 +19000,6 @@ declare module '@mappedin/mappedin-js/packages/common/pubsub' {
18860
19000
  * @template EVENT - The type of the event.
18861
19001
  */
18862
19002
  export class PubSub<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof EVENT_PAYLOAD> {
18863
- /**
18864
- * @private
18865
- * @internal
18866
- */
18867
- _subscribers: any;
18868
19003
  /**
18869
19004
  * @private
18870
19005
  * @internal
@@ -19459,16 +19594,14 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/geometry-in-focus/syst
19459
19594
  }
19460
19595
 
19461
19596
  declare module '@mappedin/mappedin-js/geojson/src/systems/outdoor-layers/system' {
19462
- import type { LegacyFilterSpecification, Map } from '@packages/internal/outdoor-context-v5';
19597
+ import { type Map } from '@packages/internal/outdoor-context-v5';
19463
19598
  import type { Position } from '@mappedin/mappedin-js/geojson/src/renderer';
19464
19599
  import { type BBox } from 'geojson';
19465
19600
  export class OutdoorLayers {
19466
19601
  #private;
19467
- dirty: boolean;
19468
19602
  hideLayersUnderPoint(point: Position, layers: string[]): void;
19469
19603
  hideLayersIntersectingPolygons(bbox: BBox, polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>[], layers: string[]): void;
19470
19604
  constructor(map?: Map);
19471
- expr: LegacyFilterSpecification[];
19472
19605
  destroy(): void;
19473
19606
  }
19474
19607
  }
@@ -19564,7 +19697,7 @@ declare module '@mappedin/mappedin-js/geojson/src/utils' {
19564
19697
  x: number;
19565
19698
  y: number;
19566
19699
  };
19567
- export const populateGeometry3DIdsInScene: (tree: GroupContainerObject3D["children"][0] | Object3D, entities: RendererState["geometry3DIdsInScene"], loadGeometryGroupIds: RendererState["geometryGroupIdsToLoad"]) => Set<string | number>;
19700
+ export const populateGeometry3DIdsInScene: (tree: GroupContainerObject3D["children"][0] | Object3D, entities: RendererState["geometry3DIdsInScene"], loadGeometryGroupIds: RendererState["geometryGroupIdsToLoad"], parentPreloaded?: boolean) => Set<string | number>;
19568
19701
  export const populateGeometry2DIdsInScene: (tree: any, entities: Set<Geometry2D["id"]>) => Set<string | number>;
19569
19702
  export function convertMapLibreStylePaintProps(paint: any): {
19570
19703
  color: any;
@@ -19960,7 +20093,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/styles/model-style'
19960
20093
  * Color property designed for use with @mappedin/3d-assets.
19961
20094
  * Updates the accent color of 3d assets by applying the color to materials named
19962
20095
  * ['Default', 'Fabric', 'Mpdn_Logo', 'Fabric_Logo'].
19963
- * For custom colors on non-Mappedin models, use the {@link ModelStyle.material | material} property.
20096
+ * For custom colors on non-Mappedin models, use the `material` property.
19964
20097
  * If both the `material` and `color` properties are provided, `material` property updates will take higher precedence than `color` property updates.
19965
20098
  */
19966
20099
  color: string;
@@ -20161,6 +20294,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions/dir
20161
20294
  import type { TDirectionZone, TNavigationTarget } from '@mappedin/mappedin-js/mappedin-js/src/types';
20162
20295
  import { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions/directions';
20163
20296
  export class DirectionsInternal {
20297
+ #private;
20164
20298
  navigator: Navigator;
20165
20299
  /**
20166
20300
  * @hidden
@@ -20181,14 +20315,17 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions/dir
20181
20315
  zones: TDirectionZone[];
20182
20316
  excludedConnections: Connection[];
20183
20317
  connectionIdWeightMap: Record<string, number>;
20318
+ }, mapData: MapDataInternal) => Promise<Directions | undefined>;
20319
+ getDirectionsSync: (from: TNavigationTarget[], to: TNavigationTarget[], options: {
20320
+ accessible: boolean;
20321
+ smoothing: {
20322
+ enabled: boolean;
20323
+ radius: number;
20324
+ };
20325
+ zones: TDirectionZone[];
20326
+ excludedConnections: Connection[];
20327
+ connectionIdWeightMap: Record<string, number>;
20184
20328
  }, mapData: MapDataInternal) => Directions | undefined;
20185
- /**
20186
- * Get the node IDs that should be excluded from the navigation graph.
20187
- *
20188
- * @hidden
20189
- * @param excludedConnections {Connection[]}
20190
- */
20191
- getExcludedNodeIds: (excludedConnections: Connection[]) => string[];
20192
20329
  /**
20193
20330
  * Get the node IDs of connections that do not match the accessibility setting provided.
20194
20331
  * A disabled connection node is a connection node that acts as a regular node
@@ -20202,8 +20339,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions/dir
20202
20339
  }
20203
20340
 
20204
20341
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions/utils' {
20342
+ import { DirectionsCollection } from '@packages/internal/geojson-navigator';
20205
20343
  import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
20206
20344
  import type { TNavigationTarget } from '@mappedin/mappedin-js/mappedin-js/src/types';
20345
+ export function getNodesFromTargetSync(target: TNavigationTarget, mapData: MapDataInternal): string[];
20207
20346
  /**
20208
20347
  * Get the nodes from the navigation target.
20209
20348
  *
@@ -20211,7 +20350,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions/uti
20211
20350
  * @param target
20212
20351
  * @param mapData
20213
20352
  */
20214
- export function getNodesFromTarget(target: TNavigationTarget, mapData: MapDataInternal): string[];
20353
+ export function getNodesFromTarget(target: TNavigationTarget, mapData: MapDataInternal): Promise<string[]>;
20354
+ export function getDepartureFromDirections(directions: DirectionsCollection, from: TNavigationTarget[], featureToNodeIdsMap: Map<TNavigationTarget, string[]>): TNavigationTarget;
20355
+ export function getDestinationFromDirections(directions: DirectionsCollection, to: TNavigationTarget[], featureToNodeIdsMap: Map<TNavigationTarget, string[]>): TNavigationTarget;
20215
20356
  }
20216
20357
 
20217
20358
  declare module '@mappedin/mappedin-js/packages/common/Mappedin.Logger' {
@@ -20321,10 +20462,9 @@ declare module '@mappedin/mappedin-js/packages/common/utils' {
20321
20462
  end: number;
20322
20463
  };
20323
20464
  export function isFiniteBox(box: Box2 | Box3): boolean;
20324
- export function clampWithWarning(x: number, lower: number, upper: number, warning: string): number;
20325
- export function arraysEqual(arr1: any[] | null | undefined, arr2: any[] | null | undefined): boolean;
20465
+ export { clampWithWarning } from '@mappedin/mappedin-js/packages/common/math-utils';
20466
+ export { arraysEqual } from '@mappedin/mappedin-js/packages/common/array-utils';
20326
20467
  export function isBrowser(): boolean;
20327
- export {};
20328
20468
  }
20329
20469
 
20330
20470
  declare module '@mappedin/mappedin-js/packages/common/async' {
@@ -20466,19 +20606,24 @@ declare module '@mappedin/mappedin-js/packages/common/color' {
20466
20606
  }
20467
20607
 
20468
20608
  declare module '@mappedin/mappedin-js/packages/common/interpolate' {
20469
- import { z } from 'zod';
20470
- export const easingCurveSchema: z.ZodEnum<["ease-in", "ease-out", "ease-in-out", "linear"]>;
20471
- export type EasingCurve = z.infer<typeof easingCurveSchema>;
20609
+ export const EASING_CURVES: readonly ["ease-in", "ease-out", "ease-in-out", "linear"];
20610
+ export type EasingCurve = (typeof EASING_CURVES)[number];
20611
+ /**
20612
+ * Validates if a value is a valid easing curve
20613
+ * @param value The value to validate
20614
+ * @returns True if the value is a valid easing curve
20615
+ */
20616
+ export function isValidEasingCurve(value: unknown): value is EasingCurve;
20472
20617
  export const linearEase: (t: number) => number;
20473
20618
  export const quadEaseIn: (t: number) => number;
20474
20619
  export const easeIn: (x: number) => number;
20475
20620
  export const quadEaseOut: (t: number) => number;
20476
20621
  export function interpolate(value: number, inputMin: number, inputMax: number, outputMin: number, outputMax: number, easeFunc?: EasingCurve | ((t: number) => number)): number;
20477
20622
  /**
20478
- * Return the closest range within an ordered set of values that a given value falls within. If the given value is
20479
- * exactly within a range, returns the index of the range. If the given value is less than the first value in the range,
20480
- * returns 0. If the given value is greater than the last value in the range, returns the last range (lastIndex - 1).
20481
- */
20623
+ * Return the closest range within an ordered set of values that a given value falls within. If the given value is
20624
+ * exactly within a range, returns the index of the range. If the given value is less than the first value in the range,
20625
+ * returns 0. If the given value is greater than the last value in the range, returns the last range (lastIndex - 1).
20626
+ */
20482
20627
  export function getInterpolationBreakpoint(value: number, range: number[]): number;
20483
20628
  export function interpolateMulti(value: number, inputRange: number[], outputRange: number[], easeFunc?: EasingCurve | ((t: number) => number)): number;
20484
20629
  }
@@ -20649,8 +20794,8 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/system' {
20649
20794
  mouseDownStart: {
20650
20795
  time: number;
20651
20796
  timestamp: number;
20652
- clientX: number;
20653
- clientY: number;
20797
+ offsetX: number;
20798
+ offsetY: number;
20654
20799
  } | undefined;
20655
20800
  };
20656
20801
  export type InteractionRequiredCoreStateProps = {
@@ -29207,7 +29352,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/path/system' {
29207
29352
  export class PathSystem extends PubSub<{
29208
29353
  'animate:path': undefined;
29209
29354
  }> {
29210
- altitudeDirty: boolean;
29355
+ verticalDistanceDirty: boolean;
29211
29356
  convertTo3DMapPosition: RendererCore['convertTo3DMapPosition'];
29212
29357
  getParentContainer: RendererCore['getParentContainer'];
29213
29358
  convertZoomLevelToAltitude: CameraSystem['convertZoomLevelToAltitude'];
@@ -29377,21 +29522,42 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator/n
29377
29522
  * @param {DirectionsZone[]} zones - special zones for navigation operations.
29378
29523
  * @param {string[]} originIds - IDs of origin nodes.
29379
29524
  * @param {string[]} destinationNodeIds - IDs of destination nodes.
29380
- * @param {string[]} [excludedNodeIds] - IDs of nodes to exclude from pathfinding.
29381
29525
  * @param {string[]} [disabledConnectionNodeIds] - IDs of connection nodes that are disabled (ie. act as regular nodes).
29382
29526
  * @param {SimplifyDirectionsOptions} [simplify] - Options to simplify the pathfinding result.
29383
29527
  * @returns {DirectionsCollection} A collection of directional features representing the path.
29384
29528
  */
29385
- getDirections({ zones: directionsZones, originIds, destinationNodeIds, excludedNodeIds, disabledConnectionNodeIds, simplify, multiplicativeDistanceWeightScaling, overrideEdgeWeights, }: {
29529
+ getDirections({ zones: directionsZones, originIds, destinationNodeIds, disabledConnectionNodeIds, simplify, multiplicativeDistanceWeightScaling, overrideEdgeWeights, }: {
29386
29530
  originIds: string[];
29387
29531
  destinationNodeIds: string[];
29388
29532
  zones?: DirectionsZone[];
29389
- excludedNodeIds?: string[];
29390
29533
  disabledConnectionNodeIds?: string[];
29391
29534
  simplify?: SimplifyDirectionsOptions;
29392
29535
  multiplicativeDistanceWeightScaling?: boolean;
29393
29536
  overrideEdgeWeights?: Map<Edge, number>;
29394
29537
  }): DirectionsCollection;
29538
+ /**
29539
+ * Finds the nearest nodes on the graph within a given travel distance.
29540
+ *
29541
+ * @param originId - The ID of the origin node.
29542
+ * @param maxDistance - The maximum distance to search.
29543
+ * @param floorId - The ID of the floor.
29544
+ * @param includedNodeIds - The IDs of the nodes to include.
29545
+ * @param useLineOfSight - Whether to use line of sight.
29546
+ * @returns An array of nodes within the travel distance that satisfy the goal function.
29547
+ */
29548
+ findNearestNodesOnGraph: (originId: string, maxDistance: number, floorId: string, includedNodeIds: string[], useLineOfSight?: boolean) => {
29549
+ feature: import("../types/node").NodeFeature;
29550
+ distance: number;
29551
+ }[];
29552
+ /**
29553
+ * Checks if there is a line of sight between two points on the map.
29554
+ *
29555
+ * @param origin - The origin point.
29556
+ * @param destination - The destination point.
29557
+ * @param floorId - The ID of the floor.
29558
+ * @param bufferRadius - The buffer radius to use when checking for line of sight.
29559
+ * @returns True if there is a line of sight, false otherwise.
29560
+ */
29395
29561
  hasLineOfSight: (origin: [number, number], destination: [number, number], floorId: string, bufferRadius?: number) => boolean;
29396
29562
  /**
29397
29563
  * Calculates the approximate distance between two geographic coordinates on Earth's surface.
@@ -29603,6 +29769,20 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/camera/helpers/utils'
29603
29769
  export const getScrollDelta: (event: MouseEvent | WheelEvent) => number;
29604
29770
  }
29605
29771
 
29772
+ declare module '@mappedin/mappedin-js/packages/common/math-utils' {
29773
+ /**
29774
+ * Clamp a number between lower and upper bounds with a warning
29775
+ */
29776
+ export function clampWithWarning(x: number, lower: number, upper: number, warning: string): number;
29777
+ }
29778
+
29779
+ declare module '@mappedin/mappedin-js/packages/common/array-utils' {
29780
+ /**
29781
+ * Compare two arrays for equality
29782
+ */
29783
+ export function arraysEqual(arr1: any[] | null | undefined, arr2: any[] | null | undefined): boolean;
29784
+ }
29785
+
29606
29786
  declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/tap-controller' {
29607
29787
  export enum TapType {
29608
29788
  onefinger = 0,
@@ -37480,6 +37660,8 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/navigation-
37480
37660
  import { Edge } from '@mappedin/mappedin-js/packages/geojson-navigator/src/edge';
37481
37661
  import type { NodeCollection, NodeFeature } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/node';
37482
37662
  import type { DirectionsZone } from '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator';
37663
+ import type { Position } from 'geojson';
37664
+ export const DEFAULT_BUFFER_RADIUS = 0.4;
37483
37665
  /**
37484
37666
  * Represents a navigation graph for pathfinding operations, holding nodes and edges with utilities to perform routing.
37485
37667
  * @see {@link https://mappedin.atlassian.net/wiki/spaces/SDK/pages/234487854/A+Search+Algorithm+in+Navigation+Graph}
@@ -37507,20 +37689,36 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/navigation-
37507
37689
  * @returns {number} The shortest Euclidean distance.
37508
37690
  */
37509
37691
  getShortestEuclideanDistance(origin: NodeFeature, destinations: NodeFeature[]): number;
37692
+ hasLineOfSight: (origin: Position, destination: Position, edges?: Position[][], bufferRadius?: number) => boolean;
37693
+ /**
37694
+ * Performs a Dijkstra search to find nodes within a given travel distance that satisfy a goal function, sorted by distance.
37695
+ *
37696
+ * @param originId - Origin node ID.
37697
+ * @param maxTravelDistance - The maximum travel distance.
37698
+ * @param includedNodeIds - Array of node IDs to include in the search.
37699
+ * @param obstructionEdges - Array of obstruction edges for line of sight calculations.
37700
+ * @param useLineOfSight - Whether to use line of sight checking.
37701
+ * @returns An Array of nodes within the travel distance that satisfy the goal function.
37702
+ * - feature: The node feature.
37703
+ * - distance: The distance to the node.
37704
+ * - edges: The edges to the node.
37705
+ */
37706
+ dijkstraFindWithinTravelDistance(originId: string, maxTravelDistance: number, includedNodeIds: string[], obstructionEdges: Position[][], useLineOfSight: boolean): {
37707
+ feature: NodeFeature;
37708
+ distance: number;
37709
+ }[];
37510
37710
  /**
37511
37711
  * Performs A* pathfinding from specified origins to destinations, considering optional constraints like accessibility.
37512
37712
  *
37513
37713
  * @param {string[]} originIds - Array of origin node IDs.
37514
37714
  * @param {string[]} destinationNodeIds - Array of destination node IDs.
37515
- * @param {Set<string>} [excludedNodeIds] - Optional set of node IDs to exclude from pathfinding.
37516
37715
  * @param {Set<string>} [disabledConnectionNodeIds] - Optional set of connection node IDs that are disabled (ie. act as regular nodes).
37517
37716
  * @returns {Edge[]} An array of edges representing the shortest path, or an empty array if no path is found.
37518
37717
  */
37519
- aStar({ originIds, destinationNodeIds, excludedNodeIds, disabledConnectionNodeIds, zones, overrideEdgeWeights, }: {
37718
+ aStar({ originIds, destinationNodeIds, disabledConnectionNodeIds, zones, overrideEdgeWeights, }: {
37520
37719
  originIds: string[];
37521
37720
  destinationNodeIds: string[];
37522
37721
  zones: DirectionsZone[];
37523
- excludedNodeIds?: Set<string>;
37524
37722
  disabledConnectionNodeIds?: Set<string>;
37525
37723
  overrideEdgeWeights?: Map<Edge, number>;
37526
37724
  }): Edge[];