@mappedin/mappedin-js 6.8.0 → 6.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,137 @@
1
1
  import { Color as Color$1, CompositeExpression, DiffCommand, DiffOperations, Feature as Feature$2, FeatureFilter, FeatureState, FilterSpecification, Formatted, FormattedSection, GlobalProperties, ICanonicalTileID, IMercatorCoordinate, InterpolationType, LayerSpecification, LightSpecification, Padding, ProjectionSpecification, PromoteIdSpecification, PropertyValueSpecification, ResolvedImage, SkySpecification, SourceExpression, SourceSpecification, SpriteSpecification, StylePropertyExpression, StylePropertySpecification, StyleSpecification, TerrainSpecification, TransitionSpecification, VariableAnchorOffsetCollection } from '@maplibre/maplibre-gl-style-spec';
2
- import { AnnotationCollection, AnnotationSymbol, AreaCollection, AreaId, BaseTextAreaProperties, Category as MVFCategory, CategoryId, Connection as MVFConnection, Details, EnterpriseCategory as MVFEnterpriseCategory, EnterpriseCategory as MvfEnterpriseCategory, EnterpriseCategoryId as MVFEnterpriseCategoryId, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseLocation as MvfEnterpriseLocation, EnterpriseLocationId as MVFEnterpriseLocationId, EnterpriseLocationInstance, EnterpriseTexture, EnterpriseVenue as MVFEnterpriseVenue, EnterpriseVenueType, EntranceCollection, EntranceFeature, Facade as MVFFacade, Feature, Feature as MVFFeature, FeatureCollection, FloatingFloorTextProperties, FloorCollection, FloorId, FloorProperties as MVFFloor, FloorProperties as MvfFloor, FloorStack as MVFFloorStack, FloorStack as MvfFloorStack, FloorTextCommonProperties, Geometry, Hyperlink as MVFHyperlink, Image as MVFImage, Language, LineStringStyle, LineStringStyle as TMVFLineStringStyle, Location as MVF2Location, LocationId, LocationLink, LocationSocial, LocationState, MultiPolygon, NavigationFlagDeclarations, NodeCollection, NodeCollection as MVFNodeCollection, NodeId, ObstructionCollection, ObstructionFeature, ObstructionId, ObstructionProperties, OpeningHoursSpecification, OperationHours, ParsedMVF, ParsedMVF as TMVF, ParsedMVFLocalePack, ParsedMVFv3, Point, PointStyle, PointStyle as TMVFPointStyle, Polygon, PolygonStyle, PolygonStyle as TMVFPolygonStyle, SiblingGroup, SpaceCollection, SpaceFeature, SpaceId, SpaceProperties, Style as TMVFStyle, StyleCollection, StyleCollection as TMVFStyleCollection, TilesetStyle } from '@mappedin/mvf-v2';
3
- import { ParsedMVF, ParsedMVFv3, RawMVF } from '@mappedin/mvf-v2/no-validator';
2
+ import { AnnotationCollection, AnnotationSymbol, AreaCollection, AreaId, BaseTextAreaProperties, Category as MVFCategory, CategoryId, Connection as MVFConnection, Details, EnterpriseCategory as MVFEnterpriseCategory, EnterpriseCategory as MvfEnterpriseCategory, EnterpriseCategoryId as MVFEnterpriseCategoryId, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseLocation as MvfEnterpriseLocation, EnterpriseLocationId as MVFEnterpriseLocationId, EnterpriseLocationInstance, EnterpriseTexture, EnterpriseVenue as MVFEnterpriseVenue, EnterpriseVenueType, EntranceCollection, EntranceFeature, Facade as MVFFacade, Feature, Feature as MVFFeature, FeatureCollection, FloatingFloorTextProperties, FloorCollection, FloorId, FloorProperties as MVFFloor, FloorProperties as MvfFloor, FloorStack as MVFFloorStack, FloorStack as MvfFloorStack, FloorTextCommonProperties, Geometry, Hyperlink as MVFHyperlink, Image as MVFImage, Language, LineStringStyle, LineStringStyle as TMVFLineStringStyle, Location as MVF2Location, LocationId, LocationLink, LocationSocial, LocationState, MVFv2_STANDARD_MVFv3, MultiPolygon, NavigationFlagDeclarations, NodeCollection, NodeCollection as MVFNodeCollection, NodeId, ObstructionCollection, ObstructionFeature, ObstructionId, ObstructionProperties, OpeningHoursSpecification, OperationHours, ParsedMVF, ParsedMVF as TMVF, ParsedMVFLocalePack, Point, PointStyle, PointStyle as TMVFPointStyle, Polygon, PolygonStyle, PolygonStyle as TMVFPolygonStyle, SiblingGroup, SpaceCollection, SpaceFeature, SpaceId, SpaceProperties, Style as TMVFStyle, StyleCollection, StyleCollection as TMVFStyleCollection, TilesetStyle } from '@mappedin/mvf-v2';
3
+ import { MVFv2_STANDARD_MVFv3, ParsedMVF, RawMVF } from '@mappedin/mvf-v2/no-validator';
4
4
  import { Group as TweenGroup, Tween } from '@tweenjs/tween.js';
5
- import { AmbientLight, BatchedMesh, BatchedMeshGeometryRange, Box3, BufferAttribute, BufferGeometry, Camera, Camera as ThreeCamera, Color, DirectionalLight, Group, Intersection, LineSegments, Mesh, MeshLambertMaterial, MeshLambertMaterialParameters, Object3D, Object3DEventMap, PerspectiveCamera, Plane, PlaneGeometry, Raycaster, Scene, ShaderMaterial, Texture, TubeGeometry, Vector2, Vector3, WebGLRenderer } from 'three';
5
+ import { AmbientLight, BatchedMesh, BatchedMeshGeometryRange, Box3, BufferAttribute, BufferGeometry, Camera, Camera as ThreeCamera, Color, DirectionalLight, Group, Intersection, LineSegments, Matrix4, Mesh, MeshLambertMaterial, MeshLambertMaterialParameters, Object3D, Object3DEventMap, PerspectiveCamera, Plane, PlaneGeometry, Raycaster, Scene, ShaderMaterial, Texture, TubeGeometry, Vector2, Vector3, WebGLRenderer } from 'three';
6
6
  import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
7
7
 
8
+ export declare enum E_SDK_LOG_LEVEL {
9
+ LOG = 0,
10
+ WARN = 1,
11
+ ERROR = 2,
12
+ SILENT = 3
13
+ }
14
+ export declare function setLoggerLevel(level: E_SDK_LOG_LEVEL): void;
15
+ /**
16
+ * @internal
17
+ */
18
+ export declare class MappedinError extends Error {
19
+ constructor(message: string, label?: string);
20
+ }
21
+ /**
22
+ * @internal
23
+ */
24
+ export declare class MappedinRenderError extends MappedinError {
25
+ constructor(message: string, label?: string);
26
+ }
27
+ interface DebouncedFunction<T extends (...args: any[]) => void> {
28
+ (...args: Parameters<T>): void;
29
+ /**
30
+ * Cancels any pending debounced execution
31
+ */
32
+ cancel: () => void;
33
+ }
34
+ /**
35
+ * Generic PubSub class implementing the Publish-Subscribe pattern for event handling.
36
+ *
37
+ * @template EVENT_PAYLOAD - The type of the event payload.
38
+ * @template EVENT - The type of the event.
39
+ */
40
+ export declare class PubSub<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof EVENT_PAYLOAD> {
41
+ /**
42
+ * @private
43
+ * @internal
44
+ */
45
+ private _subscribers;
46
+ /**
47
+ * @private
48
+ * @internal
49
+ * AbortController for managing lifecycle and cleanup
50
+ */
51
+ private _abortController;
52
+ /**
53
+ * @protected
54
+ * @internal
55
+ * Tracks all cleanup functions for subscriptions made via on()
56
+ */
57
+ protected _cleanupFunctions: Array<() => void>;
58
+ /**
59
+ * Returns the AbortSignal for this PubSub instance.
60
+ * Use this signal with APIs that support cancellation (fetch, addEventListener, etc.)
61
+ * When the PubSub is destroyed, the signal will be aborted and all listeners using it will be automatically removed.
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * // Automatically cleaned up when PubSub is destroyed
66
+ * pubsub.addEventListener(window, 'resize', handler, { signal: pubsub.signal });
67
+ * ```
68
+ */
69
+ get signal(): AbortSignal;
70
+ /**
71
+ * @private
72
+ * @internal
73
+ */
74
+ publish<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, data?: EVENT_PAYLOAD[EVENT_NAME]): void;
75
+ /**
76
+ * Subscribe a function to be called when the signal is aborted.
77
+ * @param fn The function to call when the signal is aborted.
78
+ */
79
+ onAbort<T extends (...args: any[]) => void>(fn: T): void;
80
+ /**
81
+ * Subscribe a function to an event.
82
+ *
83
+ * @param eventName An event name which, when fired, will call the provided
84
+ * function.
85
+ * @param fn A callback that gets called when the corresponding event is fired. The
86
+ * callback will get passed an argument with a type that's one of event payloads.
87
+ * @param options Optional options object. If a signal is provided, the subscription will be
88
+ * automatically cleaned up when that signal is aborted.
89
+ * @returns A cleanup function that unsubscribes the event listener when called.
90
+ * @example
91
+ * // Subscribe to the 'click' event
92
+ * const handler = (event) => {
93
+ * const { coordinate } = event;
94
+ * const { latitude, longitude } = coordinate;
95
+ * console.log(`Map was clicked at ${latitude}, ${longitude}`);
96
+ * };
97
+ * map.on('click', handler);
98
+ */
99
+ on<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, fn: (payload: EVENT_PAYLOAD[EVENT_NAME] extends {
100
+ data: null;
101
+ } ? EVENT_PAYLOAD[EVENT_NAME]["data"] : EVENT_PAYLOAD[EVENT_NAME]) => void, options?: {
102
+ signal?: AbortSignal;
103
+ }): () => void;
104
+ /**
105
+ * Unsubscribe a function previously subscribed with {@link on}
106
+ *
107
+ * @param eventName An event name to which the provided function was previously
108
+ * subscribed.
109
+ * @param fn A function that was previously passed to {@link on}. The function must
110
+ * have the same reference as the function that was subscribed.
111
+ * @example
112
+ * // Unsubscribe from the 'click' event
113
+ * const handler = (event) => {
114
+ * console.log('Map was clicked', event);
115
+ * };
116
+ * map.off('click', handler);
117
+ */
118
+ off<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, fn: (payload: EVENT_PAYLOAD[EVENT_NAME] extends {
119
+ data: null;
120
+ } ? EVENT_PAYLOAD[EVENT_NAME]["data"] : EVENT_PAYLOAD[EVENT_NAME]) => void): void;
121
+ /**
122
+ * @private
123
+ * @internal
124
+ * Destroys the PubSub instance and automatically unsubscribes all listeners registered via on().
125
+ */
126
+ destroy(): void;
127
+ }
128
+ declare const EASING_CURVES: readonly [
129
+ "ease-in",
130
+ "ease-out",
131
+ "ease-in-out",
132
+ "linear"
133
+ ];
134
+ type EasingCurve = (typeof EASING_CURVES)[number];
8
135
  declare const VALID_CONTEXTS: readonly [
9
136
  "websdk",
10
137
  "web",
@@ -75,7 +202,7 @@ declare class AnalyticsInternal {
75
202
  /**
76
203
  * @internal
77
204
  */
78
- sendGetDirectionsEvent: (start: string, end: string, accessible?: boolean | undefined) => void;
205
+ sendGetDirectionsEvent: DebouncedFunction<(start: string, end: string, accessible?: boolean) => void | Promise<Response> | Promise<void>>;
79
206
  sendBlueDotEvents(event: BlueDotEvents): void | Promise<Response> | Promise<void>;
80
207
  }
81
208
  type UpdateStateParam = Partial<Pick<AnalyticState, "geolocationMode" | "context" | "logEvents" | "userPosition" | "mapId" | "sendEvents" | "logEvents" | "accessToken" | "sessionId" | "deviceId">>;
@@ -578,7 +705,7 @@ declare function createEnvControl(): {
578
705
  type EnvControl = ReturnType<typeof createEnvControl>;
579
706
  type ParsedMVFResult = {
580
707
  mvf2: ParsedMVF;
581
- mvf3?: ParsedMVFv3;
708
+ mvf3?: MVFv2_STANDARD_MVFv3;
582
709
  };
583
710
  export declare function unzipAndParseMVFv2(data: Uint8Array, inputVersion?: string): Promise<ParsedMVFResult>;
584
711
  type TDrawFn = (ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, x: number, y: number) => void;
@@ -1013,6 +1140,7 @@ declare class BatchedStandardMaterial extends MeshLambertMaterial {
1013
1140
  removeSideTexture(batchId: number): void;
1014
1141
  removeTopTexture(batchId: number): void;
1015
1142
  dispose(): void;
1143
+ setShadowUniforms(shadowMap: Texture, lightMatrix: Matrix4, cameraNear: number, cameraFar: number, shadowBias: number, shadowOpacity: number, baseColor: Color, shadowMapSize: number, pcfSpread: number, pcfSamples: number, sunDir: Vector3, normalBias: number, depthRangeMax: number, shadowEnabled: boolean): void;
1016
1144
  clone(params?: MeshLambertMaterialParameters): this;
1017
1145
  }
1018
1146
  interface StandardSchemaV1<Input = unknown, Output = Input> {
@@ -5520,7 +5648,7 @@ interface PathUniforms {
5520
5648
  value: number;
5521
5649
  };
5522
5650
  }
5523
- declare class PubSub<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof EVENT_PAYLOAD> {
5651
+ declare class PubSub$1<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof EVENT_PAYLOAD> {
5524
5652
  /**
5525
5653
  * @private
5526
5654
  * @internal
@@ -5830,126 +5958,6 @@ declare class QuadTree<T = unknown> {
5830
5958
  */
5831
5959
  draw(context: CanvasRenderingContext2D): void;
5832
5960
  }
5833
- export declare enum E_SDK_LOG_LEVEL {
5834
- LOG = 0,
5835
- WARN = 1,
5836
- ERROR = 2,
5837
- SILENT = 3
5838
- }
5839
- export declare function setLoggerLevel(level: E_SDK_LOG_LEVEL): void;
5840
- /**
5841
- * @internal
5842
- */
5843
- export declare class MappedinError extends Error {
5844
- constructor(message: string, label?: string);
5845
- }
5846
- /**
5847
- * @internal
5848
- */
5849
- export declare class MappedinRenderError extends MappedinError {
5850
- constructor(message: string, label?: string);
5851
- }
5852
- /**
5853
- * Generic PubSub class implementing the Publish-Subscribe pattern for event handling.
5854
- *
5855
- * @template EVENT_PAYLOAD - The type of the event payload.
5856
- * @template EVENT - The type of the event.
5857
- */
5858
- declare class PubSub$1<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof EVENT_PAYLOAD> {
5859
- /**
5860
- * @private
5861
- * @internal
5862
- */
5863
- private _subscribers;
5864
- /**
5865
- * @private
5866
- * @internal
5867
- * AbortController for managing lifecycle and cleanup
5868
- */
5869
- private _abortController;
5870
- /**
5871
- * @protected
5872
- * @internal
5873
- * Tracks all cleanup functions for subscriptions made via on()
5874
- */
5875
- protected _cleanupFunctions: Array<() => void>;
5876
- /**
5877
- * Returns the AbortSignal for this PubSub instance.
5878
- * Use this signal with APIs that support cancellation (fetch, addEventListener, etc.)
5879
- * When the PubSub is destroyed, the signal will be aborted and all listeners using it will be automatically removed.
5880
- *
5881
- * @example
5882
- * ```typescript
5883
- * // Automatically cleaned up when PubSub is destroyed
5884
- * pubsub.addEventListener(window, 'resize', handler, { signal: pubsub.signal });
5885
- * ```
5886
- */
5887
- get signal(): AbortSignal;
5888
- /**
5889
- * @private
5890
- * @internal
5891
- */
5892
- publish<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, data?: EVENT_PAYLOAD[EVENT_NAME]): void;
5893
- /**
5894
- * Subscribe a function to be called when the signal is aborted.
5895
- * @param fn The function to call when the signal is aborted.
5896
- */
5897
- onAbort<T extends (...args: any[]) => void>(fn: T): void;
5898
- /**
5899
- * Subscribe a function to an event.
5900
- *
5901
- * @param eventName An event name which, when fired, will call the provided
5902
- * function.
5903
- * @param fn A callback that gets called when the corresponding event is fired. The
5904
- * callback will get passed an argument with a type that's one of event payloads.
5905
- * @param options Optional options object. If a signal is provided, the subscription will be
5906
- * automatically cleaned up when that signal is aborted.
5907
- * @returns A cleanup function that unsubscribes the event listener when called.
5908
- * @example
5909
- * // Subscribe to the 'click' event
5910
- * const handler = (event) => {
5911
- * const { coordinate } = event;
5912
- * const { latitude, longitude } = coordinate;
5913
- * console.log(`Map was clicked at ${latitude}, ${longitude}`);
5914
- * };
5915
- * map.on('click', handler);
5916
- */
5917
- on<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, fn: (payload: EVENT_PAYLOAD[EVENT_NAME] extends {
5918
- data: null;
5919
- } ? EVENT_PAYLOAD[EVENT_NAME]["data"] : EVENT_PAYLOAD[EVENT_NAME]) => void, options?: {
5920
- signal?: AbortSignal;
5921
- }): () => void;
5922
- /**
5923
- * Unsubscribe a function previously subscribed with {@link on}
5924
- *
5925
- * @param eventName An event name to which the provided function was previously
5926
- * subscribed.
5927
- * @param fn A function that was previously passed to {@link on}. The function must
5928
- * have the same reference as the function that was subscribed.
5929
- * @example
5930
- * // Unsubscribe from the 'click' event
5931
- * const handler = (event) => {
5932
- * console.log('Map was clicked', event);
5933
- * };
5934
- * map.off('click', handler);
5935
- */
5936
- off<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, fn: (payload: EVENT_PAYLOAD[EVENT_NAME] extends {
5937
- data: null;
5938
- } ? EVENT_PAYLOAD[EVENT_NAME]["data"] : EVENT_PAYLOAD[EVENT_NAME]) => void): void;
5939
- /**
5940
- * @private
5941
- * @internal
5942
- * Destroys the PubSub instance and automatically unsubscribes all listeners registered via on().
5943
- */
5944
- destroy(): void;
5945
- }
5946
- declare const EASING_CURVES: readonly [
5947
- "ease-in",
5948
- "ease-out",
5949
- "ease-in-out",
5950
- "linear"
5951
- ];
5952
- type EasingCurve = (typeof EASING_CURVES)[number];
5953
5961
  type ExpiryData = {
5954
5962
  cacheControl?: string | null;
5955
5963
  expires?: Date | string | null;
@@ -6887,6 +6895,35 @@ type StyleImageMetadata = {
6887
6895
  textFitHeight?: TextFit;
6888
6896
  };
6889
6897
  type StyleImage = StyleImageData & StyleImageMetadata;
6898
+ interface StyleImageInterface {
6899
+ width: number;
6900
+ height: number;
6901
+ data: Uint8Array | Uint8ClampedArray;
6902
+ /**
6903
+ * This method is called once before every frame where the icon will be used.
6904
+ * The method can optionally update the image's `data` member with a new image.
6905
+ *
6906
+ * If the method updates the image it must return `true` to commit the change.
6907
+ * If the method returns `false` or nothing the image is assumed to not have changed.
6908
+ *
6909
+ * If updates are infrequent it maybe easier to use {@link Map#updateImage} to update
6910
+ * the image instead of implementing this method.
6911
+ *
6912
+ * @returns `true` if this method updated the image. `false` if the image was not changed.
6913
+ */
6914
+ render?: () => boolean;
6915
+ /**
6916
+ * Optional method called when the layer has been added to the Map with {@link Map#addImage}.
6917
+ *
6918
+ * @param map - The Map this custom layer was just added to.
6919
+ */
6920
+ onAdd?: (map: Map$1, id: string) => void;
6921
+ /**
6922
+ * Optional method called when the icon is removed from the map with {@link Map#removeImage}.
6923
+ * This gives the image a chance to clean up resources and event listeners.
6924
+ */
6925
+ onRemove?: () => void;
6926
+ }
6890
6927
  declare class IndexBuffer {
6891
6928
  context: Context;
6892
6929
  buffer: WebGLBuffer;
@@ -11700,6 +11737,9 @@ interface Subscription {
11700
11737
  */
11701
11738
  unsubscribe(): void;
11702
11739
  }
11740
+ type Complete<T> = {
11741
+ [P in keyof Required<T>]: Pick<T, P> extends Required<Pick<T, P>> ? T[P] : (T[P] | undefined);
11742
+ };
11703
11743
  type RequireAtLeastOne<T> = {
11704
11744
  [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>;
11705
11745
  }[keyof T];
@@ -12625,6 +12665,84 @@ declare abstract class Camera$1 extends Evented {
12625
12665
  */
12626
12666
  queryTerrainElevation(lngLatLike: LngLatLike): number | null;
12627
12667
  }
12668
+ type EventInProgress = {
12669
+ handlerName: string;
12670
+ originalEvent: Event$1;
12671
+ };
12672
+ type EventsInProgress = {
12673
+ zoom?: EventInProgress;
12674
+ roll?: EventInProgress;
12675
+ pitch?: EventInProgress;
12676
+ rotate?: EventInProgress;
12677
+ drag?: EventInProgress;
12678
+ };
12679
+ declare class HandlerManager {
12680
+ _map: Map$1;
12681
+ _el: HTMLElement;
12682
+ _handlers: Array<{
12683
+ handlerName: string;
12684
+ handler: Handler;
12685
+ allowed: Array<string>;
12686
+ }>;
12687
+ _eventsInProgress: EventsInProgress;
12688
+ _frameId: number;
12689
+ _inertia: HandlerInertia;
12690
+ _bearingSnap: number;
12691
+ _handlersById: {
12692
+ [x: string]: Handler;
12693
+ };
12694
+ _updatingCamera: boolean;
12695
+ _changes: Array<[
12696
+ HandlerResult,
12697
+ EventsInProgress,
12698
+ {
12699
+ [handlerName: string]: Event$1;
12700
+ }
12701
+ ]>;
12702
+ _terrainMovement: boolean;
12703
+ _zoom: {
12704
+ handlerName: string;
12705
+ };
12706
+ _previousActiveHandlers: {
12707
+ [x: string]: Handler;
12708
+ };
12709
+ _listeners: Array<[
12710
+ Window | Document | HTMLElement,
12711
+ string,
12712
+ {
12713
+ passive?: boolean;
12714
+ capture?: boolean;
12715
+ } | undefined
12716
+ ]>;
12717
+ constructor(map: Map$1, options: CompleteMapOptions);
12718
+ destroy(): void;
12719
+ _addDefaultHandlers(options: CompleteMapOptions): void;
12720
+ _add(handlerName: string, handler: Handler, allowed?: Array<string>): void;
12721
+ stop(allowEndAnimation: boolean): void;
12722
+ isActive(): boolean;
12723
+ isZooming(): boolean;
12724
+ isRotating(): boolean;
12725
+ isMoving(): boolean;
12726
+ _blockedByActive(activeHandlers: {
12727
+ [x: string]: Handler;
12728
+ }, allowed: Array<string>, myName: string): boolean;
12729
+ handleWindowEvent: (e: {
12730
+ type: "mousemove" | "mouseup" | "touchmove";
12731
+ }) => void;
12732
+ _getMapTouches(touches: TouchList): TouchList;
12733
+ handleEvent: (e: Event$1, eventName?: keyof Handler) => void;
12734
+ mergeHandlerResult(mergedHandlerResult: HandlerResult, eventsInProgress: EventsInProgress, handlerResult: HandlerResult, name: string, e?: UIEvent): void;
12735
+ _applyChanges(): void;
12736
+ _updateMapTransform(combinedResult: HandlerResult, combinedEventsInProgress: EventsInProgress, deactivatedHandlers: {
12737
+ [handlerName: string]: Event$1;
12738
+ }): void;
12739
+ _fireEvents(newEventsInProgress: EventsInProgress, deactivatedHandlers: {
12740
+ [handlerName: string]: Event$1;
12741
+ }, allowEndAnimation: boolean): void;
12742
+ _fireEvent(type: string, e?: Event$1): void;
12743
+ _requestFrame(): number;
12744
+ _triggerRenderFrame(): void;
12745
+ }
12628
12746
  type ControlPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right";
12629
12747
  type MapLayerMouseEvent = MapMouseEvent & {
12630
12748
  features?: MapGeoJSONFeature[];
@@ -13520,6 +13638,7 @@ type MapOptions = {
13520
13638
  */
13521
13639
  centerClampedToGround?: boolean;
13522
13640
  };
13641
+ type CompleteMapOptions = Complete<MapOptions>;
13523
13642
  declare class Map$1 extends Camera$1 {
13524
13643
  style: Style$1;
13525
13644
  painter: Painter;
@@ -15499,7 +15618,7 @@ type WatermarkUpdateOptions = Omit<WatermarkOptions, "onClick" | "visible"> & {
15499
15618
  /** Set the interactivity of the watermark. */
15500
15619
  interactive?: boolean;
15501
15620
  };
15502
- declare class WatermarkSystem extends PubSub$1<{
15621
+ declare class WatermarkSystem extends PubSub<{
15503
15622
  "texture-loaded": void;
15504
15623
  }> {
15505
15624
  #private;
@@ -15579,7 +15698,7 @@ type PackedJsonMessage = {
15579
15698
  shouldCollideWithScreenEdges: boolean;
15580
15699
  lockedToStrategyIndex: number;
15581
15700
  };
15582
- declare class CollisionSystem extends PubSub<TCollisionSystemEvent, keyof TCollisionSystemEvent> {
15701
+ declare class CollisionSystem extends PubSub$1<TCollisionSystemEvent, keyof TCollisionSystemEvent> {
15583
15702
  private worker;
15584
15703
  private debugContext;
15585
15704
  private debugCanvas;
@@ -15661,7 +15780,7 @@ type InteractionState = {
15661
15780
  offsetY: number;
15662
15781
  } | undefined;
15663
15782
  };
15664
- declare class InteractionSystem extends PubSub<InteractionEvents> {
15783
+ declare class InteractionSystem extends PubSub$1<InteractionEvents> {
15665
15784
  raycaster: Raycaster;
15666
15785
  private state;
15667
15786
  private coreState;
@@ -16154,7 +16273,7 @@ type AddLabelOptionsInternal = z.input<typeof addLabelOptionsSchema> & {
16154
16273
  */
16155
16274
  textPlacement?: LabelTextPlacement | LabelTextPlacement[];
16156
16275
  };
16157
- declare class MeshCreationAndOptimizationSystem extends PubSub$1<{
16276
+ declare class MeshCreationAndOptimizationSystem extends PubSub<{
16158
16277
  "model-loaded": void;
16159
16278
  "geometry-2d-added": void;
16160
16279
  "geometry-group-added": void;
@@ -16194,7 +16313,7 @@ declare enum TEXTALIGN {
16194
16313
  CENTER = "center",
16195
16314
  RIGHT = "right"
16196
16315
  }
16197
- declare class TwoDDrawSystem extends PubSub$1<{
16316
+ declare class TwoDDrawSystem extends PubSub<{
16198
16317
  "img:loaded": undefined;
16199
16318
  }> {
16200
16319
  dirty: boolean;
@@ -16252,7 +16371,7 @@ declare class DrawSystem {
16252
16371
  determineTextureVisiblity(meshComponent: MeshComponent, textureComponent: TextureComponent, interactionComponent?: InteractionComponent): void;
16253
16372
  update(): void;
16254
16373
  }
16255
- declare class TwoDVisibilitySystem extends PubSub<{
16374
+ declare class TwoDVisibilitySystem extends PubSub$1<{
16256
16375
  "draw:2d": undefined;
16257
16376
  "animate:2d": undefined;
16258
16377
  }> {
@@ -16270,7 +16389,7 @@ declare class TwoDVisibilitySystem extends PubSub<{
16270
16389
  playAnimations: () => void;
16271
16390
  _playAnimations(): void;
16272
16391
  }
16273
- declare class RenderSystem extends PubSub$1<{
16392
+ declare class RenderSystem extends PubSub<{
16274
16393
  "measure-canvas": undefined;
16275
16394
  "pre-render": undefined;
16276
16395
  "post-render": undefined;
@@ -16450,7 +16569,7 @@ type CameraSystemState = {
16450
16569
  type CameraEvents = {
16451
16570
  [Event in CameraEventName]: Event extends keyof SpecificCameraEvents ? SpecificCameraEvents[Event] : undefined;
16452
16571
  };
16453
- declare class CameraSystem extends PubSub<CameraEvents> {
16572
+ declare class CameraSystem extends PubSub$1<CameraEvents> {
16454
16573
  #private;
16455
16574
  dirty: boolean;
16456
16575
  zoomDirty: boolean;
@@ -16960,7 +17079,7 @@ declare class DOMDrawSystem {
16960
17079
  constructor(state: RendererState);
16961
17080
  update(isUserInteracting: boolean): void;
16962
17081
  }
16963
- declare class DOMResizeSystem extends PubSub$1<{
17082
+ declare class DOMResizeSystem extends PubSub<{
16964
17083
  "dimensions-update": void;
16965
17084
  }> {
16966
17085
  state: RendererState;
@@ -17003,7 +17122,7 @@ export declare const ANIMATION_TWEENS: {
17003
17122
  "ease-out": (amount: number) => number;
17004
17123
  "ease-in-out": (amount: number) => number;
17005
17124
  };
17006
- declare class Camera$2 extends PubSub$1<{
17125
+ declare class Camera$2 extends PubSub<{
17007
17126
  "padding-change": {
17008
17127
  padding: InsetPadding;
17009
17128
  };
@@ -17164,7 +17283,7 @@ declare class Camera$2 extends PubSub$1<{
17164
17283
  */
17165
17284
  focusOn(target: (Position | Position$1 | string)[], options?: FocusOnOptions): Promise<void>;
17166
17285
  }
17167
- declare class PanBoundsSystem extends PubSub$1<{
17286
+ declare class PanBoundsSystem extends PubSub<{
17168
17287
  update: void;
17169
17288
  }> {
17170
17289
  private currentTotalBoundingBox?;
@@ -17255,7 +17374,7 @@ declare class IdleQueue {
17255
17374
  */
17256
17375
  clearAll(): void;
17257
17376
  }
17258
- declare class OutlineInterpolationSystem extends PubSub$1<{
17377
+ declare class OutlineInterpolationSystem extends PubSub<{
17259
17378
  "needs-render": void;
17260
17379
  }> {
17261
17380
  #private;
@@ -17290,7 +17409,7 @@ declare class OutlineInterpolationSystem extends PubSub$1<{
17290
17409
  update(zoomLevel: number, isCameraZoomDirty?: boolean): void;
17291
17410
  destroy(): void;
17292
17411
  }
17293
- declare class ImageSystem extends PubSub$1<{
17412
+ declare class ImageSystem extends PubSub<{
17294
17413
  "image-loaded": void;
17295
17414
  }> {
17296
17415
  private rendererState;
@@ -17318,7 +17437,7 @@ declare class ImageSystem extends PubSub$1<{
17318
17437
  update(cameraRotationRadians: number): void;
17319
17438
  updateImageScreenBBoxes(meshComponent: MeshComponent | ImageComponent): void;
17320
17439
  }
17321
- declare class GeometryInFocusSystem extends PubSub$1<{
17440
+ declare class GeometryInFocusSystem extends PubSub<{
17322
17441
  /**
17323
17442
  * Returns the list of entities that are likely in focus, sorted by the weight of the raycast.
17324
17443
  */
@@ -17373,7 +17492,7 @@ declare class GeometryInFocusSystem extends PubSub$1<{
17373
17492
  hideDebug(): void;
17374
17493
  destroy(): void;
17375
17494
  }
17376
- declare class OutdoorLayers extends PubSub<{}> {
17495
+ declare class OutdoorLayers extends PubSub$1<{}> {
17377
17496
  #private;
17378
17497
  idleQueue: IdleQueue;
17379
17498
  hideLayersIntersectingPolygons(polygons: Feature$1<Polygon$1 | MultiPolygon$1, any>[], layers: string[]): void;
@@ -17445,7 +17564,7 @@ declare class GeometryDisposalSystem {
17445
17564
  constructor(state: RendererState);
17446
17565
  update(): void;
17447
17566
  }
17448
- declare class TextureSystem extends PubSub$1<{
17567
+ declare class TextureSystem extends PubSub<{
17449
17568
  "texture-added": void;
17450
17569
  }> {
17451
17570
  dirty: boolean;
@@ -17516,6 +17635,158 @@ declare class PluginSystem {
17516
17635
  unregisterPlugin(plugin: ISystemPlugin): void;
17517
17636
  update(state: RendererState): void;
17518
17637
  }
17638
+ declare class ShadowsSystem {
17639
+ private state;
17640
+ private rendererService;
17641
+ private depthMaterial;
17642
+ private cameraOrbit;
17643
+ private lightCamera;
17644
+ private shadowRenderTarget;
17645
+ private lightMatrix;
17646
+ private currentSnapX;
17647
+ private currentSnapY;
17648
+ private shadowCenter;
17649
+ private shadowPlane;
17650
+ private shadowPlaneMaterial;
17651
+ private shadowPlaneEnabled;
17652
+ private lightCameraHelper;
17653
+ private debugEnabled;
17654
+ private debugGrid;
17655
+ private debugCurrentCell;
17656
+ private debugCurrentCellMaterial;
17657
+ private debugCanvas;
17658
+ private debugCanvasCtx;
17659
+ private debugRenderTarget;
17660
+ /** Immutable user-provided configuration (external API) */
17661
+ private readonly options;
17662
+ /** Mutable internal state that changes during runtime */
17663
+ private readonly internal;
17664
+ private readonly shadowResolutionSizes;
17665
+ private readonly shadowResolutionZoomThresholds;
17666
+ constructor(state: RendererState, rendererService: Renderer, cameraOrbit: Object3D, options?: ShadowsOptions);
17667
+ /**
17668
+ * Creates a WebGLRenderTarget for shadow mapping with the specified size
17669
+ * @param size - The width and height of the render target in pixels
17670
+ * @returns A configured WebGLRenderTarget with depth texture
17671
+ */
17672
+ private createShadowRenderTarget;
17673
+ /**
17674
+ * Resizes the shadow render target to the specified size
17675
+ * Reuses the existing render target to avoid memory allocation overhead
17676
+ * @param size - The new width and height of the render target in pixels
17677
+ */
17678
+ private resizeShadowRenderTarget;
17679
+ /**
17680
+ * Creates a shadow-receiving plane at ground level (z=0)
17681
+ * The plane only renders shadow pixels and is transparent elsewhere
17682
+ */
17683
+ private createShadowPlane;
17684
+ /**
17685
+ * Enable or disable the shadow plane
17686
+ */
17687
+ setShadowPlaneEnabled(enabled: boolean): void;
17688
+ /**
17689
+ * Get shadow plane enabled state
17690
+ */
17691
+ isShadowPlaneEnabled(): boolean;
17692
+ /**
17693
+ * Update shadow plane position to follow camera (for large scenes)
17694
+ */
17695
+ private updateShadowPlanePosition;
17696
+ /**
17697
+ * Enable or disable debug visualization for the shadow system
17698
+ * @param enabled - Whether to show debug helpers
17699
+ */
17700
+ setDebugEnabled(enabled: boolean): void;
17701
+ /**
17702
+ * Get debug visualization enabled state
17703
+ * @returns Whether debug visualization is enabled
17704
+ */
17705
+ isDebugEnabled(): boolean;
17706
+ /**
17707
+ * Creates debug visualization helpers for the shadow system
17708
+ */
17709
+ private createDebugHelpers;
17710
+ /**
17711
+ * Creates a grid visualization showing the shadow snap grid
17712
+ */
17713
+ private createDebugGrid;
17714
+ /**
17715
+ * Creates a colored mesh highlighting the current grid cell
17716
+ */
17717
+ private createDebugCurrentCell;
17718
+ /**
17719
+ * Creates a debug canvas to display the shadow map (what the light camera sees)
17720
+ */
17721
+ private createDebugCanvas;
17722
+ private debugPixelBuffer;
17723
+ /**
17724
+ * Updates the debug canvas with a color render from the light camera's perspective
17725
+ */
17726
+ private updateDebugCanvas;
17727
+ /**
17728
+ * Disposes debug visualization helpers
17729
+ */
17730
+ private disposeDebugHelpers;
17731
+ /**
17732
+ * Updates the debug helpers to reflect current light camera state
17733
+ */
17734
+ private updateDebugHelpers;
17735
+ /**
17736
+ * Calculate sun direction vector from azimuth and elevation angles
17737
+ */
17738
+ private updateSunDirection;
17739
+ private updateLightCamera;
17740
+ private bias;
17741
+ private matrix;
17742
+ private updateLightMatrix;
17743
+ /**
17744
+ * Update sun distance based on camera zoom level
17745
+ */
17746
+ private updateAutoSunDistance;
17747
+ /**
17748
+ * Update shadow resolution based on camera zoom level
17749
+ * Only applies when shadowMapSize is set to 'auto'
17750
+ * Switches between high (4K) and low (2K) resolution with hysteresis
17751
+ */
17752
+ private updateAutoShadowResolution;
17753
+ private updateAutoLightSize;
17754
+ /**
17755
+ * Update snap grid size based on camera zoom level
17756
+ * Larger grid when zoomed out = fewer shadow map re-renders
17757
+ */
17758
+ private updateAutoSnapGridSize;
17759
+ /**
17760
+ * Recreates the debug grid visualization when grid size changes
17761
+ */
17762
+ private recreateDebugGrid;
17763
+ private transparentGeometryVisibilityStateMap;
17764
+ private renderShadowMap;
17765
+ private updateShadowUniforms;
17766
+ private lastZoomLevel;
17767
+ private lastCameraElevation;
17768
+ /**
17769
+ * Checks if zoom level or camera elevation has changed significantly since the last update
17770
+ * @param zoomLevel - Current zoom level
17771
+ * @param cameraElevation - Current camera elevation
17772
+ * @returns True if zoom or elevation changed significantly, false otherwise
17773
+ */
17774
+ private zoomOrElevationChanged;
17775
+ private updateSnap;
17776
+ needsRender: boolean;
17777
+ needsCompute: boolean;
17778
+ update(zoomLevel: number, cameraElevation: number): void;
17779
+ /**
17780
+ * For some reason, geometries with opacity 0 are still casting a shadow.
17781
+ * This method excludes them from the shadow map.
17782
+ */
17783
+ private excludeNonShadowGeometry;
17784
+ private revertExcludedNonShadowGeometry;
17785
+ /**
17786
+ * Dispose shadow plane resources
17787
+ */
17788
+ destroy(): void;
17789
+ }
17519
17790
  type Systems = {
17520
17791
  cameraSystem: CameraSystem;
17521
17792
  panBoundsSystem: PanBoundsSystem;
@@ -17550,13 +17821,14 @@ type Systems = {
17550
17821
  maskingSystem: MaskingSystem;
17551
17822
  clippingPlaneSystem: ClippingPlaneSystem;
17552
17823
  pluginSystem: PluginSystem;
17824
+ shadowsSystem?: ShadowsSystem;
17553
17825
  };
17554
17826
  export type MapViewState = {
17555
17827
  readonly type: "map-view";
17556
17828
  hoverColor: string;
17557
17829
  text3dHoverColor: string;
17558
17830
  };
17559
- declare class Core extends PubSub<MapEvent> {
17831
+ declare class Core extends PubSub$1<MapEvent> {
17560
17832
  #private;
17561
17833
  options: Omit<RendererCoreOptions, "outdoorView">;
17562
17834
  container: HTMLElement;
@@ -17871,7 +18143,7 @@ declare class Core extends PubSub<MapEvent> {
17871
18143
  * };
17872
18144
  * map.on('click', handler);
17873
18145
  */
17874
- on: PubSub<MapEvent>["on"];
18146
+ on: PubSub$1<MapEvent>["on"];
17875
18147
  /**
17876
18148
  * Unsubscribe a function previously subscribed with {@link on}
17877
18149
  *
@@ -17886,7 +18158,7 @@ declare class Core extends PubSub<MapEvent> {
17886
18158
  * };
17887
18159
  * map.off('click', handler);
17888
18160
  */
17889
- off: PubSub<MapEvent>["off"];
18161
+ off: PubSub$1<MapEvent>["off"];
17890
18162
  /**
17891
18163
  * @hidden
17892
18164
  * Returns the current cursor decided by Mappedin. This is useful when integrating with other overlays to show the correct user interaction.
@@ -18184,7 +18456,82 @@ type RendererCoreOptions = Partial<{
18184
18456
  transformImageRequest?: TransformImageRequest;
18185
18457
  useWorkers?: boolean;
18186
18458
  useCollisionWorker?: boolean;
18459
+ /**
18460
+ * Shadow rendering configuration
18461
+ * @experimental
18462
+ * @default { enabled: false }
18463
+ */
18464
+ __EXPERIMENTAL_shadows?: ShadowsOptions;
18187
18465
  }>;
18466
+ type ShadowsOptions = {
18467
+ /**
18468
+ * Master toggle for the entire shadow system
18469
+ * @default false
18470
+ */
18471
+ enabled: boolean;
18472
+ /**
18473
+ * Enable debug visualization (light camera frustum, snap grid, current cell highlight, shadow map preview)
18474
+ * @default false
18475
+ */
18476
+ debug?: boolean;
18477
+ /**
18478
+ * Base color tint applied to shadows. Lighter colors make shadows softer and less harsh.
18479
+ * @default '#a0a0a0'
18480
+ */
18481
+ baseColor?: string;
18482
+ /**
18483
+ * Opacity/darkness of shadows (0.0 = invisible, 1.0 = completely black).
18484
+ * Lower values create softer, more subtle shadows that blend with ambient lighting.
18485
+ * @default 0.35
18486
+ */
18487
+ shadowOpacity?: number;
18488
+ /**
18489
+ * Number of Poisson disk samples for Percentage Closer Filtering (PCF).
18490
+ * Higher values create softer shadow edges but impact performance.
18491
+ * Valid range: 1-16 samples (uses rotated Poisson disk pattern).
18492
+ * @default 4
18493
+ */
18494
+ pcfSamples?: number;
18495
+ /**
18496
+ * Sampling spread/radius for PCF soft shadows in shadow map texels.
18497
+ * Larger values create softer, more blurred shadow edges and reduce banding.
18498
+ * Smaller values create sharper, more defined shadows.
18499
+ * @default 2.5
18500
+ */
18501
+ pcfSpread?: number;
18502
+ /**
18503
+ * Depth bias to prevent shadow acne and self-shadowing artifacts.
18504
+ * Increase if you see moiré patterns, noise, or overall darkening.
18505
+ * Too high causes "peter panning" (detached shadows).
18506
+ * @default 0.001
18507
+ */
18508
+ shadowBias?: number;
18509
+ /**
18510
+ * Offset shadows along surface normals to prevent self-shadowing artifacts (shadow acne).
18511
+ * Increase if you see noise/banding on surfaces. Too high causes shadows to detach from objects.
18512
+ * @default 0.12
18513
+ */
18514
+ normalBias?: number;
18515
+ /**
18516
+ * Resolution of the shadow map texture in pixels (width/height).
18517
+ * - `'auto'` (default): Automatically switches between high (4096) and low (2048) resolution based on zoom level
18518
+ * - A number value (e.g., 1024, 2048, 4096): Uses a fixed resolution
18519
+ * Higher values create sharper shadows but use more memory and bandwidth.
18520
+ * Lower values are faster but may show pixelation.
18521
+ * @default 'auto'
18522
+ */
18523
+ shadowMapSize?: "auto" | number;
18524
+ /**
18525
+ * Sun azimuth angle in degrees: 0=North, 90=East, 180=South, 270=West
18526
+ * @default 225
18527
+ */
18528
+ sunAzimuth?: number;
18529
+ /**
18530
+ * Sun elevation angle in degrees: 0=horizon, 90=directly overhead
18531
+ * @default 45
18532
+ */
18533
+ sunElevation?: number;
18534
+ };
18188
18535
  /**
18189
18536
  * A color string. Color can be one of:
18190
18537
  * - CSS color name, e.g. `DarkGoldenRod`
@@ -18523,6 +18870,14 @@ type RendererState = {
18523
18870
  ambientLight: AmbientLight;
18524
18871
  renderer: WebGLRenderer;
18525
18872
  threeJSScene: Scene;
18873
+ /**
18874
+ * The depth range for 3D rendering. This is used to ensure that depth comparisons are accurate, since Maplibre changes the depth range during rendering.
18875
+ * @defaultValue [0, 1]
18876
+ */
18877
+ depthRangeFor3D: [
18878
+ number,
18879
+ number
18880
+ ];
18526
18881
  };
18527
18882
  type EntityTypes = Geometry3DTypes | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D;
18528
18883
  type TransformImageRequest = (url: string) => Promise<{
@@ -19339,7 +19694,7 @@ declare class FloorStackObject implements Omit<MVFFloorStack, "maps" | "floors"
19339
19694
  addFloor(floor: FloorObject): void;
19340
19695
  loadAllFloors(): void;
19341
19696
  }
19342
- declare class GeojsonApiMapObject extends PubSub$1<{
19697
+ declare class GeojsonApiMapObject extends PubSub<{
19343
19698
  "floor-change": {
19344
19699
  reason?: TFloorChangeReason;
19345
19700
  floorId: string;
@@ -22459,7 +22814,7 @@ export type MapElementToUpdateState = {
22459
22814
  [DOORS.Exterior]: TDoorsUpdateState;
22460
22815
  [DOORS.Interior]: TDoorsUpdateState;
22461
22816
  };
22462
- declare class GeoJsonApi extends PubSub$1<TNavigationEvents> {
22817
+ declare class GeoJsonApi extends PubSub<TNavigationEvents> {
22463
22818
  #private;
22464
22819
  core: Core;
22465
22820
  mapObjects: GeojsonApiMapObject[];
@@ -22482,7 +22837,7 @@ declare class GeoJsonApi extends PubSub$1<TNavigationEvents> {
22482
22837
  * Internal systems publish events here which are then exposed to developers via
22483
22838
  * MapView.on() and MapView.off().
22484
22839
  */
22485
- externalPubSub: PubSub$1<TEvents>;
22840
+ externalPubSub: PubSub<TEvents>;
22486
22841
  get manualFloorVisibility(): boolean;
22487
22842
  set manualFloorVisibility(value: boolean);
22488
22843
  get hidePathsNotOnCurrentFloor(): boolean;
@@ -22499,7 +22854,7 @@ declare class GeoJsonApi extends PubSub$1<TNavigationEvents> {
22499
22854
  Shapes: Shapes;
22500
22855
  Style: Style$2;
22501
22856
  Image3D: Image3D;
22502
- constructor(rendererCore: Core, mapView: MapView, externalPubSub: PubSub$1<TEvents>);
22857
+ constructor(rendererCore: Core, mapView: MapView, externalPubSub: PubSub<TEvents>);
22503
22858
  preloadFloors(floors: Floor[]): void;
22504
22859
  updateState<T extends MapElementsWithState>(target: T, state: TUpdateState<T>): void;
22505
22860
  updateState<T extends string & NonNullable<unknown>>(target: T, state: ValueOf<MapElementToUpdateState>): void;
@@ -24701,7 +25056,7 @@ export declare class ImageMetaData extends BaseMetaData {
24701
25056
  */
24702
25057
  destroy(): void;
24703
25058
  }
24704
- type MVF3Location = Required<ParsedMVFv3>["locations"][number];
25059
+ type MVF3Location = Required<MVFv2_STANDARD_MVFv3>["locations"][number];
24705
25060
  type LocationData = Omit<MVF2Location, "categories" | "spaces" | "obstructions" | "entrances" | "shapes" | "connections" | "annotations" | "areas" | "openingHoursSpecification" | "links" | "pictures" | "website" | "icon"> & {
24706
25061
  links: Hyperlink[];
24707
25062
  images: ImageMetaData[];
@@ -24732,8 +25087,13 @@ export declare class LocationProfile extends BaseMetaData implements LocationDat
24732
25087
  * The location's logo
24733
25088
  *
24734
25089
  * @format uri
25090
+ * @deprecated Use the {@link logoImage} property instead
24735
25091
  */
24736
25092
  logo?: string;
25093
+ /**
25094
+ * An image representing the location's logo
25095
+ */
25096
+ logoImage?: ImageMetaData;
24737
25097
  phone?: string;
24738
25098
  /**
24739
25099
  * The location's social media links.
@@ -25153,7 +25513,16 @@ export declare class Space extends DetailedMapData<SpaceFeature> implements IGeo
25153
25513
  */
25154
25514
  get type(): TSpaceType;
25155
25515
  /**
25156
- * @internal
25516
+ * Gets the {@link EnterpriseLocation}s attached to this space.
25517
+ *
25518
+ * @returns {EnterpriseLocation[]} An array of enterprise locations.
25519
+ */
25520
+ get enterpriseLocations(): EnterpriseLocation[];
25521
+ /**
25522
+ * Gets the {@link EnterpriseLocation}s attached to this space.
25523
+ *
25524
+ * @deprecated Use {@link enterpriseLocations} instead. This property will be removed in a future release.
25525
+ * @returns {EnterpriseLocation[]} An array of enterprise locations.
25157
25526
  */
25158
25527
  get locations(): EnterpriseLocation[];
25159
25528
  /**
@@ -25530,7 +25899,16 @@ export declare class MapObject extends DetailedMapData<ObstructionFeature> imple
25530
25899
  */
25531
25900
  get type(): string;
25532
25901
  /**
25533
- * @internal
25902
+ * Gets the {@link EnterpriseLocation}s attached to this object.
25903
+ *
25904
+ * @returns {EnterpriseLocation[]} An array of enterprise locations.
25905
+ */
25906
+ get enterpriseLocations(): EnterpriseLocation[];
25907
+ /**
25908
+ * Gets the {@link EnterpriseLocation}s attached to this object.
25909
+ *
25910
+ * @deprecated Use {@link enterpriseLocations} instead. This property will be removed in a future release.
25911
+ * @returns {EnterpriseLocation[]} An array of enterprise locations.
25534
25912
  */
25535
25913
  get locations(): EnterpriseLocation[];
25536
25914
  /**
@@ -25610,7 +25988,7 @@ type TokenManagerEvents = {
25610
25988
  sasTokens: Record<string, TokenWithExpiration>;
25611
25989
  };
25612
25990
  };
25613
- type TokenManagerPubSub = PubSub$1<TokenManagerEvents>;
25991
+ type TokenManagerPubSub = PubSub<TokenManagerEvents>;
25614
25992
  declare class TokenManager {
25615
25993
  #private;
25616
25994
  constructor(mapIds: string[], options: TokenManagerOptions);
@@ -25700,7 +26078,7 @@ type TMapDataInternalOptions = {
25700
26078
  binaryBundle?: Uint8Array;
25701
26079
  tokenManager?: TokenManager;
25702
26080
  getMapDataOptions?: TGetMapDataOptions;
25703
- mvf3?: ParsedMVFv3;
26081
+ mvf3?: MVFv2_STANDARD_MVFv3;
25704
26082
  };
25705
26083
  type MVFNodeFeature = MVFNodeCollection["features"][number];
25706
26084
  type MVFFloorFeature = FloorCollection["features"][number];
@@ -26147,16 +26525,20 @@ type MapDataRecords = {
26147
26525
  [floorId: string]: AnnotationCollection["features"][number][];
26148
26526
  };
26149
26527
  mvfAreasById: Record<AreaId, AreaCollection["features"][number]>;
26150
- mvf3LocationsById: Record<string, Required<ParsedMVFv3>["locations"][number]>;
26528
+ mvf3LocationsById: Record<string, Required<MVFv2_STANDARD_MVFv3>["locations"][number]>;
26151
26529
  };
26152
26530
  type EnterpriseMapDataRecords = {
26153
26531
  connectionsByExternalId: Record<string, Connection[]>;
26154
26532
  locationsByExternalId: Record<string, EnterpriseLocation[]>;
26155
26533
  categoriesByExternalId: Record<string, EnterpriseCategory[]>;
26156
26534
  locationsById: Record<MVFEnterpriseLocationId, EnterpriseLocation>;
26535
+ /** Instance locations by ID - separate from locationsById so they don't appear in getByType */
26536
+ locationInstancesById: Record<string, EnterpriseLocation>;
26537
+ /** Instance locations by polygon ID - for space.enterpriseLocations to check instances first */
26538
+ instanceLocationsByPolygonId: Record<string, EnterpriseLocation>;
26157
26539
  categoriesById: Record<MVFEnterpriseCategoryId, EnterpriseCategory>;
26158
26540
  locationIdsByNodeId: Record<string, MVFEnterpriseLocationId[]>;
26159
- locationInstancesById: Record<string, EnterpriseLocationInstance>;
26541
+ mvfLocationInstancesById: Record<string, EnterpriseLocationInstance>;
26160
26542
  venue: MVFEnterpriseVenue;
26161
26543
  mvfCategoriesById: Record<string, MVFEnterpriseCategory>;
26162
26544
  mvfLocationsById: Record<string, MVFEnterpriseLocation>;
@@ -26708,7 +27090,7 @@ export type TFindPreferredLanguageInVenueOptions = {
26708
27090
  * @returns An object containing the selected language code and name, or undefined if no language is found
26709
27091
  */
26710
27092
  export declare function findPreferredLanguageInVenue(venue: EnterpriseVenue, options?: TFindPreferredLanguageInVenueOptions): Language;
26711
- declare class MapDataInternal extends PubSub$1<{
27093
+ declare class MapDataInternal extends PubSub<{
26712
27094
  "language-change": {
26713
27095
  code: string;
26714
27096
  name: string;
@@ -26776,6 +27158,8 @@ declare class MapDataInternal extends PubSub$1<{
26776
27158
  locationProfilesByAttachedFeatureId: MapDataRecords["locationProfilesByAttachedFeatureId"];
26777
27159
  entranceNodeIdsBySpaceId?: MapDataRecords["entranceNodeIdsBySpaceId"];
26778
27160
  locationsById: EnterpriseMapDataRecords["locationsById"];
27161
+ locationInstancesById: EnterpriseMapDataRecords["locationInstancesById"];
27162
+ instanceLocationsByPolygonId: EnterpriseMapDataRecords["instanceLocationsByPolygonId"];
26779
27163
  categoriesById: EnterpriseMapDataRecords["categoriesById"];
26780
27164
  mvfLocationsByGeometryId: EnterpriseMapDataRecords["mvfLocationsByGeometryId"];
26781
27165
  locationIdsByNodeId: EnterpriseMapDataRecords["locationIdsByNodeId"];
@@ -28304,6 +28688,80 @@ export type TShow3DMapOptions = {
28304
28688
  * @default false
28305
28689
  */
28306
28690
  disableWorkers?: boolean;
28691
+ /**
28692
+ * Shadow rendering configuration.
28693
+ * @experimental
28694
+ * @default { enabled: false }
28695
+ */
28696
+ __EXPERIMENTAL_shadows?: {
28697
+ /**
28698
+ * Master toggle for the entire shadow system
28699
+ * @default false
28700
+ */
28701
+ enabled: boolean;
28702
+ /**
28703
+ * Enable debug visualization (light camera frustum, snap grid, current cell highlight, shadow map preview)
28704
+ * @default false
28705
+ */
28706
+ debug?: boolean;
28707
+ /**
28708
+ * Base color tint applied to shadows. Lighter colors make shadows softer and less harsh.
28709
+ * @default '#a0a0a0'
28710
+ */
28711
+ baseColor?: string;
28712
+ /**
28713
+ * Opacity/darkness of shadows (0.0 = invisible, 1.0 = completely black).
28714
+ * Lower values create softer, more subtle shadows that blend with ambient lighting.
28715
+ * @default 0.35
28716
+ */
28717
+ shadowOpacity?: number;
28718
+ /**
28719
+ * Number of Poisson disk samples for Percentage Closer Filtering (PCF).
28720
+ * Higher values create softer shadow edges but impact performance.
28721
+ * Valid range: 1-16 samples (uses rotated Poisson disk pattern).
28722
+ * @default 4
28723
+ */
28724
+ pcfSamples?: number;
28725
+ /**
28726
+ * Sampling spread/radius for PCF soft shadows in shadow map texels.
28727
+ * Larger values create softer, more blurred shadow edges and reduce banding.
28728
+ * Smaller values create sharper, more defined shadows.
28729
+ * @default 2.5
28730
+ */
28731
+ pcfSpread?: number;
28732
+ /**
28733
+ * Depth bias to prevent shadow acne and self-shadowing artifacts.
28734
+ * Increase if you see moiré patterns, noise, or overall darkening.
28735
+ * Too high causes "peter panning" (detached shadows).
28736
+ * @default 0.001
28737
+ */
28738
+ shadowBias?: number;
28739
+ /**
28740
+ * Offset shadows along surface normals to prevent self-shadowing artifacts (shadow acne).
28741
+ * Increase if you see noise/banding on surfaces. Too high causes shadows to detach from objects.
28742
+ * @default 0.12
28743
+ */
28744
+ normalBias?: number;
28745
+ /**
28746
+ * Resolution of the shadow map texture in pixels (width/height).
28747
+ * - `'auto'` (default): Automatically switches between high (4096) and low (2048) resolution based on zoom level
28748
+ * - A number value (e.g., 1024, 2048, 4096): Uses a fixed resolution
28749
+ * Higher values create sharper shadows but use more memory and bandwidth.
28750
+ * Lower values are faster but may show pixelation.
28751
+ * @default 'auto'
28752
+ */
28753
+ shadowMapSize?: "auto" | number;
28754
+ /**
28755
+ * Sun azimuth angle in degrees: 0=North, 90=East, 180=South, 270=West
28756
+ * @default 225
28757
+ */
28758
+ sunAzimuth?: number;
28759
+ /**
28760
+ * Sun elevation angle in degrees: 0=horizon, 90=directly overhead
28761
+ * @default 45
28762
+ */
28763
+ sunElevation?: number;
28764
+ };
28307
28765
  /**
28308
28766
  * @experimental
28309
28767
  * @internal
@@ -28427,7 +28885,6 @@ export {
28427
28885
  OperationHours,
28428
28886
  Point$1 as Point,
28429
28887
  Polygon$1 as Polygon,
28430
- PubSub$1 as PubSub,
28431
28888
  RendererState as TRendererState,
28432
28889
  SiblingGroup,
28433
28890
  Style$2 as Style,