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

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.
@@ -321,7 +321,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
321
321
  import { Search } from '@mappedin/mappedin-js/mappedin-js/src/search';
322
322
  import type { TNavigationTarget, TGetDirectionsOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
323
323
  import type { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions';
324
- import { Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
324
+ import type { Query } from '@mappedin/mappedin-js/mappedin-js/src/query';
325
+ import type { IGeoJSONData } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
325
326
  /**
326
327
  * A WeakMap to associate {@link MapData} instances with their internal representation.
327
328
  * We need a way to get the internal data object from the API
@@ -509,6 +510,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
509
510
  */
510
511
  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;
511
512
  getById(type: string, id: string): object | undefined;
513
+ /**
514
+ * Get the GeoJSON for a map data object on the map.
515
+ * @param mapDataObject
516
+ */
517
+ getGeoJSON<T extends IGeoJSONData>(mapDataObject: T): T['geoJSON'];
512
518
  /**
513
519
  * Changes the language of the map data.
514
520
  *
@@ -1574,25 +1580,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1574
1580
  /**
1575
1581
  * Defines the state for a label when its appearance is updated.
1576
1582
  */
1577
- export type TLabelState = {
1583
+ export type TLabelState = Omit<Required<TAddLabelOptions>, 'id'> & {
1578
1584
  text: string;
1579
1585
  type: 'label';
1580
- /**
1581
- * Appearance settings for the label.
1582
- */
1583
- appearance: TLabelAppearance;
1584
- /**
1585
- * Priority level of the label, used for determining display order.
1586
- */
1587
- rank: TCollisionRankingTier | 'initial';
1588
- /**
1589
- * Whether the label is interactive.
1590
- */
1591
- interactive: boolean;
1592
- /**
1593
- * Whether the label is enabled.
1594
- */
1595
- enabled: boolean;
1596
1586
  };
1597
1587
  /**
1598
1588
  * Defines the state for a model when its appearance is updated.
@@ -1672,30 +1662,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1672
1662
  */
1673
1663
  opacity: number;
1674
1664
  };
1675
- export type TMarkerState = {
1665
+ export type TMarkerState = Omit<Required<TAddMarkerOptions>, 'id'> & {
1676
1666
  type: 'marker';
1677
1667
  /**
1678
1668
  * HTML element for the marker.
1679
1669
  */
1680
1670
  element: HTMLElement;
1681
- /**
1682
- * Priority level of the marker, used for determining display order.
1683
- */
1684
- rank: TCollisionRankingTier | 'initial';
1685
- /**
1686
- * Whether the marker is interactive.
1687
- * `true` indicates that the marker will be registered in the SDK interaction events.
1688
- * `'pointer-events-auto'` indicates that the marker will receive browser pointer events.
1689
- */
1690
- interactive: boolean | 'pointer-events-auto';
1691
- /**
1692
- * Whether the marker is enabled.
1693
- */
1694
- enabled: boolean;
1695
- /**
1696
- * The current coordinate of the marker.
1697
- */
1698
- coordinate: Coordinate;
1699
1671
  };
1700
1672
  /**
1701
1673
  * Represents the state of a shape.
@@ -1799,6 +1771,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1799
1771
  * Easing function to use for the animation.
1800
1772
  */
1801
1773
  easing?: TEasingFunction;
1774
+ /**
1775
+ * Whether the current animation will be interrupted, or must complete before starting any new animations
1776
+ * @default: true
1777
+ */
1778
+ interruptible?: boolean;
1802
1779
  };
1803
1780
  /**
1804
1781
  * Options for controlling animations on the map.
@@ -1863,6 +1840,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1863
1840
  vertical?: number;
1864
1841
  };
1865
1842
  screenOffsets?: InsetPaddingOption;
1843
+ /**
1844
+ * Whether the current animation will be interrupted, or must complete before starting any new animations
1845
+ * @default: true
1846
+ */
1847
+ interruptible?: boolean;
1866
1848
  };
1867
1849
  /**
1868
1850
  * A map element that can be focused on by the camera.
@@ -2306,7 +2288,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
2306
2288
  * Optional. Determines the collision ranking tier of the marker, which influences its visibility in relation to other colliders.
2307
2289
  * For the possible values ('medium', 'high', 'always-visible') and their impact on label visibility, see {@link TCollisionRankingTier}.
2308
2290
  */
2309
- rank?: TCollisionRankingTier;
2291
+ rank?: TCollisionRankingTier | 'initial';
2310
2292
  /**
2311
2293
  * Optional. Specifies the anchor point of the marker, determining its position relative to its coordinates.
2312
2294
  * If a list is provided, the marker will be anchored to the first anchor point that is available.
@@ -2323,10 +2305,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
2323
2305
  * @default false
2324
2306
  */
2325
2307
  interactive?: boolean | 'pointer-events-auto';
2326
- /**
2327
- * Optional layer to attach the {@link Marker} to.
2328
- */
2329
- layer?: string;
2330
2308
  /**
2331
2309
  * @internal
2332
2310
  */
@@ -2336,11 +2314,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
2336
2314
  */
2337
2315
  dynamicResize?: boolean;
2338
2316
  /**
2339
- * Whether the marker should stop event propagation.
2340
- * @internal
2341
- * @default false
2317
+ * Whether the marker is enabled.
2342
2318
  */
2343
- stopPropagation?: boolean;
2319
+ enabled?: boolean;
2344
2320
  };
2345
2321
  /**
2346
2322
  * Options for creating a new {@link Label} with {@link Labels.add}.
@@ -2350,31 +2326,24 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
2350
2326
  * Optional. Determines the collision ranking tier of the label, which influences its visibility in relation to other colliders.
2351
2327
  * For the possible values ('medium', 'high', 'always-visible') and their impact on label visibility, see {@link TCollisionRankingTier}.
2352
2328
  */
2353
- rank?: TCollisionRankingTier;
2329
+ rank?: TCollisionRankingTier | 'initial';
2354
2330
  /**
2355
2331
  * Customize the appearance of the {@link Label} and its pin
2356
2332
  */
2357
2333
  appearance?: TLabelAppearance;
2358
- /**
2359
- * Group analytics based ranking
2360
- *
2361
- * @default false
2362
- */
2363
- groupRankingByCategory?: boolean;
2364
2334
  /**
2365
2335
  * Whether the Label should be clickable.
2366
2336
  * @default false
2367
2337
  */
2368
2338
  interactive?: boolean;
2369
- /**
2370
- * Optional layer to attach the Label to.
2371
- * If not provided, this will be empty.
2372
- */
2373
- layer?: string;
2374
2339
  /**
2375
2340
  * @internal
2376
2341
  */
2377
2342
  id?: string;
2343
+ /**
2344
+ * Whether the label is enabled.
2345
+ */
2346
+ enabled?: boolean;
2378
2347
  };
2379
2348
  export type TBlueDotOptions = {
2380
2349
  /**
@@ -3531,6 +3500,58 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions' {
3531
3500
  }
3532
3501
  }
3533
3502
 
3503
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types' {
3504
+ import type Area from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/area';
3505
+ import type Door from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door';
3506
+ import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
3507
+ import type Space from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space';
3508
+ import type PointOfInterest from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/poi';
3509
+ import type Annotation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/annotation';
3510
+ import type Connection from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/connection';
3511
+ import type MapObject from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/object';
3512
+ import type { EnterpriseLocation as MvfEnterpriseLocation, EnterpriseCategory as MvfEnterpriseCategory, ParsedMVFLocalePack, Feature } from '@mappedin/mvf';
3513
+ import type { PartialExcept } from '@mappedin/mvf/dist/locale';
3514
+ import type { LocalePackUrls } from '@packages/internal/mvf-utils';
3515
+ import type { LanguagePackHydrationItem } from '@mappedin/mappedin-js/mappedin-js/src/types';
3516
+ import type { EnvControl } from '@packages/internal/mvf-utils/mvf-utils';
3517
+ /**
3518
+ * Places are the main objects that can be searched for.
3519
+ */
3520
+ export type Places = Space | Floor | Door | Connection | MapObject | PointOfInterest | Annotation | Area;
3521
+ export type LocationWithLocale = PartialExcept<MvfEnterpriseLocation, 'id'>;
3522
+ export type CategoryWithLocale = PartialExcept<MvfEnterpriseCategory, 'id'>;
3523
+ export type LanguagePack = {
3524
+ type: 'downloaded';
3525
+ data: ParsedMVFLocalePack;
3526
+ optimized: {
3527
+ locations: Record<string, LocationWithLocale> | undefined;
3528
+ categories: Record<string, CategoryWithLocale> | undefined;
3529
+ };
3530
+ } | {
3531
+ type: 'initial';
3532
+ optimized: {
3533
+ locations: Record<string, MvfEnterpriseLocation>;
3534
+ categories: Record<string, MvfEnterpriseCategory>;
3535
+ };
3536
+ };
3537
+ export type TMapDataInternalOptions = {
3538
+ env?: EnvControl;
3539
+ enterprise?: boolean;
3540
+ outdoorViewToken?: string;
3541
+ localePacksUrls?: LocalePackUrls;
3542
+ languagePacks?: LanguagePackHydrationItem[];
3543
+ binaryBundle?: Uint8Array;
3544
+ sasToken?: string;
3545
+ };
3546
+ /**
3547
+ * A class that implements IGeoJSONData has a underlying GeoJSON datathat can be accessed.
3548
+ */
3549
+ export interface IGeoJSONData {
3550
+ /** Gets the underlying GeoJSON Feature representation of this object. */
3551
+ geoJSON: Feature<any, null>;
3552
+ }
3553
+ }
3554
+
3534
3555
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/camera-transform' {
3535
3556
  import type { Camera } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
3536
3557
  /**
@@ -3861,13 +3882,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node' {
3861
3882
  import type { EnterpriseLocation, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3862
3883
  import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
3863
3884
  import BaseMetaData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-metadata-object';
3885
+ import type { IGeoJSONData } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
3864
3886
  /**
3865
3887
  * A class representing {@link Path} node data within the map.
3866
3888
  *
3867
3889
  * Nodes are used to define points in the map's pathfinding graph.
3868
3890
  *
3869
3891
  */
3870
- class Node extends BaseMetaData {
3892
+ class Node extends BaseMetaData implements IGeoJSONData {
3871
3893
  #private;
3872
3894
  /**
3873
3895
  * @internal
@@ -3917,6 +3939,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node' {
3917
3939
  * @returns {Node[]} An array of neighboring Node objects.
3918
3940
  */
3919
3941
  get neighbors(): Node[];
3942
+ /**
3943
+ * Gets the underlying GeoJSON Feature representation of this Node.
3944
+ */
3945
+ get geoJSON(): {
3946
+ properties: null;
3947
+ type: import("@mappedin/mvf").FeatureType;
3948
+ geometry: import("@mappedin/mvf").Point;
3949
+ };
3920
3950
  /**
3921
3951
  * Serializes the node data to JSON.
3922
3952
  *
@@ -3947,6 +3977,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/area' {
3947
3977
  import { Coordinate, type MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3948
3978
  import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
3949
3979
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
3980
+ import type { IGeoJSONData } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
3950
3981
  /**
3951
3982
  * An Area represents some grouping of multiple pieces of geometry, not
3952
3983
  * necessarily bounded by walls or any other physical feature of the map.
@@ -3954,7 +3985,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/area' {
3954
3985
  * Areas are currently in a preview state, and may have changes to existing
3955
3986
  * functionality or new features added in the future.
3956
3987
  */
3957
- class Area extends BaseMapData {
3988
+ class Area extends BaseMapData implements IGeoJSONData {
3958
3989
  #private;
3959
3990
  /**
3960
3991
  * @internal
@@ -4009,6 +4040,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/area' {
4009
4040
  * @throws Will throw an error if the floor is not found.
4010
4041
  */
4011
4042
  get floor(): Floor;
4043
+ /**
4044
+ * Gets the underlying GeoJSON Feature representation of this Area.
4045
+ */
4046
+ get geoJSON(): {
4047
+ properties: null;
4048
+ type: import("@mappedin/mvf").FeatureType;
4049
+ geometry: import("@mappedin/mvf").Polygon;
4050
+ };
4012
4051
  /**
4013
4052
  * Serializes the space data to JSON.
4014
4053
  *
@@ -4035,6 +4074,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door' {
4035
4074
  import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
4036
4075
  import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4037
4076
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
4077
+ import type { IGeoJSONData } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
4038
4078
  /**
4039
4079
  * A class representing door data within the map.
4040
4080
  *
@@ -4063,7 +4103,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door' {
4063
4103
  * Refer to the [Textures & Colors Guide](https://developer.mappedin.com/web-sdk/images-textures#textures--colors) for more information and interactive examples.
4064
4104
  *
4065
4105
  */
4066
- class Door extends BaseMapData {
4106
+ class Door extends BaseMapData implements IGeoJSONData {
4067
4107
  #private;
4068
4108
  /**
4069
4109
  * @internal
@@ -4122,6 +4162,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door' {
4122
4162
  * Gets whether this door is an exterior door.
4123
4163
  */
4124
4164
  get isExterior(): boolean;
4165
+ /**
4166
+ * Gets the underlying GeoJSON Feature representation of this Door.
4167
+ */
4168
+ get geoJSON(): {
4169
+ properties: null;
4170
+ type: import("@mappedin/mvf").FeatureType;
4171
+ geometry: import("@mappedin/mvf").LineString;
4172
+ };
4125
4173
  /**
4126
4174
  * Converts the door information to a JSON object.
4127
4175
  *
@@ -4154,6 +4202,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space' {
4154
4202
  import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
4155
4203
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
4156
4204
  import type Door from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door';
4205
+ import type { IGeoJSONData } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
4157
4206
  /**
4158
4207
  * Represents the various types of spaces that can be defined within a map.
4159
4208
  * - 'room': A standard room or enclosed area.
@@ -4171,7 +4220,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space' {
4171
4220
  *
4172
4221
  * Refer to the [Spaces Guide](https://developer.mappedin.com/web-sdk/spaces) for more information and interactive examples.
4173
4222
  */
4174
- class Space extends BaseMapData {
4223
+ class Space extends BaseMapData implements IGeoJSONData {
4175
4224
  #private;
4176
4225
  /**
4177
4226
  * @internal
@@ -4181,7 +4230,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space' {
4181
4230
  * @internal
4182
4231
  */
4183
4232
  readonly __type = "space";
4184
- getMvfData(): import("@mappedin/mvf").Feature<import("@mappedin/mvf").Point | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon, import("@mappedin/mvf").SpaceProperties>;
4233
+ getMvfData(): import("@mappedin/mvf").Feature<import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Point, import("@mappedin/mvf").SpaceProperties>;
4185
4234
  /**
4186
4235
  * Checks if the provided instance is of type Space.
4187
4236
  *
@@ -4243,6 +4292,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space' {
4243
4292
  * @returns {Coordinate} The space's center coordinate.
4244
4293
  */
4245
4294
  get center(): Coordinate;
4295
+ /**
4296
+ * Gets the underlying GeoJSON Feature representation of this Space.
4297
+ */
4298
+ get geoJSON(): {
4299
+ properties: null;
4300
+ type: import("@mappedin/mvf").FeatureType;
4301
+ geometry: import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Point;
4302
+ };
4246
4303
  /**
4247
4304
  * Serializes the space data to JSON.
4248
4305
  *
@@ -4502,6 +4559,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/object' {
4502
4559
  import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4503
4560
  import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
4504
4561
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
4562
+ import type { IGeoJSONData } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
4505
4563
  /**
4506
4564
  * A class representing generic map object data within the map.
4507
4565
  *
@@ -4510,7 +4568,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/object' {
4510
4568
  * MapObject appearance can be customized by changing the color or adding a texture to its top or sides.
4511
4569
  * Refer to the [Textures & Colors Guide](https://developer.mappedin.com/web-sdk/images-textures#textures--colors) for more information and interactive examples.
4512
4570
  */
4513
- export class MapObject extends BaseMapData {
4571
+ export class MapObject extends BaseMapData implements IGeoJSONData {
4514
4572
  #private;
4515
4573
  /**
4516
4574
  * @internal
@@ -4571,6 +4629,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/object' {
4571
4629
  * @returns {Coordinate} The object's center coordinate.
4572
4630
  */
4573
4631
  get center(): Coordinate;
4632
+ /**
4633
+ * Gets the underlying GeoJSON Feature representation of this Object.
4634
+ */
4635
+ get geoJSON(): {
4636
+ properties: null;
4637
+ type: import("@mappedin/mvf").FeatureType;
4638
+ geometry: import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString;
4639
+ };
4574
4640
  /**
4575
4641
  * Serializes the MapObject data to JSON.
4576
4642
  *
@@ -4673,13 +4739,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/poi' {
4673
4739
  import type { Floor, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4674
4740
  import Coordinate from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/coordinate';
4675
4741
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
4742
+ import type { IGeoJSONData } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
4676
4743
  /**
4677
4744
  * A class representing point of interest data within the map.
4678
4745
  *
4679
4746
  * Points of interest are used to represent specific points
4680
4747
  * on the map with additional information(e.g. ATMs, Water Fountains).
4681
4748
  */
4682
- class PointOfInterest extends BaseMapData {
4749
+ class PointOfInterest extends BaseMapData implements IGeoJSONData {
4683
4750
  #private;
4684
4751
  /**
4685
4752
  * @internal
@@ -4734,6 +4801,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/poi' {
4734
4801
  * @returns {string} The external ID of the POI.
4735
4802
  */
4736
4803
  get externalId(): string;
4804
+ /**
4805
+ * Gets the underlying GeoJSON Feature representation of this PointOfInterest.
4806
+ */
4807
+ get geoJSON(): {
4808
+ properties: null;
4809
+ type: import("@mappedin/mvf").FeatureType;
4810
+ geometry: Point;
4811
+ };
4737
4812
  /**
4738
4813
  * Serializes the POI data to JSON.
4739
4814
  *
@@ -4764,6 +4839,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/annotatio
4764
4839
  import type { Floor, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
4765
4840
  import Coordinate from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/coordinate';
4766
4841
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
4842
+ import type { IGeoJSONData } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
4767
4843
  /**
4768
4844
  * A class representing annotation data within the map.
4769
4845
  *
@@ -4771,7 +4847,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/annotatio
4771
4847
  * It includes some details on a map that may be relevant to safety or accessibility (e.g. Fire Extinguishers).
4772
4848
  * Refer to the [Annotation Guide](https://developer.mappedin.com/web-sdk/annotations) for more information.
4773
4849
  */
4774
- class Annotation extends BaseMapData {
4850
+ class Annotation extends BaseMapData implements IGeoJSONData {
4775
4851
  #private;
4776
4852
  /**
4777
4853
  * @internal
@@ -4826,6 +4902,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/annotatio
4826
4902
  * @throws Will throw an error if the floor is not found.
4827
4903
  */
4828
4904
  get floor(): Floor;
4905
+ /**
4906
+ * Gets the underlying GeoJSON Feature representation of this Annotation.
4907
+ */
4908
+ get geoJSON(): {
4909
+ properties: null;
4910
+ type: import("@mappedin/mvf").FeatureType;
4911
+ geometry: import("@mappedin/mvf").Point;
4912
+ };
4829
4913
  /**
4830
4914
  * Converts the annotation information to a JSON object.
4831
4915
  *
@@ -5187,9 +5271,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
5187
5271
  objectEntranceNodeIdsByObstructionId: Record<string, string[]>;
5188
5272
  obstructionIdByEntranceId: Record<string, string>;
5189
5273
  connectionIdsByLatLon: Record<string, string[]>;
5190
- mvfSpacesById: Record<string, Feature<Point | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon, SpaceProperties>>;
5274
+ mvfSpacesById: Record<string, Feature<import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString | Point, SpaceProperties>>;
5191
5275
  mvfNodesById: Record<string, Feature<Point, import("@mappedin/mvf").NodeProperties>>;
5192
- mvfObstructionById: Record<string, Feature<import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon, import("@mappedin/mvf").ObstructionProperties>>;
5276
+ mvfObstructionById: Record<string, Feature<import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString, import("@mappedin/mvf").ObstructionProperties>>;
5193
5277
  mvfFloorsById: Record<string, MVFFloor>;
5194
5278
  mvfFloorStacksById: Record<string, MVFFloorStack>;
5195
5279
  mvfConnectionsById: Record<string, MVFConnection>;
@@ -5204,7 +5288,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
5204
5288
  [floorId: string]: Feature<Point, import("@mappedin/mvf").NodeProperties>[];
5205
5289
  };
5206
5290
  mvfSpacesByFloorId: {
5207
- [floorId: string]: Feature<Point | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon, SpaceProperties>[];
5291
+ [floorId: string]: Feature<import("@mappedin/mvf").Polygon | import("@mappedin/mvf").LineString | Point, SpaceProperties>[];
5208
5292
  };
5209
5293
  mvfPoisByFloorId: {
5210
5294
  [floorId: string]: Feature<Point, SpaceProperties>[];
@@ -5223,51 +5307,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
5223
5307
  };
5224
5308
  }
5225
5309
 
5226
- declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types' {
5227
- import type Area from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/area';
5228
- import type Door from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door';
5229
- import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
5230
- import type Space from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space';
5231
- import type PointOfInterest from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/poi';
5232
- import type Annotation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/annotation';
5233
- import type Connection from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/connection';
5234
- import type MapObject from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/object';
5235
- import type { EnterpriseLocation as MvfEnterpriseLocation, EnterpriseCategory as MvfEnterpriseCategory, ParsedMVFLocalePack } from '@mappedin/mvf';
5236
- import type { PartialExcept } from '@mappedin/mvf/dist/locale';
5237
- import type { LocalePackUrls } from '@packages/internal/mvf-utils';
5238
- import type { LanguagePackHydrationItem } from '@mappedin/mappedin-js/mappedin-js/src/types';
5239
- import type { EnvControl } from '@packages/internal/mvf-utils/mvf-utils';
5240
- /**
5241
- * Places are the main objects that can be searched for.
5242
- */
5243
- export type Places = Space | Floor | Door | Connection | MapObject | PointOfInterest | Annotation | Area;
5244
- export type LocationWithLocale = PartialExcept<MvfEnterpriseLocation, 'id'>;
5245
- export type CategoryWithLocale = PartialExcept<MvfEnterpriseCategory, 'id'>;
5246
- export type LanguagePack = {
5247
- type: 'downloaded';
5248
- data: ParsedMVFLocalePack;
5249
- optimized: {
5250
- locations: Record<string, LocationWithLocale> | undefined;
5251
- categories: Record<string, CategoryWithLocale> | undefined;
5252
- };
5253
- } | {
5254
- type: 'initial';
5255
- optimized: {
5256
- locations: Record<string, MvfEnterpriseLocation>;
5257
- categories: Record<string, MvfEnterpriseCategory>;
5258
- };
5259
- };
5260
- export type TMapDataInternalOptions = {
5261
- env?: EnvControl;
5262
- enterprise?: boolean;
5263
- outdoorViewToken?: string;
5264
- localePacksUrls?: LocalePackUrls;
5265
- languagePacks?: LanguagePackHydrationItem[];
5266
- binaryBundle?: Uint8Array;
5267
- sasToken?: string;
5268
- };
5269
- }
5270
-
5271
5310
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes' {
5272
5311
  import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
5273
5312
  import { Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
@@ -5379,6 +5418,12 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
5379
5418
  * Whether the marker is enabled
5380
5419
  */
5381
5420
  enabled: boolean;
5421
+ /**
5422
+ * Whether the label is visible IF is is enabled
5423
+ * this can be used to have more granular control of whether the label shows up,
5424
+ * for example, if someone implements a layer system that shows/hides
5425
+ */
5426
+ visible: boolean;
5382
5427
  /**
5383
5428
  * HTML content of the marker as text
5384
5429
  */
@@ -5406,6 +5451,14 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
5406
5451
  */
5407
5452
  interactive?: boolean | 'pointer-events-auto';
5408
5453
  };
5454
+ /**
5455
+ * 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.
5456
+ */
5457
+ anchor: MarkerAnchor | MarkerAnchor[];
5458
+ /**
5459
+ * Dynamic resize of the marker. If set to true, the marker will resize based on the content.
5460
+ */
5461
+ dynamicResize: boolean;
5409
5462
  };
5410
5463
  export const addMarkerOptionsSchema: z.ZodObject<{
5411
5464
  rank: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["low", "medium", "high", "always-visible"]>, z.ZodNumber]>>;
@@ -5417,14 +5470,14 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
5417
5470
  interactive?: boolean | "pointer-events-auto" | undefined;
5418
5471
  id?: string | undefined;
5419
5472
  anchor?: "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
5420
- rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5421
5473
  dynamicResize?: boolean | undefined;
5474
+ rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5422
5475
  }, {
5423
5476
  interactive?: boolean | "pointer-events-auto" | undefined;
5424
5477
  id?: string | undefined;
5425
5478
  anchor?: "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ("center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right")[] | undefined;
5426
- rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5427
5479
  dynamicResize?: boolean | undefined;
5480
+ rank?: number | "low" | "medium" | "high" | "always-visible" | undefined;
5428
5481
  }>;
5429
5482
  export function validateMarker(coordinate: Position, contentHTML: string, options: AddMarkerOptions): void;
5430
5483
  export type MarkerAnchor = 'top' | 'bottom' | 'left' | 'right' | 'center' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
@@ -5470,6 +5523,11 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
5470
5523
  options: Required<AddMarkerOptions>;
5471
5524
  projection: Vector2;
5472
5525
  enabled: boolean;
5526
+ /**
5527
+ * Whether the marker can be shown, which is decided by the collision engine
5528
+ */
5529
+ canShow: boolean;
5530
+ visible: boolean;
5473
5531
  offscreen: boolean;
5474
5532
  activeStrategyIndex: number;
5475
5533
  strategyIndex: number;
@@ -5491,7 +5549,6 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
5491
5549
  visibilityNeedsUpdate: 'show' | 'hide' | false;
5492
5550
  constructor(contentHtml: string, options?: AddMarkerOptions);
5493
5551
  updateDimensions(width?: number, height?: number): void;
5494
- visible: boolean;
5495
5552
  animation: Animation | null;
5496
5553
  currentStrategyIndex: number;
5497
5554
  onStrategySelected: (strategyIndex: number, force?: boolean) => void;
@@ -5727,7 +5784,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
5727
5784
  import type { EntityId, Position } from '@mappedin/mappedin-js/geojson/src/types';
5728
5785
  import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
5729
5786
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
5730
- import type { CollisionRankingTier } from '@mappedin/mappedin-js/geojson/src';
5787
+ import type { CollisionRankingTier, GeometryState } from '@mappedin/mappedin-js/geojson/src';
5731
5788
  import { z } from 'zod';
5732
5789
  import type { PackedBBoxes } from '@mappedin/mappedin-js/geojson/src/systems/collisions/system';
5733
5790
  export const addLabelOptionsSchema: z.ZodObject<{
@@ -5894,7 +5951,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
5894
5951
  } | undefined;
5895
5952
  } | undefined;
5896
5953
  }>;
5897
- export function validateLabel(coordinate: Position, text: string, options: AddLabelOptions): void;
5954
+ export function validateLabel(coordinate: Position | EntityId<GeometryState>, text: string, options: AddLabelOptions): void;
5898
5955
  export const labelThemes: {
5899
5956
  lightOnDark: {
5900
5957
  text: {
@@ -6152,6 +6209,12 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
6152
6209
  * Whether the label is enabled
6153
6210
  */
6154
6211
  enabled: boolean;
6212
+ /**
6213
+ * Whether the label is visible IF is is enabled
6214
+ * this can be used to have more granular control of whether the label shows up,
6215
+ * for example, if someone implements a layer system that shows/hides,
6216
+ */
6217
+ visible: boolean;
6155
6218
  /**
6156
6219
  * Text content of the label
6157
6220
  */
@@ -6187,6 +6250,10 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
6187
6250
  visible: boolean;
6188
6251
  enabled: boolean;
6189
6252
  offscreen: boolean;
6253
+ /**
6254
+ * Whether the label can be shown, which is decided by the collision engine
6255
+ */
6256
+ canShow: boolean;
6190
6257
  activeBoundingBox: {
6191
6258
  x: number;
6192
6259
  y: number;
@@ -7206,7 +7273,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
7206
7273
  import { DrawSystem } from '@mappedin/mappedin-js/geojson/src/systems/draw/system';
7207
7274
  import { TwoDVisibilitySystem } from '@mappedin/mappedin-js/geojson/src/systems/2d-visibility/system';
7208
7275
  import { RenderSystem } from '@mappedin/mappedin-js/geojson/src/systems/render/system';
7209
- import type { Position as GeoJsonPosition, FeatureCollection, LineString, MultiPolygon, Polygon, Point, Feature } from 'geojson';
7276
+ import type { Position as GeoJsonPosition, FeatureCollection, LineString, MultiPolygon, Polygon, Point, Feature, BBox } from 'geojson';
7210
7277
  import type { AddPathOptions, PathProperties, PathState, PathUpdateState } from '@mappedin/mappedin-js/geojson/src/components/path';
7211
7278
  import { StackSystem } from '@mappedin/mappedin-js/geojson/src/systems/stack/system';
7212
7279
  import { CameraSystem } from '@mappedin/mappedin-js/geojson/src/systems/camera';
@@ -7324,7 +7391,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
7324
7391
  id: string;
7325
7392
  type: string;
7326
7393
  };
7327
- getParentContainer: (parent?: EntityId<GroupContainerState> | string | number | null, defaultToScene?: boolean) => GroupContainerObject3D | undefined;
7394
+ getParentContainer: (parent?: EntityId<GroupContainerState> | EntityId<GeometryState> | string | number | null, defaultToScene?: boolean) => GroupContainerObject3D | undefined;
7328
7395
  /**
7329
7396
  * Add a custom THREE.js entity to the map. The geometry is placed at the GeoJSON coordinate and includes a `setup` and `update` methods.
7330
7397
  * Setup is called when the first time the geometry visible, and update is called every render frame.
@@ -7374,7 +7441,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
7374
7441
  /**
7375
7442
  * Add a 2D label at a GeoJSON coordinate.
7376
7443
  */
7377
- addLabel2D(coordinate: Position, text: string, options?: AddLabelOptions, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<LabelState> | undefined;
7444
+ addLabel2D(coordinate: Position, text: string, options?: AddLabelOptions, parent?: EntityId<GroupContainerState> | string | null): EntityId<LabelState> | undefined;
7378
7445
  /**
7379
7446
  * Add a Path along a set of GeoJSON coordinates that can be animated.
7380
7447
  */
@@ -7488,6 +7555,13 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
7488
7555
  * @param layers The layers to filter out.
7489
7556
  */
7490
7557
  hideOutdoorLayersUnderPoint: (point: Position, layers: string[]) => void;
7558
+ /**
7559
+ * 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.
7560
+ * @param bbox The bounding box to filter layers under.
7561
+ * @param polygons The polygons to filter layers under.
7562
+ * @param layers The layers to filter out.
7563
+ */
7564
+ hideOutdoorLayersIntersectingPolygons: (bbox: BBox, polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>[], layers: string[]) => void;
7491
7565
  /**
7492
7566
  * Get the center of a geometry or bounding box.
7493
7567
  * @param geometryOrBoundingBox Geometry, geometry id, or bounding box to get the center of.
@@ -7582,12 +7656,16 @@ declare module '@mappedin/mappedin-js/geojson/src/camera' {
7582
7656
  duration?: number;
7583
7657
  easing?: EasingCurve;
7584
7658
  };
7659
+ export type AnimateElevationOptions = AnimationOptions & {
7660
+ interruptible?: boolean;
7661
+ };
7585
7662
  export type FocusOnOptions = AnimationOptions & {
7586
7663
  bearing?: number;
7587
7664
  pitch?: number;
7588
7665
  padding?: InsetPaddingOption;
7589
7666
  minZoomLevel?: number;
7590
7667
  maxZoomLevel?: number;
7668
+ interruptible?: boolean;
7591
7669
  };
7592
7670
  export type AnimateToOptions = AnimationOptions & {
7593
7671
  center?: Position;
@@ -7595,6 +7673,7 @@ declare module '@mappedin/mappedin-js/geojson/src/camera' {
7595
7673
  bearing?: number;
7596
7674
  pitch?: number;
7597
7675
  elevation?: number;
7676
+ interruptible?: boolean;
7598
7677
  };
7599
7678
  export const ANIMATION_TWEENS: {
7600
7679
  linear: (amount: number) => number;
@@ -7710,7 +7789,7 @@ declare module '@mappedin/mappedin-js/geojson/src/camera' {
7710
7789
  * @param elevation The new elevation in meters.
7711
7790
  * @param options The animation options.
7712
7791
  */
7713
- animateElevation(elevation: number, options?: AnimationOptions): Promise<void>;
7792
+ animateElevation(elevation: number, options?: AnimateElevationOptions): Promise<void>;
7714
7793
  /**
7715
7794
  * The padding around the edges of the map when focusing on a set of coordinates.
7716
7795
  */
@@ -8173,9 +8252,8 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
8173
8252
  import type { KeysOfUnion } from '@mappedin/mappedin-js/geojson/src/utils';
8174
8253
  import { GeometryGroupObject3D, type GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
8175
8254
  import { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
8176
- import type { Geometry3DTypes, TextGeometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
8177
- import { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
8178
- import { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
8255
+ import { Geometry3D, Geometry3DObject3D, type Geometry3DTypes, type TextGeometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
8256
+ import { Geometry2D, Geometry2DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
8179
8257
  import type { StyleComponent } from '@mappedin/mappedin-js/geojson/src/components/styles/style';
8180
8258
  import type { GeometryGroupStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/geometry-group-style';
8181
8259
  import { type Text3DState, type UpdatableText3DState } from '@mappedin/mappedin-js/geojson/src/components/text3d';
@@ -8206,6 +8284,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
8206
8284
  export function updateIndividualGeometryRenderOrder(entity: Geometry3D, update?: number): boolean;
8207
8285
  export function handlePathUpdate(geometry: Geometry3DTypes, update: PathUpdateState): void;
8208
8286
  export function pickPathOptions(update: PathUpdateState): Partial<PathUpdateState>;
8287
+ export function getEntityId(entityOrEntityId: Geometry2D | Geometry3DTypes | Geometry2DObject3D | Geometry3DObject3D | GeometryGroupObject3D | GroupContainerObject3D | string | number): any;
8209
8288
  export function assetGeometryIsText3D(geometry: Geometry3DTypes): asserts geometry is TextGeometry3D;
8210
8289
  /**
8211
8290
  * @internal
@@ -8498,7 +8577,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/styles' {
8498
8577
  }
8499
8578
 
8500
8579
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
8501
- import type { Position, RendererCore, WatermarkOptions } from '@mappedin/core-sdk';
8580
+ import type { RendererCore, WatermarkOptions } from '@mappedin/core-sdk';
8502
8581
  import { type TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
8503
8582
  import { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
8504
8583
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
@@ -8522,6 +8601,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
8522
8601
  import { Shapes } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes';
8523
8602
  import { Style } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/style';
8524
8603
  import Outdoor from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor';
8604
+ import { type BBox } from 'geojson';
8525
8605
  import { Text3D } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/text3d';
8526
8606
  export class GeoJsonApi {
8527
8607
  core: RendererCore;
@@ -8532,7 +8612,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
8532
8612
  };
8533
8613
  mapData?: MapData;
8534
8614
  currentMap: GeojsonApiMapObject;
8535
- hiddenOutdoorGeometries: [Position, layer: string[]][];
8615
+ hiddenOutdoorGeometries: [
8616
+ BBox,
8617
+ polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>[],
8618
+ layers: string[]
8619
+ ][];
8536
8620
  mapView: MapView;
8537
8621
  Camera: Camera;
8538
8622
  Labels: Labels;
@@ -8587,8 +8671,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
8587
8671
  import { type AggregatedStyleMap } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils';
8588
8672
  import { StackedMaps } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
8589
8673
  import type { TFloorChangeReason } from '@mappedin/mappedin-js/mappedin-js/src/events';
8590
- import type { Path, Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
8591
- import type { Door, PointOfInterest, MapObject, Node, MapDataInternal, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
8674
+ import type { Path, Shape, Label } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
8675
+ import { type Door, type PointOfInterest, type MapObject, type Node, type MapDataInternal, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
8592
8676
  import { type GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
8593
8677
  import { FloorStackObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-stack-object';
8594
8678
  import { DynamicFocus } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/dynamic-focus';
@@ -8673,10 +8757,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
8673
8757
  }) => void;
8674
8758
  add: (coordinate: Position, text: string, opts?: AddLabelOptions & {
8675
8759
  floorId?: string;
8760
+ spaceId?: string;
8676
8761
  }) => {
8677
8762
  id: string | number;
8678
8763
  };
8679
- remove: (targetId: string) => void;
8764
+ remove: ({ label, entityId }: {
8765
+ label: Label;
8766
+ entityId: string;
8767
+ }) => void;
8680
8768
  removeAll: () => void;
8681
8769
  };
8682
8770
  Paths: {
@@ -9130,7 +9218,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/labels' {
9130
9218
  import { Label } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
9131
9219
  import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
9132
9220
  import type { PointOfInterest, MapObject } from '@mappedin/mappedin-js/mappedin-js/src';
9133
- import type { Space, Door, Coordinate, Node } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9221
+ import { Space, Door, Coordinate, Node } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
9134
9222
  /**
9135
9223
  * Class used to add and remove a {@link Label} on the {@link MapView}.
9136
9224
  *
@@ -9703,7 +9791,13 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/style' {
9703
9791
  }
9704
9792
 
9705
9793
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor' {
9706
- import { type RendererCore, type Position } from '@mappedin/core-sdk';
9794
+ import { type RendererCore } from '@mappedin/core-sdk';
9795
+ import type { BBox } from 'geojson';
9796
+ export type HiddenOutdoorGeometry = [
9797
+ BBox,
9798
+ polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>[],
9799
+ layers: string[]
9800
+ ];
9707
9801
  /**
9708
9802
  * 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.
9709
9803
  *
@@ -9722,7 +9816,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor' {
9722
9816
  /**
9723
9817
  * @internal
9724
9818
  */
9725
- constructor(core: RendererCore, hiddenOutdoorGeometry?: [Position, string[]][]);
9819
+ constructor(core: RendererCore, hiddenOutdoorGeometry?: HiddenOutdoorGeometry[]);
9726
9820
  /**
9727
9821
  * 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.
9728
9822
  * @param style {any}
@@ -10549,7 +10643,8 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry3d' {
10549
10643
  import type { ImageComponent } from '@mappedin/mappedin-js/geojson/src/components/image';
10550
10644
  import type { CustomGeometryComponent } from '@mappedin/mappedin-js/geojson/src/components/custom';
10551
10645
  import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
10552
- import type { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
10646
+ import type { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
10647
+ import { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
10553
10648
  import type { Text3DComponent } from '@mappedin/mappedin-js/geojson/src/components/text3d';
10554
10649
  import type { Text3DStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/styles';
10555
10650
  export enum Geometry3DComponents {
@@ -10578,9 +10673,13 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry3d' {
10578
10673
  id: string | number;
10579
10674
  components: [M, S, I?];
10580
10675
  get object3d(): M["mesh"];
10581
- get parent(): GroupContainerObject3D | GeometryGroupObject3D | null;
10676
+ get parentObject3D(): GroupContainerObject3D | GeometryGroupObject3D | null;
10582
10677
  get type(): T;
10678
+ entities2D: Map<string | number, Geometry2D>;
10583
10679
  constructor(meshComponent: M, styleComponent: S);
10680
+ addEntity(entity: Geometry2D): void;
10681
+ removeEntity(entity: Geometry2D): void;
10682
+ removeAllEntities(): void;
10584
10683
  }
10585
10684
  export type TextGeometry3D = Geometry3D<Text3DComponent, Text3DStyleComponent, InteractionComponent, 'text3d'>;
10586
10685
  export type CustomGeometry3D = Geometry3D<CustomGeometryComponent, StyleComponent, InteractionComponent, 'custom-geometry'>;
@@ -10680,17 +10779,17 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry2d' {
10680
10779
  import type LabelComponent from '@mappedin/mappedin-js/geojson/src/components/label';
10681
10780
  import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
10682
10781
  import type { InteractionComponent } from '@mappedin/mappedin-js/geojson/src/components/interaction';
10782
+ import { type GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
10683
10783
  export enum Geometry2DComponents {
10684
10784
  UI = 0,
10685
10785
  Interaction = 1
10686
10786
  }
10687
10787
  export class Geometry2DObject3D extends Object3D {
10688
- readonly type: "geometry2dObject3d";
10689
10788
  }
10690
10789
  export class Geometry2D {
10691
10790
  id: string | number;
10692
10791
  get type(): 'label' | 'marker';
10693
- get parent(): GroupContainerObject3D | null;
10792
+ get parentObject3D(): GroupContainerObject3D | GeometryGroupObject3D | null;
10694
10793
  /**
10695
10794
  * When the position of the entity changes, this should be set to true, so that systems like pan bounds can update
10696
10795
  */
@@ -10700,6 +10799,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry2d' {
10700
10799
  disposed: boolean;
10701
10800
  constructor(ui: MarkerComponent | LabelComponent, position: Vector3);
10702
10801
  get position(): Vector3;
10802
+ setAltitude(z: number): void;
10703
10803
  }
10704
10804
  }
10705
10805
 
@@ -11548,9 +11648,11 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/geometry-in-focus/syst
11548
11648
  declare module '@mappedin/mappedin-js/geojson/src/systems/outdoor-layers/system' {
11549
11649
  import type { Map } from '@packages/internal/outdoor-context-v4';
11550
11650
  import type { Position } from '@mappedin/mappedin-js/geojson/src/renderer';
11651
+ import { type BBox } from 'geojson';
11551
11652
  export class OutdoorLayers {
11552
11653
  dirty: boolean;
11553
11654
  hideLayersUnderPoint(point: Position, layers: string[]): void;
11655
+ hideLayersIntersectingPolygons(bbox: BBox, polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>[], layers: string[]): void;
11554
11656
  constructor(map?: Map);
11555
11657
  destroy(): void;
11556
11658
  }
@@ -11952,8 +12054,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object'
11952
12054
  import type { TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
11953
12055
  class Layer {
11954
12056
  containerId: string;
12057
+ labelIds: Set<string>;
11955
12058
  layers: Map<string, string>;
11956
- constructor(containerId: string, layers?: Map<any, any>);
12059
+ renderer: RendererCore;
12060
+ constructor(renderer: RendererCore, containerId: string, layers?: Map<any, any>);
12061
+ show(): void;
12062
+ hide(): void;
11957
12063
  }
11958
12064
  export class FloorObject implements MVFFloor {
11959
12065
  id: string;
@@ -11979,7 +12085,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils' {
11979
12085
  import { Coordinate, type MapObject, type Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
11980
12086
  import type { Position, EntranceCollection, LineString, Polygon, Point, SpaceProperties, ObstructionProperties, StyleCollection, PolygonStyle, LineStringStyle, Feature, ObstructionCollection, PointStyle } from '@mappedin/mvf';
11981
12087
  import type { WithPolygonImage } from '@packages/internal/mvf-utils';
11982
- import type { FeatureCollection, MultiLineString } from 'geojson';
12088
+ import type { BBox, FeatureCollection, MultiLineString } from 'geojson';
11983
12089
  import type { LabelState, MarkerState, GeometryState, CollisionRankingTier, LineStyle, PaintStyle } from '@mappedin/core-sdk';
11984
12090
  import { type TGeometryState, type TLabelState, type TDirectionInstructionAction, type TShow3DMapOptions, type Label, type Marker, type Model } from '@mappedin/mappedin-js/mappedin-js/src';
11985
12091
  import type { TDoorsState, TMarkerState, TWallsState } from '@mappedin/mappedin-js/mappedin-js/src/types';
@@ -12010,10 +12116,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils' {
12010
12116
  export type WithId<T> = T & {
12011
12117
  id?: string;
12012
12118
  };
12013
- export function groupGeometryByStyle(features: Feature<LineString | Polygon | Point, SpaceProperties | ObstructionProperties>[], styleMap: AggregatedStyleMap): Map<WithId<PolygonStyle> | WithId<LineStringStyle> | WithId<PointStyle>, Feature<Point | LineString | Polygon, WithPolygonImage<SpaceProperties> | WithPolygonImage<ObstructionProperties>>[]>;
12119
+ 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>>[]>;
12014
12120
  export function translateToCoreStyle(style: PolygonStyle | LineStringStyle, userOptions?: TShow3DMapOptions): PaintStyle | LineStyle;
12015
12121
  export const getTargetID: <T extends Space | Shape | MapObject | Label | Text3D | Marker | Model | Image | string>(target: T, api: GeoJsonApi) => string | undefined;
12016
12122
  export function tweenToPromise(tween: Tween): Promise<void>;
12123
+ export function getBoundingBox(geometry: GeoJSON.Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon, any>): BBox;
12124
+ export function expandBbox(bbox: BBox, bboxToExpand: BBox): number[];
12017
12125
  export function unique<T>(array: T[]): T[];
12018
12126
  }
12019
12127
 
@@ -12021,7 +12129,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-stack-ob
12021
12129
  import type { RendererCore } from '@mappedin/core-sdk';
12022
12130
  import type { FloorId, FloorStack as MVFFloorStack, Facade as MVFFacade } from '@mappedin/mvf';
12023
12131
  import type { FloorObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object';
12024
- export class FloorStackObject implements Omit<MVFFloorStack, 'maps' | 'floors' | 'defaultFloor'> {
12132
+ export class FloorStackObject implements Omit<MVFFloorStack, 'maps' | 'floors' | 'defaultFloor' | 'footprint'> {
12025
12133
  #private;
12026
12134
  id: MVFFloorStack['id'];
12027
12135
  externalId: MVFFloorStack['externalId'];
@@ -12033,7 +12141,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-stack-ob
12033
12141
  floorObjects: FloorObject[];
12034
12142
  floorObjectsByElevation: Map<number, FloorObject>;
12035
12143
  metadata?: MVFFloorStack['metadata'];
12036
- footprint?: MVFFloorStack['footprint'];
12037
12144
  containerId: string;
12038
12145
  facade?: MVFFacade;
12039
12146
  constructor(floorStack: MVFFloorStack, parentId: string, renderer: RendererCore, facade?: MVFFacade);
@@ -12051,7 +12158,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-pr
12051
12158
  import { Rectangle } from '@packages/internal/quad-tree';
12052
12159
  export type TSerializedCollider = {
12053
12160
  rank: number;
12054
- enabled: boolean;
12161
+ enabledAndVisible: boolean;
12055
12162
  x: number;
12056
12163
  y: number;
12057
12164
  bboxes: {
@@ -12483,13 +12590,13 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/camera/system' {
12483
12590
  * @param [curve] {Mappedin.Easing} The animation curve to use for the animation.
12484
12591
  * @param [callback] {Function} A callback that will be executed when the animation is done.
12485
12592
  * @param [options] {Object} An Options object
12486
- * @param [options.mode=cancel] {Object} Mode determines what happens when multiple animateCamera calls happen at once. By Default,
12593
+ * @param [options.interruptible=true] {Boolean} Determines if this animation must complete before any new animations start
12487
12594
  it will cancel and omit any previous animations. Set to "chain" to chain instead
12488
12595
  *
12489
12596
  * @return {Mappedin.Tween} The tween being used, if you want to do anything to control it manually. Do not overide it's events.
12490
12597
  */
12491
12598
  animateCamera: (target: AnimateCameraTarget, duration: number, curve?: (n: number) => number, callback?: (...args: any) => void, cancelledCallback?: (...args: any) => void, options?: {
12492
- mode: keyof typeof CAMERA_CONSTANTS.CONTROL_OPTIONS;
12599
+ interruptible?: boolean;
12493
12600
  }) => Promise<void>;
12494
12601
  /**
12495
12602
  * Allows you to set any of the Camera's position, zoom, rotation and tilt at once, with one function.
@@ -12755,6 +12862,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/camera/types' {
12755
12862
  boundingBox?: any;
12756
12863
  callback?: () => void;
12757
12864
  cancelledCallback?: () => void;
12865
+ interruptible?: boolean;
12758
12866
  };
12759
12867
  }
12760
12868