@mappedin/mappedin-js 6.7.0 → 6.9.0

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 MVFLocation, LocationId, LocationLink, LocationSocial, LocationState, 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 { ParsedMVF, 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, 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">>;
@@ -576,7 +703,11 @@ declare function createEnvControl(): {
576
703
  __getState: () => Environment;
577
704
  };
578
705
  type EnvControl = ReturnType<typeof createEnvControl>;
579
- export declare function unzipAndParseMVFv2(data: Uint8Array, inputVersion?: string): Promise<ParsedMVF>;
706
+ type ParsedMVFResult = {
707
+ mvf2: ParsedMVF;
708
+ mvf3?: MVFv2_STANDARD_MVFv3;
709
+ };
710
+ export declare function unzipAndParseMVFv2(data: Uint8Array, inputVersion?: string): Promise<ParsedMVFResult>;
580
711
  type TDrawFn = (ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, x: number, y: number) => void;
581
712
  type MaterialSide = "back" | "front" | "double";
582
713
  type Style = {
@@ -1009,6 +1140,7 @@ declare class BatchedStandardMaterial extends MeshLambertMaterial {
1009
1140
  removeSideTexture(batchId: number): void;
1010
1141
  removeTopTexture(batchId: number): void;
1011
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;
1012
1144
  clone(params?: MeshLambertMaterialParameters): this;
1013
1145
  }
1014
1146
  interface StandardSchemaV1<Input = unknown, Output = Input> {
@@ -5223,6 +5355,10 @@ declare class FocusableComponent {
5223
5355
  * Vertices of the geometry in world space
5224
5356
  */
5225
5357
  vertices?: Vector3[];
5358
+ /**
5359
+ * Bounding box computed from object for frustum culling
5360
+ */
5361
+ boundingBox: Box3;
5226
5362
  }
5227
5363
  type TextureStyle = {
5228
5364
  texture?: SingleTexture;
@@ -5512,7 +5648,7 @@ interface PathUniforms {
5512
5648
  value: number;
5513
5649
  };
5514
5650
  }
5515
- 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> {
5516
5652
  /**
5517
5653
  * @private
5518
5654
  * @internal
@@ -5822,126 +5958,6 @@ declare class QuadTree<T = unknown> {
5822
5958
  */
5823
5959
  draw(context: CanvasRenderingContext2D): void;
5824
5960
  }
5825
- export declare enum E_SDK_LOG_LEVEL {
5826
- LOG = 0,
5827
- WARN = 1,
5828
- ERROR = 2,
5829
- SILENT = 3
5830
- }
5831
- export declare function setLoggerLevel(level: E_SDK_LOG_LEVEL): void;
5832
- /**
5833
- * @internal
5834
- */
5835
- export declare class MappedinError extends Error {
5836
- constructor(message: string, label?: string);
5837
- }
5838
- /**
5839
- * @internal
5840
- */
5841
- export declare class MappedinRenderError extends MappedinError {
5842
- constructor(message: string, label?: string);
5843
- }
5844
- /**
5845
- * Generic PubSub class implementing the Publish-Subscribe pattern for event handling.
5846
- *
5847
- * @template EVENT_PAYLOAD - The type of the event payload.
5848
- * @template EVENT - The type of the event.
5849
- */
5850
- declare class PubSub$1<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof EVENT_PAYLOAD> {
5851
- /**
5852
- * @private
5853
- * @internal
5854
- */
5855
- private _subscribers;
5856
- /**
5857
- * @private
5858
- * @internal
5859
- * AbortController for managing lifecycle and cleanup
5860
- */
5861
- private _abortController;
5862
- /**
5863
- * @protected
5864
- * @internal
5865
- * Tracks all cleanup functions for subscriptions made via on()
5866
- */
5867
- protected _cleanupFunctions: Array<() => void>;
5868
- /**
5869
- * Returns the AbortSignal for this PubSub instance.
5870
- * Use this signal with APIs that support cancellation (fetch, addEventListener, etc.)
5871
- * When the PubSub is destroyed, the signal will be aborted and all listeners using it will be automatically removed.
5872
- *
5873
- * @example
5874
- * ```typescript
5875
- * // Automatically cleaned up when PubSub is destroyed
5876
- * pubsub.addEventListener(window, 'resize', handler, { signal: pubsub.signal });
5877
- * ```
5878
- */
5879
- get signal(): AbortSignal;
5880
- /**
5881
- * @private
5882
- * @internal
5883
- */
5884
- publish<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, data?: EVENT_PAYLOAD[EVENT_NAME]): void;
5885
- /**
5886
- * Subscribe a function to be called when the signal is aborted.
5887
- * @param fn The function to call when the signal is aborted.
5888
- */
5889
- onAbort<T extends (...args: any[]) => void>(fn: T): void;
5890
- /**
5891
- * Subscribe a function to an event.
5892
- *
5893
- * @param eventName An event name which, when fired, will call the provided
5894
- * function.
5895
- * @param fn A callback that gets called when the corresponding event is fired. The
5896
- * callback will get passed an argument with a type that's one of event payloads.
5897
- * @param options Optional options object. If a signal is provided, the subscription will be
5898
- * automatically cleaned up when that signal is aborted.
5899
- * @returns A cleanup function that unsubscribes the event listener when called.
5900
- * @example
5901
- * // Subscribe to the 'click' event
5902
- * const handler = (event) => {
5903
- * const { coordinate } = event;
5904
- * const { latitude, longitude } = coordinate;
5905
- * console.log(`Map was clicked at ${latitude}, ${longitude}`);
5906
- * };
5907
- * map.on('click', handler);
5908
- */
5909
- on<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, fn: (payload: EVENT_PAYLOAD[EVENT_NAME] extends {
5910
- data: null;
5911
- } ? EVENT_PAYLOAD[EVENT_NAME]["data"] : EVENT_PAYLOAD[EVENT_NAME]) => void, options?: {
5912
- signal?: AbortSignal;
5913
- }): () => void;
5914
- /**
5915
- * Unsubscribe a function previously subscribed with {@link on}
5916
- *
5917
- * @param eventName An event name to which the provided function was previously
5918
- * subscribed.
5919
- * @param fn A function that was previously passed to {@link on}. The function must
5920
- * have the same reference as the function that was subscribed.
5921
- * @example
5922
- * // Unsubscribe from the 'click' event
5923
- * const handler = (event) => {
5924
- * console.log('Map was clicked', event);
5925
- * };
5926
- * map.off('click', handler);
5927
- */
5928
- off<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, fn: (payload: EVENT_PAYLOAD[EVENT_NAME] extends {
5929
- data: null;
5930
- } ? EVENT_PAYLOAD[EVENT_NAME]["data"] : EVENT_PAYLOAD[EVENT_NAME]) => void): void;
5931
- /**
5932
- * @private
5933
- * @internal
5934
- * Destroys the PubSub instance and automatically unsubscribes all listeners registered via on().
5935
- */
5936
- destroy(): void;
5937
- }
5938
- declare const EASING_CURVES: readonly [
5939
- "ease-in",
5940
- "ease-out",
5941
- "ease-in-out",
5942
- "linear"
5943
- ];
5944
- type EasingCurve = (typeof EASING_CURVES)[number];
5945
5961
  type ExpiryData = {
5946
5962
  cacheControl?: string | null;
5947
5963
  expires?: Date | string | null;
@@ -6879,6 +6895,35 @@ type StyleImageMetadata = {
6879
6895
  textFitHeight?: TextFit;
6880
6896
  };
6881
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
+ }
6882
6927
  declare class IndexBuffer {
6883
6928
  context: Context;
6884
6929
  buffer: WebGLBuffer;
@@ -11692,6 +11737,9 @@ interface Subscription {
11692
11737
  */
11693
11738
  unsubscribe(): void;
11694
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
+ };
11695
11743
  type RequireAtLeastOne<T> = {
11696
11744
  [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>;
11697
11745
  }[keyof T];
@@ -12617,6 +12665,84 @@ declare abstract class Camera$1 extends Evented {
12617
12665
  */
12618
12666
  queryTerrainElevation(lngLatLike: LngLatLike): number | null;
12619
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
+ }
12620
12746
  type ControlPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right";
12621
12747
  type MapLayerMouseEvent = MapMouseEvent & {
12622
12748
  features?: MapGeoJSONFeature[];
@@ -13512,6 +13638,7 @@ type MapOptions = {
13512
13638
  */
13513
13639
  centerClampedToGround?: boolean;
13514
13640
  };
13641
+ type CompleteMapOptions = Complete<MapOptions>;
13515
13642
  declare class Map$1 extends Camera$1 {
13516
13643
  style: Style$1;
13517
13644
  painter: Painter;
@@ -15491,7 +15618,7 @@ type WatermarkUpdateOptions = Omit<WatermarkOptions, "onClick" | "visible"> & {
15491
15618
  /** Set the interactivity of the watermark. */
15492
15619
  interactive?: boolean;
15493
15620
  };
15494
- declare class WatermarkSystem extends PubSub$1<{
15621
+ declare class WatermarkSystem extends PubSub<{
15495
15622
  "texture-loaded": void;
15496
15623
  }> {
15497
15624
  #private;
@@ -15571,7 +15698,7 @@ type PackedJsonMessage = {
15571
15698
  shouldCollideWithScreenEdges: boolean;
15572
15699
  lockedToStrategyIndex: number;
15573
15700
  };
15574
- declare class CollisionSystem extends PubSub<TCollisionSystemEvent, keyof TCollisionSystemEvent> {
15701
+ declare class CollisionSystem extends PubSub$1<TCollisionSystemEvent, keyof TCollisionSystemEvent> {
15575
15702
  private worker;
15576
15703
  private debugContext;
15577
15704
  private debugCanvas;
@@ -15653,7 +15780,7 @@ type InteractionState = {
15653
15780
  offsetY: number;
15654
15781
  } | undefined;
15655
15782
  };
15656
- declare class InteractionSystem extends PubSub<InteractionEvents> {
15783
+ declare class InteractionSystem extends PubSub$1<InteractionEvents> {
15657
15784
  raycaster: Raycaster;
15658
15785
  private state;
15659
15786
  private coreState;
@@ -16146,7 +16273,7 @@ type AddLabelOptionsInternal = z.input<typeof addLabelOptionsSchema> & {
16146
16273
  */
16147
16274
  textPlacement?: LabelTextPlacement | LabelTextPlacement[];
16148
16275
  };
16149
- declare class MeshCreationAndOptimizationSystem extends PubSub$1<{
16276
+ declare class MeshCreationAndOptimizationSystem extends PubSub<{
16150
16277
  "model-loaded": void;
16151
16278
  "geometry-2d-added": void;
16152
16279
  "geometry-group-added": void;
@@ -16186,7 +16313,7 @@ declare enum TEXTALIGN {
16186
16313
  CENTER = "center",
16187
16314
  RIGHT = "right"
16188
16315
  }
16189
- declare class TwoDDrawSystem extends PubSub$1<{
16316
+ declare class TwoDDrawSystem extends PubSub<{
16190
16317
  "img:loaded": undefined;
16191
16318
  }> {
16192
16319
  dirty: boolean;
@@ -16244,7 +16371,7 @@ declare class DrawSystem {
16244
16371
  determineTextureVisiblity(meshComponent: MeshComponent, textureComponent: TextureComponent, interactionComponent?: InteractionComponent): void;
16245
16372
  update(): void;
16246
16373
  }
16247
- declare class TwoDVisibilitySystem extends PubSub<{
16374
+ declare class TwoDVisibilitySystem extends PubSub$1<{
16248
16375
  "draw:2d": undefined;
16249
16376
  "animate:2d": undefined;
16250
16377
  }> {
@@ -16262,7 +16389,7 @@ declare class TwoDVisibilitySystem extends PubSub<{
16262
16389
  playAnimations: () => void;
16263
16390
  _playAnimations(): void;
16264
16391
  }
16265
- declare class RenderSystem extends PubSub$1<{
16392
+ declare class RenderSystem extends PubSub<{
16266
16393
  "measure-canvas": undefined;
16267
16394
  "pre-render": undefined;
16268
16395
  "post-render": undefined;
@@ -16442,7 +16569,7 @@ type CameraSystemState = {
16442
16569
  type CameraEvents = {
16443
16570
  [Event in CameraEventName]: Event extends keyof SpecificCameraEvents ? SpecificCameraEvents[Event] : undefined;
16444
16571
  };
16445
- declare class CameraSystem extends PubSub<CameraEvents> {
16572
+ declare class CameraSystem extends PubSub$1<CameraEvents> {
16446
16573
  #private;
16447
16574
  dirty: boolean;
16448
16575
  zoomDirty: boolean;
@@ -16952,7 +17079,7 @@ declare class DOMDrawSystem {
16952
17079
  constructor(state: RendererState);
16953
17080
  update(isUserInteracting: boolean): void;
16954
17081
  }
16955
- declare class DOMResizeSystem extends PubSub$1<{
17082
+ declare class DOMResizeSystem extends PubSub<{
16956
17083
  "dimensions-update": void;
16957
17084
  }> {
16958
17085
  state: RendererState;
@@ -16995,7 +17122,7 @@ export declare const ANIMATION_TWEENS: {
16995
17122
  "ease-out": (amount: number) => number;
16996
17123
  "ease-in-out": (amount: number) => number;
16997
17124
  };
16998
- declare class Camera$2 extends PubSub$1<{
17125
+ declare class Camera$2 extends PubSub<{
16999
17126
  "padding-change": {
17000
17127
  padding: InsetPadding;
17001
17128
  };
@@ -17156,7 +17283,7 @@ declare class Camera$2 extends PubSub$1<{
17156
17283
  */
17157
17284
  focusOn(target: (Position | Position$1 | string)[], options?: FocusOnOptions): Promise<void>;
17158
17285
  }
17159
- declare class PanBoundsSystem extends PubSub$1<{
17286
+ declare class PanBoundsSystem extends PubSub<{
17160
17287
  update: void;
17161
17288
  }> {
17162
17289
  private currentTotalBoundingBox?;
@@ -17247,7 +17374,7 @@ declare class IdleQueue {
17247
17374
  */
17248
17375
  clearAll(): void;
17249
17376
  }
17250
- declare class OutlineInterpolationSystem extends PubSub$1<{
17377
+ declare class OutlineInterpolationSystem extends PubSub<{
17251
17378
  "needs-render": void;
17252
17379
  }> {
17253
17380
  #private;
@@ -17282,7 +17409,7 @@ declare class OutlineInterpolationSystem extends PubSub$1<{
17282
17409
  update(zoomLevel: number, isCameraZoomDirty?: boolean): void;
17283
17410
  destroy(): void;
17284
17411
  }
17285
- declare class ImageSystem extends PubSub$1<{
17412
+ declare class ImageSystem extends PubSub<{
17286
17413
  "image-loaded": void;
17287
17414
  }> {
17288
17415
  private rendererState;
@@ -17310,7 +17437,7 @@ declare class ImageSystem extends PubSub$1<{
17310
17437
  update(cameraRotationRadians: number): void;
17311
17438
  updateImageScreenBBoxes(meshComponent: MeshComponent | ImageComponent): void;
17312
17439
  }
17313
- declare class GeometryInFocusSystem extends PubSub$1<{
17440
+ declare class GeometryInFocusSystem extends PubSub<{
17314
17441
  /**
17315
17442
  * Returns the list of entities that are likely in focus, sorted by the weight of the raycast.
17316
17443
  */
@@ -17321,7 +17448,6 @@ declare class GeometryInFocusSystem extends PubSub$1<{
17321
17448
  focusablesDirty: boolean;
17322
17449
  private state;
17323
17450
  private camera;
17324
- private projectToScreen;
17325
17451
  private cameraFrustum;
17326
17452
  private viewProjectionMatrix;
17327
17453
  private tempScreenPos;
@@ -17330,11 +17456,10 @@ declare class GeometryInFocusSystem extends PubSub$1<{
17330
17456
  private focusableEntities;
17331
17457
  private debug;
17332
17458
  private debugBBoxElements;
17333
- private debugVertexDots;
17334
17459
  private viewfinder;
17335
17460
  private screenBoundsMap;
17336
17461
  private screenDiagonal;
17337
- constructor(state: RendererState, camera: PerspectiveCamera, projectToScreen: Core["project"]);
17462
+ constructor(state: RendererState, camera: Camera);
17338
17463
  resize(): void;
17339
17464
  /**
17340
17465
  * Everything within this square is considered "in focus" and ranked based on proximity to center.
@@ -17346,15 +17471,13 @@ declare class GeometryInFocusSystem extends PubSub$1<{
17346
17471
  * @returns Array of perimeter vertices in world space
17347
17472
  */
17348
17473
  private simplifyVertices;
17349
- /**
17350
- * Projects a 3D vertex from world space to screen coordinates
17351
- * @param worldPosition - Position in world space
17352
- */
17353
- private projectVertexToScreen;
17354
17474
  /**
17355
17475
  * Computes screen-space bounding box and depth info from world-space vertices
17356
- * Projects all vertices to screen space and finds the bounding box
17357
- * Only culls if ALL vertices are outside the camera frustum
17476
+ * Projects all vertices to clip space and finds the bounding box
17477
+ * Culls if the bounding box doesn't intersect the camera frustum
17478
+ *
17479
+ * @param focusableComponent - Component containing vertices and/or bounding box
17480
+ * @returns Screen-space bounding box and closest depth, or undefined if not visible
17358
17481
  */
17359
17482
  private computeScreenSpaceBounds;
17360
17483
  private updateFocusableEntities;
@@ -17364,16 +17487,12 @@ declare class GeometryInFocusSystem extends PubSub$1<{
17364
17487
  * Updates debug visualization for screen-space bounding boxes
17365
17488
  */
17366
17489
  private updateDebugBBoxes;
17367
- /**
17368
- * Updates debug visualization for vertex dots on screen
17369
- */
17370
- private updateDebugVertexDots;
17371
17490
  compute(): void;
17372
17491
  showDebug(): void;
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,8 @@ export declare class ImageMetaData extends BaseMetaData {
24701
25056
  */
24702
25057
  destroy(): void;
24703
25058
  }
24704
- type LocationData = Omit<MVFLocation, "categories" | "spaces" | "obstructions" | "entrances" | "shapes" | "connections" | "annotations" | "areas" | "openingHoursSpecification" | "links" | "pictures" | "website" | "icon"> & {
25059
+ type MVF3Location = Required<MVFv2_STANDARD_MVFv3>["locations"][number];
25060
+ type LocationData = Omit<MVF2Location, "categories" | "spaces" | "obstructions" | "entrances" | "shapes" | "connections" | "annotations" | "areas" | "openingHoursSpecification" | "links" | "pictures" | "website" | "icon"> & {
24705
25061
  links: Hyperlink[];
24706
25062
  images: ImageMetaData[];
24707
25063
  icon?: ImageMetaData;
@@ -24731,8 +25087,13 @@ export declare class LocationProfile extends BaseMetaData implements LocationDat
24731
25087
  * The location's logo
24732
25088
  *
24733
25089
  * @format uri
25090
+ * @deprecated Use the {@link logoImage} property instead
24734
25091
  */
24735
25092
  logo?: string;
25093
+ /**
25094
+ * An image representing the location's logo
25095
+ */
25096
+ logoImage?: ImageMetaData;
24736
25097
  phone?: string;
24737
25098
  /**
24738
25099
  * The location's social media links.
@@ -24756,9 +25117,28 @@ export declare class LocationProfile extends BaseMetaData implements LocationDat
24756
25117
  * @format uri
24757
25118
  */
24758
25119
  icon?: ImageMetaData;
25120
+ /**
25121
+ * Additional user defined data. The type is unknown, so it is recommended to validate the data before use.
25122
+ *
25123
+ * _Only available when loading MVFv3 data._
25124
+ *
25125
+ * ```ts
25126
+ * const mapData = await getMapData({
25127
+ * ...
25128
+ * mvfVersion: '3.0.0',
25129
+ * });
25130
+ *
25131
+ * const locationProfile = mapData.getById('location-profile', id);
25132
+ * if (typeof locationProfile?.extra?.myProperty === 'string') {
25133
+ * // Do something
25134
+ * }
25135
+ * ```
25136
+ */
25137
+ extra?: Record<string, unknown>;
24759
25138
  /** @internal */
24760
25139
  constructor(data: MapDataInternal, options: {
24761
- mvfData: MVFLocation;
25140
+ mvf2Data: MVF2Location;
25141
+ mvf3Data?: MVF3Location;
24762
25142
  });
24763
25143
  /**
24764
25144
  * Gets the {@link Space}s associated with the location.
@@ -25133,7 +25513,16 @@ export declare class Space extends DetailedMapData<SpaceFeature> implements IGeo
25133
25513
  */
25134
25514
  get type(): TSpaceType;
25135
25515
  /**
25136
- * @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.
25137
25526
  */
25138
25527
  get locations(): EnterpriseLocation[];
25139
25528
  /**
@@ -25510,7 +25899,16 @@ export declare class MapObject extends DetailedMapData<ObstructionFeature> imple
25510
25899
  */
25511
25900
  get type(): string;
25512
25901
  /**
25513
- * @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.
25514
25912
  */
25515
25913
  get locations(): EnterpriseLocation[];
25516
25914
  /**
@@ -25590,7 +25988,7 @@ type TokenManagerEvents = {
25590
25988
  sasTokens: Record<string, TokenWithExpiration>;
25591
25989
  };
25592
25990
  };
25593
- type TokenManagerPubSub = PubSub$1<TokenManagerEvents>;
25991
+ type TokenManagerPubSub = PubSub<TokenManagerEvents>;
25594
25992
  declare class TokenManager {
25595
25993
  #private;
25596
25994
  constructor(mapIds: string[], options: TokenManagerOptions);
@@ -25680,6 +26078,7 @@ type TMapDataInternalOptions = {
25680
26078
  binaryBundle?: Uint8Array;
25681
26079
  tokenManager?: TokenManager;
25682
26080
  getMapDataOptions?: TGetMapDataOptions;
26081
+ mvf3?: MVFv2_STANDARD_MVFv3;
25683
26082
  };
25684
26083
  type MVFNodeFeature = MVFNodeCollection["features"][number];
25685
26084
  type MVFFloorFeature = FloorCollection["features"][number];
@@ -26126,15 +26525,20 @@ type MapDataRecords = {
26126
26525
  [floorId: string]: AnnotationCollection["features"][number][];
26127
26526
  };
26128
26527
  mvfAreasById: Record<AreaId, AreaCollection["features"][number]>;
26528
+ mvf3LocationsById: Record<string, Required<MVFv2_STANDARD_MVFv3>["locations"][number]>;
26129
26529
  };
26130
26530
  type EnterpriseMapDataRecords = {
26131
26531
  connectionsByExternalId: Record<string, Connection[]>;
26132
26532
  locationsByExternalId: Record<string, EnterpriseLocation[]>;
26133
26533
  categoriesByExternalId: Record<string, EnterpriseCategory[]>;
26134
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>;
26135
26539
  categoriesById: Record<MVFEnterpriseCategoryId, EnterpriseCategory>;
26136
26540
  locationIdsByNodeId: Record<string, MVFEnterpriseLocationId[]>;
26137
- locationInstancesById: Record<string, EnterpriseLocationInstance>;
26541
+ mvfLocationInstancesById: Record<string, EnterpriseLocationInstance>;
26138
26542
  venue: MVFEnterpriseVenue;
26139
26543
  mvfCategoriesById: Record<string, MVFEnterpriseCategory>;
26140
26544
  mvfLocationsById: Record<string, MVFEnterpriseLocation>;
@@ -26686,7 +27090,7 @@ export type TFindPreferredLanguageInVenueOptions = {
26686
27090
  * @returns An object containing the selected language code and name, or undefined if no language is found
26687
27091
  */
26688
27092
  export declare function findPreferredLanguageInVenue(venue: EnterpriseVenue, options?: TFindPreferredLanguageInVenueOptions): Language;
26689
- declare class MapDataInternal extends PubSub$1<{
27093
+ declare class MapDataInternal extends PubSub<{
26690
27094
  "language-change": {
26691
27095
  code: string;
26692
27096
  name: string;
@@ -26754,6 +27158,8 @@ declare class MapDataInternal extends PubSub$1<{
26754
27158
  locationProfilesByAttachedFeatureId: MapDataRecords["locationProfilesByAttachedFeatureId"];
26755
27159
  entranceNodeIdsBySpaceId?: MapDataRecords["entranceNodeIdsBySpaceId"];
26756
27160
  locationsById: EnterpriseMapDataRecords["locationsById"];
27161
+ locationInstancesById: EnterpriseMapDataRecords["locationInstancesById"];
27162
+ instanceLocationsByPolygonId: EnterpriseMapDataRecords["instanceLocationsByPolygonId"];
26757
27163
  categoriesById: EnterpriseMapDataRecords["categoriesById"];
26758
27164
  mvfLocationsByGeometryId: EnterpriseMapDataRecords["mvfLocationsByGeometryId"];
26759
27165
  locationIdsByNodeId: EnterpriseMapDataRecords["locationIdsByNodeId"];
@@ -28282,6 +28688,80 @@ export type TShow3DMapOptions = {
28282
28688
  * @default false
28283
28689
  */
28284
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
+ };
28285
28765
  /**
28286
28766
  * @experimental
28287
28767
  * @internal
@@ -28405,7 +28885,6 @@ export {
28405
28885
  OperationHours,
28406
28886
  Point$1 as Point,
28407
28887
  Polygon$1 as Polygon,
28408
- PubSub$1 as PubSub,
28409
28888
  RendererState as TRendererState,
28410
28889
  SiblingGroup,
28411
28890
  Style$2 as Style,