@mappedin/react-sdk 6.0.1-beta.24 → 6.0.1-beta.26

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.
@@ -18,7 +18,9 @@
18
18
  // ../react/@packages/internal/shave-text/shave-text
19
19
  // ../react/@tweenjs/tween.js
20
20
  // ../react/@turf/turf
21
+ // ../react/troika-three-text
21
22
  // ../react/@packages/internal/quad-tree
23
+ // ../react/@mappedin/core-sdk/src/components/text3d
22
24
  // ../react/minisearch
23
25
  // ../react/three/addons/loaders/GLTFLoader.js
24
26
  // ../react/@mapbox/point-geometry
@@ -62,8 +64,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
62
64
  import type { Floor } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
63
65
  import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle, ParsedMVFLocalePack, OperationHours, SiblingGroup, LocationState } from '@mappedin/mvf';
64
66
  import { MapView } from '@mappedin/react-sdk/mappedin-js/src/map-view';
65
- import type { InsetPadding, InsetPaddingOption, Shading, PaintStyle, LineStyle, WatermarkOptions } from '@mappedin/react-sdk/geojson/src';
66
- import { enableTestMode } from '@mappedin/react-sdk/geojson/src';
67
+ export type { Text3D as Text3DApi } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/text3d';
68
+ import type { InsetPadding, InsetPaddingOption, Shading, PaintStyle, LineStyle, WatermarkOptions, Text3DState, AddText3DOptions, UpdatableText3DState, InitializeText3DState, MapViewState } from '@mappedin/react-sdk/geojson/src';
69
+ import { enableTestMode, preloadFont } from '@mappedin/react-sdk/geojson/src';
67
70
  export type { PubSub } from '@packages/internal/common/pubsub';
68
71
  import type { TMappedinMapLibreOverlayEvents } from '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay';
69
72
  import { MappedinMapLibreOverlay } from '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay';
@@ -316,12 +319,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
316
319
  * @deprecated Use {@link show3dMap} instead.
317
320
  */
318
321
  export const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
319
- export { parseMVF, unzipMVF, enableTestMode };
320
- export type { MapView, MapData, MappedinMapLibreOverlay, TMappedinMapLibreOverlayEvents, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, };
322
+ export { parseMVF, unzipMVF, enableTestMode, preloadFont };
323
+ export type { MapView, MapData, MapViewState, MappedinMapLibreOverlay, TMappedinMapLibreOverlayEvents, TBlueDotEvents, TBlueDotAction, TBlueDotState, GeolocationPositionExtended, TStackedMapsEvents, TExpandOptions, TStackedMapsState, TFollowMode, TFollowCameraOptions, TEvents, TEventPayload, TFloorChangeReason, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, Environment, InsetPadding, InsetPaddingOption, OperationHours, SiblingGroup, LocationState, Text3DState, AddText3DOptions, UpdatableText3DState, InitializeText3DState, };
321
324
  export type * from 'geojson';
322
325
  export type { TUpdateState, TUpdateStates, TLabelState, TGeometryState, TModelState, TShapeState, TDoorsState, TImageState, TWallsState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TCameraFocusOnTarget, TFocusable, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TAddImageOptions, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, TBlueDotPositionUpdate, } from '@mappedin/react-sdk/mappedin-js/src/types';
323
326
  export { WALLS, DOORS } from '@mappedin/react-sdk/mappedin-js/src/types';
324
- export type { Label, Marker, Path, Shape, CameraTransform, Model, Image } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
327
+ export type { Label, Marker, Path, Shape, CameraTransform, Model, Image, Text3D } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
328
+ export type { Debug } from '@mappedin/react-sdk/mappedin-js/src/debug';
325
329
  export type { Navigation, TNavigationOptions } from '@mappedin/react-sdk/mappedin-js/src/navigation';
326
330
  export type { TSpaceType } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
327
331
  export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image as ImageData, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, Facade, Node, type Places, } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
@@ -651,7 +655,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data' {
651
655
  import { Search } from '@mappedin/react-sdk/mappedin-js/src/search';
652
656
  import type { TNavigationTarget, TGetDirectionsOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
653
657
  import type { Directions } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions';
654
- import { Query } from '@mappedin/react-sdk/mappedin-js/src/query';
658
+ import type { Query } from '@mappedin/react-sdk/mappedin-js/src/query';
659
+ import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
655
660
  /**
656
661
  * A WeakMap to associate {@link MapData} instances with their internal representation.
657
662
  * We need a way to get the internal data object from the API
@@ -839,6 +844,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data' {
839
844
  */
840
845
  getById<T extends string>(type: T, id: string): T extends 'node' ? Node | undefined : T extends 'space' ? Space | undefined : T extends 'door' ? Door | undefined : T extends 'floor' ? Floor | undefined : T extends 'facade' ? Facade | undefined : T extends 'floor-stack' ? FloorStack | undefined : T extends 'connection' ? Connection | undefined : T extends 'object' ? MapObject | undefined : T extends 'point-of-interest' ? PointOfInterest | undefined : T extends 'annotation' ? Annotation | undefined : T extends 'area' ? Area | undefined : T extends 'enterprise-location' ? EnterpriseLocation | undefined : T extends 'enterprise-category' ? EnterpriseCategory | undefined : undefined;
841
846
  getById(type: string, id: string): object | undefined;
847
+ /**
848
+ * Get the GeoJSON for a map data object on the map.
849
+ * @param mapDataObject
850
+ */
851
+ getGeoJSON<T extends IGeoJSONData>(mapDataObject: T): T['geoJSON'];
842
852
  /**
843
853
  * Changes the language of the map data.
844
854
  *
@@ -909,7 +919,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data' {
909
919
  declare module '@mappedin/react-sdk/mappedin-js/src/events' {
910
920
  import type { ClickPayload } from '@mappedin/core-sdk';
911
921
  import type { TStackedMapsEvents } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
912
- import type { Coordinate, Floor, MapObject, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
922
+ import type { Coordinate, Facade, Floor, MapObject, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
913
923
  import type { Label, Marker, Model, Path } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
914
924
  import type { CameraTransform } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects/camera-transform';
915
925
  import type { TBlueDotEvents } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot';
@@ -953,6 +963,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/events' {
953
963
  * Details about the pointer event which triggered the interaction.
954
964
  */
955
965
  pointerEvent: ClickPayload['pointerEvent'];
966
+ /**
967
+ * The interactive facades which the user interaction passed through.
968
+ */
969
+ facades: Facade[];
956
970
  };
957
971
  export type THoverPayload = Omit<TClickPayload, 'pointerEvent'>;
958
972
  /**
@@ -1314,20 +1328,22 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1314
1328
  }
1315
1329
 
1316
1330
  declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1317
- import type { RendererCore, WatermarkUpdateOptions } from '@mappedin/core-sdk';
1331
+ import type { RendererCore, WatermarkUpdateOptions } from '@mappedin/react-sdk/geojson/src';
1318
1332
  import { PubSub } from '@packages/internal/common';
1319
1333
  import { type TEvents, type TShow3DMapOptions } from '@mappedin/react-sdk/mappedin-js/src';
1320
1334
  import type { Navigation } from '@mappedin/react-sdk/mappedin-js/src/navigation';
1321
1335
  import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor, Images } from '@mappedin/react-sdk/mappedin-js/src/api-geojson';
1322
1336
  import type { BlueDot } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot';
1323
1337
  import type MapData from '@mappedin/react-sdk/mappedin-js/src/map-data';
1324
- import type { Annotation, Coordinate, Door, Floor, MapObject, PointOfInterest, Space, Node, EnterpriseLocation, FloorStack } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1325
- import type { DOORS, WALLS, TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState, TUpdateStates } from '@mappedin/react-sdk/mappedin-js/src/types';
1326
- import type { Label, Marker, Image, Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
1338
+ import type { Annotation, Coordinate, Door, Floor, MapObject, PointOfInterest, Space, Node, EnterpriseLocation, FloorStack, Facade } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1339
+ import type { DOORS, WALLS, TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState, TUpdateStates, GlobalState, UpdateGlobalState } from '@mappedin/react-sdk/mappedin-js/src/types';
1340
+ import type { Label, Marker, Image, Shape, Text3D as Text3DView } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
1327
1341
  import type { TEventPayload } from '@mappedin/react-sdk/mappedin-js/src/events';
1328
1342
  import type { Shapes } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/shapes';
1329
1343
  import type { StackedMaps, TCollapseOptions, TExpandOptions } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
1330
1344
  import type { InspectorOption } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/inspector/inspector';
1345
+ import { Debug } from '@mappedin/react-sdk/mappedin-js/src/debug';
1346
+ import type { Text3D } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/text3d';
1331
1347
  /**
1332
1348
  * The MapView class is the main class for rendering and interacting with the map.
1333
1349
  *
@@ -1345,6 +1361,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1345
1361
  * Controls for the map's labels.
1346
1362
  */
1347
1363
  Labels: Labels;
1364
+ /**
1365
+ * @experimental
1366
+ * Controls for the map's 3D texts.
1367
+ */
1368
+ Text3D: Text3D;
1348
1369
  /**
1349
1370
  * Controls for the map's markers.
1350
1371
  */
@@ -1422,8 +1443,16 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1422
1443
  * // Update the color of a space to red.
1423
1444
  * map.updateState(space, { color: 'red' });
1424
1445
  */
1425
- updateState<T extends Space | MapObject | Label | Marker | Shape | Door | WALLS | DOORS>(target: T, state: TUpdateState<T>): any;
1446
+ updateState<T extends Space | Text3DView | MapObject | Label | Marker | Shape | Door | Facade | WALLS | DOORS>(target: T, state: TUpdateState<T>): any;
1426
1447
  updateState<T extends string & NonNullable<unknown>>(target: T, state: TUpdateStates): any;
1448
+ /**
1449
+ * Update global state of the MapView
1450
+ */
1451
+ updateGlobalState(update: UpdateGlobalState): void;
1452
+ /**
1453
+ * Get global state of the MapView
1454
+ */
1455
+ getGlobalState(): GlobalState;
1427
1456
  update: () => void;
1428
1457
  /**
1429
1458
  * Retrieves the map data for the current map.
@@ -1482,7 +1511,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1482
1511
  * @hidden
1483
1512
  */
1484
1513
  updateWatermark(options: WatermarkUpdateOptions): void;
1485
- getState<T extends Space | MapObject | Label | Marker | Image | Shape | string>(target: T): TGetState<T> | undefined;
1514
+ getState<T extends Space | Text3DView | MapObject | Label | Marker | Image | Shape | string>(target: T): TGetState<T>;
1486
1515
  setHoverColor(c: string): void;
1487
1516
  getHoverColor(): string | undefined;
1488
1517
  /**
@@ -1601,6 +1630,88 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1601
1630
  * Enable debug interface. Learn more about the debug interface in the [Debug Mode Guide](https://developer.mappedin.com/web-sdk/getting-started#debug-mode).
1602
1631
  */
1603
1632
  enableDebug(opitons?: InspectorOption): Promise<void>;
1633
+ /**
1634
+ * @experimental
1635
+ * @internal
1636
+ */
1637
+ Debug: Debug;
1638
+ }
1639
+ }
1640
+
1641
+ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/text3d' {
1642
+ import { Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1643
+ import type { TAddText3DOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
1644
+ import type { CurrentMapGetter } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/types';
1645
+ import { Text3D as Text3DView } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
1646
+ export class Text3D {
1647
+ #private;
1648
+ /**
1649
+ * @internal
1650
+ */
1651
+ constructor({ currentMapGetter }: {
1652
+ currentMapGetter: CurrentMapGetter;
1653
+ });
1654
+ /**
1655
+ * Creates polygon labels for all spaces.
1656
+ *
1657
+ * @param options - Configuration options for text label creation
1658
+ * @returns An array of Text3DView instances representing the created labels. If the space is already labeled, the designated Text3D instance will be returned.
1659
+ *
1660
+ * @example
1661
+ * ```typescript
1662
+ * const labels = mapView.Text3D.labelAll({
1663
+ * // optional configuration options
1664
+ * });
1665
+ * ```
1666
+ */
1667
+ labelAll(options?: TAddText3DOptions): Text3DView[];
1668
+ /**
1669
+ * Creates a 3D text label for a given space.
1670
+ *
1671
+ * @param target - The target space or enterprise space to label.
1672
+ * @param content - The content of the label. If not provided, target.name will be used
1673
+ * @param options={} - Configuration options for the text label creation.
1674
+ * @returns An array of Text3DView instances representing the created labels.
1675
+ *
1676
+ * @throws {Error} If the target is not a Space.
1677
+ *
1678
+ * @example
1679
+ * ```typescript
1680
+ * const labels = mapView.Text3D.label(space, "Label Content", { fontSize: 12 });
1681
+ * ```
1682
+ */
1683
+ label(target: Space, content?: string, options?: TAddText3DOptions): Text3DView | undefined;
1684
+ /**
1685
+ * Removes one or more Text3D labels from the map
1686
+ *
1687
+ * @param target - Can be either:
1688
+ * - A single Text3DView instance
1689
+ * - An array of Text3DView instances
1690
+ * - A string ID of the Text3DView to remove
1691
+ *
1692
+ * @example
1693
+ * ```typescript
1694
+ * // Remove single text label
1695
+ * mapView.Text3D.remove(text);
1696
+ *
1697
+ * // Remove multiple text labels
1698
+ * mapView.Text3D.remove([text, text]);
1699
+ *
1700
+ * // Remove by ID
1701
+ * mapView.Text3D.remove("text3d-123");
1702
+ * ```
1703
+ */
1704
+ remove(text3dView: Text3DView): void;
1705
+ remove(id: string): void;
1706
+ /**
1707
+ * Removes all Text3D labels from the current map
1708
+ *
1709
+ * @example
1710
+ * ```typescript
1711
+ * mapView.Text3D.removeAll();
1712
+ * ```
1713
+ */
1714
+ removeAll(): void;
1604
1715
  }
1605
1716
  }
1606
1717
 
@@ -1620,20 +1731,26 @@ declare module '@mappedin/react-sdk/geojson/src' {
1620
1731
  import { mountSceneGraphVisualizer } from '@mappedin/react-sdk/geojson/examples/src/utils/scene-graph-visualizer';
1621
1732
  import '../../packages/outdoor-context-v4/css/maplibre-gl.css';
1622
1733
  import type { CollisionRankingTier } from '@mappedin/react-sdk/geojson/src/utils/collision-ranking-tier';
1734
+ export type { Text3DState } from '@mappedin/react-sdk/geojson/src/components/text3d';
1735
+ export { TEXT3D_STYLE_UPDATE_PROPS } from '@mappedin/react-sdk/geojson/src/entities/utils';
1623
1736
  export { Navigator } from '@mappedin/react-sdk/packages/geojson-navigator';
1624
1737
  export { interpolate, debounce } from '@mappedin/react-sdk/geojson/src/utils';
1625
1738
  export { MAPPEDIN_LAYER_ID } from '@mappedin/react-sdk/geojson/src/utils/constants';
1739
+ export type { DebugState, Debug } from '@mappedin/react-sdk/geojson/src/utils/debug';
1626
1740
  /**
1627
1741
  * Enable test mode for the renderer. This will disable the WebGLRenderer and WebGL1Renderer and replace them with a dummy object
1628
1742
  * so you can run tests against it
1629
1743
  */
1630
- export { enableTestMode } from '@mappedin/react-sdk/geojson/src/services/renderer';
1744
+ export { enableTestMode } from '@mappedin/react-sdk/geojson/src/services/test-mode';
1631
1745
  export { mountSceneGraphVisualizer };
1632
1746
  export type { EntityId, EntityState, LineStyle, PaintStyle, ModelStyle, ModelProperties, Shading } from '@mappedin/react-sdk/geojson/src/types';
1633
1747
  export type * from 'geojson';
1634
1748
  export type { WatermarkUpdateOptions, WatermarkOptions, WatermarkPosition } from '@mappedin/react-sdk/geojson/src/systems/watermark/system';
1749
+ export { preloadFont } from '@mappedin/react-sdk/geojson/src/systems/text3d/system';
1635
1750
  export type { GLTFExportOptions } from '@mappedin/react-sdk/geojson/src/systems/exporter';
1636
1751
  export type { AttributionControlOptions, AttributionPosition } from '@mappedin/react-sdk/geojson/src/systems/html-controls/system';
1752
+ export type { Text3DStyle } from '@mappedin/react-sdk/geojson/src/components/styles';
1753
+ export type { AddText3DOptions, InitializeText3DState, UpdatableText3DState } from '@mappedin/react-sdk/geojson/src/components/text3d';
1637
1754
  export { ATTRIBUTION_POSITIONS } from '@mappedin/react-sdk/geojson/src/systems/html-controls/system';
1638
1755
  export { ANIMATION_TWEENS } from '@mappedin/react-sdk/geojson/src/camera';
1639
1756
  export type { AddPathOptions, AddMarkerOptions, AddLabelOptions, AnimateToOptions, FocusOnOptions, MapViewState, MarkerState, PathState, GroupContainerState, GeometryGroupState, ShapeState, CustomGeometryBuilder, LabelState, GeometryState, ModelState, EasingCurve, Camera, InsetPadding, InsetPaddingOption, Position, ClickPayload, HoverPayload, CameraPayload, MapEvent, MapEventPayload, CollisionRankingTier, LabelAppearance, RendererCore, };
@@ -1715,9 +1832,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/maplibre-overlay' {
1715
1832
  declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1716
1833
  import type { Feature, MultiPolygon, Polygon } from 'geojson';
1717
1834
  import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation, EnterpriseLocation, Node, Area, Facade } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
1718
- import type { Label, Marker, Model, Image, Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
1835
+ import type { Label, Marker, Model, Image, Shape, Text3D } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
1719
1836
  import type { Language, ParsedMVFLocalePack } from '@mappedin/mvf';
1720
- import type { InsetPaddingOption, Position } from '@mappedin/core-sdk';
1837
+ import type { InsetPaddingOption, Position, UpdatableText3DState, Text3DState, AddText3DOptions } from '@mappedin/react-sdk/geojson/src';
1721
1838
  export type DeepRequired<T> = Required<{
1722
1839
  [K in keyof T]: T[K] extends Required<T[K]> ? T[K] : DeepRequired<T[K]>;
1723
1840
  }>;
@@ -1797,25 +1914,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1797
1914
  /**
1798
1915
  * Defines the state for a label when its appearance is updated.
1799
1916
  */
1800
- export type TLabelState = {
1917
+ export type TLabelState = Omit<Required<TAddLabelOptions>, 'id'> & {
1801
1918
  text: string;
1802
1919
  type: 'label';
1803
- /**
1804
- * Appearance settings for the label.
1805
- */
1806
- appearance: TLabelAppearance;
1807
- /**
1808
- * Priority level of the label, used for determining display order.
1809
- */
1810
- rank: TCollisionRankingTier | 'initial';
1811
- /**
1812
- * Whether the label is interactive.
1813
- */
1814
- interactive: boolean;
1815
- /**
1816
- * Whether the label is enabled.
1817
- */
1818
- enabled: boolean;
1819
1920
  };
1820
1921
  /**
1821
1922
  * Defines the state for a model when its appearance is updated.
@@ -1855,6 +1956,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1855
1956
  * Visibility of the walls.
1856
1957
  */
1857
1958
  visible: boolean;
1959
+ /**
1960
+ * Height of the walls.
1961
+ */
1962
+ height?: number;
1963
+ /**
1964
+ * Opacity of the walls.
1965
+ */
1966
+ opacity?: number;
1858
1967
  };
1859
1968
  export type TDoorsState = {
1860
1969
  type: 'doors';
@@ -1887,30 +1996,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1887
1996
  */
1888
1997
  opacity: number;
1889
1998
  };
1890
- export type TMarkerState = {
1999
+ export type TMarkerState = Omit<Required<TAddMarkerOptions>, 'id'> & {
1891
2000
  type: 'marker';
1892
2001
  /**
1893
2002
  * HTML element for the marker.
1894
2003
  */
1895
2004
  element: HTMLElement;
1896
- /**
1897
- * Priority level of the marker, used for determining display order.
1898
- */
1899
- rank: TCollisionRankingTier | 'initial';
1900
- /**
1901
- * Whether the marker is interactive.
1902
- * `true` indicates that the marker will be registered in the SDK interaction events.
1903
- * `'pointer-events-auto'` indicates that the marker will receive browser pointer events.
1904
- */
1905
- interactive: boolean | 'pointer-events-auto';
1906
- /**
1907
- * Whether the marker is enabled.
1908
- */
1909
- enabled: boolean;
1910
- /**
1911
- * The current coordinate of the marker.
1912
- */
1913
- coordinate: Coordinate;
1914
2005
  };
1915
2006
  /**
1916
2007
  * Represents the state of a shape.
@@ -1999,9 +2090,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1999
2090
  /**
2000
2091
  * The type for updating the state of map elements (colors, texts, etc.).
2001
2092
  */
2002
- export type TUpdateState<T> = T extends WALLS ? Partial<TWallsState> : T extends DOORS ? Partial<TDoorsState> : T extends Door ? Partial<TDoorsState> : T extends Marker ? Partial<TMarkerState> : T extends Label ? Partial<TLabelState> : T extends Space | MapObject ? Partial<TGeometryState> : T extends Shape ? Partial<Omit<TShapeState, 'height' | 'type'>> : T extends Door ? Partial<TGeometryState> : T extends string ? Record<string, any> : never;
2093
+ export type TUpdateState<T> = T extends WALLS ? Partial<TWallsState> : T extends DOORS | Door ? Partial<TDoorsState> : T extends Marker ? Partial<TMarkerState> : T extends Label ? Partial<TLabelState> : T extends Space | MapObject | Facade ? Partial<TGeometryState> : T extends Shape ? Partial<Omit<TShapeState, 'height' | 'type'>> : T extends Text3D ? UpdatableText3DState : T extends string ? Record<string, any> : never;
2003
2094
  export type TUpdateStates = Partial<Omit<TGeometryState, 'interactive' | 'hoverColor' | 'type'>> | Partial<TMarkerState> | Partial<TLabelState> | Partial<TGeometryState>;
2004
- export type TGetState<T> = T extends WALLS ? TWallsState | undefined : T extends DOORS ? TDoorsState | undefined : T extends Marker ? TMarkerState | undefined : T extends Shape ? TShapeState | undefined : T extends Model ? TModelState | undefined : T extends Label ? TLabelState | undefined : T extends Image ? TImageState | undefined : T extends Space | MapObject ? TGeometryState | undefined : T extends string ? TLabelState | TGeometryState | TMarkerState | TModelState | undefined : never;
2095
+ export type TGetState<T> = T extends WALLS ? TWallsState | undefined : T extends DOORS ? TDoorsState | undefined : T extends Marker ? TMarkerState | undefined : T extends Shape ? TShapeState | undefined : T extends Model ? TModelState | undefined : T extends Label ? TLabelState | undefined : T extends Image ? TImageState | undefined : T extends Text3D ? Text3DState | undefined : T extends Space | MapObject ? TGeometryState | undefined : T extends string ? TLabelState | TGeometryState | TMarkerState | TModelState | undefined : never;
2005
2096
  /**
2006
2097
  * Options for {@link Camera} animations on the map.
2007
2098
  */
@@ -2014,6 +2105,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2014
2105
  * Easing function to use for the animation.
2015
2106
  */
2016
2107
  easing?: TEasingFunction;
2108
+ /**
2109
+ * Whether the current animation will be interrupted, or must complete before starting any new animations
2110
+ * @default: true
2111
+ */
2112
+ interruptible?: boolean;
2017
2113
  };
2018
2114
  /**
2019
2115
  * Options for controlling animations on the map.
@@ -2078,6 +2174,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2078
2174
  vertical?: number;
2079
2175
  };
2080
2176
  screenOffsets?: InsetPaddingOption;
2177
+ /**
2178
+ * Whether the current animation will be interrupted, or must complete before starting any new animations
2179
+ * @default: true
2180
+ */
2181
+ interruptible?: boolean;
2081
2182
  };
2082
2183
  /**
2083
2184
  * A map element that can be focused on by the camera.
@@ -2474,6 +2575,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2474
2575
  */
2475
2576
  url: string;
2476
2577
  };
2578
+ /**
2579
+ * @interface
2580
+ */
2581
+ export type TAddText3DOptions = AddText3DOptions;
2477
2582
  /**
2478
2583
  * Options for controlling the behavior of an {@link Image}.
2479
2584
  */
@@ -2517,7 +2622,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2517
2622
  * Optional. Determines the collision ranking tier of the marker, which influences its visibility in relation to other colliders.
2518
2623
  * For the possible values ('medium', 'high', 'always-visible') and their impact on label visibility, see {@link TCollisionRankingTier}.
2519
2624
  */
2520
- rank?: TCollisionRankingTier;
2625
+ rank?: TCollisionRankingTier | 'initial';
2521
2626
  /**
2522
2627
  * Optional. Specifies the anchor point of the marker, determining its position relative to its coordinates.
2523
2628
  * If a list is provided, the marker will be anchored to the first anchor point that is available.
@@ -2534,10 +2639,6 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2534
2639
  * @default false
2535
2640
  */
2536
2641
  interactive?: boolean | 'pointer-events-auto';
2537
- /**
2538
- * Optional layer to attach the {@link Marker} to.
2539
- */
2540
- layer?: string;
2541
2642
  /**
2542
2643
  * @internal
2543
2644
  */
@@ -2547,11 +2648,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2547
2648
  */
2548
2649
  dynamicResize?: boolean;
2549
2650
  /**
2550
- * Whether the marker should stop event propagation.
2551
- * @internal
2552
- * @default false
2651
+ * Whether the marker is enabled.
2553
2652
  */
2554
- stopPropagation?: boolean;
2653
+ enabled?: boolean;
2555
2654
  };
2556
2655
  /**
2557
2656
  * Options for creating a new {@link Label} with {@link Labels.add}.
@@ -2561,31 +2660,24 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2561
2660
  * Optional. Determines the collision ranking tier of the label, which influences its visibility in relation to other colliders.
2562
2661
  * For the possible values ('medium', 'high', 'always-visible') and their impact on label visibility, see {@link TCollisionRankingTier}.
2563
2662
  */
2564
- rank?: TCollisionRankingTier;
2663
+ rank?: TCollisionRankingTier | 'initial';
2565
2664
  /**
2566
2665
  * Customize the appearance of the {@link Label} and its pin
2567
2666
  */
2568
2667
  appearance?: TLabelAppearance;
2569
- /**
2570
- * Group analytics based ranking
2571
- *
2572
- * @default false
2573
- */
2574
- groupRankingByCategory?: boolean;
2575
2668
  /**
2576
2669
  * Whether the Label should be clickable.
2577
2670
  * @default false
2578
2671
  */
2579
2672
  interactive?: boolean;
2580
- /**
2581
- * Optional layer to attach the Label to.
2582
- * If not provided, this will be empty.
2583
- */
2584
- layer?: string;
2585
2673
  /**
2586
2674
  * @internal
2587
2675
  */
2588
2676
  id?: string;
2677
+ /**
2678
+ * Whether the label is enabled.
2679
+ */
2680
+ enabled?: boolean;
2589
2681
  };
2590
2682
  export type TBlueDotOptions = {
2591
2683
  /**
@@ -2687,6 +2779,21 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2687
2779
  language: Language;
2688
2780
  localePack: ParsedMVFLocalePack;
2689
2781
  };
2782
+ export type GlobalState = {
2783
+ text3d: {
2784
+ /**
2785
+ * hover color of the text3d
2786
+ */
2787
+ hoverColor: string;
2788
+ };
2789
+ geometry: {
2790
+ /**
2791
+ * hover color of the geometries
2792
+ */
2793
+ hoverColor: string;
2794
+ };
2795
+ };
2796
+ export type UpdateGlobalState = DeepPartial<GlobalState>;
2690
2797
  }
2691
2798
 
2692
2799
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-dot' {
@@ -2976,6 +3083,16 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects' {
2976
3083
  export { Path } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects/path';
2977
3084
  export { CameraTransform } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects/camera-transform';
2978
3085
  export { Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects/shape';
3086
+ export { Text3D } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects/text3d';
3087
+ }
3088
+
3089
+ declare module '@mappedin/react-sdk/mappedin-js/src/debug' {
3090
+ import type { RendererCore } from '@mappedin/core-sdk';
3091
+ export class Debug {
3092
+ state: RendererCore['Debug']['state'];
3093
+ constructor(core: RendererCore);
3094
+ update: RendererCore['Debug']['update'];
3095
+ }
2979
3096
  }
2980
3097
 
2981
3098
  declare module '@mappedin/react-sdk/mappedin-js/src/navigation' {
@@ -3749,6 +3866,58 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/directions' {
3749
3866
  }
3750
3867
  }
3751
3868
 
3869
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types' {
3870
+ import type Area from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/area';
3871
+ import type Door from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door';
3872
+ import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
3873
+ import type Space from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space';
3874
+ import type PointOfInterest from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/poi';
3875
+ import type Annotation from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/annotation';
3876
+ import type Connection from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/connection';
3877
+ import type MapObject from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/object';
3878
+ import type { EnterpriseLocation as MvfEnterpriseLocation, EnterpriseCategory as MvfEnterpriseCategory, ParsedMVFLocalePack, Feature } from '@mappedin/mvf';
3879
+ import type { PartialExcept } from '@mappedin/mvf/dist/locale';
3880
+ import type { LocalePackUrls } from '@packages/internal/mvf-utils';
3881
+ import type { LanguagePackHydrationItem } from '@mappedin/react-sdk/mappedin-js/src/types';
3882
+ import type { EnvControl } from '@packages/internal/mvf-utils/mvf-utils';
3883
+ /**
3884
+ * Places are the main objects that can be searched for.
3885
+ */
3886
+ export type Places = Space | Floor | Door | Connection | MapObject | PointOfInterest | Annotation | Area;
3887
+ export type LocationWithLocale = PartialExcept<MvfEnterpriseLocation, 'id'>;
3888
+ export type CategoryWithLocale = PartialExcept<MvfEnterpriseCategory, 'id'>;
3889
+ export type LanguagePack = {
3890
+ type: 'downloaded';
3891
+ data: ParsedMVFLocalePack;
3892
+ optimized: {
3893
+ locations: Record<string, LocationWithLocale> | undefined;
3894
+ categories: Record<string, CategoryWithLocale> | undefined;
3895
+ };
3896
+ } | {
3897
+ type: 'initial';
3898
+ optimized: {
3899
+ locations: Record<string, MvfEnterpriseLocation>;
3900
+ categories: Record<string, MvfEnterpriseCategory>;
3901
+ };
3902
+ };
3903
+ export type TMapDataInternalOptions = {
3904
+ env?: EnvControl;
3905
+ enterprise?: boolean;
3906
+ outdoorViewToken?: string;
3907
+ localePacksUrls?: LocalePackUrls;
3908
+ languagePacks?: LanguagePackHydrationItem[];
3909
+ binaryBundle?: Uint8Array;
3910
+ sasToken?: string;
3911
+ };
3912
+ /**
3913
+ * A class that implements IGeoJSONData has a underlying GeoJSON datathat can be accessed.
3914
+ */
3915
+ export interface IGeoJSONData {
3916
+ /** Gets the underlying GeoJSON Feature representation of this object. */
3917
+ geoJSON: Feature<any, null>;
3918
+ }
3919
+ }
3920
+
3752
3921
  declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/camera-transform' {
3753
3922
  import type { Camera } from '@mappedin/react-sdk/mappedin-js/src/api-geojson';
3754
3923
  /**
@@ -3800,13 +3969,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node' {
3800
3969
  import type { EnterpriseLocation, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3801
3970
  import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
3802
3971
  import BaseMetaData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metadata-object';
3972
+ import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
3803
3973
  /**
3804
3974
  * A class representing {@link Path} node data within the map.
3805
3975
  *
3806
3976
  * Nodes are used to define points in the map's pathfinding graph.
3807
3977
  *
3808
3978
  */
3809
- class Node extends BaseMetaData {
3979
+ class Node extends BaseMetaData implements IGeoJSONData {
3810
3980
  #private;
3811
3981
  /**
3812
3982
  * @internal
@@ -3856,6 +4026,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/node' {
3856
4026
  * @returns {Node[]} An array of neighboring Node objects.
3857
4027
  */
3858
4028
  get neighbors(): Node[];
4029
+ /**
4030
+ * Gets the underlying GeoJSON Feature representation of this Node.
4031
+ */
4032
+ get geoJSON(): {
4033
+ properties: null;
4034
+ type: import("@mappedin/mvf").FeatureType;
4035
+ geometry: import("@mappedin/mvf").Point;
4036
+ };
3859
4037
  /**
3860
4038
  * Serializes the node data to JSON.
3861
4039
  *
@@ -3886,6 +4064,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/area' {
3886
4064
  import { Coordinate, type MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3887
4065
  import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
3888
4066
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4067
+ import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
3889
4068
  /**
3890
4069
  * An Area represents some grouping of multiple pieces of geometry, not
3891
4070
  * necessarily bounded by walls or any other physical feature of the map.
@@ -3893,7 +4072,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/area' {
3893
4072
  * Areas are currently in a preview state, and may have changes to existing
3894
4073
  * functionality or new features added in the future.
3895
4074
  */
3896
- class Area extends BaseMapData {
4075
+ class Area extends BaseMapData implements IGeoJSONData {
3897
4076
  #private;
3898
4077
  /**
3899
4078
  * @internal
@@ -3948,6 +4127,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/area' {
3948
4127
  * @throws Will throw an error if the floor is not found.
3949
4128
  */
3950
4129
  get floor(): Floor;
4130
+ /**
4131
+ * Gets the underlying GeoJSON Feature representation of this Area.
4132
+ */
4133
+ get geoJSON(): {
4134
+ properties: null;
4135
+ type: import("@mappedin/mvf").FeatureType;
4136
+ geometry: import("@mappedin/mvf").Polygon;
4137
+ };
3951
4138
  /**
3952
4139
  * Serializes the space data to JSON.
3953
4140
  *
@@ -3974,6 +4161,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door' {
3974
4161
  import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
3975
4162
  import type { MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3976
4163
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4164
+ import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
3977
4165
  /**
3978
4166
  * A class representing door data within the map.
3979
4167
  *
@@ -4002,7 +4190,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door' {
4002
4190
  * Refer to the [Textures & Colors Guide](https://developer.mappedin.com/web-sdk/images-textures#textures--colors) for more information and interactive examples.
4003
4191
  *
4004
4192
  */
4005
- class Door extends BaseMapData {
4193
+ class Door extends BaseMapData implements IGeoJSONData {
4006
4194
  #private;
4007
4195
  /**
4008
4196
  * @internal
@@ -4061,6 +4249,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door' {
4061
4249
  * Gets whether this door is an exterior door.
4062
4250
  */
4063
4251
  get isExterior(): boolean;
4252
+ /**
4253
+ * Gets the underlying GeoJSON Feature representation of this Door.
4254
+ */
4255
+ get geoJSON(): {
4256
+ properties: null;
4257
+ type: import("@mappedin/mvf").FeatureType;
4258
+ geometry: import("@mappedin/mvf").LineString;
4259
+ };
4064
4260
  /**
4065
4261
  * Converts the door information to a JSON object.
4066
4262
  *
@@ -4093,6 +4289,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space' {
4093
4289
  import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
4094
4290
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4095
4291
  import type Door from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door';
4292
+ import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
4096
4293
  /**
4097
4294
  * Represents the various types of spaces that can be defined within a map.
4098
4295
  * - 'room': A standard room or enclosed area.
@@ -4110,7 +4307,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space' {
4110
4307
  *
4111
4308
  * Refer to the [Spaces Guide](https://developer.mappedin.com/web-sdk/spaces) for more information and interactive examples.
4112
4309
  */
4113
- class Space extends BaseMapData {
4310
+ class Space extends BaseMapData implements IGeoJSONData {
4114
4311
  #private;
4115
4312
  /**
4116
4313
  * @internal
@@ -4120,6 +4317,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space' {
4120
4317
  * @internal
4121
4318
  */
4122
4319
  readonly __type = "space";
4320
+ getMvfData(): import("@mappedin/mvf").Feature<import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Point, import("@mappedin/mvf").SpaceProperties>;
4123
4321
  /**
4124
4322
  * Checks if the provided instance is of type Space.
4125
4323
  *
@@ -4181,6 +4379,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space' {
4181
4379
  * @returns {Coordinate} The space's center coordinate.
4182
4380
  */
4183
4381
  get center(): Coordinate;
4382
+ /**
4383
+ * Gets the underlying GeoJSON Feature representation of this Space.
4384
+ */
4385
+ get geoJSON(): {
4386
+ properties: null;
4387
+ type: import("@mappedin/mvf").FeatureType;
4388
+ geometry: import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Point;
4389
+ };
4184
4390
  /**
4185
4391
  * Serializes the space data to JSON.
4186
4392
  *
@@ -4440,6 +4646,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/object' {
4440
4646
  import type { MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4441
4647
  import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
4442
4648
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4649
+ import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
4443
4650
  /**
4444
4651
  * A class representing generic map object data within the map.
4445
4652
  *
@@ -4448,7 +4655,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/object' {
4448
4655
  * MapObject appearance can be customized by changing the color or adding a texture to its top or sides.
4449
4656
  * Refer to the [Textures & Colors Guide](https://developer.mappedin.com/web-sdk/images-textures#textures--colors) for more information and interactive examples.
4450
4657
  */
4451
- export class MapObject extends BaseMapData {
4658
+ export class MapObject extends BaseMapData implements IGeoJSONData {
4452
4659
  #private;
4453
4660
  /**
4454
4661
  * @internal
@@ -4509,6 +4716,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/object' {
4509
4716
  * @returns {Coordinate} The object's center coordinate.
4510
4717
  */
4511
4718
  get center(): Coordinate;
4719
+ /**
4720
+ * Gets the underlying GeoJSON Feature representation of this Object.
4721
+ */
4722
+ get geoJSON(): {
4723
+ properties: null;
4724
+ type: import("@mappedin/mvf").FeatureType;
4725
+ geometry: import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString;
4726
+ };
4512
4727
  /**
4513
4728
  * Serializes the MapObject data to JSON.
4514
4729
  *
@@ -4611,13 +4826,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/poi' {
4611
4826
  import type { Floor, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4612
4827
  import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
4613
4828
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4829
+ import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
4614
4830
  /**
4615
4831
  * A class representing point of interest data within the map.
4616
4832
  *
4617
4833
  * Points of interest are used to represent specific points
4618
4834
  * on the map with additional information(e.g. ATMs, Water Fountains).
4619
4835
  */
4620
- class PointOfInterest extends BaseMapData {
4836
+ class PointOfInterest extends BaseMapData implements IGeoJSONData {
4621
4837
  #private;
4622
4838
  /**
4623
4839
  * @internal
@@ -4672,6 +4888,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/poi' {
4672
4888
  * @returns {string} The external ID of the POI.
4673
4889
  */
4674
4890
  get externalId(): string;
4891
+ /**
4892
+ * Gets the underlying GeoJSON Feature representation of this PointOfInterest.
4893
+ */
4894
+ get geoJSON(): {
4895
+ properties: null;
4896
+ type: import("@mappedin/mvf").FeatureType;
4897
+ geometry: Point;
4898
+ };
4675
4899
  /**
4676
4900
  * Serializes the POI data to JSON.
4677
4901
  *
@@ -4702,6 +4926,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/annotation'
4702
4926
  import type { Floor, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4703
4927
  import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
4704
4928
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
4929
+ import type { IGeoJSONData } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types';
4705
4930
  /**
4706
4931
  * A class representing annotation data within the map.
4707
4932
  *
@@ -4709,7 +4934,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/annotation'
4709
4934
  * It includes some details on a map that may be relevant to safety or accessibility (e.g. Fire Extinguishers).
4710
4935
  * Refer to the [Annotation Guide](https://developer.mappedin.com/web-sdk/annotations) for more information.
4711
4936
  */
4712
- class Annotation extends BaseMapData {
4937
+ class Annotation extends BaseMapData implements IGeoJSONData {
4713
4938
  #private;
4714
4939
  /**
4715
4940
  * @internal
@@ -4764,6 +4989,14 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/annotation'
4764
4989
  * @throws Will throw an error if the floor is not found.
4765
4990
  */
4766
4991
  get floor(): Floor;
4992
+ /**
4993
+ * Gets the underlying GeoJSON Feature representation of this Annotation.
4994
+ */
4995
+ get geoJSON(): {
4996
+ properties: null;
4997
+ type: import("@mappedin/mvf").FeatureType;
4998
+ geometry: import("@mappedin/mvf").Point;
4999
+ };
4767
5000
  /**
4768
5001
  * Converts the annotation information to a JSON object.
4769
5002
  *
@@ -5125,9 +5358,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
5125
5358
  objectEntranceNodeIdsByObstructionId: Record<string, string[]>;
5126
5359
  obstructionIdByEntranceId: Record<string, string>;
5127
5360
  connectionIdsByLatLon: Record<string, string[]>;
5128
- mvfSpacesById: Record<string, Feature<Point | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon, SpaceProperties>>;
5361
+ mvfSpacesById: Record<string, Feature<import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString | Point, SpaceProperties>>;
5129
5362
  mvfNodesById: Record<string, Feature<Point, import("@mappedin/mvf").NodeProperties>>;
5130
- mvfObstructionById: Record<string, Feature<import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon, import("@mappedin/mvf").ObstructionProperties>>;
5363
+ mvfObstructionById: Record<string, Feature<import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString, import("@mappedin/mvf").ObstructionProperties>>;
5131
5364
  mvfFloorsById: Record<string, MVFFloor>;
5132
5365
  mvfFloorStacksById: Record<string, MVFFloorStack>;
5133
5366
  mvfConnectionsById: Record<string, MVFConnection>;
@@ -5142,7 +5375,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
5142
5375
  [floorId: string]: Feature<Point, import("@mappedin/mvf").NodeProperties>[];
5143
5376
  };
5144
5377
  mvfSpacesByFloorId: {
5145
- [floorId: string]: Feature<Point | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon, SpaceProperties>[];
5378
+ [floorId: string]: Feature<import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString | Point, SpaceProperties>[];
5146
5379
  };
5147
5380
  mvfPoisByFloorId: {
5148
5381
  [floorId: string]: Feature<Point, SpaceProperties>[];
@@ -5161,51 +5394,6 @@ declare module '@mappedin/react-sdk/mappedin-js/src/utils/data-creation' {
5161
5394
  };
5162
5395
  }
5163
5396
 
5164
- declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/types' {
5165
- import type Area from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/area';
5166
- import type Door from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/door';
5167
- import type Floor from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor';
5168
- import type Space from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/space';
5169
- import type PointOfInterest from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/poi';
5170
- import type Annotation from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/annotation';
5171
- import type Connection from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/connection';
5172
- import type MapObject from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/object';
5173
- import type { EnterpriseLocation as MvfEnterpriseLocation, EnterpriseCategory as MvfEnterpriseCategory, ParsedMVFLocalePack } from '@mappedin/mvf';
5174
- import type { PartialExcept } from '@mappedin/mvf/dist/locale';
5175
- import type { LocalePackUrls } from '@packages/internal/mvf-utils';
5176
- import type { LanguagePackHydrationItem } from '@mappedin/react-sdk/mappedin-js/src/types';
5177
- import type { EnvControl } from '@packages/internal/mvf-utils/mvf-utils';
5178
- /**
5179
- * Places are the main objects that can be searched for.
5180
- */
5181
- export type Places = Space | Floor | Door | Connection | MapObject | PointOfInterest | Annotation | Area;
5182
- export type LocationWithLocale = PartialExcept<MvfEnterpriseLocation, 'id'>;
5183
- export type CategoryWithLocale = PartialExcept<MvfEnterpriseCategory, 'id'>;
5184
- export type LanguagePack = {
5185
- type: 'downloaded';
5186
- data: ParsedMVFLocalePack;
5187
- optimized: {
5188
- locations: Record<string, LocationWithLocale> | undefined;
5189
- categories: Record<string, CategoryWithLocale> | undefined;
5190
- };
5191
- } | {
5192
- type: 'initial';
5193
- optimized: {
5194
- locations: Record<string, MvfEnterpriseLocation>;
5195
- categories: Record<string, MvfEnterpriseCategory>;
5196
- };
5197
- };
5198
- export type TMapDataInternalOptions = {
5199
- env?: EnvControl;
5200
- enterprise?: boolean;
5201
- outdoorViewToken?: string;
5202
- localePacksUrls?: LocalePackUrls;
5203
- languagePacks?: LanguagePackHydrationItem[];
5204
- binaryBundle?: Uint8Array;
5205
- sasToken?: string;
5206
- };
5207
- }
5208
-
5209
5397
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/shapes' {
5210
5398
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
5211
5399
  import { Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
@@ -5286,6 +5474,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/inspector/inspec
5286
5474
  export type InspectorOption = Partial<InspectorState>;
5287
5475
  }
5288
5476
 
5477
+ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/types' {
5478
+ import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
5479
+ export type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
5480
+ }
5481
+
5289
5482
  declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5290
5483
  import './marker.scss';
5291
5484
  import { Vector2 } from 'three';
@@ -5312,6 +5505,12 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5312
5505
  * Whether the marker is enabled
5313
5506
  */
5314
5507
  enabled: boolean;
5508
+ /**
5509
+ * Whether the label is visible IF is is enabled
5510
+ * this can be used to have more granular control of whether the label shows up,
5511
+ * for example, if someone implements a layer system that shows/hides
5512
+ */
5513
+ visible: boolean;
5315
5514
  /**
5316
5515
  * HTML content of the marker as text
5317
5516
  */
@@ -5339,6 +5538,14 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5339
5538
  */
5340
5539
  interactive?: boolean | 'pointer-events-auto';
5341
5540
  };
5541
+ /**
5542
+ * Anchor point for the marker. This will determine the position of the marker relative to the position. A list will place the marker in the first empty placement.
5543
+ */
5544
+ anchor: MarkerAnchor | MarkerAnchor[];
5545
+ /**
5546
+ * Dynamic resize of the marker. If set to true, the marker will resize based on the content.
5547
+ */
5548
+ dynamicResize: boolean;
5342
5549
  };
5343
5550
  export const addMarkerOptionsSchema: z.ZodObject<{
5344
5551
  rank: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["low", "medium", "high", "always-visible"]>, z.ZodNumber]>>;
@@ -5349,15 +5556,15 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5349
5556
  }, "strip", z.ZodTypeAny, {
5350
5557
  interactive?: boolean | "pointer-events-auto" | undefined;
5351
5558
  id?: string | undefined;
5352
- anchor?: "center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
5353
- rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
5559
+ anchor?: "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
5354
5560
  dynamicResize?: boolean | undefined;
5561
+ rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5355
5562
  }, {
5356
5563
  interactive?: boolean | "pointer-events-auto" | undefined;
5357
5564
  id?: string | undefined;
5358
- anchor?: "center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
5359
- rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
5565
+ anchor?: "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
5360
5566
  dynamicResize?: boolean | undefined;
5567
+ rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5361
5568
  }>;
5362
5569
  export function validateMarker(coordinate: Position, contentHTML: string, options: AddMarkerOptions): void;
5363
5570
  export type MarkerAnchor = 'top' | 'bottom' | 'left' | 'right' | 'center' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
@@ -5403,6 +5610,11 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5403
5610
  options: Required<AddMarkerOptions>;
5404
5611
  projection: Vector2;
5405
5612
  enabled: boolean;
5613
+ /**
5614
+ * Whether the marker can be shown, which is decided by the collision engine
5615
+ */
5616
+ canShow: boolean;
5617
+ visible: boolean;
5406
5618
  offscreen: boolean;
5407
5619
  activeStrategyIndex: number;
5408
5620
  strategyIndex: number;
@@ -5424,7 +5636,6 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5424
5636
  visibilityNeedsUpdate: 'show' | 'hide' | false;
5425
5637
  constructor(contentHtml: string, options?: AddMarkerOptions);
5426
5638
  updateDimensions(width?: number, height?: number): void;
5427
- visible: boolean;
5428
5639
  animation: Animation | null;
5429
5640
  currentStrategyIndex: number;
5430
5641
  onStrategySelected: (strategyIndex: number, force?: boolean) => void;
@@ -5447,7 +5658,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
5447
5658
 
5448
5659
  declare module '@mappedin/react-sdk/geojson/src/components/path' {
5449
5660
  import { Vector3 } from 'three';
5450
- import type { Mesh, BufferGeometry } from 'three';
5661
+ import type { BufferGeometry, LineSegments } from 'three';
5451
5662
  import type { EntityId, Position } from '@mappedin/react-sdk/geojson/src/types';
5452
5663
  import type { PathMaterial, PatMeshContainer } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
5453
5664
  import type { FeatureCollection, Point } from 'geojson';
@@ -5626,7 +5837,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/path' {
5626
5837
  mesh: PatMeshContainer;
5627
5838
  material?: PathMaterial;
5628
5839
  geometry?: BufferGeometry;
5629
- outline?: Mesh;
5840
+ outline?: LineSegments;
5630
5841
  feature: FeatureCollection<Point, PathProperties>;
5631
5842
  options: AddPathOptions;
5632
5843
  nearRadius: number;
@@ -5660,7 +5871,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
5660
5871
  import type { EntityId, Position } from '@mappedin/react-sdk/geojson/src/types';
5661
5872
  import type { GroupContainerState } from '@mappedin/react-sdk/geojson/src/entities/group-container';
5662
5873
  import type { RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
5663
- import type { CollisionRankingTier } from '@mappedin/react-sdk/geojson/src';
5874
+ import type { CollisionRankingTier, GeometryState } from '@mappedin/react-sdk/geojson/src';
5664
5875
  import { z } from 'zod';
5665
5876
  import type { PackedBBoxes } from '@mappedin/react-sdk/geojson/src/systems/collisions/system';
5666
5877
  export const addLabelOptionsSchema: z.ZodObject<{
@@ -5742,6 +5953,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
5742
5953
  foregroundColor?: string | undefined;
5743
5954
  backgroundColor?: string | undefined;
5744
5955
  } | undefined;
5956
+ margin?: number | undefined;
5745
5957
  marker?: {
5746
5958
  size?: number | undefined;
5747
5959
  foregroundColor?: {
@@ -5753,7 +5965,6 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
5753
5965
  inactive?: string | undefined;
5754
5966
  } | undefined;
5755
5967
  } | undefined;
5756
- margin?: number | undefined;
5757
5968
  }, {
5758
5969
  text?: {
5759
5970
  size?: number | undefined;
@@ -5763,6 +5974,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
5763
5974
  foregroundColor?: string | undefined;
5764
5975
  backgroundColor?: string | undefined;
5765
5976
  } | undefined;
5977
+ margin?: number | undefined;
5766
5978
  marker?: {
5767
5979
  size?: number | undefined;
5768
5980
  foregroundColor?: {
@@ -5774,11 +5986,10 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
5774
5986
  inactive?: string | undefined;
5775
5987
  } | undefined;
5776
5988
  } | undefined;
5777
- margin?: number | undefined;
5778
5989
  }>>;
5779
5990
  }, "strip", z.ZodTypeAny, {
5780
5991
  interactive?: boolean | undefined;
5781
- rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
5992
+ rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5782
5993
  appearance?: {
5783
5994
  text?: {
5784
5995
  size?: number | undefined;
@@ -5788,6 +5999,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
5788
5999
  foregroundColor?: string | undefined;
5789
6000
  backgroundColor?: string | undefined;
5790
6001
  } | undefined;
6002
+ margin?: number | undefined;
5791
6003
  marker?: {
5792
6004
  size?: number | undefined;
5793
6005
  foregroundColor?: {
@@ -5799,11 +6011,10 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
5799
6011
  inactive?: string | undefined;
5800
6012
  } | undefined;
5801
6013
  } | undefined;
5802
- margin?: number | undefined;
5803
6014
  } | undefined;
5804
6015
  }, {
5805
6016
  interactive?: boolean | undefined;
5806
- rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
6017
+ rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5807
6018
  appearance?: {
5808
6019
  text?: {
5809
6020
  size?: number | undefined;
@@ -5813,6 +6024,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
5813
6024
  foregroundColor?: string | undefined;
5814
6025
  backgroundColor?: string | undefined;
5815
6026
  } | undefined;
6027
+ margin?: number | undefined;
5816
6028
  marker?: {
5817
6029
  size?: number | undefined;
5818
6030
  foregroundColor?: {
@@ -5824,10 +6036,9 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
5824
6036
  inactive?: string | undefined;
5825
6037
  } | undefined;
5826
6038
  } | undefined;
5827
- margin?: number | undefined;
5828
6039
  } | undefined;
5829
6040
  }>;
5830
- export function validateLabel(coordinate: Position, text: string, options: AddLabelOptions): void;
6041
+ export function validateLabel(coordinate: Position | EntityId<GeometryState>, text: string, options: AddLabelOptions): void;
5831
6042
  export const labelThemes: {
5832
6043
  lightOnDark: {
5833
6044
  text: {
@@ -6085,6 +6296,12 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
6085
6296
  * Whether the label is enabled
6086
6297
  */
6087
6298
  enabled: boolean;
6299
+ /**
6300
+ * Whether the label is visible IF is is enabled
6301
+ * this can be used to have more granular control of whether the label shows up,
6302
+ * for example, if someone implements a layer system that shows/hides,
6303
+ */
6304
+ visible: boolean;
6088
6305
  /**
6089
6306
  * Text content of the label
6090
6307
  */
@@ -6120,6 +6337,10 @@ declare module '@mappedin/react-sdk/geojson/src/components/label' {
6120
6337
  visible: boolean;
6121
6338
  enabled: boolean;
6122
6339
  offscreen: boolean;
6340
+ /**
6341
+ * Whether the label can be shown, which is decided by the collision engine
6342
+ */
6343
+ canShow: boolean;
6123
6344
  activeBoundingBox: {
6124
6345
  x: number;
6125
6346
  y: number;
@@ -6171,9 +6392,12 @@ declare module '@mappedin/react-sdk/geojson/src/entities/group-container' {
6171
6392
  import type { StackComponent } from '@mappedin/react-sdk/geojson/src/components/stack';
6172
6393
  import type { MarkerState } from '@mappedin/react-sdk/geojson/src/components/marker';
6173
6394
  import type { LabelState } from '@mappedin/react-sdk/geojson/src/components/label';
6395
+ import type { Geometry3DTypes } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
6174
6396
  import { Geometry3D } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
6175
6397
  import type { PathState } from '@mappedin/react-sdk/geojson/src/components/path';
6176
6398
  import type { InteractionComponent } from '@mappedin/react-sdk/geojson/src/components/interaction';
6399
+ import type { BatchedText } from '@mappedin/react-sdk/geojson/src/services/text3d/text3d';
6400
+ import type { EntityTypes } from '@mappedin/react-sdk/geojson/src/renderer';
6177
6401
  export enum GroupContainerComponents {
6178
6402
  Stack = 0,
6179
6403
  Interaction = 1
@@ -6200,7 +6424,8 @@ declare module '@mappedin/react-sdk/geojson/src/entities/group-container' {
6200
6424
  };
6201
6425
  export class GroupContainerObject3D extends Object3D {
6202
6426
  childrenIds: Set<string | number>;
6203
- readonly type = "group-container";
6427
+ children: (GroupContainerObject3D | GeometryGroupObject3D | BatchedText | Geometry2D['object3d'] | NonNullable<Geometry3D['object3d']>)[];
6428
+ readonly type: "group-container";
6204
6429
  userData: {
6205
6430
  entityId: string | number;
6206
6431
  entities2D: Set<string | number>;
@@ -6208,8 +6433,8 @@ declare module '@mappedin/react-sdk/geojson/src/entities/group-container' {
6208
6433
  };
6209
6434
  components: [StackComponent?, InteractionComponent?];
6210
6435
  constructor(id: string);
6211
- addEntity(entityGroupOrContainer: GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | Geometry3D): void;
6212
- removeEntity(entityGroupOrContainer: GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | Geometry3D): void;
6436
+ addEntity(entityGroupOrContainer: GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | Geometry3DTypes): void;
6437
+ removeEntity(entityGroupOrContainer: EntityTypes): void;
6213
6438
  setVisible(visible: boolean): void;
6214
6439
  setAltitude(altitude: number): void;
6215
6440
  get altitude(): number;
@@ -6289,7 +6514,7 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry-group' {
6289
6514
  export type ChildUpdatable<T> = T extends LineStyle ? Partial<Pick<LineStyle, 'color' | 'opacity' | 'visible'>> : Partial<Pick<PaintStyle, 'color' | 'opacity' | 'visible'>>;
6290
6515
  export class GeometryGroupObject3D extends Object3D {
6291
6516
  visible: boolean;
6292
- readonly type = "geometry-group";
6517
+ readonly type: "geometry-group";
6293
6518
  components: [GeometryGroupStyleComponent];
6294
6519
  userData: {
6295
6520
  entityId: string | number;
@@ -6320,7 +6545,8 @@ declare module '@mappedin/react-sdk/geojson/src/types/geometry' {
6320
6545
  }
6321
6546
 
6322
6547
  declare module '@mappedin/react-sdk/geojson/src/types' {
6323
- import { Mesh, Object3D, InstancedMesh, Camera } from 'three';
6548
+ import type { Camera } from 'three';
6549
+ import { Mesh, Object3D, InstancedMesh } from 'three';
6324
6550
  import type { Geometry2D } from '@mappedin/react-sdk/geojson/src/entities/geometry2d';
6325
6551
  import type { Position } from '@mappedin/react-sdk/geojson/src/types/geometry';
6326
6552
  import type { GeometryState } from '@mappedin/react-sdk/geojson/src/components/mesh';
@@ -6332,13 +6558,14 @@ declare module '@mappedin/react-sdk/geojson/src/types' {
6332
6558
  import type { MarkerState } from '@mappedin/react-sdk/geojson/src/components/marker';
6333
6559
  import type { ImageState } from '@mappedin/react-sdk/geojson/src/components/image';
6334
6560
  import type { ShapeState } from '@mappedin/react-sdk/geojson/src/components/custom';
6335
- import type { Geometry3D } from '@mappedin/react-sdk/geojson/src/entities';
6336
6561
  import type { Group as TweenGroup } from '@tweenjs/tween.js';
6337
- import { MaterialSide } from '@mappedin/react-sdk/geojson/src/components/style';
6562
+ import type { MaterialSide } from '@mappedin/react-sdk/geojson/src/components/styles';
6563
+ import type { Geometry3DTypes } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
6564
+ import type { Text3DState } from '@mappedin/react-sdk/geojson/src/components/text3d';
6338
6565
  /**
6339
6566
  * The state of an entity, which can be a geometry, geometry group, group container, path, model, label, or marker.
6340
6567
  */
6341
- export type EntityState = GeometryState | GeometryGroupState | GroupContainerState | PathState | ModelState | LabelState | MarkerState | ImageState | ShapeState;
6568
+ export type EntityState = GeometryState | GeometryGroupState | GroupContainerState | PathState | ModelState | LabelState | MarkerState | ImageState | Text3DState | ShapeState;
6342
6569
  /**
6343
6570
  * A wrapper object that contains the ID and type of an entity. This is returned when adding entities to the scene, and can be used
6344
6571
  * to `getState` and `setState` of the entity.
@@ -6605,14 +6832,18 @@ declare module '@mappedin/react-sdk/geojson/src/types' {
6605
6832
  export type MapEventPayload<EventName extends keyof MapEvent> = MapEvent[EventName] extends {
6606
6833
  data: null;
6607
6834
  } ? MapEvent[EventName]['data'] : MapEvent[EventName];
6608
- export type Geometry3DTypes = Geometry3D | GeometryGroupObject3D | GroupContainerObject3D;
6835
+ /**
6836
+ * All entities in 3D
6837
+ */
6838
+ export type All3DTypes = Geometry3DTypes | GeometryGroupObject3D | GroupContainerObject3D;
6609
6839
  export type RendererState = {
6610
- geometry3DMap: Map<string | number, Geometry3DTypes>;
6840
+ geometry3DMap: Map<string | number, All3DTypes>;
6611
6841
  geometry2DMap: Map<string | number, Geometry2D>;
6612
6842
  geometry2DIdsInScene: Set<Geometry2D['id']>;
6613
- geometry3DIdsInScene: Set<Geometry3DTypes['id']>;
6843
+ geometry3DIdsInScene: Set<All3DTypes['id']>;
6614
6844
  entityScene: GroupContainerObject3D;
6615
6845
  hoverColor: string;
6846
+ text3dHoverColor: string;
6616
6847
  center?: Position;
6617
6848
  insetsPadding: InsetPadding;
6618
6849
  shouldMeasureCanvas: boolean;
@@ -6626,10 +6857,14 @@ declare module '@mappedin/react-sdk/geojson/src/types' {
6626
6857
  tweenGroup: TweenGroup;
6627
6858
  cameraObject: Camera;
6628
6859
  };
6860
+ /**
6861
+ * All of the entities in the scene
6862
+ */
6863
+ export type EntityTypes = Geometry3DTypes | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D;
6629
6864
  }
6630
6865
 
6631
6866
  declare module '@mappedin/react-sdk/geojson/src/components/mesh' {
6632
- import type { Texture, BufferGeometry, LineSegments, Mesh, Object3D } from 'three';
6867
+ import type { Texture, BufferGeometry, LineSegments, Mesh } from 'three';
6633
6868
  import { BatchedMesh, Color, Vector3 } from 'three';
6634
6869
  import type { BatchedStandardMaterial } from '@mappedin/react-sdk/geojson/src/systems/mesh-creation-and-optimization/batched-material';
6635
6870
  import type { Position } from '@mappedin/react-sdk/geojson/src/types';
@@ -6637,7 +6872,9 @@ declare module '@mappedin/react-sdk/geojson/src/components/mesh' {
6637
6872
  import type { BBox } from '@turf/turf';
6638
6873
  import { type ImageProperties } from '@mappedin/react-sdk/geojson/src/components/image';
6639
6874
  import { type BaseTextAreaProperties } from '@mappedin/mvf';
6875
+ import type { Text } from 'troika-three-text';
6640
6876
  export class EntityBatchedMesh extends BatchedMesh {
6877
+ type: "entityBatchedMesh";
6641
6878
  userData: {
6642
6879
  entities: {
6643
6880
  [key: number]: string | number;
@@ -6646,6 +6883,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/mesh' {
6646
6883
  };
6647
6884
  }
6648
6885
  export type MeshComponentProperties = {
6886
+ id: string;
6649
6887
  image?: ImageProperties & {
6650
6888
  position: GeoJsonPosition;
6651
6889
  path: string;
@@ -6725,6 +6963,14 @@ declare module '@mappedin/react-sdk/geojson/src/components/mesh' {
6725
6963
  * The top texture URL of the geometry
6726
6964
  */
6727
6965
  topTexture?: string;
6966
+ /**
6967
+ * Whether the geometry is currently in hover state or not
6968
+ */
6969
+ hovered: boolean;
6970
+ /**
6971
+ * The render order of the geometry
6972
+ */
6973
+ renderOrder?: number;
6728
6974
  };
6729
6975
  export class MeshComponent {
6730
6976
  #private;
@@ -6732,7 +6978,11 @@ declare module '@mappedin/react-sdk/geojson/src/components/mesh' {
6732
6978
  focusMesh?: Mesh;
6733
6979
  outline?: LineSegments;
6734
6980
  imageMesh?: Mesh;
6735
- textAreaMesh?: Object3D;
6981
+ /**
6982
+ * holds a pointer to space label text if the polygon has label active.
6983
+ */
6984
+ textMesh?: Text;
6985
+ textEntityId?: string;
6736
6986
  readonly type = "geometry";
6737
6987
  dirty: boolean;
6738
6988
  detached: boolean;
@@ -6744,7 +6994,8 @@ declare module '@mappedin/react-sdk/geojson/src/components/mesh' {
6744
6994
  constructor(feature: Feature<Polygon | LineString | MultiPolygon | MultiLineString, MeshComponentProperties>);
6745
6995
  get visible(): boolean;
6746
6996
  set visible(visible: boolean);
6747
- setOpacity(opacity: number): void;
6997
+ get renderOrder(): number;
6998
+ set renderOrder(value: number);
6748
6999
  focusable: boolean;
6749
7000
  color: Color;
6750
7001
  topColor: Color;
@@ -7073,9 +7324,9 @@ declare module '@mappedin/react-sdk/geojson/src/components/model' {
7073
7324
  outline?: LineSegments;
7074
7325
  geometry?: Object3D;
7075
7326
  material?: BatchedStandardMaterial;
7076
- feature: Feature<Point>;
7327
+ feature: Feature<Point, ModelProperties>;
7077
7328
  instanceIndex?: number;
7078
- constructor(feature: Feature<Point>);
7329
+ constructor(feature: Feature<Point, ModelProperties>);
7079
7330
  visible: boolean;
7080
7331
  setOpacity(): void;
7081
7332
  color: Color;
@@ -7094,14 +7345,14 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7094
7345
  import type { GroupContainerState } from '@mappedin/react-sdk/geojson/src/entities/group-container';
7095
7346
  import { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
7096
7347
  import { PubSub } from '@mappedin/react-sdk/packages/common/pubsub';
7348
+ import { Renderer } from '@mappedin/react-sdk/geojson/src/services/renderer';
7097
7349
  import { CollisionSystem } from '@mappedin/react-sdk/geojson/src/systems/collisions/system';
7098
7350
  import { InteractionSystem } from '@mappedin/react-sdk/geojson/src/systems/interactions';
7099
- import { ZoomInterpolationSystem } from '@mappedin/react-sdk/geojson/src/systems/zoom-interpolation/zoom-interpolation';
7100
7351
  import type { AddMarkerOptions, MarkerState } from '@mappedin/react-sdk/geojson/src/components/marker';
7101
7352
  import type { GLTFExportOptions } from '@mappedin/react-sdk/geojson/src/systems/exporter';
7102
7353
  import { ExporterSystem } from '@mappedin/react-sdk/geojson/src/systems/exporter';
7103
7354
  import type { AddLabelOptions, LabelState } from '@mappedin/react-sdk/geojson/src/components/label';
7104
- import type { LineStyle, PaintStyle, RendererCoreOptions, Position, ModelProperties, ModelStyle, EntityState, EntityId, MapEvent, MapEventPayload, RendererState } from '@mappedin/react-sdk/geojson/src/types';
7355
+ import type { LineStyle, PaintStyle, RendererCoreOptions, Position, ModelProperties, ModelStyle, EntityState, EntityId, MapEvent, MapEventPayload, RendererState, EntityTypes } from '@mappedin/react-sdk/geojson/src/types';
7105
7356
  import { MeshCreationAndOptimizationSystem } from '@mappedin/react-sdk/geojson/src/systems/mesh-creation-and-optimization/system';
7106
7357
  import { DOMVisibilitySystem } from '@mappedin/react-sdk/geojson/src/systems/dom-visiblity/system';
7107
7358
  import { TwoDProjectionSystem } from '@mappedin/react-sdk/geojson/src/systems/2d-projection/system';
@@ -7109,7 +7360,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7109
7360
  import { DrawSystem } from '@mappedin/react-sdk/geojson/src/systems/draw/system';
7110
7361
  import { TwoDVisibilitySystem } from '@mappedin/react-sdk/geojson/src/systems/2d-visibility/system';
7111
7362
  import { RenderSystem } from '@mappedin/react-sdk/geojson/src/systems/render/system';
7112
- import type { Position as GeoJsonPosition, FeatureCollection, LineString, MultiPolygon, Polygon, Point, Feature } from 'geojson';
7363
+ import type { Position as GeoJsonPosition, FeatureCollection, LineString, MultiPolygon, Polygon, Point, Feature, BBox } from 'geojson';
7113
7364
  import type { AddPathOptions, PathProperties, PathState, PathUpdateState } from '@mappedin/react-sdk/geojson/src/components/path';
7114
7365
  import { StackSystem } from '@mappedin/react-sdk/geojson/src/systems/stack/system';
7115
7366
  import { CameraSystem } from '@mappedin/react-sdk/geojson/src/systems/camera';
@@ -7131,11 +7382,13 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7131
7382
  import { OutdoorLayers } from '@mappedin/react-sdk/geojson/src/systems/outdoor-layers/system';
7132
7383
  import { PathSystem } from '@mappedin/react-sdk/geojson/src/systems/path';
7133
7384
  import { type ImageProperties, type ImageState, type ImageStyle } from '@mappedin/react-sdk/geojson/src/components/image';
7385
+ import type { AddText3DOptions, Text3DState, UpdatableText3DState } from '@mappedin/react-sdk/geojson/src/components/text3d';
7134
7386
  import { MeshDetachmentSystem } from '@mappedin/react-sdk/geojson/src/systems/mesh-detachment/system';
7135
7387
  import { MeshModificationSystem } from '@mappedin/react-sdk/geojson/src/systems/mesh-modification/system';
7136
7388
  import { PreRenderSystem } from '@mappedin/react-sdk/geojson/src/systems/pre-render/system';
7137
- import { PolygonLabelSystem } from '@mappedin/react-sdk/geojson/src/systems/polygon-label/system';
7389
+ import { Text3DSystem } from '@mappedin/react-sdk/geojson/src/systems/text3d/system';
7138
7390
  import { Group as TweenGroup } from '@tweenjs/tween.js';
7391
+ import { Debug } from '@mappedin/react-sdk/geojson/src/utils/debug';
7139
7392
  export type * from '@mappedin/react-sdk/geojson/src/types';
7140
7393
  export const raycaster: Raycaster;
7141
7394
  /**
@@ -7155,7 +7408,6 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7155
7408
  panBoundsSystem: PanBoundsSystem;
7156
7409
  collisionSystem: CollisionSystem;
7157
7410
  interactionSystem: InteractionSystem;
7158
- zoomInterpolationSystem: ZoomInterpolationSystem;
7159
7411
  meshOptimizationSystem: MeshCreationAndOptimizationSystem;
7160
7412
  domVisiblitySystem: DOMVisibilitySystem;
7161
7413
  domMutationSystem: DOMResizeSystem;
@@ -7178,16 +7430,18 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7178
7430
  meshDetachmentSystem: MeshDetachmentSystem;
7179
7431
  meshModificationSystem: MeshModificationSystem;
7180
7432
  preRenderSystem: PreRenderSystem;
7181
- polygonLabelSystem: PolygonLabelSystem;
7433
+ text3DSystem: Text3DSystem;
7182
7434
  };
7183
7435
  export type MapViewState = {
7184
7436
  readonly type: 'map-view';
7185
- hoverColor?: string;
7437
+ hoverColor: string;
7438
+ text3dHoverColor: string;
7186
7439
  };
7187
7440
  class Core extends PubSub<MapEvent> {
7188
7441
  #private;
7189
7442
  options: Omit<RendererCoreOptions, 'outdoorView'>;
7190
7443
  container: HTMLElement;
7444
+ Debug: Debug;
7191
7445
  /**
7192
7446
  * The view camera is used for projecting both the outdoor map and our scene
7193
7447
  */
@@ -7224,7 +7478,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7224
7478
  id: string;
7225
7479
  type: string;
7226
7480
  };
7227
- getParentContainer: (parent?: EntityId<GroupContainerState> | string | number | null, defaultToScene?: boolean) => GroupContainerObject3D | undefined;
7481
+ getParentContainer: (parent?: EntityId<GroupContainerState> | EntityId<GeometryState> | string | number | null, defaultToScene?: boolean) => GroupContainerObject3D | undefined;
7228
7482
  /**
7229
7483
  * Add a custom THREE.js entity to the map. The geometry is placed at the GeoJSON coordinate and includes a `setup` and `update` methods.
7230
7484
  * Setup is called when the first time the geometry visible, and update is called every render frame.
@@ -7247,13 +7501,38 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7247
7501
  */
7248
7502
  addMarker2D(coordinate: Position, contentHTML: string, options?: AddMarkerOptions, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<MarkerState> | undefined;
7249
7503
  /**
7250
- * Add a 2D label at a GeoJSON coordinate.
7251
- */
7252
- addLabel2D(coordinate: Position, text: string, options?: AddLabelOptions, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<LabelState> | undefined;
7253
- /**
7254
- * Add a Path along a set of GeoJSON coordinates that can be animated.
7255
- */
7256
- addPath(geometry: FeatureCollection<Point, PathProperties>, options?: AddPathOptions, parent?: EntityId<GroupContainerState> | string | null): EntityId<PathState> | undefined;
7504
+ * Labels an existing 3D geometry with a text area.
7505
+ *
7506
+ * @param meshGeometryId - The ID of the target 3D geometry to label.
7507
+ * @param content - The text content to display.
7508
+ * @param options - Additional options for adding the text label, including:
7509
+ * - parentId: Optional ID of the parent container.
7510
+ * - appearance: Optional appearance settings for the text label.
7511
+ *
7512
+ * @returns An object containing the ID and type of the created or existing text label, or undefined if labeling failed. If geometry is already labeld, the same text id will be returned
7513
+ *
7514
+ * @example
7515
+ * ```typescript
7516
+ * const label = renderer.labelText3D('geometry123', 'Hello World', { parentId: 'parent456', appearance: { color: 'red' } });
7517
+ * if (label) {
7518
+ * console.log(`Label created with ID: ${label.id}`);
7519
+ * }
7520
+ *
7521
+ */
7522
+ labelText3D(meshGeometryId: string, content: string, options?: AddText3DOptions & {
7523
+ parentId?: string;
7524
+ }): {
7525
+ id: string | number;
7526
+ type: "text3d";
7527
+ } | undefined;
7528
+ /**
7529
+ * Add a 2D label at a GeoJSON coordinate.
7530
+ */
7531
+ addLabel2D(coordinate: Position, text: string, options?: AddLabelOptions, parent?: EntityId<GroupContainerState> | string | null): EntityId<LabelState> | undefined;
7532
+ /**
7533
+ * Add a Path along a set of GeoJSON coordinates that can be animated.
7534
+ */
7535
+ addPath(geometry: FeatureCollection<Point, PathProperties>, options?: AddPathOptions, parent?: EntityId<GroupContainerState> | string | null): EntityId<PathState> | undefined;
7257
7536
  /**
7258
7537
  * Updates the watermark on the map.
7259
7538
  *
@@ -7264,6 +7543,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7264
7543
  * Remove an entity from the renderer and release associated resources.
7265
7544
  */
7266
7545
  remove(object: string | number): void;
7546
+ remove(object: EntityTypes): void;
7267
7547
  /**
7268
7548
  * Show collision boxes for 2D entities for debugging
7269
7549
  */
@@ -7288,13 +7568,13 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7288
7568
  * Get the current state of the map view, or any entity that was added, regardless of whether it is visible in the scene
7289
7569
  */
7290
7570
  getState(): MapViewState;
7291
- getState<T extends EntityId<EntityState>>(geometryOrGeometryId: T): T extends EntityId<LabelState> ? LabelState : T extends EntityId<GeometryState> ? GeometryState : T extends EntityId<MarkerState> ? MarkerState : T extends EntityId<GeometryGroupState> ? GeometryGroupState : T extends EntityId<GroupContainerState> ? GroupContainerState : T extends EntityId<ModelState> ? ModelState : T extends EntityId<PathState> ? PathState : T extends EntityId<ShapeState> ? ShapeState : T extends EntityId<ImageState> ? ImageState : EntityState;
7571
+ getState<T extends EntityId<EntityState>>(geometryOrGeometryId: T): T extends EntityId<LabelState> ? LabelState : T extends EntityId<GeometryState> ? GeometryState : T extends EntityId<MarkerState> ? MarkerState : T extends EntityId<GeometryGroupState> ? GeometryGroupState : T extends EntityId<GroupContainerState> ? GroupContainerState : T extends EntityId<ModelState> ? ModelState : T extends EntityId<PathState> ? PathState : T extends EntityId<ShapeState> ? ShapeState : T extends EntityId<ImageState> ? ImageState : T extends EntityId<Text3DState> ? Text3DState : EntityState;
7292
7572
  getState(geometryOrGeometryId?: Record<string | number, any> | string | number): EntityState;
7293
7573
  getState<T extends EntityState>(geometryOrGeometryId: T['id']): T extends LabelState ? LabelState : T extends GeometryState ? GeometryState : T extends MarkerState ? MarkerState : T extends GeometryGroupState ? GeometryGroupState : T extends GroupContainerState ? GroupContainerState : T extends ModelState ? ModelState : T extends PathState ? PathState : T extends ShapeState ? ShapeState : T extends ImageState ? ImageState : EntityState;
7294
7574
  /**
7295
7575
  * Set the state of the map view or any entity that was added, regardless of whether it is visible in the scene.
7296
7576
  */
7297
- setState(object: Partial<MapViewState>): void;
7577
+ setState(object: Partial<Omit<MapViewState, 'type'>>): void;
7298
7578
  setState<T extends EntityId<LabelState>>(object: T | T['id'], state: Partial<LabelState>): void;
7299
7579
  setState<T extends EntityId<MarkerState>>(object: T | T['id'], state: Partial<MarkerState>): void;
7300
7580
  setState<T extends EntityId<GeometryGroupState>>(object: T | T['id'], state: Partial<GeometryGroupState>): void;
@@ -7304,6 +7584,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7304
7584
  setState<T extends EntityId<PathState>>(object: T | T['id'], state: PathUpdateState): void;
7305
7585
  setState<T extends EntityId<ModelState>>(object: T | T['id'], state: Partial<ModelState>): void;
7306
7586
  setState<T extends EntityId<ImageState>>(object: T | T['id'], state: Partial<ImageState>): void;
7587
+ setState<T extends EntityId<Text3DState>>(object: T | T['id'], state: Partial<UpdatableText3DState>): void;
7307
7588
  setState<T extends EntityState>(object: T | T['id'], state: Partial<T>): void;
7308
7589
  /**
7309
7590
  * Project a screen coordinate to a geographic coordinate
@@ -7346,6 +7627,10 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7346
7627
  * Returns the background color of the renderer. Only applies to "standalone mode"
7347
7628
  */
7348
7629
  get backgroundColor(): import("three").Color;
7630
+ /**
7631
+ * internal
7632
+ */
7633
+ getThreeRenderer(): Renderer;
7349
7634
  /**
7350
7635
  * Returns the current scale of the map in metres per pixel.
7351
7636
  */
@@ -7357,6 +7642,13 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7357
7642
  * @param layers The layers to filter out.
7358
7643
  */
7359
7644
  hideOutdoorLayersUnderPoint: (point: Position, layers: string[]) => void;
7645
+ /**
7646
+ * Filters out layers at a certain point on the outdoor map. This can be used to hide the outdoor building footprint underneath the 3D geometry.
7647
+ * @param bbox The bounding box to filter layers under.
7648
+ * @param polygons The polygons to filter layers under.
7649
+ * @param layers The layers to filter out.
7650
+ */
7651
+ hideOutdoorLayersIntersectingPolygons: (bbox: BBox, polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>[], layers: string[]) => void;
7360
7652
  /**
7361
7653
  * Get the center of a geometry or bounding box.
7362
7654
  * @param geometryOrBoundingBox Geometry, geometry id, or bounding box to get the center of.
@@ -7379,13 +7671,13 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
7379
7671
  * The render happens in an animation frame, not matter how frequently it is called
7380
7672
  * @method render
7381
7673
  */
7382
- render: () => void;
7674
+ render: () => Promise<any> | undefined;
7383
7675
  /**
7384
7676
  * Perform a synchronous render of the scene. This bypasses the animation frame and renders immediately.
7385
7677
  *
7386
7678
  * Note: Only use this if you have an animation frame setup elsewhere
7387
7679
  */
7388
- renderSync: () => void;
7680
+ renderSync: () => Promise<any>;
7389
7681
  /**
7390
7682
  * @internal for testing
7391
7683
  */
@@ -7451,12 +7743,16 @@ declare module '@mappedin/react-sdk/geojson/src/camera' {
7451
7743
  duration?: number;
7452
7744
  easing?: EasingCurve;
7453
7745
  };
7746
+ export type AnimateElevationOptions = AnimationOptions & {
7747
+ interruptible?: boolean;
7748
+ };
7454
7749
  export type FocusOnOptions = AnimationOptions & {
7455
7750
  bearing?: number;
7456
7751
  pitch?: number;
7457
7752
  padding?: InsetPaddingOption;
7458
7753
  minZoomLevel?: number;
7459
7754
  maxZoomLevel?: number;
7755
+ interruptible?: boolean;
7460
7756
  };
7461
7757
  export type AnimateToOptions = AnimationOptions & {
7462
7758
  center?: Position;
@@ -7464,6 +7760,7 @@ declare module '@mappedin/react-sdk/geojson/src/camera' {
7464
7760
  bearing?: number;
7465
7761
  pitch?: number;
7466
7762
  elevation?: number;
7763
+ interruptible?: boolean;
7467
7764
  };
7468
7765
  export const ANIMATION_TWEENS: {
7469
7766
  linear: (amount: number) => number;
@@ -7579,7 +7876,7 @@ declare module '@mappedin/react-sdk/geojson/src/camera' {
7579
7876
  * @param elevation The new elevation in meters.
7580
7877
  * @param options The animation options.
7581
7878
  */
7582
- animateElevation(elevation: number, options?: AnimationOptions): Promise<void>;
7879
+ animateElevation(elevation: number, options?: AnimateElevationOptions): Promise<void>;
7583
7880
  /**
7584
7881
  * The padding around the edges of the map when focusing on a set of coordinates.
7585
7882
  */
@@ -7643,19 +7940,462 @@ declare module '@mappedin/react-sdk/geojson/src/utils/collision-ranking-tier' {
7643
7940
  export function convertNumberToCollisionRankingTier(rank: number): CollisionRankingTier;
7644
7941
  }
7645
7942
 
7943
+ declare module '@mappedin/react-sdk/geojson/src/components/text3d' {
7944
+ import type { Position } from '@mappedin/react-sdk/geojson/src/types';
7945
+ import { z } from 'zod';
7946
+ import type { Feature, Point } from 'geojson';
7947
+ import { Geometry3DObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
7948
+ import type { BatchedText, Text } from '@mappedin/react-sdk/geojson/src/services/text3d/text3d';
7949
+ import type { Text3DStyle } from '@mappedin/react-sdk/geojson/src/components/styles';
7950
+ import type { MeshComponentProperties } from '@mappedin/react-sdk/geojson/src/components/mesh';
7951
+ import type { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
7952
+ /**
7953
+ * State representing an Text3D
7954
+ */
7955
+ export type Text3DState = {
7956
+ readonly id: string | number;
7957
+ readonly type: 'text3d';
7958
+ /**
7959
+ * The position of the Text3D in [lon, lat, altitude]
7960
+ */
7961
+ readonly position: Position;
7962
+ /**
7963
+ * Whether the Text3D is visible
7964
+ */
7965
+ visible: boolean;
7966
+ /**
7967
+ * Attempt to keep the Text3D facing the camera as much as possible
7968
+ */
7969
+ flipToFaceCamera: boolean;
7970
+ /**
7971
+ * Content of the text3d
7972
+ */
7973
+ content: string;
7974
+ } & Text3DStyle;
7975
+ export const text3DStateSchema: z.ZodObject<{
7976
+ visible: z.ZodBoolean;
7977
+ color: z.ZodString;
7978
+ flipToFaceCamera: z.ZodBoolean;
7979
+ font: z.ZodOptional<z.ZodString>;
7980
+ fontSize: z.ZodNumber;
7981
+ margin: z.ZodUnion<[z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>;
7982
+ outlineColor: z.ZodString;
7983
+ outlineOpacity: z.ZodNumber;
7984
+ outlineBlur: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
7985
+ outlineWidth: z.ZodNumber;
7986
+ outlineOffsetX: z.ZodNumber;
7987
+ outlineOffsetY: z.ZodNumber;
7988
+ strokeWidth: z.ZodNumber;
7989
+ maxWidth: z.ZodOptional<z.ZodNumber>;
7990
+ maxHeight: z.ZodOptional<z.ZodNumber>;
7991
+ strokeOpacity: z.ZodNumber;
7992
+ strokeColor: z.ZodString;
7993
+ fillOpacity: z.ZodNumber;
7994
+ hoverColor: z.ZodOptional<z.ZodString>;
7995
+ id: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
7996
+ type: z.ZodLiteral<"text3d">;
7997
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
7998
+ content: z.ZodString;
7999
+ }, "strip", z.ZodTypeAny, {
8000
+ type: "text3d";
8001
+ id: string | number;
8002
+ color: string;
8003
+ position: [number, number, number];
8004
+ visible: boolean;
8005
+ flipToFaceCamera: boolean;
8006
+ fontSize: number;
8007
+ margin: number | [number, number, number, number];
8008
+ outlineColor: string;
8009
+ outlineOpacity: number;
8010
+ outlineBlur: string | number;
8011
+ outlineWidth: number;
8012
+ outlineOffsetX: number;
8013
+ outlineOffsetY: number;
8014
+ strokeWidth: number;
8015
+ strokeOpacity: number;
8016
+ strokeColor: string;
8017
+ fillOpacity: number;
8018
+ content: string;
8019
+ maxWidth?: number | undefined;
8020
+ font?: string | undefined;
8021
+ maxHeight?: number | undefined;
8022
+ hoverColor?: string | undefined;
8023
+ }, {
8024
+ type: "text3d";
8025
+ id: string | number;
8026
+ color: string;
8027
+ position: [number, number, number];
8028
+ visible: boolean;
8029
+ flipToFaceCamera: boolean;
8030
+ fontSize: number;
8031
+ margin: number | [number, number, number, number];
8032
+ outlineColor: string;
8033
+ outlineOpacity: number;
8034
+ outlineBlur: string | number;
8035
+ outlineWidth: number;
8036
+ outlineOffsetX: number;
8037
+ outlineOffsetY: number;
8038
+ strokeWidth: number;
8039
+ strokeOpacity: number;
8040
+ strokeColor: string;
8041
+ fillOpacity: number;
8042
+ content: string;
8043
+ maxWidth?: number | undefined;
8044
+ font?: string | undefined;
8045
+ maxHeight?: number | undefined;
8046
+ hoverColor?: string | undefined;
8047
+ }>;
8048
+ /**
8049
+ * @interface
8050
+ */
8051
+ export type InitializeText3DState = Partial<Omit<Text3DState, 'id' | 'type'>>;
8052
+ export const initializeText3DStateSchema: z.ZodObject<Omit<{
8053
+ visible: z.ZodOptional<z.ZodBoolean>;
8054
+ color: z.ZodOptional<z.ZodString>;
8055
+ flipToFaceCamera: z.ZodOptional<z.ZodBoolean>;
8056
+ font: z.ZodOptional<z.ZodOptional<z.ZodString>>;
8057
+ fontSize: z.ZodOptional<z.ZodNumber>;
8058
+ margin: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>>;
8059
+ outlineColor: z.ZodOptional<z.ZodString>;
8060
+ outlineOpacity: z.ZodOptional<z.ZodNumber>;
8061
+ outlineBlur: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
8062
+ outlineWidth: z.ZodOptional<z.ZodNumber>;
8063
+ outlineOffsetX: z.ZodOptional<z.ZodNumber>;
8064
+ outlineOffsetY: z.ZodOptional<z.ZodNumber>;
8065
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
8066
+ maxWidth: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
8067
+ maxHeight: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
8068
+ strokeOpacity: z.ZodOptional<z.ZodNumber>;
8069
+ strokeColor: z.ZodOptional<z.ZodString>;
8070
+ fillOpacity: z.ZodOptional<z.ZodNumber>;
8071
+ hoverColor: z.ZodOptional<z.ZodOptional<z.ZodString>>;
8072
+ id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
8073
+ type: z.ZodOptional<z.ZodLiteral<"text3d">>;
8074
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
8075
+ content: z.ZodOptional<z.ZodString>;
8076
+ }, "type" | "id">, "strict", z.ZodTypeAny, {
8077
+ maxWidth?: number | undefined;
8078
+ color?: string | undefined;
8079
+ position?: [number, number, number] | undefined;
8080
+ visible?: boolean | undefined;
8081
+ flipToFaceCamera?: boolean | undefined;
8082
+ font?: string | undefined;
8083
+ fontSize?: number | undefined;
8084
+ margin?: number | [number, number, number, number] | undefined;
8085
+ outlineColor?: string | undefined;
8086
+ outlineOpacity?: number | undefined;
8087
+ outlineBlur?: string | number | undefined;
8088
+ outlineWidth?: number | undefined;
8089
+ outlineOffsetX?: number | undefined;
8090
+ outlineOffsetY?: number | undefined;
8091
+ strokeWidth?: number | undefined;
8092
+ maxHeight?: number | undefined;
8093
+ strokeOpacity?: number | undefined;
8094
+ strokeColor?: string | undefined;
8095
+ fillOpacity?: number | undefined;
8096
+ hoverColor?: string | undefined;
8097
+ content?: string | undefined;
8098
+ }, {
8099
+ maxWidth?: number | undefined;
8100
+ color?: string | undefined;
8101
+ position?: [number, number, number] | undefined;
8102
+ visible?: boolean | undefined;
8103
+ flipToFaceCamera?: boolean | undefined;
8104
+ font?: string | undefined;
8105
+ fontSize?: number | undefined;
8106
+ margin?: number | [number, number, number, number] | undefined;
8107
+ outlineColor?: string | undefined;
8108
+ outlineOpacity?: number | undefined;
8109
+ outlineBlur?: string | number | undefined;
8110
+ outlineWidth?: number | undefined;
8111
+ outlineOffsetX?: number | undefined;
8112
+ outlineOffsetY?: number | undefined;
8113
+ strokeWidth?: number | undefined;
8114
+ maxHeight?: number | undefined;
8115
+ strokeOpacity?: number | undefined;
8116
+ strokeColor?: string | undefined;
8117
+ fillOpacity?: number | undefined;
8118
+ hoverColor?: string | undefined;
8119
+ content?: string | undefined;
8120
+ }>;
8121
+ /**
8122
+ * At this moment updating text margin is not supported
8123
+ * Margin and content update are not handled at the moment.
8124
+ * @interface
8125
+ */
8126
+ export type UpdatableText3DState = Omit<InitializeText3DState, 'margin' | 'position' | 'content'>;
8127
+ export const updateText3DStateSchema: z.ZodObject<Omit<Omit<{
8128
+ visible: z.ZodOptional<z.ZodBoolean>;
8129
+ color: z.ZodOptional<z.ZodString>;
8130
+ flipToFaceCamera: z.ZodOptional<z.ZodBoolean>;
8131
+ font: z.ZodOptional<z.ZodOptional<z.ZodString>>;
8132
+ fontSize: z.ZodOptional<z.ZodNumber>;
8133
+ margin: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>>;
8134
+ outlineColor: z.ZodOptional<z.ZodString>;
8135
+ outlineOpacity: z.ZodOptional<z.ZodNumber>;
8136
+ outlineBlur: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
8137
+ outlineWidth: z.ZodOptional<z.ZodNumber>;
8138
+ outlineOffsetX: z.ZodOptional<z.ZodNumber>;
8139
+ outlineOffsetY: z.ZodOptional<z.ZodNumber>;
8140
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
8141
+ maxWidth: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
8142
+ maxHeight: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
8143
+ strokeOpacity: z.ZodOptional<z.ZodNumber>;
8144
+ strokeColor: z.ZodOptional<z.ZodString>;
8145
+ fillOpacity: z.ZodOptional<z.ZodNumber>;
8146
+ hoverColor: z.ZodOptional<z.ZodOptional<z.ZodString>>;
8147
+ id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
8148
+ type: z.ZodOptional<z.ZodLiteral<"text3d">>;
8149
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
8150
+ content: z.ZodOptional<z.ZodString>;
8151
+ }, "type" | "id">, "maxWidth" | "position" | "margin" | "maxHeight" | "content">, "strict", z.ZodTypeAny, {
8152
+ color?: string | undefined;
8153
+ visible?: boolean | undefined;
8154
+ flipToFaceCamera?: boolean | undefined;
8155
+ font?: string | undefined;
8156
+ fontSize?: number | undefined;
8157
+ outlineColor?: string | undefined;
8158
+ outlineOpacity?: number | undefined;
8159
+ outlineBlur?: string | number | undefined;
8160
+ outlineWidth?: number | undefined;
8161
+ outlineOffsetX?: number | undefined;
8162
+ outlineOffsetY?: number | undefined;
8163
+ strokeWidth?: number | undefined;
8164
+ strokeOpacity?: number | undefined;
8165
+ strokeColor?: string | undefined;
8166
+ fillOpacity?: number | undefined;
8167
+ hoverColor?: string | undefined;
8168
+ }, {
8169
+ color?: string | undefined;
8170
+ visible?: boolean | undefined;
8171
+ flipToFaceCamera?: boolean | undefined;
8172
+ font?: string | undefined;
8173
+ fontSize?: number | undefined;
8174
+ outlineColor?: string | undefined;
8175
+ outlineOpacity?: number | undefined;
8176
+ outlineBlur?: string | number | undefined;
8177
+ outlineWidth?: number | undefined;
8178
+ outlineOffsetX?: number | undefined;
8179
+ outlineOffsetY?: number | undefined;
8180
+ strokeWidth?: number | undefined;
8181
+ strokeOpacity?: number | undefined;
8182
+ strokeColor?: string | undefined;
8183
+ fillOpacity?: number | undefined;
8184
+ hoverColor?: string | undefined;
8185
+ }>;
8186
+ export type Text3DProperties = {
8187
+ id: string;
8188
+ content: string;
8189
+ textArea?: MeshComponentProperties['textArea'];
8190
+ };
8191
+ export type AddText3DOptions = {
8192
+ appearance?: Partial<InitializeText3DState>;
8193
+ };
8194
+ export const addText3DOptionsSchema: z.ZodObject<{
8195
+ appearance: z.ZodOptional<z.ZodObject<Omit<{
8196
+ visible: z.ZodOptional<z.ZodBoolean>;
8197
+ color: z.ZodOptional<z.ZodString>;
8198
+ flipToFaceCamera: z.ZodOptional<z.ZodBoolean>;
8199
+ font: z.ZodOptional<z.ZodOptional<z.ZodString>>;
8200
+ fontSize: z.ZodOptional<z.ZodNumber>;
8201
+ margin: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>>;
8202
+ outlineColor: z.ZodOptional<z.ZodString>;
8203
+ outlineOpacity: z.ZodOptional<z.ZodNumber>;
8204
+ outlineBlur: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
8205
+ outlineWidth: z.ZodOptional<z.ZodNumber>;
8206
+ outlineOffsetX: z.ZodOptional<z.ZodNumber>;
8207
+ outlineOffsetY: z.ZodOptional<z.ZodNumber>;
8208
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
8209
+ maxWidth: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
8210
+ maxHeight: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
8211
+ strokeOpacity: z.ZodOptional<z.ZodNumber>;
8212
+ strokeColor: z.ZodOptional<z.ZodString>;
8213
+ fillOpacity: z.ZodOptional<z.ZodNumber>;
8214
+ hoverColor: z.ZodOptional<z.ZodOptional<z.ZodString>>;
8215
+ id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
8216
+ type: z.ZodOptional<z.ZodLiteral<"text3d">>;
8217
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
8218
+ content: z.ZodOptional<z.ZodString>;
8219
+ }, "type" | "id">, "strict", z.ZodTypeAny, {
8220
+ maxWidth?: number | undefined;
8221
+ color?: string | undefined;
8222
+ position?: [number, number, number] | undefined;
8223
+ visible?: boolean | undefined;
8224
+ flipToFaceCamera?: boolean | undefined;
8225
+ font?: string | undefined;
8226
+ fontSize?: number | undefined;
8227
+ margin?: number | [number, number, number, number] | undefined;
8228
+ outlineColor?: string | undefined;
8229
+ outlineOpacity?: number | undefined;
8230
+ outlineBlur?: string | number | undefined;
8231
+ outlineWidth?: number | undefined;
8232
+ outlineOffsetX?: number | undefined;
8233
+ outlineOffsetY?: number | undefined;
8234
+ strokeWidth?: number | undefined;
8235
+ maxHeight?: number | undefined;
8236
+ strokeOpacity?: number | undefined;
8237
+ strokeColor?: string | undefined;
8238
+ fillOpacity?: number | undefined;
8239
+ hoverColor?: string | undefined;
8240
+ content?: string | undefined;
8241
+ }, {
8242
+ maxWidth?: number | undefined;
8243
+ color?: string | undefined;
8244
+ position?: [number, number, number] | undefined;
8245
+ visible?: boolean | undefined;
8246
+ flipToFaceCamera?: boolean | undefined;
8247
+ font?: string | undefined;
8248
+ fontSize?: number | undefined;
8249
+ margin?: number | [number, number, number, number] | undefined;
8250
+ outlineColor?: string | undefined;
8251
+ outlineOpacity?: number | undefined;
8252
+ outlineBlur?: string | number | undefined;
8253
+ outlineWidth?: number | undefined;
8254
+ outlineOffsetX?: number | undefined;
8255
+ outlineOffsetY?: number | undefined;
8256
+ strokeWidth?: number | undefined;
8257
+ maxHeight?: number | undefined;
8258
+ strokeOpacity?: number | undefined;
8259
+ strokeColor?: string | undefined;
8260
+ fillOpacity?: number | undefined;
8261
+ hoverColor?: string | undefined;
8262
+ content?: string | undefined;
8263
+ }>>;
8264
+ parentId: z.ZodOptional<z.ZodString>;
8265
+ }, "strict", z.ZodTypeAny, {
8266
+ parentId?: string | undefined;
8267
+ appearance?: {
8268
+ maxWidth?: number | undefined;
8269
+ color?: string | undefined;
8270
+ position?: [number, number, number] | undefined;
8271
+ visible?: boolean | undefined;
8272
+ flipToFaceCamera?: boolean | undefined;
8273
+ font?: string | undefined;
8274
+ fontSize?: number | undefined;
8275
+ margin?: number | [number, number, number, number] | undefined;
8276
+ outlineColor?: string | undefined;
8277
+ outlineOpacity?: number | undefined;
8278
+ outlineBlur?: string | number | undefined;
8279
+ outlineWidth?: number | undefined;
8280
+ outlineOffsetX?: number | undefined;
8281
+ outlineOffsetY?: number | undefined;
8282
+ strokeWidth?: number | undefined;
8283
+ maxHeight?: number | undefined;
8284
+ strokeOpacity?: number | undefined;
8285
+ strokeColor?: string | undefined;
8286
+ fillOpacity?: number | undefined;
8287
+ hoverColor?: string | undefined;
8288
+ content?: string | undefined;
8289
+ } | undefined;
8290
+ }, {
8291
+ parentId?: string | undefined;
8292
+ appearance?: {
8293
+ maxWidth?: number | undefined;
8294
+ color?: string | undefined;
8295
+ position?: [number, number, number] | undefined;
8296
+ visible?: boolean | undefined;
8297
+ flipToFaceCamera?: boolean | undefined;
8298
+ font?: string | undefined;
8299
+ fontSize?: number | undefined;
8300
+ margin?: number | [number, number, number, number] | undefined;
8301
+ outlineColor?: string | undefined;
8302
+ outlineOpacity?: number | undefined;
8303
+ outlineBlur?: string | number | undefined;
8304
+ outlineWidth?: number | undefined;
8305
+ outlineOffsetX?: number | undefined;
8306
+ outlineOffsetY?: number | undefined;
8307
+ strokeWidth?: number | undefined;
8308
+ maxHeight?: number | undefined;
8309
+ strokeOpacity?: number | undefined;
8310
+ strokeColor?: string | undefined;
8311
+ fillOpacity?: number | undefined;
8312
+ hoverColor?: string | undefined;
8313
+ content?: string | undefined;
8314
+ } | undefined;
8315
+ }>;
8316
+ export class Text3DComponent {
8317
+ mesh: Geometry3DObject3D;
8318
+ textMesh?: Text;
8319
+ readonly type = "text3d";
8320
+ feature: Feature<Point, Text3DProperties>;
8321
+ constructor(feature: Feature<Point, Text3DProperties>);
8322
+ get visible(): boolean;
8323
+ set visible(visible: boolean);
8324
+ parent?: GroupContainerObject3D;
8325
+ batchedText?: BatchedText;
8326
+ /**
8327
+ * if this Text3DComponent is a polygon label, populate this id with the polygon entity id
8328
+ * This id is used to prevent drawing text for the same polygon.
8329
+ */
8330
+ polygonEntityId?: string;
8331
+ }
8332
+ }
8333
+
8334
+ declare module '@mappedin/react-sdk/geojson/src/entities/utils' {
8335
+ import type { CollisionRankingTier, GeometryState, LabelState, RendererCore } from '@mappedin/react-sdk/geojson/src';
8336
+ import { type MarkerState } from '@mappedin/react-sdk/geojson/src/components/marker';
8337
+ import type { PathUpdateState } from '@mappedin/react-sdk/geojson/src/components/path';
8338
+ import type { EntityTypes, All3DTypes, Position, RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
8339
+ import type { KeysOfUnion } from '@mappedin/react-sdk/geojson/src/utils';
8340
+ import { GeometryGroupObject3D, type GeometryGroupState } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
8341
+ import { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
8342
+ import { Geometry3D, Geometry3DObject3D, type Geometry3DTypes, type TextGeometry3D } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
8343
+ import { Geometry2D, Geometry2DObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry2d';
8344
+ import type { StyleComponent } from '@mappedin/react-sdk/geojson/src/components/styles/style';
8345
+ import type { GeometryGroupStyleComponent } from '@mappedin/react-sdk/geojson/src/components/geometry-group-style';
8346
+ import { type Text3DState, type UpdatableText3DState } from '@mappedin/react-sdk/geojson/src/components/text3d';
8347
+ export function updateInteractivity(entity: All3DTypes | Geometry2D, update: boolean | undefined, state: RendererState): boolean;
8348
+ export function updateGroupColor(entity: GeometryGroupObject3D, state: RendererState, update: Partial<Pick<GeometryGroupState, 'color' | 'topColor'>>): boolean | undefined;
8349
+ export function updateGroupShading(entity: GeometryGroupObject3D, update?: GeometryGroupState['shading']): boolean;
8350
+ export function updateImageProps(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Partial<GeometryState>): void;
8351
+ export function updateHeight(entity: Geometry3D | GeometryGroupObject3D, state: RendererState, update?: number): boolean;
8352
+ export function updateColor(entity: Geometry3DTypes | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Partial<GeometryState>): void;
8353
+ export function updatePosition(entity: EntityTypes, update: Position | undefined, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): void;
8354
+ export function updateParent(entity: EntityTypes, update: GroupContainerObject3D | undefined): boolean;
8355
+ export function updateEnabled(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: boolean | undefined): void;
8356
+ export function updateMarker(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<MarkerState> | undefined, state: RendererState): boolean;
8357
+ export function updateRank(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: CollisionRankingTier | undefined): boolean;
8358
+ export function updateLabel(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<LabelState> | undefined, state: RendererState): void;
8359
+ export function updateHoverColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: string): void;
8360
+ /** Sets a geometry to be in hovered state, until manually unset or the user interacts with it. */
8361
+ export function updateHovered(entity: Geometry3D, update?: boolean): boolean;
8362
+ export function updateFlipImageToFaceCamera(entity: EntityTypes, update?: boolean): void;
8363
+ export function updateVisibility(entity: EntityTypes, update?: boolean): boolean;
8364
+ export function updateOpacity(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, state: RendererState, update?: number): boolean;
8365
+ export function updateGroupTexture(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Pick<GeometryGroupStyleComponent, 'texture' | 'topTexture'>): void;
8366
+ export function updateIndividualGeometryTexture(entity: Geometry3D, update?: Pick<StyleComponent, 'texture' | 'topTexture'>): boolean;
8367
+ export function updateIndividualGeometryOpacity(entity: Geometry3D, update?: number): boolean;
8368
+ export function updateAltitude(entity: EntityTypes, update?: number): boolean;
8369
+ export function updateOutline(entity: All3DTypes, update?: boolean): boolean;
8370
+ export function updateFocusable(entity: Geometry3D, update?: boolean): boolean;
8371
+ export function updateIndividualGeometryRenderOrder(entity: Geometry3D, update?: number): boolean;
8372
+ export function handlePathUpdate(geometry: Geometry3DTypes, update: PathUpdateState): void;
8373
+ export function pickPathOptions(update: PathUpdateState): Partial<PathUpdateState>;
8374
+ export function getEntityId(entityOrEntityId: Geometry2D | Geometry3DTypes | Geometry2DObject3D | Geometry3DObject3D | GeometryGroupObject3D | GroupContainerObject3D | string | number): any;
8375
+ export function assetGeometryIsText3D(geometry: Geometry3DTypes): asserts geometry is TextGeometry3D;
8376
+ /**
8377
+ * @internal
8378
+ */
8379
+ export const TEXT3D_STYLE_UPDATE_PROPS: KeysOfUnion<UpdatableText3DState>[];
8380
+ /**
8381
+ * Handle state update of the text3d geometry.
8382
+ */
8383
+ export function handleText3DUpdate(geometry: TextGeometry3D, update: Partial<Text3DState>): void;
8384
+ }
8385
+
7646
8386
  declare module '@mappedin/react-sdk/packages/geojson-navigator' {
7647
8387
  export * from '@mappedin/react-sdk/packages/geojson-navigator/src';
7648
8388
  }
7649
8389
 
7650
8390
  declare module '@mappedin/react-sdk/geojson/src/utils' {
7651
- import type { Box3, Camera as THREECamera } from 'three';
8391
+ import type { Box3, Object3D, Camera as THREECamera } from 'three';
7652
8392
  import { Box2 } from 'three';
7653
8393
  import { MercatorCoordinate } from '@mappedin/react-sdk/packages/outdoor-context-v4';
7654
8394
  import type { CustomLayerInterface } from '@mappedin/react-sdk/packages/outdoor-context-v4';
7655
8395
  import type { GeometryGroupObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
7656
8396
  import type { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
7657
8397
  import type { Geometry2D } from '@mappedin/react-sdk/geojson/src/entities/geometry2d';
7658
- import type { Geometry3D } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
8398
+ import type { Geometry3DTypes } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
7659
8399
  import type { Position, RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
7660
8400
  import type { Camera } from '@mappedin/react-sdk/geojson/src/camera';
7661
8401
  export function cartesianToGeographic(centerLat: number, centerLon: number, x: number, y: number): {
@@ -7666,7 +8406,7 @@ declare module '@mappedin/react-sdk/geojson/src/utils' {
7666
8406
  x: number;
7667
8407
  y: number;
7668
8408
  };
7669
- export const populateGeometry3DIdsInScene: (tree: any, entities: RendererState["geometry3DIdsInScene"]) => Set<string | number>;
8409
+ export const populateGeometry3DIdsInScene: (tree: GroupContainerObject3D["children"][0] | Object3D, entities: RendererState["geometry3DIdsInScene"]) => Set<string | number>;
7670
8410
  export const populateGeometry2DIdsInScene: (tree: any, entities: Set<Geometry2D["id"]>) => Set<string | number>;
7671
8411
  export function convertMapLibreStylePaintProps(paint: any): {
7672
8412
  color: any;
@@ -7722,7 +8462,7 @@ declare module '@mappedin/react-sdk/geojson/src/utils' {
7722
8462
  * so OR = CO * tan(F/2)
7723
8463
  */
7724
8464
  export function getProjectionScaleFactor(FOV: number, canvasHeight: number, zoom: number): number;
7725
- export function getGeometryByGeometryId(state: RendererState, geometryOrGeometryId?: string | number | Record<string, any>): Geometry3D | GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | undefined;
8465
+ export function getGeometryByGeometryId(state: RendererState, geometryOrGeometryId?: string | number | Record<string, any>): Geometry3DTypes | GeometryGroupObject3D | GroupContainerObject3D | Geometry2D | undefined;
7726
8466
  export function getBoundingBoxCenter(bbox: Position[]): [number, number];
7727
8467
  export { getCornersOfBoundingBox } from '@mappedin/react-sdk/geojson/src/utils/bounding-box';
7728
8468
  export function isFiniteBox(box: Box2 | Box3): boolean;
@@ -7731,6 +8471,7 @@ declare module '@mappedin/react-sdk/geojson/src/utils' {
7731
8471
  export { shouldDisableOffscreenCanvas } from '@mappedin/react-sdk/geojson/src/utils/browser';
7732
8472
  export { noop, pick, isEmpty, type KeysOfUnion } from '@mappedin/react-sdk/geojson/src/utils/fp';
7733
8473
  export { transformRequest } from '@mappedin/react-sdk/geojson/src/utils/tranform-request';
8474
+ export { normalizeAngle } from '@mappedin/react-sdk/geojson/src/utils/math';
7734
8475
  }
7735
8476
 
7736
8477
  declare module '@mappedin/react-sdk/geojson/src/utils/constants' {
@@ -7741,56 +8482,26 @@ declare module '@mappedin/react-sdk/geojson/src/utils/constants' {
7741
8482
  }
7742
8483
  }
7743
8484
 
7744
- declare module '@mappedin/react-sdk/geojson/src/services/renderer' {
7745
- import type { Scene, Camera } from 'three';
7746
- import { Color, WebGL1Renderer, WebGLRenderer } from 'three';
7747
- export function enableTestMode(): void;
7748
- export type TRendererOptions = {
7749
- alpha: boolean;
7750
- onWebGLRendererError: (e: Error) => void;
7751
- xRayPath: boolean;
8485
+ declare module '@mappedin/react-sdk/geojson/src/utils/debug' {
8486
+ import type Core from '@mappedin/react-sdk/geojson/src/renderer';
8487
+ const DEFAULT_DEBUG_STATE: {
8488
+ showPolygonLabelTextAreaMesh: boolean;
7752
8489
  };
7753
- export class Renderer {
7754
- backgroundAlpha: number;
7755
- backgroundColor: Color;
7756
- width: number;
7757
- height: number;
7758
- options: TRendererOptions;
7759
- renderer?: WebGLRenderer | WebGL1Renderer;
7760
- constructor(renderOptions: any, targetWebGLVersion?: number);
7761
- /**
7762
- * Dispose of the renderer and its buffers.
7763
- */
7764
- destroy(): void;
7765
- /**
7766
- * Re-render the scene, depending on which parts of the scene have been
7767
- * invalidated.
7768
- *
7769
- * @method render
7770
- * @param renderTarget {null or WebGLRenderTarget}
7771
- * @param scene {Scene}
7772
- * @param sceneCamera {Camera}
7773
- */
7774
- render(scene: Scene, sceneCamera: Camera): void;
7775
- clear(): void;
7776
- /**
7777
- * Set the size of the renderer, composer, and all its internal buffers.
7778
- *
7779
- * @method setBufferSize
7780
- * @param width {number}
7781
- * @param height {number}
7782
- */
7783
- setBufferSize(width: number, height: number): void;
7784
- /**
7785
- * Set the color and opacity that will be drawn behind the scene.
7786
- *
7787
- * @method setBackgroundColor
7788
- * @param color {Color}
7789
- * @param alpha {number}
7790
- */
7791
- setBackgroundColor(color: any, alpha: any): void;
7792
- domElement(): HTMLCanvasElement | undefined;
8490
+ export type DebugState = typeof DEFAULT_DEBUG_STATE;
8491
+ export class Debug {
8492
+ state: {
8493
+ showPolygonLabelTextAreaMesh: boolean;
8494
+ };
8495
+ core: Core;
8496
+ constructor(core: Core);
8497
+ update(updateState: Partial<DebugState>): void;
7793
8498
  }
8499
+ export {};
8500
+ }
8501
+
8502
+ declare module '@mappedin/react-sdk/geojson/src/services/test-mode' {
8503
+ export function enableTestMode(): void;
8504
+ export function isTestMode(): boolean;
7794
8505
  }
7795
8506
 
7796
8507
  declare module '@mappedin/react-sdk/geojson/src/systems/watermark/system' {
@@ -7878,6 +8589,36 @@ declare module '@mappedin/react-sdk/geojson/src/systems/watermark/system' {
7878
8589
  }
7879
8590
  }
7880
8591
 
8592
+ declare module '@mappedin/react-sdk/geojson/src/systems/text3d/system' {
8593
+ import type { RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
8594
+ import type { RendererCore } from '@mappedin/react-sdk/geojson/src';
8595
+ import { PubSub } from '@packages/internal/common';
8596
+ import type { BatchedText } from '@mappedin/react-sdk/geojson/src/services/text3d/text3d';
8597
+ import { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
8598
+ import type { Text } from 'troika-three-text';
8599
+ export class Text3DSystem extends PubSub<{
8600
+ render: undefined;
8601
+ }> {
8602
+ textSet: Set<string>;
8603
+ batchedTextMap: Map<GroupContainerObject3D, Promise<BatchedText>>;
8604
+ remove(id: string): void;
8605
+ constructor(rendererState: RendererState, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']);
8606
+ update(cameraRotationRadians: number): Promise<void[]>;
8607
+ showTextAreaMesh(): void;
8608
+ hideTextAreaMesh(): void;
8609
+ }
8610
+ /**
8611
+ * Preload fonts and optionally pre-generate the SDF textures for particular glyphs up front.
8612
+ * This is to avoid ondemand font generation can take long.
8613
+ * @param fontUrl - url of the font file served.
8614
+ * @returns A promise that resolves when the font is loaded
8615
+ *
8616
+ */
8617
+ export function preloadFont(fontUrl?: string): Promise<string>;
8618
+ export function doesBatchedTextContainsText(batchedText: BatchedText, text: Text): boolean;
8619
+ export const DEFAULT_VERTICAL_OFFSET = 0.5;
8620
+ }
8621
+
7881
8622
  declare module '@mappedin/react-sdk/geojson/src/systems/exporter' {
7882
8623
  export { ExporterSystem, type GLTFExportOptions } from '@mappedin/react-sdk/geojson/src/systems/exporter/exporter';
7883
8624
  }
@@ -7917,15 +8658,21 @@ declare module '@mappedin/react-sdk/geojson/src/systems/html-controls/system' {
7917
8658
  }
7918
8659
  }
7919
8660
 
8661
+ declare module '@mappedin/react-sdk/geojson/src/components/styles' {
8662
+ export { StyleComponent, DEFAULT_COLOR, type MaterialSide } from '@mappedin/react-sdk/geojson/src/components/styles/style';
8663
+ export { Text3DStyleComponent, type Text3DStyle, DEFAULT_TEXT_STYLE } from '@mappedin/react-sdk/geojson/src/components/styles/text-style';
8664
+ }
8665
+
7920
8666
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
7921
- import type { Position, RendererCore, WatermarkOptions } from '@mappedin/core-sdk';
8667
+ import type { RendererCore, WatermarkOptions } from '@mappedin/core-sdk';
7922
8668
  import { type TShow3DMapOptions } from '@mappedin/react-sdk/mappedin-js/src';
7923
8669
  import { WALLS, DOORS } from '@mappedin/react-sdk/mappedin-js/src/types';
7924
8670
  import type MapData from '@mappedin/react-sdk/mappedin-js/src/map-data';
7925
8671
  import type { FloorStack, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
7926
- import { Coordinate, MapObject, Space, Floor, Door } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
8672
+ import { Facade, Coordinate, MapObject, Space, Floor, Door } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
7927
8673
  import type { MapView } from '@mappedin/react-sdk/mappedin-js/src/map-view';
7928
- import { Label, Marker, type Model, type Image, Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
8674
+ import { Label, Marker, Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
8675
+ import { Text3D as Text3DView, type Image } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
7929
8676
  import { Navigation } from '@mappedin/react-sdk/mappedin-js/src/navigation';
7930
8677
  import type { TGetState, TUpdateState } from '@mappedin/react-sdk/mappedin-js/src/types';
7931
8678
  import { Camera } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera';
@@ -7941,6 +8688,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
7941
8688
  import { Shapes } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/shapes';
7942
8689
  import { Style } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/style';
7943
8690
  import Outdoor from '@mappedin/react-sdk/mappedin-js/src/api-geojson/outdoor';
8691
+ import { type BBox } from 'geojson';
8692
+ import { Text3D } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/text3d';
7944
8693
  export class GeoJsonApi {
7945
8694
  core: RendererCore;
7946
8695
  mapObjects: GeojsonApiMapObject[];
@@ -7950,10 +8699,15 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
7950
8699
  };
7951
8700
  mapData?: MapData;
7952
8701
  currentMap: GeojsonApiMapObject;
7953
- hiddenOutdoorGeometries: [Position, layer: string[]][];
8702
+ hiddenOutdoorGeometries: [
8703
+ BBox,
8704
+ polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>[],
8705
+ layers: string[]
8706
+ ][];
7954
8707
  mapView: MapView;
7955
8708
  Camera: Camera;
7956
8709
  Labels: Labels;
8710
+ Text3D: Text3D;
7957
8711
  Markers: Markers;
7958
8712
  Models: Models;
7959
8713
  Paths: Paths;
@@ -7967,7 +8721,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
7967
8721
  get DynamicFocus(): import("./dynamic-focus").DynamicFocus;
7968
8722
  get StackedMaps(): import("..").StackedMaps;
7969
8723
  constructor(rendererCore: RendererCore, mapView: MapView);
7970
- updateState<T extends Space | MapObject | Label | Shape | Marker | Door | WALLS | DOORS | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
8724
+ updateState<T extends Space | Text3DView | MapObject | Label | Shape | Marker | Door | Facade | WALLS | DOORS | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
7971
8725
  update: () => void;
7972
8726
  getMapDataInternal(): MapDataInternal | undefined;
7973
8727
  getMapData(): MapData | undefined;
@@ -7977,7 +8731,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/api' {
7977
8731
  updateWatermark(options: Omit<WatermarkOptions, 'onClick'>): void;
7978
8732
  get currentFloorStack(): FloorStack;
7979
8733
  get currentFloor(): Floor;
7980
- getState<T extends Space | MapObject | Label | Marker | Shape | Model | Image | string>(target: T): TGetState<T> | undefined;
8734
+ getState<T extends Space | Text3DView | MapObject | Label | Marker | Image | Shape | string>(target: T): TGetState<T>;
7981
8735
  setHoverColor(c: string): void;
7982
8736
  getHoverColor(): string | undefined;
7983
8737
  createCoordinate(latitude: number, longitude: number, floor?: Floor): Coordinate;
@@ -8000,16 +8754,17 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
8000
8754
  import type { Position, AddLabelOptions, RendererCore, PathState, MarkerState, LineStyle, PaintStyle, EntityId } from '@mappedin/core-sdk';
8001
8755
  import { FloorObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-object';
8002
8756
  import type { Coordinate, Directions, Floor, TAddMarkerOptions, TAddPathOptions, TShow3DMapOptions } from '@mappedin/react-sdk/mappedin-js/src';
8003
- import type { GLTFExportOptions, TAnimationOptions, TAddModelOptions, TAddModel, TAddImageOptions, TDirectionInstruction } from '@mappedin/react-sdk/mappedin-js/src/types';
8757
+ import type { GLTFExportOptions, TAnimationOptions, TAddModelOptions, TAddModel, TAddImageOptions, TDirectionInstruction, TAddText3DOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
8004
8758
  import { type AggregatedStyleMap } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/utils';
8005
8759
  import { StackedMaps } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
8006
8760
  import type { TFloorChangeReason } from '@mappedin/react-sdk/mappedin-js/src/events';
8007
- import type { Path, Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
8008
- import type { Space, Door, PointOfInterest, MapObject, Node, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
8761
+ import type { Path, Shape, Label } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
8762
+ import { type Door, type PointOfInterest, type MapObject, type Node, type MapDataInternal, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
8009
8763
  import { type GeoJsonApi } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/api';
8010
8764
  import { FloorStackObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-stack-object';
8011
8765
  import { DynamicFocus } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/dynamic-focus';
8012
8766
  export const FLOOR_HEIGHT = 5;
8767
+ import type { Text3DState } from '@mappedin/core-sdk/src/components/text3d';
8013
8768
  export class GeojsonApiMapObject extends PubSub<{
8014
8769
  'floor-change': {
8015
8770
  reason?: TFloorChangeReason;
@@ -8057,7 +8812,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
8057
8812
  Images: {
8058
8813
  add: (target: Position, url: string, opts: TAddImageOptions & {
8059
8814
  floorId?: string;
8060
- }) => EntityId<import("../../../geojson/src/components/image").ImageState> | undefined;
8815
+ }) => EntityId<import("@mappedin/core-sdk/src/components/image").ImageState> | undefined;
8061
8816
  remove: (id: string) => void;
8062
8817
  removeAll: () => void;
8063
8818
  };
@@ -8078,16 +8833,25 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
8078
8833
  }) => string;
8079
8834
  remove: (customGeometry: Shape) => string;
8080
8835
  };
8836
+ Text3D: {
8837
+ label: (target: Space, content?: string, options?: TAddText3DOptions) => Text3DInfo | undefined;
8838
+ labelAll: (option?: TAddText3DOptions) => Text3DInfo[];
8839
+ remove: (id: string) => string | undefined;
8840
+ };
8081
8841
  Labels: {
8082
8842
  all: ({ onCreate, }: {
8083
8843
  onCreate: (labelId: string | number, text: string, target: Space | Door | Coordinate | PointOfInterest | MapObject | Node) => void;
8084
8844
  }) => void;
8085
8845
  add: (coordinate: Position, text: string, opts?: AddLabelOptions & {
8086
8846
  floorId?: string;
8847
+ spaceId?: string;
8087
8848
  }) => {
8088
8849
  id: string | number;
8089
8850
  };
8090
- remove: (targetId: string) => void;
8851
+ remove: ({ label, entityId }: {
8852
+ label: Label;
8853
+ entityId: string;
8854
+ }) => void;
8091
8855
  removeAll: () => void;
8092
8856
  };
8093
8857
  Paths: {
@@ -8099,6 +8863,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
8099
8863
  };
8100
8864
  constructor(id: string, mapDataInternal: MapDataInternal | undefined, options: TShow3DMapOptions | undefined, api: GeoJsonApi);
8101
8865
  }
8866
+ export type Text3DInfo = {
8867
+ target: Space;
8868
+ textInfo: EntityId<Text3DState>;
8869
+ };
8102
8870
  }
8103
8871
 
8104
8872
  declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/label' {
@@ -8346,6 +9114,39 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/shape' {
8346
9114
  }
8347
9115
  }
8348
9116
 
9117
+ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects/text3d' {
9118
+ import type { Space, EnterpriseLocation } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
9119
+ /**
9120
+ * Class representing an Text3D on the {@link MapView}.
9121
+ */
9122
+ export class Text3D {
9123
+ /**
9124
+ * The text3d's id
9125
+ */
9126
+ readonly id: string;
9127
+ /**
9128
+ * @internal
9129
+ */
9130
+ constructor(id: string, target: Space | EnterpriseLocation);
9131
+ /**
9132
+ * The text3d's target
9133
+ */
9134
+ readonly target: Space | EnterpriseLocation;
9135
+ /**
9136
+ * @internal
9137
+ */
9138
+ static readonly __type = "Text3D";
9139
+ readonly __type = "Text3D";
9140
+ /**
9141
+ * Checks if the provided instance is of type Text3D
9142
+ *
9143
+ * @param instance The instance to check.
9144
+ * @returns {boolean} True if the instance is a text3d, false otherwise.
9145
+ */
9146
+ static is(instance: object): instance is Text3D;
9147
+ }
9148
+ }
9149
+
8349
9150
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/camera' {
8350
9151
  import type { TCameraAnimationOptions, TCameraFocusOnTarget, TCameraTarget, TFocusOnOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
8351
9152
  import type { InsetPadding, RendererCore } from '@mappedin/core-sdk';
@@ -8504,7 +9305,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/labels' {
8504
9305
  import { Label } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
8505
9306
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
8506
9307
  import type { PointOfInterest, MapObject } from '@mappedin/react-sdk/mappedin-js/src';
8507
- import type { Space, Door, Coordinate, Node } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
9308
+ import { Space, Door, Coordinate, Node } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
8508
9309
  /**
8509
9310
  * Class used to add and remove a {@link Label} on the {@link MapView}.
8510
9311
  *
@@ -8666,7 +9467,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/markers' {
8666
9467
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/models' {
8667
9468
  import type { TAddModelOptions, TAddModel } from '@mappedin/react-sdk/mappedin-js/src/types';
8668
9469
  import { Model } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
8669
- import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
9470
+ import type { CurrentMapGetter } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/types';
8670
9471
  /**
8671
9472
  * Adding 3D models to a map can be a great way to represent landmarks to help users find key locations. They could also be used to show the location of assets or represent furniture to provide a rich indoor layout.
8672
9473
 
@@ -8685,7 +9486,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/models' {
8685
9486
  /**
8686
9487
  * @internal
8687
9488
  */
8688
- get currentMap(): GeojsonApiMapObject | undefined;
9489
+ get currentMap(): import("./map-object").GeojsonApiMapObject | undefined;
8689
9490
  /**
8690
9491
  * @internal
8691
9492
  */
@@ -8727,8 +9528,6 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/models' {
8727
9528
  */
8728
9529
  removeAll(): Model[];
8729
9530
  }
8730
- type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
8731
- export {};
8732
9531
  }
8733
9532
 
8734
9533
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/paths' {
@@ -9079,7 +9878,13 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/style' {
9079
9878
  }
9080
9879
 
9081
9880
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/outdoor' {
9082
- import { type RendererCore, type Position } from '@mappedin/core-sdk';
9881
+ import { type RendererCore } from '@mappedin/core-sdk';
9882
+ import type { BBox } from 'geojson';
9883
+ export type HiddenOutdoorGeometry = [
9884
+ BBox,
9885
+ polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>[],
9886
+ layers: string[]
9887
+ ];
9083
9888
  /**
9084
9889
  * The outdoor map shown around the Mappedin indoor map can be manipulated to show or hide additional information. It can be used to add GeoJSON based geometry, images, deck.gl layers and more.
9085
9890
  *
@@ -9098,7 +9903,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/outdoor' {
9098
9903
  /**
9099
9904
  * @internal
9100
9905
  */
9101
- constructor(core: RendererCore, hiddenOutdoorGeometry?: [Position, string[]][]);
9906
+ constructor(core: RendererCore, hiddenOutdoorGeometry?: HiddenOutdoorGeometry[]);
9102
9907
  /**
9103
9908
  * Set the style of the outdoor map. Use one of [Mappedin's predefined styles](https://developer.mappedin.com/web-sdk/outdoor-map#styles) or link to a custom style.
9104
9909
  * @param style {any}
@@ -9921,20 +10726,25 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry3d' {
9921
10726
  import type { MeshComponent } from '@mappedin/react-sdk/geojson/src/components/mesh';
9922
10727
  import type { ModelComponent } from '@mappedin/react-sdk/geojson/src/components/model';
9923
10728
  import type { PathComponent } from '@mappedin/react-sdk/geojson/src/components/path';
9924
- import type { StyleComponent } from '@mappedin/react-sdk/geojson/src/components/style';
10729
+ import type { StyleComponent } from '@mappedin/react-sdk/geojson/src/components/styles/style';
9925
10730
  import type { ImageComponent } from '@mappedin/react-sdk/geojson/src/components/image';
9926
10731
  import type { CustomGeometryComponent } from '@mappedin/react-sdk/geojson/src/components/custom';
9927
10732
  import type { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
9928
- import type { GeometryGroupObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
10733
+ import type { Geometry2D } from '@mappedin/react-sdk/geojson/src/entities/geometry2d';
10734
+ import { GeometryGroupObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
10735
+ import type { Text3DComponent } from '@mappedin/react-sdk/geojson/src/components/text3d';
10736
+ import type { Text3DStyleComponent } from '@mappedin/react-sdk/geojson/src/components/styles';
9929
10737
  export enum Geometry3DComponents {
9930
10738
  Mesh = 0,
9931
10739
  Style = 1,
9932
10740
  Interaction = 2
9933
10741
  }
10742
+ type Geometry3DObjectTypes = 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image' | 'text3d';
9934
10743
  export class Geometry3DObject3D extends Object3D {
10744
+ type: Geometry3DObjectTypes;
9935
10745
  userData: {
9936
10746
  entityId: string;
9937
- type: 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
10747
+ type: Geometry3DObjectTypes;
9938
10748
  };
9939
10749
  }
9940
10750
  export type PathMaterial = ShaderMaterial & {
@@ -9944,15 +10754,27 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry3d' {
9944
10754
  export class PatMeshContainer extends Geometry3DObject3D {
9945
10755
  children: [PathMesh, PathMesh];
9946
10756
  }
9947
- export type MeshComponentTypes = MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent;
9948
- export class Geometry3D {
10757
+ export type MeshComponentTypes = MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | Text3DComponent | ImageComponent;
10758
+ type MappedComponentType<M> = M extends MeshComponent ? 'geometry' : M extends PathComponent ? 'path' : M extends ModelComponent ? 'model' : M extends CustomGeometryComponent ? 'custom-geometry' : M extends ImageComponent ? 'image' : M extends Text3DComponent ? 'text3d' : never;
10759
+ export class Geometry3D<M extends MeshComponentTypes = MeshComponent, S extends StyleComponent | Text3DStyleComponent = StyleComponent, I extends InteractionComponent = InteractionComponent, T extends MappedComponentType<M> = MappedComponentType<M>> {
9949
10760
  id: string | number;
9950
- components: [MeshComponentTypes, StyleComponent, InteractionComponent?];
9951
- get object3d(): Geometry3DObject3D | PatMeshContainer | import("../components/mesh").EntityBatchedMesh | undefined;
9952
- get parent(): GroupContainerObject3D | GeometryGroupObject3D | null;
9953
- get type(): 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
9954
- constructor(meshComponent: MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent, styleComponent: StyleComponent);
9955
- }
10761
+ components: [M, S, I?];
10762
+ get object3d(): M["mesh"];
10763
+ get parentObject3D(): GroupContainerObject3D | GeometryGroupObject3D | null;
10764
+ get type(): T;
10765
+ entities2D: Map<string | number, Geometry2D>;
10766
+ constructor(meshComponent: M, styleComponent: S);
10767
+ addEntity(entity: Geometry2D): void;
10768
+ removeEntity(entity: Geometry2D): void;
10769
+ removeAllEntities(): void;
10770
+ }
10771
+ export type TextGeometry3D = Geometry3D<Text3DComponent, Text3DStyleComponent, InteractionComponent, 'text3d'>;
10772
+ export type CustomGeometry3D = Geometry3D<CustomGeometryComponent, StyleComponent, InteractionComponent, 'custom-geometry'>;
10773
+ export type ModelGeometry3D = Geometry3D<ModelComponent, StyleComponent, InteractionComponent, 'model'>;
10774
+ export type PathGeometry3D = Geometry3D<PathComponent, StyleComponent, InteractionComponent, 'path'>;
10775
+ export type ImageGeometry3D = Geometry3D<ImageComponent, StyleComponent, InteractionComponent, 'image'>;
10776
+ export type MeshGeometry3D = Geometry3D<MeshComponent, StyleComponent, InteractionComponent, 'geometry'>;
10777
+ export type Geometry3DTypes = TextGeometry3D | CustomGeometry3D | PathGeometry3D | ImageGeometry3D | MeshGeometry3D | ModelGeometry3D;
9956
10778
  export interface PathUniforms {
9957
10779
  vertexes: {
9958
10780
  type: 'f';
@@ -10035,6 +10857,7 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry3d' {
10035
10857
  value: number;
10036
10858
  };
10037
10859
  }
10860
+ export {};
10038
10861
  }
10039
10862
 
10040
10863
  declare module '@mappedin/react-sdk/geojson/src/entities/geometry2d' {
@@ -10043,6 +10866,7 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry2d' {
10043
10866
  import type LabelComponent from '@mappedin/react-sdk/geojson/src/components/label';
10044
10867
  import type { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
10045
10868
  import type { InteractionComponent } from '@mappedin/react-sdk/geojson/src/components/interaction';
10869
+ import { type GeometryGroupObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
10046
10870
  export enum Geometry2DComponents {
10047
10871
  UI = 0,
10048
10872
  Interaction = 1
@@ -10052,7 +10876,7 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry2d' {
10052
10876
  export class Geometry2D {
10053
10877
  id: string | number;
10054
10878
  get type(): 'label' | 'marker';
10055
- get parent(): GroupContainerObject3D | null;
10879
+ get parentObject3D(): GroupContainerObject3D | GeometryGroupObject3D | null;
10056
10880
  /**
10057
10881
  * When the position of the entity changes, this should be set to true, so that systems like pan bounds can update
10058
10882
  */
@@ -10062,6 +10886,7 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry2d' {
10062
10886
  disposed: boolean;
10063
10887
  constructor(ui: MarkerComponent | LabelComponent, position: Vector3);
10064
10888
  get position(): Vector3;
10889
+ setAltitude(z: number): void;
10065
10890
  }
10066
10891
  }
10067
10892
 
@@ -10076,17 +10901,44 @@ declare module '@mappedin/react-sdk/geojson/src/components/stack' {
10076
10901
 
10077
10902
  declare module '@mappedin/react-sdk/geojson/src/components/interaction' {
10078
10903
  export class InteractionComponent {
10079
- hover: boolean;
10904
+ hover: boolean | 'user-interaction';
10080
10905
  dirty: boolean;
10081
10906
  }
10082
10907
  }
10083
10908
 
10909
+ declare module '@mappedin/react-sdk/geojson/src/services/text3d/text3d' {
10910
+ import { type Text3DStyleComponent } from '@mappedin/react-sdk/geojson/src/components/styles';
10911
+ import { Text, BatchedText } from 'troika-three-text';
10912
+ import type { RendererCore } from '@mappedin/react-sdk/geojson/src';
10913
+ import type { Text3DComponent } from '@mappedin/react-sdk/geojson/src/components/text3d';
10914
+ export function createTroikaText(entityId: string | number, text3DComponent: Text3DComponent, styleComponent: Text3DStyleComponent, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): Promise<{
10915
+ text: Text;
10916
+ } | undefined>;
10917
+ export { BatchedText, Text };
10918
+ /**
10919
+ * typeof module is forbiten in typescript. see: [@typescript-eslint/consistent-type-imports]
10920
+ */
10921
+ export type ModuleType = {
10922
+ createTroikaText: typeof createTroikaText;
10923
+ preloadFont: typeof preloadFont;
10924
+ BatchedText: typeof BatchedText;
10925
+ };
10926
+ /**
10927
+ * Preloads a font from the given URL. Enable developer to preload font way before scene is ready
10928
+ *
10929
+ * @param fontUrl - The URL of the font to preload. When undefined, default font (Roboto) is loaded
10930
+ * @returns A promise that resolves when the font is successfully preloaded, or rejects with an error if the font cannot be loaded.
10931
+ */
10932
+ export function preloadFont(fontUrl?: string): Promise<string>;
10933
+ }
10934
+
10084
10935
  declare module '@mappedin/react-sdk/geojson/src/components/geometry-group-style' {
10085
10936
  import { type Shading } from '@mappedin/react-sdk/geojson/src/types';
10086
10937
  type GeometryGroupStyle = {
10087
10938
  color: string;
10088
10939
  topColor?: string;
10089
10940
  opacity: number;
10941
+ height?: number;
10090
10942
  shading?: Shading;
10091
10943
  outline: boolean;
10092
10944
  texture?: string;
@@ -10097,6 +10949,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/geometry-group-style'
10097
10949
  color: string;
10098
10950
  topColor?: string;
10099
10951
  opacity: number;
10952
+ height?: number;
10100
10953
  outline: boolean;
10101
10954
  texture?: string;
10102
10955
  topTexture?: string;
@@ -10243,68 +11096,6 @@ declare module '@mappedin/react-sdk/geojson/src/components/image' {
10243
11096
  }
10244
11097
  }
10245
11098
 
10246
- declare module '@mappedin/react-sdk/geojson/src/entities' {
10247
- export { updateInteractivity } from '@mappedin/react-sdk/geojson/src/entities/utils';
10248
- export { Geometry2D, Geometry2DComponents } from '@mappedin/react-sdk/geojson/src/entities/geometry2d';
10249
- export { Geometry3D, Geometry3DComponents, type PathMesh, type PatMeshContainer, type PathMaterial, } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
10250
- }
10251
-
10252
- declare module '@mappedin/react-sdk/geojson/src/components/style' {
10253
- import type { LineStyle } from '@mappedin/react-sdk/geojson/src/renderer';
10254
- export const DEFAULT_COLOR = "#ffffff";
10255
- export const DEFAULT_HEIGHT = 0.1;
10256
- /**
10257
- * Determines how a material is rendered, back face, front face or both (default)
10258
- */
10259
- export type MaterialSide = 'back' | 'front' | 'double';
10260
- type Style = {
10261
- color: string;
10262
- width: number;
10263
- opacity: number;
10264
- visible: boolean;
10265
- height: number;
10266
- altitude: number;
10267
- join: LineStyle['join'];
10268
- cap: LineStyle['cap'];
10269
- topColor?: string;
10270
- texture?: string;
10271
- topTexture?: string;
10272
- outline: boolean;
10273
- showImage: boolean;
10274
- showTextLabel: boolean;
10275
- flipImageToFaceCamera: boolean;
10276
- flipTextToFaceCamera: boolean;
10277
- url?: string;
10278
- side?: MaterialSide;
10279
- };
10280
- export class StyleComponent implements Style {
10281
- initialColor: string;
10282
- color: string;
10283
- topColor?: string;
10284
- topTexture?: string;
10285
- texture?: string;
10286
- hoverColor?: string;
10287
- dirty: boolean;
10288
- visible: boolean;
10289
- opacity: number;
10290
- width: number;
10291
- height: number;
10292
- initialHeight: number;
10293
- altitude: number;
10294
- join: LineStyle['join'];
10295
- cap: LineStyle['cap'];
10296
- outline: boolean;
10297
- showImage: boolean;
10298
- showTextLabel: boolean;
10299
- flipImageToFaceCamera: boolean;
10300
- flipTextToFaceCamera: boolean;
10301
- url?: string;
10302
- side: MaterialSide;
10303
- constructor(style?: Partial<Style>);
10304
- }
10305
- export {};
10306
- }
10307
-
10308
11099
  declare module '@mappedin/react-sdk/geojson/src/types/options' {
10309
11100
  import type { Position } from '@mappedin/react-sdk/geojson/src/types/geometry';
10310
11101
  import type { Map as MapLibreMap } from '@mappedin/react-sdk/packages/outdoor-context-v4';
@@ -10433,38 +11224,71 @@ declare module '@mappedin/react-sdk/packages/common/pubsub' {
10433
11224
  }
10434
11225
  }
10435
11226
 
10436
- declare module '@mappedin/react-sdk/geojson/src/systems/interactions' {
10437
- export { InteractionSystem } from '@mappedin/react-sdk/geojson/src/systems/interactions/system';
10438
- }
10439
-
10440
- declare module '@mappedin/react-sdk/geojson/src/systems/zoom-interpolation/zoom-interpolation' {
10441
- import { PubSub } from '@mappedin/react-sdk/packages/common/pubsub';
10442
- import LabelComponent from '@mappedin/react-sdk/geojson/src/components/label';
10443
- import type { MarkerComponent } from '@mappedin/react-sdk/geojson/src/components/marker';
10444
- import { MeshComponent } from '@mappedin/react-sdk/geojson/src/components/mesh';
10445
- type SomeEvent = {
10446
- 'invalidate:2d': undefined;
11227
+ declare module '@mappedin/react-sdk/geojson/src/services/renderer' {
11228
+ import type { Scene, Camera } from 'three';
11229
+ import { Color, WebGL1Renderer, WebGLRenderer } from 'three';
11230
+ export type TRendererOptions = {
11231
+ alpha: boolean;
11232
+ onWebGLRendererError: (e: Error) => void;
11233
+ xRayPath: boolean;
10447
11234
  };
10448
- export class ZoomInterpolationSystem extends PubSub<SomeEvent, keyof SomeEvent> {
10449
- constructor();
10450
- interpolators: Map<any, any>;
10451
- addEntity3D(meshComponent: MeshComponent, interpolateProps: any): void;
10452
- addEntity2D(uiComponent: MarkerComponent | LabelComponent, interpolateProps: any): void;
10453
- addAny(id: string, interpolateFn: any): void;
10454
- update: (zoomLevel: number) => void;
10455
- destroy(): void;
11235
+ export class Renderer {
11236
+ backgroundAlpha: number;
11237
+ backgroundColor: Color;
11238
+ width: number;
11239
+ height: number;
11240
+ options: TRendererOptions;
11241
+ renderer?: WebGLRenderer | WebGL1Renderer;
11242
+ constructor(renderOptions: any, targetWebGLVersion?: number);
11243
+ /**
11244
+ * Dispose of the renderer and its buffers.
11245
+ */
11246
+ destroy(): void;
11247
+ /**
11248
+ * Re-render the scene, depending on which parts of the scene have been
11249
+ * invalidated.
11250
+ *
11251
+ * @method render
11252
+ * @param renderTarget {null or WebGLRenderTarget}
11253
+ * @param scene {Scene}
11254
+ * @param sceneCamera {Camera}
11255
+ */
11256
+ render(scene: Scene, sceneCamera: Camera): void;
11257
+ clear(): void;
11258
+ /**
11259
+ * Set the size of the renderer, composer, and all its internal buffers.
11260
+ *
11261
+ * @method setBufferSize
11262
+ * @param width {number}
11263
+ * @param height {number}
11264
+ */
11265
+ setBufferSize(width: number, height: number): void;
11266
+ /**
11267
+ * Set the color and opacity that will be drawn behind the scene.
11268
+ *
11269
+ * @method setBackgroundColor
11270
+ * @param color {Color}
11271
+ * @param alpha {number}
11272
+ */
11273
+ setBackgroundColor(color: any, alpha: any): void;
11274
+ domElement(): HTMLCanvasElement | undefined;
10456
11275
  }
10457
- export {};
11276
+ }
11277
+
11278
+ declare module '@mappedin/react-sdk/geojson/src/systems/interactions' {
11279
+ export { InteractionSystem } from '@mappedin/react-sdk/geojson/src/systems/interactions/system';
10458
11280
  }
10459
11281
 
10460
11282
  declare module '@mappedin/react-sdk/geojson/src/systems/mesh-creation-and-optimization/system' {
10461
11283
  import type { BufferGeometry } from 'three';
10462
11284
  import type { RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
10463
11285
  import { Geometry3D, Geometry3DObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
10464
- import { type MeshComponentProperties } from '@mappedin/react-sdk/geojson/src/components/mesh';
11286
+ import { MeshComponent, type MeshComponentProperties } from '@mappedin/react-sdk/geojson/src/components/mesh';
11287
+ import { StyleComponent } from '@mappedin/react-sdk/geojson/src/components/styles/style';
10465
11288
  import type { Feature, LineString, MultiPolygon, Point, Polygon } from 'geojson';
10466
11289
  import type { LineStyle, ModelProperties, ModelStyle, PaintStyle } from '@mappedin/react-sdk/geojson/src/types';
10467
11290
  import type { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
11291
+ import type { ModelGeometry3D } from '@mappedin/react-sdk/geojson/src/entities';
10468
11292
  import { PubSub } from '@packages/internal/common';
10469
11293
  export class MeshCreationAndOptimizationSystem extends PubSub<{
10470
11294
  'model-loaded': void;
@@ -10474,8 +11298,8 @@ declare module '@mappedin/react-sdk/geojson/src/systems/mesh-creation-and-optimi
10474
11298
  loader?: GLTFLoader;
10475
11299
  constructor(state: RendererState, convertTo3DMapPosition: any);
10476
11300
  getGLTFLoader(): Promise<void>;
10477
- createEntityFromFeature(id: string | number, feature: Feature<Polygon | LineString | MultiPolygon, MeshComponentProperties>, style?: LineStyle | PaintStyle): Geometry3D;
10478
- createModelFromFeature(id: string | number, feature: Feature<Point, ModelProperties>, style?: ModelStyle): Geometry3D;
11301
+ createEntityFromFeature(id: string | number, feature: Feature<Polygon | LineString | MultiPolygon, MeshComponentProperties>, style?: LineStyle | PaintStyle): Geometry3D<MeshComponent, StyleComponent, import("../../components/interaction").InteractionComponent, "geometry">;
11302
+ createModelFromFeature(id: string | number, feature: Feature<Point, ModelProperties>, style?: ModelStyle): ModelGeometry3D;
10479
11303
  populateEntityMesh(entity: Geometry3D, geometry: BufferGeometry): void;
10480
11304
  populateModelGroup(entities: Set<string | number>, url: string, tree: any): Promise<Geometry3DObject3D>;
10481
11305
  populateEntityGroup(entities: Set<string | number>): Set<string | number>;
@@ -10559,9 +11383,9 @@ declare module '@mappedin/react-sdk/geojson/src/systems/2d-draw/system' {
10559
11383
  declare module '@mappedin/react-sdk/geojson/src/systems/draw/system' {
10560
11384
  import { PubSub } from '@packages/internal/common';
10561
11385
  import { MeshComponent } from '@mappedin/react-sdk/geojson/src/components/mesh';
10562
- import { StyleComponent } from '@mappedin/react-sdk/geojson/src/components/style';
11386
+ import type { StyleComponent } from '@mappedin/react-sdk/geojson/src/components/styles/style';
10563
11387
  import type { RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
10564
- import { InteractionComponent } from '@mappedin/react-sdk/geojson/src/components/interaction';
11388
+ import type { InteractionComponent } from '@mappedin/react-sdk/geojson/src/components/interaction';
10565
11389
  import type { GeometryGroupStyleComponent } from '@mappedin/react-sdk/geojson/src/components/geometry-group-style';
10566
11390
  export class DrawSystem extends PubSub<{
10567
11391
  'texture-loaded': void;
@@ -10608,7 +11432,7 @@ declare module '@mappedin/react-sdk/geojson/src/systems/render/system' {
10608
11432
  constructor(renderer: Renderer, state: RendererState, mode: RendererCore['mode'], scene: Scene, cameraObject: PerspectiveCamera, viewCamera: Camera, systems: Systems);
10609
11433
  twoDdirty: boolean;
10610
11434
  threeDdirty: boolean;
10611
- update: (sync?: boolean) => void;
11435
+ update: (sync?: boolean) => Promise<any>;
10612
11436
  destroy(): void;
10613
11437
  }
10614
11438
  }
@@ -10911,9 +11735,11 @@ declare module '@mappedin/react-sdk/geojson/src/systems/geometry-in-focus/system
10911
11735
  declare module '@mappedin/react-sdk/geojson/src/systems/outdoor-layers/system' {
10912
11736
  import type { Map } from '@packages/internal/outdoor-context-v4';
10913
11737
  import type { Position } from '@mappedin/react-sdk/geojson/src/renderer';
11738
+ import { type BBox } from 'geojson';
10914
11739
  export class OutdoorLayers {
10915
11740
  dirty: boolean;
10916
11741
  hideLayersUnderPoint(point: Position, layers: string[]): void;
11742
+ hideLayersIntersectingPolygons(bbox: BBox, polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>[], layers: string[]): void;
10917
11743
  constructor(map?: Map);
10918
11744
  destroy(): void;
10919
11745
  }
@@ -10924,7 +11750,7 @@ declare module '@mappedin/react-sdk/geojson/src/systems/path' {
10924
11750
  }
10925
11751
 
10926
11752
  declare module '@mappedin/react-sdk/geojson/src/systems/mesh-detachment/system' {
10927
- import { type Geometry3DTypes, type RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
11753
+ import { type All3DTypes, type RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
10928
11754
  /**
10929
11755
  * This system is responsible for updating the opacity of the mesh, which results in the mesh
10930
11756
  * being detached from the parent's optimized geometry group and rendered as a separate mesh.
@@ -10934,16 +11760,13 @@ declare module '@mappedin/react-sdk/geojson/src/systems/mesh-detachment/system'
10934
11760
  rendererState: RendererState;
10935
11761
  dirty: boolean;
10936
11762
  constructor(rendererState: RendererState);
10937
- updateOne(geometry: Geometry3DTypes | undefined): void;
11763
+ updateOne(geometry: All3DTypes | undefined): void;
10938
11764
  update(): void;
10939
11765
  }
10940
11766
  }
10941
11767
 
10942
11768
  declare module '@mappedin/react-sdk/geojson/src/systems/mesh-modification/system' {
10943
- import { Geometry3D } from '@mappedin/react-sdk/geojson/src/entities';
10944
- import type { GeometryGroupObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
10945
- import type { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
10946
- import type { RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
11769
+ import type { EntityTypes, RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
10947
11770
  /**
10948
11771
  * Any physical changes to geometry should go in here. This includes height changes, etc.
10949
11772
  * This is to ensure that physical changes apply before any other systems need to do their work,
@@ -10956,7 +11779,7 @@ declare module '@mappedin/react-sdk/geojson/src/systems/mesh-modification/system
10956
11779
  rendererState: RendererState;
10957
11780
  dirty: boolean;
10958
11781
  constructor(rendererState: RendererState);
10959
- updateOne(entity: Geometry3D | GeometryGroupObject3D | GroupContainerObject3D | undefined): void;
11782
+ updateOne(entity?: EntityTypes): void;
10960
11783
  update(): void;
10961
11784
  cleanup(): void;
10962
11785
  }
@@ -10975,14 +11798,58 @@ declare module '@mappedin/react-sdk/geojson/src/systems/pre-render/system' {
10975
11798
  }
10976
11799
  }
10977
11800
 
10978
- declare module '@mappedin/react-sdk/geojson/src/systems/polygon-label/system' {
10979
- import type { RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
10980
- import type { RendererCore } from '@mappedin/react-sdk/geojson/src';
10981
- export const DEFAULT_VERTICAL_OFFSET = 0.01;
10982
- export class PolygonLabelSystem {
10983
- constructor(rendererState: RendererState, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']);
10984
- update(cameraRotationRadians: number): void;
11801
+ declare module '@mappedin/react-sdk/geojson/src/components/styles/style' {
11802
+ import type { LineStyle } from '@mappedin/react-sdk/geojson/src/renderer';
11803
+ export const DEFAULT_COLOR = "#ffffff";
11804
+ export const DEFAULT_HEIGHT = 0.1;
11805
+ /**
11806
+ * Determines how a material is rendered, back face, front face or both (default)
11807
+ */
11808
+ export type MaterialSide = 'back' | 'front' | 'double';
11809
+ type Style = {
11810
+ color: string;
11811
+ width: number;
11812
+ opacity: number;
11813
+ visible: boolean;
11814
+ height: number;
11815
+ altitude: number;
11816
+ join: LineStyle['join'];
11817
+ cap: LineStyle['cap'];
11818
+ topColor?: string;
11819
+ texture?: string;
11820
+ topTexture?: string;
11821
+ outline: boolean;
11822
+ showImage: boolean;
11823
+ flipImageToFaceCamera: boolean;
11824
+ url?: string;
11825
+ side?: MaterialSide;
11826
+ renderOrder?: number;
11827
+ };
11828
+ export class StyleComponent implements Style {
11829
+ initialColor: string;
11830
+ color: string;
11831
+ topColor?: string;
11832
+ topTexture?: string;
11833
+ texture?: string;
11834
+ hoverColor?: string;
11835
+ dirty: boolean;
11836
+ visible: boolean;
11837
+ opacity: number;
11838
+ width: number;
11839
+ height: number;
11840
+ initialHeight: number;
11841
+ altitude: number;
11842
+ join: LineStyle['join'];
11843
+ cap: LineStyle['cap'];
11844
+ outline: boolean;
11845
+ showImage: boolean;
11846
+ flipImageToFaceCamera: boolean;
11847
+ url?: string;
11848
+ side: MaterialSide;
11849
+ renderOrder: number;
11850
+ constructor(style?: Partial<Style>);
10985
11851
  }
11852
+ export {};
10986
11853
  }
10987
11854
 
10988
11855
  declare module '@mappedin/react-sdk/packages/geojson-navigator/src' {
@@ -11077,6 +11944,17 @@ declare module '@mappedin/react-sdk/geojson/src/utils/tranform-request' {
11077
11944
  };
11078
11945
  }
11079
11946
 
11947
+ declare module '@mappedin/react-sdk/geojson/src/utils/math' {
11948
+ export function normalizeAngle(angle: number): number;
11949
+ }
11950
+
11951
+ declare module '@mappedin/react-sdk/geojson/src/entities' {
11952
+ export { updateInteractivity } from '@mappedin/react-sdk/geojson/src/entities/utils';
11953
+ export { Geometry2D, Geometry2DComponents } from '@mappedin/react-sdk/geojson/src/entities/geometry2d';
11954
+ export { Geometry3D, Geometry3DComponents } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
11955
+ export type { PathMesh, PatMeshContainer, PathMaterial, Geometry3DTypes, ImageGeometry3D, TextGeometry3D, ModelGeometry3D, CustomGeometry3D, MeshGeometry3D, } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
11956
+ }
11957
+
11080
11958
  declare module '@mappedin/react-sdk/geojson/src/systems/exporter/exporter' {
11081
11959
  import type { RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
11082
11960
  export type GLTFExportOptions = {
@@ -11107,6 +11985,155 @@ declare module '@mappedin/react-sdk/geojson/src/systems/exporter/exporter' {
11107
11985
  }
11108
11986
  }
11109
11987
 
11988
+ declare module '@mappedin/react-sdk/geojson/src/components/styles/text-style' {
11989
+ /**
11990
+ * avoid storying default values on the text style to save space
11991
+ */
11992
+ export class Text3DStyleComponent implements Partial<Text3DStyle> {
11993
+ visible?: boolean;
11994
+ altitude?: number;
11995
+ color?: string;
11996
+ dirty: boolean;
11997
+ maxWidth?: number;
11998
+ maxHeight?: number;
11999
+ hoverByPolygon?: boolean;
12000
+ flipToFaceCamera?: boolean | undefined;
12001
+ font?: string;
12002
+ fillOpacity?: number;
12003
+ fontSize?: number;
12004
+ margin?: number;
12005
+ outlineWidth?: number;
12006
+ outlineBlur?: number | string;
12007
+ outlineOffsetX?: number;
12008
+ strokeColor?: string;
12009
+ strokeOpacity?: number;
12010
+ strokeWidth?: number;
12011
+ hoverColor?: string | undefined;
12012
+ outlineOffsetY?: number;
12013
+ outlineColor?: string;
12014
+ outlineOpacity?: number;
12015
+ constructor(initialState?: Partial<Text3DStyle>);
12016
+ /**
12017
+ * Put together a json ignore all the undefined fields.
12018
+ * This is helpful when we Object.assign(instance, json) to update the instance.
12019
+ */
12020
+ getState(includeDirty?: boolean): Partial<Text3DStyle>;
12021
+ }
12022
+ /**
12023
+ * Not directly storing default values on the text style to save space
12024
+ * TODO: lookign at text style spec from maplibre. we can also support:
12025
+ * letterSpacing?: number;
12026
+ * lineHeight: number;
12027
+ * anchor: number; => .anchorX & .anchorY
12028
+ * justify: nubmer; => .textAlign
12029
+ * tarnsform: string;
12030
+ * offset: number;
12031
+ */
12032
+ export const DEFAULT_TEXT_STYLE: Readonly<Text3DStyle>;
12033
+ export type Text3DStyle = {
12034
+ /**
12035
+ * Controls the visibility of the text element.
12036
+ * @default true
12037
+ */
12038
+ visible: boolean;
12039
+ /**
12040
+ * The color of the text. Will change to hoverColor when the associated polygon is hovered.
12041
+ * Accepts any CSS color string.
12042
+ * @default 'black'
12043
+ */
12044
+ color: string;
12045
+ /**
12046
+ * When true, the text will flip to face the camera while maintaining its position.
12047
+ * @default true
12048
+ */
12049
+ flipToFaceCamera: boolean;
12050
+ /**
12051
+ * URL to a custom font file (.ttf, .otf, .woff).
12052
+ * Falls back to Roboto if undefined.
12053
+ */
12054
+ font: string | undefined;
12055
+ /**
12056
+ * The size of the text in meters. Will be automatically adjusted if it exceeds
12057
+ * the text area bounds.
12058
+ */
12059
+ fontSize: number;
12060
+ /**
12061
+ * Padding between the text and its bounding box, in meters.
12062
+ * Can be specified as either:
12063
+ * - A single number for uniform padding on all sides
12064
+ * - An array of 4 numbers [top, right, bottom, left] for individual side padding
12065
+ * @default [0.2, 1, 0.2, 1.5]
12066
+ */
12067
+ margin: number | [number, number, number, number];
12068
+ /**
12069
+ * Color of the text outline.
12070
+ * Accepts any CSS color string.
12071
+ * @default 'black'
12072
+ */
12073
+ outlineColor: string;
12074
+ /**
12075
+ * Opacity of the text outline.
12076
+ * Accepts values between 0 and 1.
12077
+ * @default 1
12078
+ */
12079
+ outlineOpacity: number;
12080
+ /**
12081
+ * Blur radius for the text outline.
12082
+ * Can be a number in pixels or a string with units.
12083
+ */
12084
+ outlineBlur: number | string;
12085
+ /**
12086
+ * Width of the text outline effect in pixels.
12087
+ */
12088
+ outlineWidth: number;
12089
+ /**
12090
+ * Horizontal offset of the outline effect from the text, in pixels.
12091
+ */
12092
+ outlineOffsetX: number;
12093
+ /**
12094
+ * Vertical offset of the outline effect from the text, in pixels.
12095
+ */
12096
+ outlineOffsetY: number;
12097
+ /**
12098
+ * Width of the inner stroke of each text glyph.
12099
+ * @default 0
12100
+ */
12101
+ strokeWidth: number;
12102
+ /**
12103
+ * Maximum width constraint for the text area in meters.
12104
+ * Overrides default text field constraints when set.
12105
+ */
12106
+ maxWidth: number | undefined;
12107
+ /**
12108
+ * Maximum height constraint for the text area in meters.
12109
+ * Overrides default text field constraints when set.
12110
+ */
12111
+ maxHeight: number | undefined;
12112
+ /**
12113
+ * Opacity of the text stroke when strokeWidth > 0.
12114
+ * @default 1
12115
+ */
12116
+ strokeOpacity: number;
12117
+ /**
12118
+ * Color of the text stroke when strokeWidth > 0.
12119
+ * Accepts any CSS color string.
12120
+ * @default 'black'
12121
+ */
12122
+ strokeColor: string;
12123
+ /**
12124
+ * Opacity of the text fill, independent of stroke and outline opacity.
12125
+ * Set to 0 to show only stroke/outline.
12126
+ * Accepts values between 0 and 1.
12127
+ */
12128
+ fillOpacity: number;
12129
+ /**
12130
+ * Color to display when text is hovered.
12131
+ * Falls back to global hover color if undefined.
12132
+ */
12133
+ hoverColor: string | undefined;
12134
+ };
12135
+ }
12136
+
11110
12137
  declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-object' {
11111
12138
  import type { Polygon, MultiPolygon, FloorProperties as MVFFloor, ParsedMVF, Feature } from '@mappedin/mvf';
11112
12139
  import type { RendererCore } from '@mappedin/core-sdk';
@@ -11114,8 +12141,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-object' {
11114
12141
  import type { TShow3DMapOptions } from '@mappedin/react-sdk/mappedin-js/src';
11115
12142
  class Layer {
11116
12143
  containerId: string;
12144
+ labelIds: Set<string>;
11117
12145
  layers: Map<string, string>;
11118
- constructor(containerId: string, layers?: Map<any, any>);
12146
+ renderer: RendererCore;
12147
+ constructor(renderer: RendererCore, containerId: string, layers?: Map<any, any>);
12148
+ show(): void;
12149
+ hide(): void;
11119
12150
  }
11120
12151
  export class FloorObject implements MVFFloor {
11121
12152
  id: string;
@@ -11141,11 +12172,11 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/utils' {
11141
12172
  import { Coordinate, type MapObject, type Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
11142
12173
  import type { Position, EntranceCollection, LineString, Polygon, Point, SpaceProperties, ObstructionProperties, StyleCollection, PolygonStyle, LineStringStyle, Feature, ObstructionCollection, PointStyle } from '@mappedin/mvf';
11143
12174
  import type { WithPolygonImage } from '@packages/internal/mvf-utils';
11144
- import type { FeatureCollection, MultiLineString } from 'geojson';
12175
+ import type { BBox, FeatureCollection, MultiLineString } from 'geojson';
11145
12176
  import type { LabelState, MarkerState, GeometryState, CollisionRankingTier, LineStyle, PaintStyle } from '@mappedin/core-sdk';
11146
12177
  import { type TGeometryState, type TLabelState, type TDirectionInstructionAction, type TShow3DMapOptions, type Label, type Marker, type Model } from '@mappedin/react-sdk/mappedin-js/src';
11147
12178
  import type { TDoorsState, TMarkerState, TWallsState } from '@mappedin/react-sdk/mappedin-js/src/types';
11148
- import type { Image, Shape } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
12179
+ import type { Image, Shape, Text3D } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
11149
12180
  import type { GeoJsonApi } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/api';
11150
12181
  import type { Tween } from '@tweenjs/tween.js';
11151
12182
  export function convertCoordinateToPosition(coord: Coordinate): Position;
@@ -11172,10 +12203,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/utils' {
11172
12203
  export type WithId<T> = T & {
11173
12204
  id?: string;
11174
12205
  };
11175
- export function groupGeometryByStyle(features: Feature<LineString | Polygon | Point, SpaceProperties | ObstructionProperties>[], styleMap: AggregatedStyleMap): Map<WithId<PolygonStyle> | WithId<LineStringStyle> | WithId<PointStyle>, Feature<Point | LineString | Polygon, WithPolygonImage<SpaceProperties> | WithPolygonImage<ObstructionProperties>>[]>;
12206
+ export function groupGeometryByStyle(features: Feature<LineString | Polygon | Point, SpaceProperties | ObstructionProperties>[], styleMap: AggregatedStyleMap): Map<WithId<PolygonStyle> | WithId<LineStringStyle> | WithId<PointStyle>, Feature<Polygon | LineString | Point, WithPolygonImage<SpaceProperties> | WithPolygonImage<ObstructionProperties>>[]>;
11176
12207
  export function translateToCoreStyle(style: PolygonStyle | LineStringStyle, userOptions?: TShow3DMapOptions): PaintStyle | LineStyle;
11177
- export const getTargetID: <T extends Space | Shape | MapObject | Label | Marker | Model | Image | string>(target: T, api: GeoJsonApi) => string | undefined;
12208
+ export const getTargetID: <T extends Space | Shape | MapObject | Label | Text3D | Marker | Model | Image | string>(target: T, api: GeoJsonApi) => string | undefined;
11178
12209
  export function tweenToPromise(tween: Tween): Promise<void>;
12210
+ export function getBoundingBox(geometry: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>): BBox;
12211
+ export function expandBbox(bbox: BBox, bboxToExpand: BBox): number[];
11179
12212
  export function unique<T>(array: T[]): T[];
11180
12213
  }
11181
12214
 
@@ -11183,7 +12216,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-stack-obje
11183
12216
  import type { RendererCore } from '@mappedin/core-sdk';
11184
12217
  import type { FloorId, FloorStack as MVFFloorStack, Facade as MVFFacade } from '@mappedin/mvf';
11185
12218
  import type { FloorObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-object';
11186
- export class FloorStackObject implements Omit<MVFFloorStack, 'maps' | 'floors' | 'defaultFloor'> {
12219
+ export class FloorStackObject implements Omit<MVFFloorStack, 'maps' | 'floors' | 'defaultFloor' | 'footprint'> {
11187
12220
  #private;
11188
12221
  id: MVFFloorStack['id'];
11189
12222
  externalId: MVFFloorStack['externalId'];
@@ -11195,7 +12228,6 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/floor-stack-obje
11195
12228
  floorObjects: FloorObject[];
11196
12229
  floorObjectsByElevation: Map<number, FloorObject>;
11197
12230
  metadata?: MVFFloorStack['metadata'];
11198
- footprint?: MVFFloorStack['footprint'];
11199
12231
  containerId: string;
11200
12232
  facade?: MVFFacade;
11201
12233
  constructor(floorStack: MVFFloorStack, parentId: string, renderer: RendererCore, facade?: MVFFacade);
@@ -11213,7 +12245,7 @@ declare module '@mappedin/react-sdk/geojson/src/systems/collisions/collider-proc
11213
12245
  import { Rectangle } from '@packages/internal/quad-tree';
11214
12246
  export type TSerializedCollider = {
11215
12247
  rank: number;
11216
- enabled: boolean;
12248
+ enabledAndVisible: boolean;
11217
12249
  x: number;
11218
12250
  y: number;
11219
12251
  bboxes: {
@@ -11238,42 +12270,6 @@ declare module '@mappedin/react-sdk/geojson/src/systems/collisions/collider-proc
11238
12270
  };
11239
12271
  }
11240
12272
 
11241
- declare module '@mappedin/react-sdk/geojson/src/entities/utils' {
11242
- import type { CollisionRankingTier, GeometryState, LabelState, RendererCore } from '@mappedin/react-sdk/geojson/src';
11243
- import { type MarkerState } from '@mappedin/react-sdk/geojson/src/components/marker';
11244
- import type { PathUpdateState } from '@mappedin/react-sdk/geojson/src/components/path';
11245
- import type { Geometry3DTypes, Position, RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
11246
- import { GeometryGroupObject3D, type GeometryGroupState } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
11247
- import { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
11248
- import { Geometry3D } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
11249
- import { Geometry2D } from '@mappedin/react-sdk/geojson/src/entities/geometry2d';
11250
- import type { StyleComponent } from '@mappedin/react-sdk/geojson/src/components/style';
11251
- import type { GeometryGroupStyleComponent } from '@mappedin/react-sdk/geojson/src/components/geometry-group-style';
11252
- export function updateInteractivity(entity: Geometry3DTypes | Geometry2D, update: boolean | undefined, state: RendererState): boolean;
11253
- export function updateGroupColor(entity: GeometryGroupObject3D, state: RendererState, update: Partial<Pick<GeometryGroupState, 'color' | 'topColor'>>): boolean | undefined;
11254
- export function updateGroupShading(entity: GeometryGroupObject3D, update?: GeometryGroupState['shading']): boolean;
11255
- export function updateImageProps(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Partial<GeometryState>): void;
11256
- export function updateHeight(entity: Geometry3D | GeometryGroupObject3D, state: RendererState, update?: number): boolean;
11257
- export function updateColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Partial<GeometryState>): void;
11258
- export function updatePosition(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Position | undefined, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): void;
11259
- export function updateParent(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: GroupContainerObject3D | undefined): boolean;
11260
- export function updateEnabled(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: boolean | undefined): void;
11261
- export function updateMarker(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<MarkerState> | undefined, state: RendererState): boolean;
11262
- export function updateRank(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: CollisionRankingTier | undefined): boolean;
11263
- export function updateLabel(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<LabelState> | undefined, state: RendererState): void;
11264
- export function updateHoverColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: string): void;
11265
- export function updateFlipImageToFaceCamera(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: boolean): void;
11266
- export function updateVisibility(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: boolean): boolean;
11267
- export function updateOpacity(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, state: RendererState, update?: number): boolean;
11268
- export function updateGroupTexture(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Pick<GeometryGroupStyleComponent, 'texture' | 'topTexture'>): void;
11269
- export function updateIndividualGeometryTexture(entity: Geometry3D, update?: Pick<StyleComponent, 'texture' | 'topTexture'>): boolean;
11270
- export function updateIndividualGeometryOpacity(entity: Geometry3D, update?: number): boolean;
11271
- export function updateAltitude(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: number): boolean;
11272
- export function updateOutline(entity: Geometry3DTypes, update?: boolean): boolean;
11273
- export function handlePathUpdate(geometry: Geometry3D, update: PathUpdateState): void;
11274
- export function pickPathOptions(update: PathUpdateState): Partial<PathUpdateState>;
11275
- }
11276
-
11277
12273
  declare module '@mappedin/react-sdk/geojson/src/systems/interactions/system' {
11278
12274
  import type { PerspectiveCamera, Vector3, Object3D, Mesh } from 'three';
11279
12275
  import { Raycaster } from 'three';
@@ -11681,13 +12677,13 @@ declare module '@mappedin/react-sdk/geojson/src/systems/camera/system' {
11681
12677
  * @param [curve] {Mappedin.Easing} The animation curve to use for the animation.
11682
12678
  * @param [callback] {Function} A callback that will be executed when the animation is done.
11683
12679
  * @param [options] {Object} An Options object
11684
- * @param [options.mode=cancel] {Object} Mode determines what happens when multiple animateCamera calls happen at once. By Default,
12680
+ * @param [options.interruptible=true] {Boolean} Determines if this animation must complete before any new animations start
11685
12681
  it will cancel and omit any previous animations. Set to "chain" to chain instead
11686
12682
  *
11687
12683
  * @return {Mappedin.Tween} The tween being used, if you want to do anything to control it manually. Do not overide it's events.
11688
12684
  */
11689
12685
  animateCamera: (target: AnimateCameraTarget, duration: number, curve?: (n: number) => number, callback?: (...args: any) => void, cancelledCallback?: (...args: any) => void, options?: {
11690
- mode: keyof typeof CAMERA_CONSTANTS.CONTROL_OPTIONS;
12686
+ interruptible?: boolean;
11691
12687
  }) => Promise<void>;
11692
12688
  /**
11693
12689
  * Allows you to set any of the Camera's position, zoom, rotation and tilt at once, with one function.
@@ -11953,6 +12949,7 @@ declare module '@mappedin/react-sdk/geojson/src/systems/camera/types' {
11953
12949
  boundingBox?: any;
11954
12950
  callback?: () => void;
11955
12951
  cancelledCallback?: () => void;
12952
+ interruptible?: boolean;
11956
12953
  };
11957
12954
  }
11958
12955