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

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,81 @@ 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: (GeolocationPosition & {
4226
+ coords: GeolocationPosition['coords'] & {
4227
+ readonly floorLevel?: number;
4228
+ };
4229
+ }) | TBlueDotPositionUpdate | undefined): void;
4095
4230
  }
4096
4231
  type TStateTransitions = {
4097
- [Action in TBlueDotAction]?: TBlueDotState;
4232
+ [Action in TBlueDotAction]?: TBlueDotState;
4098
4233
  };
4099
4234
  type TStateMachine = {
4100
- [State in TBlueDotState]: {
4101
- actions: TStateTransitions;
4102
- };
4235
+ [State in TBlueDotState]: {
4236
+ actions: TStateTransitions;
4237
+ };
4103
4238
  };
4104
4239
  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
- }>;
4137
4240
  export {};
4138
4241
  }
4139
4242
 
@@ -4347,9 +4450,9 @@ declare module '@mappedin/react-sdk/geojson/src/components/marker' {
4347
4450
 
4348
4451
  declare module '@mappedin/react-sdk/geojson/src/components/path' {
4349
4452
  import { Vector3 } from 'three';
4350
- import type { Mesh, ShaderMaterial, BufferGeometry } from 'three';
4453
+ import type { Mesh, BufferGeometry } from 'three';
4351
4454
  import type { EntityId, Position } from '@mappedin/react-sdk/geojson/src/types';
4352
- import { Geometry3DObject3D } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
4455
+ import type { PathMaterial, PatMeshContainer } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
4353
4456
  import type { FeatureCollection, Point } from 'geojson';
4354
4457
  import type { GroupContainerState } from '@mappedin/react-sdk/geojson/src/entities/group-container';
4355
4458
  export type PathProperties = {
@@ -4358,6 +4461,11 @@ declare module '@mappedin/react-sdk/geojson/src/components/path' {
4358
4461
  */
4359
4462
  parentId?: EntityId<GroupContainerState> | string | null;
4360
4463
  };
4464
+ /**
4465
+ * Updatable path state
4466
+ * @interface
4467
+ */
4468
+ export type PathUpdateState = Omit<Partial<PathState>, 'id' | 'type'>;
4361
4469
  /**
4362
4470
  * State representing a Path
4363
4471
  */
@@ -4386,6 +4494,30 @@ declare module '@mappedin/react-sdk/geojson/src/components/path' {
4386
4494
  * Note: use values between 0 and 1.
4387
4495
  */
4388
4496
  completeFraction: number;
4497
+ /**
4498
+ * The color of the path.
4499
+ */
4500
+ color: string;
4501
+ /**
4502
+ * The accent color of the path. When arrows are visible, it is applied to them
4503
+ */
4504
+ accentColor: string;
4505
+ /**
4506
+ * Display Arrows on Path to indicate direction
4507
+ */
4508
+ displayArrowsOnPath: boolean;
4509
+ /**
4510
+ * Arrows on path should animate to indicate direction
4511
+ */
4512
+ animateArrowsOnPath: boolean;
4513
+ /**
4514
+ * The radius of the path when zoomed in
4515
+ */
4516
+ nearRadius: number;
4517
+ /**
4518
+ * The radius of the path when zoomed out
4519
+ */
4520
+ farRadius: number;
4389
4521
  };
4390
4522
  export type AddPathOptions = {
4391
4523
  /**
@@ -4425,16 +4557,16 @@ declare module '@mappedin/react-sdk/geojson/src/components/path' {
4425
4557
  export class PathComponent {
4426
4558
  #private;
4427
4559
  readonly type = "path";
4428
- mesh: Geometry3DObject3D;
4429
- material?: ShaderMaterial;
4560
+ mesh: PatMeshContainer;
4561
+ material?: PathMaterial;
4430
4562
  geometry?: BufferGeometry;
4431
4563
  outline?: Mesh;
4432
4564
  feature: FeatureCollection<Point, PathProperties>;
4433
4565
  options: AddPathOptions;
4434
4566
  nearRadius: number;
4435
4567
  farRadius: number;
4436
- color: string;
4437
4568
  accentColor: string;
4569
+ completeFraction: number;
4438
4570
  altitudeAdjustment: number;
4439
4571
  displayArrowsOnPath: boolean;
4440
4572
  animateArrowsOnPath: boolean;
@@ -4443,11 +4575,10 @@ declare module '@mappedin/react-sdk/geojson/src/components/path' {
4443
4575
  */
4444
4576
  isVertical: boolean;
4445
4577
  dirty: boolean;
4578
+ materialDirty: boolean;
4446
4579
  constructor(feature: FeatureCollection<Point, PathProperties>, options?: AddPathOptions);
4447
4580
  setColor(): void;
4448
4581
  setOpacity(): void;
4449
- set completeFraction(value: number);
4450
- get completeFraction(): number;
4451
4582
  set visible(visible: boolean);
4452
4583
  get visible(): boolean;
4453
4584
  position: Vector3;
@@ -5263,6 +5394,10 @@ declare module '@mappedin/react-sdk/geojson/src/types' {
5263
5394
  * The coordinate of the interaction.
5264
5395
  */
5265
5396
  coordinate: Position;
5397
+ /**
5398
+ * An array of path IDs which the user interaction passed through. Will be empty if no paths were interacted with.
5399
+ */
5400
+ paths: (string | number)[] | [];
5266
5401
  /**
5267
5402
  * An array of marker IDs which the user interaction passed through. Will be empty if no markers were interacted with.
5268
5403
  */
@@ -5843,7 +5978,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
5843
5978
  import { TwoDVisibilitySystem } from '@mappedin/react-sdk/geojson/src/systems/2d-visibility/system';
5844
5979
  import { RenderSystem } from '@mappedin/react-sdk/geojson/src/systems/render/system';
5845
5980
  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';
5981
+ import type { AddPathOptions, PathProperties, PathState, PathUpdateState } from '@mappedin/react-sdk/geojson/src/components/path';
5847
5982
  import { StackSystem } from '@mappedin/react-sdk/geojson/src/systems/stack/system';
5848
5983
  import { CameraSystem } from '@mappedin/react-sdk/geojson/src/systems/camera';
5849
5984
  import { DOMDrawSystem } from '@mappedin/react-sdk/geojson/src/systems/dom-draw/system';
@@ -6018,7 +6153,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
6018
6153
  * Get the current state of the map view, or any entity that was added, regardless of whether it is visible in the scene
6019
6154
  */
6020
6155
  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;
6156
+ 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
6157
  getState(geometryOrGeometryId?: Record<string | number, any> | string | number): EntityState;
6023
6158
  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
6159
  /**
@@ -6031,7 +6166,7 @@ declare module '@mappedin/react-sdk/geojson/src/renderer' {
6031
6166
  setState<T extends EntityId<GroupContainerState>>(object: T | T['id'], state: Partial<GroupContainerState>): void;
6032
6167
  setState<T extends EntityId<GeometryState>>(object: T | T['id'], state: Partial<GeometryState>): void;
6033
6168
  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;
6169
+ setState<T extends EntityId<PathState>>(object: T | T['id'], state: PathUpdateState): void;
6035
6170
  setState<T extends EntityId<ModelState>>(object: T | T['id'], state: Partial<ModelState>): void;
6036
6171
  setState<T extends EntityId<ImageState>>(object: T | T['id'], state: Partial<ImageState>): void;
6037
6172
  setState<T extends EntityState>(object: T | T['id'], state: Partial<T>): void;
@@ -6449,7 +6584,7 @@ declare module '@mappedin/react-sdk/geojson/src/utils' {
6449
6584
  export { getPixelRatio } from '@mappedin/react-sdk/geojson/src/utils/get-pixel-ratio';
6450
6585
  export { debounce } from '@mappedin/react-sdk/geojson/src/utils/async';
6451
6586
  export { shouldDisableOffscreenCanvas } from '@mappedin/react-sdk/geojson/src/utils/browser';
6452
- export { noop } from '@mappedin/react-sdk/geojson/src/utils/fp';
6587
+ export { noop, pick, isEmpty, type KeysOfUnion } from '@mappedin/react-sdk/geojson/src/utils/fp';
6453
6588
  export { transformRequest } from '@mappedin/react-sdk/geojson/src/utils/tranform-request';
6454
6589
  }
6455
6590
 
@@ -6876,7 +7011,10 @@ declare module '@mappedin/react-sdk/mappedin-js/src/api-geojson/map-object' {
6876
7011
  floorId: string;
6877
7012
  };
6878
7013
  }> {
7014
+ /** Floors sorted in order of elevation */
6879
7015
  floors: FloorObject[];
7016
+ /** Map of floors by elevation. Floor elevation does not always match index or is not always contiguous. */
7017
+ floorsByElevation: Map<number, FloorObject>;
6880
7018
  currentFloorId: string;
6881
7019
  id: string;
6882
7020
  renderer: RendererCore;
@@ -7996,7 +8134,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/analytics/customer' {
7996
8134
  latitude: number;
7997
8135
  longitude: number;
7998
8136
  floorLevel?: number;
7999
- accuracy: number;
8137
+ accuracy?: number;
8000
8138
  };
8001
8139
  type AnalyticsAuth = {
8002
8140
  /** The API key for authentication. */
@@ -8073,6 +8211,7 @@ declare module '@mappedin/react-sdk/mappedin-js/src/map-data-objects/base-metada
8073
8211
 
8074
8212
  declare module '@mappedin/react-sdk/geojson/src/entities/geometry3d' {
8075
8213
  import { Object3D } from 'three';
8214
+ import type { Mesh, Object3DEventMap, ShaderMaterial, Texture, TubeGeometry, Color, Vector2 } from 'three';
8076
8215
  import type { InteractionComponent } from '@mappedin/react-sdk/geojson/src/components/interaction';
8077
8216
  import type { MeshComponent } from '@mappedin/react-sdk/geojson/src/components/mesh';
8078
8217
  import type { ModelComponent } from '@mappedin/react-sdk/geojson/src/components/model';
@@ -8093,15 +8232,104 @@ declare module '@mappedin/react-sdk/geojson/src/entities/geometry3d' {
8093
8232
  type: 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
8094
8233
  };
8095
8234
  }
8235
+ export type PathMaterial = ShaderMaterial & {
8236
+ uniforms: PathUniforms;
8237
+ };
8238
+ export type PathMesh = Mesh<TubeGeometry, PathMaterial, Object3DEventMap>;
8239
+ export class PatMeshContainer extends Geometry3DObject3D {
8240
+ children: [PathMesh, PathMesh];
8241
+ }
8096
8242
  export type MeshComponentTypes = MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent;
8097
8243
  export class Geometry3D {
8098
8244
  id: string | number;
8099
8245
  components: [MeshComponentTypes, StyleComponent, InteractionComponent?];
8100
- get object3d(): Geometry3DObject3D | import("../components/mesh").EntityBatchedMesh | undefined;
8246
+ get object3d(): Geometry3DObject3D | PatMeshContainer | import("../components/mesh").EntityBatchedMesh | undefined;
8101
8247
  get parent(): GroupContainerObject3D | GeometryGroupObject3D | null;
8102
8248
  get type(): 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
8103
8249
  constructor(meshComponent: MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent, styleComponent: StyleComponent);
8104
8250
  }
8251
+ export interface PathUniforms {
8252
+ vertexes: {
8253
+ type: 'f';
8254
+ value: number;
8255
+ };
8256
+ resolution: {
8257
+ type: 'v2';
8258
+ value: Vector2;
8259
+ };
8260
+ cameraParameters: {
8261
+ type: 'v2';
8262
+ value: Vector2;
8263
+ };
8264
+ complete: {
8265
+ type: 'f';
8266
+ value: number;
8267
+ };
8268
+ color: {
8269
+ type: 'c';
8270
+ value: Color;
8271
+ };
8272
+ pathLength: {
8273
+ type: 'f';
8274
+ value: number;
8275
+ };
8276
+ nearRadius: {
8277
+ type: 'f';
8278
+ value: number;
8279
+ };
8280
+ farRadius: {
8281
+ type: 'f';
8282
+ value: number;
8283
+ };
8284
+ nearZoom: {
8285
+ type: 'f';
8286
+ value: number;
8287
+ };
8288
+ farZoom: {
8289
+ type: 'f';
8290
+ value: number;
8291
+ };
8292
+ pulseColor: {
8293
+ type: 'c';
8294
+ value: Color;
8295
+ };
8296
+ pulse: {
8297
+ type: 'f';
8298
+ value: number;
8299
+ };
8300
+ pulseLength: {
8301
+ type: 'f';
8302
+ value: number;
8303
+ };
8304
+ pathIsVertical: {
8305
+ type: 'b';
8306
+ value: boolean;
8307
+ };
8308
+ arrowAnimationTimer: {
8309
+ type: 'f';
8310
+ value: number;
8311
+ };
8312
+ arrowTexture: {
8313
+ type: 't';
8314
+ value: Texture;
8315
+ };
8316
+ displayArrowsOnPath: {
8317
+ type: 'b';
8318
+ value: boolean;
8319
+ };
8320
+ flattenFactor: {
8321
+ type: 'f';
8322
+ value: number;
8323
+ };
8324
+ showPulse: {
8325
+ type: 'b';
8326
+ value: boolean;
8327
+ };
8328
+ opacityMultiplier: {
8329
+ type: 'f';
8330
+ value: number;
8331
+ };
8332
+ }
8105
8333
  }
8106
8334
 
8107
8335
  declare module '@mappedin/react-sdk/geojson/src/entities/geometry2d' {
@@ -8313,7 +8541,7 @@ declare module '@mappedin/react-sdk/geojson/src/components/image' {
8313
8541
  declare module '@mappedin/react-sdk/geojson/src/entities' {
8314
8542
  export { updateInteractivity } from '@mappedin/react-sdk/geojson/src/entities/utils';
8315
8543
  export { Geometry2D, Geometry2DComponents } from '@mappedin/react-sdk/geojson/src/entities/geometry2d';
8316
- export { Geometry3D, Geometry3DComponents } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
8544
+ export { Geometry3D, Geometry3DComponents, type PathMesh, type PatMeshContainer, type PathMaterial, } from '@mappedin/react-sdk/geojson/src/entities/geometry3d';
8317
8545
  }
8318
8546
 
8319
8547
  declare module '@mappedin/react-sdk/geojson/src/types/options' {
@@ -9119,6 +9347,23 @@ declare module '@mappedin/react-sdk/geojson/src/utils/browser' {
9119
9347
 
9120
9348
  declare module '@mappedin/react-sdk/geojson/src/utils/fp' {
9121
9349
  export function noop(): void;
9350
+ export type KeysOfUnion<T> = T extends T ? keyof T : never;
9351
+ /**
9352
+ * Given an object and a number of properties as strings, return version
9353
+ * of that object with only those properties.
9354
+ *
9355
+ * @param src - the object
9356
+ * @param properties - an array of property names chosen
9357
+ * to appear on the resulting object.
9358
+ * @returns object with limited properties.
9359
+ * @example
9360
+ * ```ts
9361
+ * let foo = { name: 'Charlie', age: 10 };
9362
+ * let justName = pick(foo, ['name']); // justName = { name: 'Charlie' }
9363
+ * ```
9364
+ */
9365
+ export function pick<T extends object>(src: T, properties: KeysOfUnion<T>[]): Partial<T>;
9366
+ export function isEmpty(obj: Record<string, any>): boolean;
9122
9367
  }
9123
9368
 
9124
9369
  declare module '@mappedin/react-sdk/geojson/src/utils/tranform-request' {
@@ -9264,8 +9509,9 @@ declare module '@mappedin/react-sdk/geojson/src/components/style' {
9264
9509
  }
9265
9510
 
9266
9511
  declare module '@mappedin/react-sdk/geojson/src/entities/utils' {
9267
- import type { CollisionRankingTier, GeometryState, LabelState, PathState, RendererCore } from '@mappedin/react-sdk/geojson/src';
9512
+ import type { CollisionRankingTier, GeometryState, LabelState, RendererCore } from '@mappedin/react-sdk/geojson/src';
9268
9513
  import { type MarkerState } from '@mappedin/react-sdk/geojson/src/components/marker';
9514
+ import type { PathUpdateState } from '@mappedin/react-sdk/geojson/src/components/path';
9269
9515
  import type { Geometry3DTypes, Position, RendererState } from '@mappedin/react-sdk/geojson/src/renderer';
9270
9516
  import { GeometryGroupObject3D, type GeometryGroupState } from '@mappedin/react-sdk/geojson/src/entities/geometry-group';
9271
9517
  import { GroupContainerObject3D } from '@mappedin/react-sdk/geojson/src/entities/group-container';
@@ -9282,7 +9528,6 @@ declare module '@mappedin/react-sdk/geojson/src/entities/utils' {
9282
9528
  export function updatePosition(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Position | undefined, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): void;
9283
9529
  export function updateParent(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: GroupContainerObject3D | undefined): boolean;
9284
9530
  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
9531
  export function updateMarker(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<MarkerState> | undefined, state: RendererState): boolean;
9287
9532
  export function updateRank(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: CollisionRankingTier | undefined): boolean;
9288
9533
  export function updateLabel(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<LabelState> | undefined, state: RendererState): void;
@@ -9295,6 +9540,8 @@ declare module '@mappedin/react-sdk/geojson/src/entities/utils' {
9295
9540
  export function updateIndividualGeometryOpacity(entity: Geometry3D, update?: number): boolean;
9296
9541
  export function updateAltitude(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: number): boolean;
9297
9542
  export function updateOutline(entity: Geometry3DTypes, update?: boolean): boolean;
9543
+ export function handlePathUpdate(geometry: Geometry3D, update: PathUpdateState): void;
9544
+ export function pickPathOptions(update: PathUpdateState): Partial<PathUpdateState>;
9298
9545
  }
9299
9546
 
9300
9547
  declare module '@mappedin/react-sdk/geojson/src/systems/collisions/collider-processor' {