@mappedin/react-sdk 6.0.1-beta.13 → 6.0.1-beta.15

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.
@@ -12,8 +12,8 @@
12
12
  // ../react/@packages/internal/geojson-navigator
13
13
  // ../react/@tweenjs/tween.js
14
14
  // ../react/@mappedin/mvf/dist/locale
15
- // ../react/zod
16
15
  // ../react/three
16
+ // ../react/zod
17
17
  // ../react/@packages/internal/shave-text/shave-text
18
18
  // ../react/@turf/turf
19
19
  // ../react/@packages/internal/quad-tree
@@ -566,7 +566,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src' {
566
566
  export { parseMVF, unzipMVF, enableTestMode };
567
567
  export type { MapView, MapData, MappedinMapLibreOverlay, TEvents, TEventPayload, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAmbientOcclusionOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, };
568
568
  export type * from 'geojson';
569
- export type { TUpdateState, TLabelState, TGeometryState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TCameraFocusOnTarget, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, } from '@mappedin/react-sdk/mappedin-js/src/types';
569
+ export type { TUpdateState, TLabelState, TGeometryState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TCameraFocusOnTarget, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, TBlueDotPositionUpdate, } from '@mappedin/react-sdk/mappedin-js/src/types';
570
570
  export { WALLS, DOORS } from '@mappedin/react-sdk/mappedin-js/src/types';
571
571
  export type { Label, Marker, Path, Shape, CameraTransform, Model } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
572
572
  export type { Navigation, TNavigationOptions } from '@mappedin/react-sdk/mappedin-js/src/navigation';
@@ -803,7 +803,18 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data' {
803
803
  * @example
804
804
  * const directions = await map.getDirections(space1, space2);
805
805
  */
806
- getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | (TNavigationTarget | TNavigationTarget[])[], options?: TGetDirectionsOptions) => Directions | Directions[] | undefined;
806
+ getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | TNavigationTarget[], options?: TGetDirectionsOptions) => Directions | undefined;
807
+ /**
808
+ * Retrieves directions ({@link Directions}) from one navigable point ({@link TNavigationTarget}) to multiple destination points on the map.
809
+ *
810
+ * @param from The starting point for navigation.
811
+ * @param to The destination points.
812
+ * @param options Optional parameters for getting directions.
813
+ * @returns Directions from the start to the destination points.
814
+ * @example
815
+ * const directions = await map.getDirections(space1, [space2, space3]);
816
+ */
817
+ getDirectionsMultiDestination: (from: TNavigationTarget, to: (TNavigationTarget | TNavigationTarget[])[], options?: TGetDirectionsOptions) => Directions[] | undefined;
807
818
  /**
808
819
  * Retrieves the distance between two navigable points ({@link TNavigationTarget}) on the map.
809
820
  *
@@ -834,7 +845,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/events' {
834
845
  import type { ClickPayload } from '@mappedin/core-sdk';
835
846
  import type { TStackedMapsEvents } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
836
847
  import type { Coordinate, Floor, MapObject, Space } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
837
- import type { Label, Marker, Model } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
848
+ import type { Label, Marker, Model, Path } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
838
849
  import type { CameraTransform } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects/camera-transform';
839
850
  export type TFloorChangeReason = '' | 'blue-dot-floor-change' | 'elevation-change';
840
851
  export type TClickPayload = {
@@ -842,6 +853,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/events' {
842
853
  * The coordinate of the interaction.
843
854
  */
844
855
  coordinate: Coordinate;
856
+ /**
857
+ * The interactive paths which the user interaction passed through.
858
+ */
859
+ paths: Path[];
845
860
  /**
846
861
  * The interactive spaces which the user interaction passed through.
847
862
  */
@@ -1137,7 +1152,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects' {
1137
1152
  * change the langauge of the data objects in mapdata
1138
1153
  */
1139
1154
  changeLanguage(languageCode: string): Promise<void>;
1140
- getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | (TNavigationTarget | TNavigationTarget[])[], opt?: TGetDirectionsOptions) => Directions | Directions[] | undefined;
1155
+ getDirectionsMultiDestination: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | (TNavigationTarget | TNavigationTarget[])[], opt?: TGetDirectionsOptions) => Directions | Directions[] | undefined;
1156
+ getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | (TNavigationTarget | TNavigationTarget[])[], opt?: TGetDirectionsOptions & {
1157
+ multiSegment?: true;
1158
+ }) => Directions | Directions[] | undefined;
1141
1159
  getDistance(from: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation, to: Space | Door | Coordinate | MapObject | PointOfInterest | Annotation | Node | EnterpriseLocation): number;
1142
1160
  toJSONBundle({ downloadLanguagePacks, }?: {
1143
1161
  downloadLanguagePacks?: boolean;
@@ -1326,7 +1344,16 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view' {
1326
1344
  * @example
1327
1345
  * const directions = await map.getDirections(space1, space2);
1328
1346
  */
1329
- getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | (TNavigationTarget | TNavigationTarget[])[], options?: TGetDirectionsOptions) => Directions | Directions[] | undefined;
1347
+ getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | TNavigationTarget[], options?: TGetDirectionsOptions) => Directions | undefined;
1348
+ /**
1349
+ * Retrieves directions ({@link Directions}) from one navigable point ({@link TNavigationTarget}) to multiple destination points on the map.
1350
+ *
1351
+ * @param from The starting point for navigation.
1352
+ * @param to The destination points.
1353
+ * @param options Optional parameters for getting directions.
1354
+ * @returns Directions from the start to the destination points.
1355
+ */
1356
+ getDirectionsMultiDestination: (from: TNavigationTarget, to: (TNavigationTarget | TNavigationTarget[])[], options?: TGetDirectionsOptions) => Directions[] | undefined;
1330
1357
  /**
1331
1358
  * Retrieves the distance between two navigable points ({@link TNavigationTarget}) on the map.
1332
1359
  *
@@ -1482,6 +1509,9 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1482
1509
  export type DeepRequired<T> = Required<{
1483
1510
  [K in keyof T]: T[K] extends Required<T[K]> ? T[K] : DeepRequired<T[K]>;
1484
1511
  }>;
1512
+ export type DeepPartial<T> = Partial<{
1513
+ [K in keyof T]: T[K] extends Partial<T[K]> ? DeepPartial<T[K]> : T[K];
1514
+ }>;
1485
1515
  export type CancellablePromise<T> = {
1486
1516
  promise: Promise<T>;
1487
1517
  cancel: () => void;
@@ -1808,10 +1838,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
1808
1838
  left: number;
1809
1839
  };
1810
1840
  };
1841
+ export type TCameraFocusOnTargets = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | Node;
1811
1842
  /**
1812
1843
  * Defines the target for the {@link Camera} focus operation.
1844
+ * @interface
1813
1845
  */
1814
- export type TCameraFocusOnTarget = Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Annotation | Node | (Floor | Space | Coordinate | MapObject | Connection | PointOfInterest | Door | Node)[];
1846
+ export type TCameraFocusOnTarget = TCameraFocusOnTargets | TCameraFocusOnTargets[];
1815
1847
  /**
1816
1848
  * Defines the target for camera operations.
1817
1849
  */
@@ -2102,12 +2134,6 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2102
2134
  * Options for controlling the behavior of the {@link Directions}.
2103
2135
  */
2104
2136
  export type TGetDirectionsOptions = {
2105
- /**
2106
- * If true directions will be shown as a multisegment route
2107
- *
2108
- * @default false
2109
- */
2110
- multiSegment?: boolean;
2111
2137
  /**
2112
2138
  * If true directions will only take accessible routes
2113
2139
  *
@@ -2333,16 +2359,16 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2333
2359
  opacity?: number;
2334
2360
  };
2335
2361
  /**
2336
- * Options for the bearing directional indicator.
2362
+ * Options for the heading directional indicator.
2337
2363
  */
2338
- bearing?: {
2364
+ heading?: {
2339
2365
  /**
2340
- * The color of the bearing cone.
2366
+ * The color of the heading cone.
2341
2367
  * @default #2266ff
2342
2368
  */
2343
2369
  color?: string;
2344
2370
  /**
2345
- * The opacity of the bearing cone.
2371
+ * The opacity of the heading cone.
2346
2372
  * @default 0.7
2347
2373
  */
2348
2374
  opacity?: number;
@@ -2353,12 +2379,50 @@ declare module '@mappedin/react-sdk/mappedin-js/src/types' {
2353
2379
  * @default 30000
2354
2380
  */
2355
2381
  timeout?: number;
2382
+ /**
2383
+ * Whether to watch the browser's position.
2384
+ * @default true
2385
+ */
2386
+ watchBrowserPosition?: boolean;
2356
2387
  /**
2357
2388
  * Whether to log debug messages.
2358
2389
  * @default false
2359
2390
  */
2360
2391
  debug?: boolean;
2361
2392
  };
2393
+ /**
2394
+ * Position update options for the {@link BlueDot.update} method.
2395
+ */
2396
+ export type TBlueDotPositionUpdate = {
2397
+ /**
2398
+ * Latitude to override.
2399
+ * Set to `'device'` to reset to the device's latitude.
2400
+ */
2401
+ latitude?: GeolocationPosition['coords']['latitude'] | 'device' | undefined;
2402
+ /**
2403
+ * Longitude to override.
2404
+ * Set to `'device'` to reset to the device's longitude.
2405
+ */
2406
+ longitude?: GeolocationPosition['coords']['longitude'] | 'device' | undefined;
2407
+ /**
2408
+ * Accuracy to override.
2409
+ * Set to `'device'` to reset to the device's accuracy.
2410
+ * Set to `undefined` to disable the accuracy ring.
2411
+ */
2412
+ accuracy?: GeolocationPosition['coords']['accuracy'] | 'device' | undefined;
2413
+ /**
2414
+ * Heading to override.
2415
+ * Set to `'device'` to reset to the device's heading.
2416
+ * Set to `undefined` to disable the heading indicator.
2417
+ */
2418
+ heading?: GeolocationPosition['coords']['heading'] | 'device' | undefined;
2419
+ /**
2420
+ * Floor level to override.
2421
+ * Set to `'device'` to reset to the device's floor level.
2422
+ * Set to `undefined` to disable floor level and show the BlueDot on all floors.
2423
+ */
2424
+ floor?: Floor | 'device' | undefined;
2425
+ };
2362
2426
  export type LanguagePackHydrationItem = {
2363
2427
  language: Language;
2364
2428
  localePack: ParsedMVFLocalePack;
@@ -2376,8 +2440,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-view-objects' {
2376
2440
  }
2377
2441
 
2378
2442
  declare module '@mappedin/react-sdk/mappedin-js/src/navigation' {
2443
+ import { type TDirectionInstruction } from '@mappedin/react-sdk/mappedin-js/src';
2379
2444
  import type { Directions } from '@mappedin/react-sdk/mappedin-js/src/api-geojson';
2380
2445
  import type { GeojsonApiMapObject } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object';
2446
+ import { Path, Marker } from '@mappedin/react-sdk/mappedin-js/src/map-view-objects';
2381
2447
  import type { RendererCore } from '@mappedin/core-sdk';
2382
2448
  /**
2383
2449
  * Options for navigation.
@@ -2412,6 +2478,12 @@ declare module '@mappedin/react-sdk/mappedin-js/src/navigation' {
2412
2478
  * @default '#40A9FF'
2413
2479
  */
2414
2480
  color?: string;
2481
+ /**
2482
+ * Whether the path should be clickable.
2483
+ *
2484
+ * @defaultValue false
2485
+ */
2486
+ interactive?: boolean;
2415
2487
  /**
2416
2488
  * The accent color of the path. This is applied to arrows if they are displayed
2417
2489
  * @default 'blue'
@@ -2468,6 +2540,20 @@ declare module '@mappedin/react-sdk/mappedin-js/src/navigation' {
2468
2540
  * @internal
2469
2541
  */
2470
2542
  constructor(core: RendererCore, currentMapGetter: CurrentMapGetter);
2543
+ /**
2544
+ * @internal
2545
+ */
2546
+ getPathById(id: string): {
2547
+ path: Path;
2548
+ entityIds: string[];
2549
+ } | undefined;
2550
+ /**
2551
+ * @internal
2552
+ */
2553
+ getMarkerById(id: string): {
2554
+ instruction: TDirectionInstruction;
2555
+ marker: Marker;
2556
+ } | undefined;
2471
2557
  /**
2472
2558
  * Draws the specified directions on the map.
2473
2559
  * @param directions The directions to be drawn.
@@ -3302,7 +3388,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/floor' {
3302
3388
  }
3303
3389
 
3304
3390
  declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/connection' {
3305
- import type { FeatureCollection, Image, Point, SpaceProperties } from '@mappedin/mvf';
3391
+ import type { Feature, FeatureCollection, Image, Point, SpaceProperties, Connection as MVFConnection } from '@mappedin/mvf';
3306
3392
  import Coordinate from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/coordinate';
3307
3393
  import type { Floor, MapDataInternal } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
3308
3394
  import BaseMapData from '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-object';
@@ -3332,7 +3418,8 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/connection'
3332
3418
  * @internal
3333
3419
  */
3334
3420
  constructor(data: MapDataInternal, options: {
3335
- mvfDataByFloorId: Record<string, FeatureCollection<Point, SpaceProperties>['features'][number]>;
3421
+ mvfDataByFloorId: Record<string, FeatureCollection<Point, SpaceProperties>['features'][number]> | Record<string, Feature<Point, MVFConnection>>;
3422
+ accessible?: boolean;
3336
3423
  });
3337
3424
  /**
3338
3425
  * Gets the name of the connection.
@@ -3342,6 +3429,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/connection'
3342
3429
  get name(): string;
3343
3430
  get description(): string;
3344
3431
  get images(): Image[];
3432
+ get accessible(): boolean;
3345
3433
  /**
3346
3434
  * Gets the external ID of the connection.
3347
3435
  *
@@ -4074,66 +4162,82 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/blue-dot/blue-do
4074
4162
  import type { RendererCore } from '@mappedin/core-sdk';
4075
4163
  import { PubSub } from '@packages/internal/common';
4076
4164
  import type { GeoJsonApi } from '@mappedin/react-sdk/mappedin-js/src/api-geojson/api';
4077
- import type { TBlueDotOptions } from '@mappedin/react-sdk/mappedin-js/src/types';
4078
- import { z } from 'zod';
4165
+ import type { TBlueDotOptions, TBlueDotPositionUpdate } from '@mappedin/react-sdk/mappedin-js/src/types';
4166
+ import { Coordinate, type Floor } from '@mappedin/react-sdk/mappedin-js/src/map-data-objects';
4079
4167
  export type TBlueDotEvents = {
4080
- 'floor-change': {
4081
- reason: 'blue-dot-floor-change';
4082
- floorId: string;
4083
- };
4168
+ 'floor-change': {
4169
+ reason: 'blue-dot-floor-change';
4170
+ floorId: string;
4171
+ };
4084
4172
  };
4085
4173
  export type TBlueDotState = 'hidden' | 'active' | 'inactive' | 'disabled';
4086
4174
  export type TBlueDotAction = 'timeout' | 'error' | 'position-received' | 'enable' | 'disable';
4087
4175
  export class BlueDot extends PubSub<TBlueDotEvents> {
4088
- #private;
4089
- /**
4090
- * @internal
4091
- */
4092
- constructor(core: RendererCore, geoJSONApi: GeoJsonApi);
4093
- enable(options?: TBlueDotOptions): void;
4094
- disable(): void;
4176
+ #private;
4177
+ state: TBlueDotState;
4178
+ /**
4179
+ * The direction the user is facing in degrees from north.
4180
+ */
4181
+ get heading(): GeolocationPosition['coords']['heading'] | undefined;
4182
+ /**
4183
+ * The accuracy of the current position in metres.
4184
+ */
4185
+ get accuracy(): GeolocationPosition['coords']['accuracy'] | undefined;
4186
+ /**
4187
+ * The coordinate of the current position.
4188
+ */
4189
+ get coordinate(): Coordinate | undefined;
4190
+ /**
4191
+ * The floor the Blue Dot is currently on. If undefined, the Blue Dot will appear on every floor.
4192
+ */
4193
+ get floor(): Floor | undefined;
4194
+ /**
4195
+ * @internal
4196
+ */
4197
+ constructor(core: RendererCore, geoJSONApi: GeoJsonApi);
4198
+ /**
4199
+ * Enable the Blue Dot. It will be hidden until a position is received either from the browser or by calling {@link BlueDot.update}.
4200
+ * @param options - The options to setup the Blue Dot.
4201
+ */
4202
+ enable(options?: TBlueDotOptions): void;
4203
+ /**
4204
+ * Disable the Blue Dot. It will be hidden and no longer update.
4205
+ */
4206
+ disable(): void;
4207
+ /**
4208
+ * Enable or disable the devices's geolocation listener to automatically position the Blue Dot.
4209
+ * If enabled, the device will request permission to access the user's precise location.
4210
+ * @param watch - Whether to enable or disable the listener.
4211
+ */
4212
+ watchDevicePosition(watch: boolean): void;
4213
+ /**
4214
+ * Manually override some position properties of the Blue Dot.
4215
+ * Accepts a full GeolocationPosition object or a partial {@link TBlueDotPositionUpdate} object.
4216
+ * @example Manually set the accuracy and heading
4217
+ * ```ts
4218
+ * api.BlueDot.update({ accuracy: 10, heading: 90 });
4219
+ * ```
4220
+ * @example Reset accuracy and heading to device values
4221
+ * ```ts
4222
+ * api.BlueDot.update({ accuracy: 'device', heading: 'device' });
4223
+ * ```
4224
+ */
4225
+ update(position: GeolocationPositionExtended | TBlueDotPositionUpdate | undefined): void;
4095
4226
  }
4096
4227
  type TStateTransitions = {
4097
- [Action in TBlueDotAction]?: TBlueDotState;
4228
+ [Action in TBlueDotAction]?: TBlueDotState;
4098
4229
  };
4099
4230
  type TStateMachine = {
4100
- [State in TBlueDotState]: {
4101
- actions: TStateTransitions;
4102
- };
4231
+ [State in TBlueDotState]: {
4232
+ actions: TStateTransitions;
4233
+ };
4103
4234
  };
4104
4235
  export const stateMachine: TStateMachine;
4105
- export const positionSchema: z.ZodObject<{
4106
- coords: z.ZodObject<{
4107
- latitude: z.ZodNumber;
4108
- longitude: z.ZodNumber;
4109
- floorLevel: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
4110
- accuracy: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
4111
- }, "strip", z.ZodTypeAny, {
4112
- latitude: number;
4113
- longitude: number;
4114
- floorLevel?: number | null | undefined;
4115
- accuracy?: number | null | undefined;
4116
- }, {
4117
- latitude: number;
4118
- longitude: number;
4119
- floorLevel?: number | null | undefined;
4120
- accuracy?: number | null | undefined;
4121
- }>;
4122
- }, "strip", z.ZodTypeAny, {
4123
- coords: {
4124
- latitude: number;
4125
- longitude: number;
4126
- floorLevel?: number | null | undefined;
4127
- accuracy?: number | null | undefined;
4128
- };
4129
- }, {
4130
- coords: {
4131
- latitude: number;
4132
- longitude: number;
4133
- floorLevel?: number | null | undefined;
4134
- accuracy?: number | null | undefined;
4135
- };
4136
- }>;
4236
+ export type GeolocationPositionExtended = GeolocationPosition & {
4237
+ coords: GeolocationPosition['coords'] & {
4238
+ readonly floorLevel?: number;
4239
+ };
4240
+ };
4137
4241
  export {};
4138
4242
  }
4139
4243
 
@@ -4347,9 +4451,9 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
4347
4451
 
4348
4452
  declare module '@mappedin/react-sdk/geojson/src/components/path' {
4349
4453
  import { Vector3 } from 'three';
4350
- import type { Mesh, ShaderMaterial, BufferGeometry } from 'three';
4454
+ import type { Mesh, BufferGeometry } from 'three';
4351
4455
  import type { EntityId, Position } from '@mappedin/react-sdk/geojson/src/types';
4352
- import { Geometry3DObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
4456
+ import type { PathMaterial, PatMeshContainer } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
4353
4457
  import type { FeatureCollection, Point } from 'geojson';
4354
4458
  import type { GroupContainerState } from '@mappedin/react-sdk/geojson/src/entities/group-container';
4355
4459
  export type PathProperties = {
@@ -4358,6 +4462,11 @@ declare module '@mappedin/react-sdk/geojson/src/components/path' {
4358
4462
  */
4359
4463
  parentId?: EntityId<GroupContainerState> | string | null;
4360
4464
  };
4465
+ /**
4466
+ * Updatable path state
4467
+ * @interface
4468
+ */
4469
+ export type PathUpdateState = Omit<Partial<PathState>, 'id' | 'type'>;
4361
4470
  /**
4362
4471
  * State representing a Path
4363
4472
  */
@@ -4386,6 +4495,30 @@ declare module '@mappedin/react-sdk/geojson/src/components/path' {
4386
4495
  * Note: use values between 0 and 1.
4387
4496
  */
4388
4497
  completeFraction: number;
4498
+ /**
4499
+ * The color of the path.
4500
+ */
4501
+ color: string;
4502
+ /**
4503
+ * The accent color of the path. When arrows are visible, it is applied to them
4504
+ */
4505
+ accentColor: string;
4506
+ /**
4507
+ * Display Arrows on Path to indicate direction
4508
+ */
4509
+ displayArrowsOnPath: boolean;
4510
+ /**
4511
+ * Arrows on path should animate to indicate direction
4512
+ */
4513
+ animateArrowsOnPath: boolean;
4514
+ /**
4515
+ * The radius of the path when zoomed in
4516
+ */
4517
+ nearRadius: number;
4518
+ /**
4519
+ * The radius of the path when zoomed out
4520
+ */
4521
+ farRadius: number;
4389
4522
  };
4390
4523
  export type AddPathOptions = {
4391
4524
  /**
@@ -4425,16 +4558,16 @@ declare module '@mappedin/react-sdk/geojson/src/components/path' {
4425
4558
  export class PathComponent {
4426
4559
  #private;
4427
4560
  readonly type = "path";
4428
- mesh: Geometry3DObject3D;
4429
- material?: ShaderMaterial;
4561
+ mesh: PatMeshContainer;
4562
+ material?: PathMaterial;
4430
4563
  geometry?: BufferGeometry;
4431
4564
  outline?: Mesh;
4432
4565
  feature: FeatureCollection<Point, PathProperties>;
4433
4566
  options: AddPathOptions;
4434
4567
  nearRadius: number;
4435
4568
  farRadius: number;
4436
- color: string;
4437
4569
  accentColor: string;
4570
+ completeFraction: number;
4438
4571
  altitudeAdjustment: number;
4439
4572
  displayArrowsOnPath: boolean;
4440
4573
  animateArrowsOnPath: boolean;
@@ -4443,11 +4576,10 @@ declare module '@mappedin/react-sdk/geojson/src/components/path' {
4443
4576
  */
4444
4577
  isVertical: boolean;
4445
4578
  dirty: boolean;
4579
+ materialDirty: boolean;
4446
4580
  constructor(feature: FeatureCollection<Point, PathProperties>, options?: AddPathOptions);
4447
4581
  setColor(): void;
4448
4582
  setOpacity(): void;
4449
- set completeFraction(value: number);
4450
- get completeFraction(): number;
4451
4583
  set visible(visible: boolean);
4452
4584
  get visible(): boolean;
4453
4585
  position: Vector3;
@@ -5263,6 +5395,10 @@ declare module '@mappedin/react-sdk/geojson/src/types' {
5263
5395
  * The coordinate of the interaction.
5264
5396
  */
5265
5397
  coordinate: Position;
5398
+ /**
5399
+ * An array of path IDs which the user interaction passed through. Will be empty if no paths were interacted with.
5400
+ */
5401
+ paths: (string | number)[] | [];
5266
5402
  /**
5267
5403
  * An array of marker IDs which the user interaction passed through. Will be empty if no markers were interacted with.
5268
5404
  */
@@ -5843,7 +5979,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
5843
5979
  import { TwoDVisibilitySystem } from '@mappedin/react-sdk/geojson/src/systems/2d-visibility/system';
5844
5980
  import { RenderSystem } from '@mappedin/react-sdk/geojson/src/systems/render/system';
5845
5981
  import type { Position as GeoJsonPosition, FeatureCollection, LineString, MultiPolygon, Polygon, Point, Feature } from 'geojson';
5846
- import type { AddPathOptions, PathProperties, PathState } from '@mappedin/react-sdk/geojson/src/components/path';
5982
+ import type { AddPathOptions, PathProperties, PathState, PathUpdateState } from '@mappedin/react-sdk/geojson/src/components/path';
5847
5983
  import { StackSystem } from '@mappedin/react-sdk/geojson/src/systems/stack/system';
5848
5984
  import { CameraSystem } from '@mappedin/react-sdk/geojson/src/systems/camera';
5849
5985
  import { DOMDrawSystem } from '@mappedin/react-sdk/geojson/src/systems/dom-draw/system';
@@ -6018,7 +6154,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
6018
6154
  * Get the current state of the map view, or any entity that was added, regardless of whether it is visible in the scene
6019
6155
  */
6020
6156
  getState(): MapViewState;
6021
- 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> ? ShapeState : T extends EntityId<ShapeState> ? ShapeState : T extends EntityId<ImageState> ? ImageState : EntityState;
6157
+ 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;
6022
6158
  getState(geometryOrGeometryId?: Record<string | number, any> | string | number): EntityState;
6023
6159
  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;
6024
6160
  /**
@@ -6031,7 +6167,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
6031
6167
  setState<T extends EntityId<GroupContainerState>>(object: T | T['id'], state: Partial<GroupContainerState>): void;
6032
6168
  setState<T extends EntityId<GeometryState>>(object: T | T['id'], state: Partial<GeometryState>): void;
6033
6169
  setState<T extends EntityId<ShapeState>>(object: T | T['id'], state: Partial<ShapeState>): void;
6034
- setState<T extends EntityId<PathState>>(object: T | T['id'], state: Partial<PathState>): void;
6170
+ setState<T extends EntityId<PathState>>(object: T | T['id'], state: PathUpdateState): void;
6035
6171
  setState<T extends EntityId<ModelState>>(object: T | T['id'], state: Partial<ModelState>): void;
6036
6172
  setState<T extends EntityId<ImageState>>(object: T | T['id'], state: Partial<ImageState>): void;
6037
6173
  setState<T extends EntityState>(object: T | T['id'], state: Partial<T>): void;
@@ -6449,7 +6585,7 @@ declare module '@mappedin/react-sdk/geojson/src/utils' {
6449
6585
  export { getPixelRatio } from '@mappedin/react-sdk/geojson/src/utils/get-pixel-ratio';
6450
6586
  export { debounce } from '@mappedin/react-sdk/geojson/src/utils/async';
6451
6587
  export { shouldDisableOffscreenCanvas } from '@mappedin/react-sdk/geojson/src/utils/browser';
6452
- export { noop } from '@mappedin/react-sdk/geojson/src/utils/fp';
6588
+ export { noop, pick, isEmpty, type KeysOfUnion } from '@mappedin/react-sdk/geojson/src/utils/fp';
6453
6589
  export { transformRequest } from '@mappedin/react-sdk/geojson/src/utils/tranform-request';
6454
6590
  }
6455
6591
 
@@ -6876,7 +7012,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
6876
7012
  floorId: string;
6877
7013
  };
6878
7014
  }> {
7015
+ /** Floors sorted in order of elevation */
6879
7016
  floors: FloorObject[];
7017
+ /** Map of floors by elevation. Floor elevation does not always match index or is not always contiguous. */
7018
+ floorsByElevation: Map<number, FloorObject>;
6880
7019
  currentFloorId: string;
6881
7020
  id: string;
6882
7021
  renderer: RendererCore;
@@ -7996,7 +8135,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/analytics/customer' {
7996
8135
  latitude: number;
7997
8136
  longitude: number;
7998
8137
  floorLevel?: number;
7999
- accuracy: number;
8138
+ accuracy?: number;
8000
8139
  };
8001
8140
  type AnalyticsAuth = {
8002
8141
  /** The API key for authentication. */
@@ -8073,6 +8212,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metada
8073
8212
 
8074
8213
  declare module '@mappedin/react-sdk/geojson/src/entities/geometry3d' {
8075
8214
  import { Object3D } from 'three';
8215
+ import type { Mesh, Object3DEventMap, ShaderMaterial, Texture, TubeGeometry, Color, Vector2 } from 'three';
8076
8216
  import type { InteractionComponent } from '@mappedin/react-sdk/geojson/src/components/interaction';
8077
8217
  import type { MeshComponent } from '@mappedin/react-sdk/geojson/src/components/mesh';
8078
8218
  import type { ModelComponent } from '@mappedin/react-sdk/geojson/src/components/model';
@@ -8093,15 +8233,104 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry3d' {
8093
8233
  type: 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
8094
8234
  };
8095
8235
  }
8236
+ export type PathMaterial = ShaderMaterial & {
8237
+ uniforms: PathUniforms;
8238
+ };
8239
+ export type PathMesh = Mesh<TubeGeometry, PathMaterial, Object3DEventMap>;
8240
+ export class PatMeshContainer extends Geometry3DObject3D {
8241
+ children: [PathMesh, PathMesh];
8242
+ }
8096
8243
  export type MeshComponentTypes = MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent;
8097
8244
  export class Geometry3D {
8098
8245
  id: string | number;
8099
8246
  components: [MeshComponentTypes, StyleComponent, InteractionComponent?];
8100
- get object3d(): Geometry3DObject3D | import("../components/mesh").EntityBatchedMesh | undefined;
8247
+ get object3d(): Geometry3DObject3D | PatMeshContainer | import("../components/mesh").EntityBatchedMesh | undefined;
8101
8248
  get parent(): GroupContainerObject3D | GeometryGroupObject3D | null;
8102
8249
  get type(): 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
8103
8250
  constructor(meshComponent: MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent, styleComponent: StyleComponent);
8104
8251
  }
8252
+ export interface PathUniforms {
8253
+ vertexes: {
8254
+ type: 'f';
8255
+ value: number;
8256
+ };
8257
+ resolution: {
8258
+ type: 'v2';
8259
+ value: Vector2;
8260
+ };
8261
+ cameraParameters: {
8262
+ type: 'v2';
8263
+ value: Vector2;
8264
+ };
8265
+ complete: {
8266
+ type: 'f';
8267
+ value: number;
8268
+ };
8269
+ color: {
8270
+ type: 'c';
8271
+ value: Color;
8272
+ };
8273
+ pathLength: {
8274
+ type: 'f';
8275
+ value: number;
8276
+ };
8277
+ nearRadius: {
8278
+ type: 'f';
8279
+ value: number;
8280
+ };
8281
+ farRadius: {
8282
+ type: 'f';
8283
+ value: number;
8284
+ };
8285
+ nearZoom: {
8286
+ type: 'f';
8287
+ value: number;
8288
+ };
8289
+ farZoom: {
8290
+ type: 'f';
8291
+ value: number;
8292
+ };
8293
+ pulseColor: {
8294
+ type: 'c';
8295
+ value: Color;
8296
+ };
8297
+ pulse: {
8298
+ type: 'f';
8299
+ value: number;
8300
+ };
8301
+ pulseLength: {
8302
+ type: 'f';
8303
+ value: number;
8304
+ };
8305
+ pathIsVertical: {
8306
+ type: 'b';
8307
+ value: boolean;
8308
+ };
8309
+ arrowAnimationTimer: {
8310
+ type: 'f';
8311
+ value: number;
8312
+ };
8313
+ arrowTexture: {
8314
+ type: 't';
8315
+ value: Texture;
8316
+ };
8317
+ displayArrowsOnPath: {
8318
+ type: 'b';
8319
+ value: boolean;
8320
+ };
8321
+ flattenFactor: {
8322
+ type: 'f';
8323
+ value: number;
8324
+ };
8325
+ showPulse: {
8326
+ type: 'b';
8327
+ value: boolean;
8328
+ };
8329
+ opacityMultiplier: {
8330
+ type: 'f';
8331
+ value: number;
8332
+ };
8333
+ }
8105
8334
  }
8106
8335
 
8107
8336
  declare module '@mappedin/react-sdk/geojson/src/entities/geometry2d' {
@@ -8313,7 +8542,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/image' {
8313
8542
  declare module '@mappedin/react-sdk/geojson/src/entities' {
8314
8543
  export { updateInteractivity } from '@mappedin/react-sdk/geojson/src/entities/utils';
8315
8544
  export { Geometry2D, Geometry2DComponents } from '@mappedin/react-sdk/geojson/src/entities/geometry2d';
8316
- export { Geometry3D, Geometry3DComponents } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
8545
+ export { Geometry3D, Geometry3DComponents, type PathMesh, type PatMeshContainer, type PathMaterial, } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
8317
8546
  }
8318
8547
 
8319
8548
  declare module '@mappedin/react-sdk/geojson/src/types/options' {
@@ -9119,6 +9348,23 @@ declare module '@mappedin/react-sdk/geojson/src/utils/browser' {
9119
9348
 
9120
9349
  declare module '@mappedin/react-sdk/geojson/src/utils/fp' {
9121
9350
  export function noop(): void;
9351
+ export type KeysOfUnion<T> = T extends T ? keyof T : never;
9352
+ /**
9353
+ * Given an object and a number of properties as strings, return version
9354
+ * of that object with only those properties.
9355
+ *
9356
+ * @param src - the object
9357
+ * @param properties - an array of property names chosen
9358
+ * to appear on the resulting object.
9359
+ * @returns object with limited properties.
9360
+ * @example
9361
+ * ```ts
9362
+ * let foo = { name: 'Charlie', age: 10 };
9363
+ * let justName = pick(foo, ['name']); // justName = { name: 'Charlie' }
9364
+ * ```
9365
+ */
9366
+ export function pick<T extends object>(src: T, properties: KeysOfUnion<T>[]): Partial<T>;
9367
+ export function isEmpty(obj: Record<string, any>): boolean;
9122
9368
  }
9123
9369
 
9124
9370
  declare module '@mappedin/react-sdk/geojson/src/utils/tranform-request' {
@@ -9264,8 +9510,9 @@ declare module '@mappedin/react-sdk/geojson/src/components/style' {
9264
9510
  }
9265
9511
 
9266
9512
  declare module '@mappedin/react-sdk/geojson/src/entities/utils' {
9267
- import type { CollisionRankingTier, GeometryState, LabelState, PathState, RendererCore } from '@mappedin/react-sdk/geojson/src';
9513
+ import type { CollisionRankingTier, GeometryState, LabelState, RendererCore } from '@mappedin/react-sdk/geojson/src';
9268
9514
  import { type MarkerState } from '@mappedin/react-sdk/geojson/src/components/marker';
9515
+ import type { PathUpdateState } from '@mappedin/react-sdk/geojson/src/components/path';
9269
9516
  import type { Geometry3DTypes, Position, RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
9270
9517
  import { GeometryGroupObject3D, type GeometryGroupState } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
9271
9518
  import { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
@@ -9282,7 +9529,6 @@ declare module '@mappedin/react-sdk/geojson/src/entities/utils' {
9282
9529
  export function updatePosition(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Position | undefined, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): void;
9283
9530
  export function updateParent(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: GroupContainerObject3D | undefined): boolean;
9284
9531
  export function updateEnabled(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: boolean | undefined): void;
9285
- export function updatePath(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<PathState> | undefined): void;
9286
9532
  export function updateMarker(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<MarkerState> | undefined, state: RendererState): boolean;
9287
9533
  export function updateRank(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: CollisionRankingTier | undefined): boolean;
9288
9534
  export function updateLabel(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<LabelState> | undefined, state: RendererState): void;
@@ -9295,6 +9541,8 @@ declare module '@mappedin/react-sdk/geojson/src/entities/utils' {
9295
9541
  export function updateIndividualGeometryOpacity(entity: Geometry3D, update?: number): boolean;
9296
9542
  export function updateAltitude(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: number): boolean;
9297
9543
  export function updateOutline(entity: Geometry3DTypes, update?: boolean): boolean;
9544
+ export function handlePathUpdate(geometry: Geometry3D, update: PathUpdateState): void;
9545
+ export function pickPathOptions(update: PathUpdateState): Partial<PathUpdateState>;
9298
9546
  }
9299
9547
 
9300
9548
  declare module '@mappedin/react-sdk/geojson/src/systems/collisions/collider-processor' {