@mappedin/mappedin-js 6.6.0 → 6.7.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,5 +1,5 @@
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, 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';
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
3
  import { ParsedMVF, RawMVF } from '@mappedin/mvf-v2/no-validator';
4
4
  import { Group as TweenGroup, Tween } from '@tweenjs/tween.js';
5
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';
@@ -1009,6 +1009,7 @@ declare class BatchedStandardMaterial extends MeshLambertMaterial {
1009
1009
  removeSideTexture(batchId: number): void;
1010
1010
  removeTopTexture(batchId: number): void;
1011
1011
  dispose(): void;
1012
+ clone(params?: MeshLambertMaterialParameters): this;
1012
1013
  }
1013
1014
  interface StandardSchemaV1<Input = unknown, Output = Input> {
1014
1015
  /** The Standard Schema properties. */
@@ -4837,6 +4838,44 @@ type PathState = {
4837
4838
  * Only applies when smoothingTension > 0.
4838
4839
  */
4839
4840
  smoothingCornerRadius: number;
4841
+ /**
4842
+ * Whether the path should be rendered as a dashed line.
4843
+ */
4844
+ dashed: boolean;
4845
+ /**
4846
+ * Length of each dash segment as fraction of path (0-1).
4847
+ */
4848
+ dashLength: number;
4849
+ /**
4850
+ * Length of each gap between dashes as fraction of path (0-1).
4851
+ */
4852
+ dashGap: number;
4853
+ /**
4854
+ * When true, dashSize and gapSize are interpreted as multiples of path width.
4855
+ * When false, dashLength and dashGap are used as fractions of path length.
4856
+ */
4857
+ dashRelativeToWidth: boolean;
4858
+ /**
4859
+ * Length of each dash as a multiple of path width. Only used when dashRelativeToWidth is true.
4860
+ */
4861
+ dashSize: number;
4862
+ /**
4863
+ * Length of each gap as a multiple of path width. Only used when dashRelativeToWidth is true.
4864
+ */
4865
+ gapSize: number;
4866
+ /**
4867
+ * When true, dashMeters and gapMeters are used as absolute sizes in meters.
4868
+ * Takes precedence over dashRelativeToWidth.
4869
+ */
4870
+ dashAbsolute: boolean;
4871
+ /**
4872
+ * Length of each dash in meters. Only used when dashAbsolute is true.
4873
+ */
4874
+ dashMeters: number;
4875
+ /**
4876
+ * Length of each gap in meters. Only used when dashAbsolute is true.
4877
+ */
4878
+ gapMeters: number;
4840
4879
  };
4841
4880
  type AddPathOptions = {
4842
4881
  /**
@@ -4908,6 +4947,48 @@ type AddPathOptions = {
4908
4947
  * @default 0.0
4909
4948
  */
4910
4949
  smoothingCornerRadius?: number;
4950
+ /**
4951
+ * Length of each dash segment as fraction of path (0-1).
4952
+ * @default 0.1
4953
+ */
4954
+ dashLength?: number;
4955
+ /**
4956
+ * Length of each gap between dashes as fraction of path (0-1).
4957
+ * @default 0.1
4958
+ */
4959
+ dashGap?: number;
4960
+ /**
4961
+ * When true, dashSize and gapSize are interpreted as multiples of path width (deck.gl style).
4962
+ * When false (default), dashLength and dashGap are used as fractions of path length.
4963
+ * @default false
4964
+ */
4965
+ dashRelativeToWidth?: boolean;
4966
+ /**
4967
+ * Length of each dash as a multiple of path width. Only used when dashRelativeToWidth is true.
4968
+ * @default 3.0
4969
+ */
4970
+ dashSize?: number;
4971
+ /**
4972
+ * Length of each gap as a multiple of path width. Only used when dashRelativeToWidth is true.
4973
+ * @default 2.0
4974
+ */
4975
+ gapSize?: number;
4976
+ /**
4977
+ * When true, dashMeters and gapMeters are used as absolute sizes in meters.
4978
+ * Takes precedence over dashRelativeToWidth.
4979
+ * @default false
4980
+ */
4981
+ dashAbsolute?: boolean;
4982
+ /**
4983
+ * Length of each dash in meters. Only used when dashAbsolute is true.
4984
+ * @default 1.0
4985
+ */
4986
+ dashMeters?: number;
4987
+ /**
4988
+ * Length of each gap in meters. Only used when dashAbsolute is true.
4989
+ * @default 0.5
4990
+ */
4991
+ gapMeters?: number;
4911
4992
  };
4912
4993
  declare class PathComponent {
4913
4994
  #private;
@@ -4936,6 +5017,14 @@ declare class PathComponent {
4936
5017
  dashed: boolean;
4937
5018
  smoothingTension: number;
4938
5019
  smoothingCornerRadius: number;
5020
+ dashLength: number;
5021
+ dashGap: number;
5022
+ dashRelativeToWidth: boolean;
5023
+ dashSize: number;
5024
+ gapSize: number;
5025
+ dashAbsolute: boolean;
5026
+ dashMeters: number;
5027
+ gapMeters: number;
4939
5028
  /**
4940
5029
  * If the path is vertical it will be rebuilt whenever altitudeDirty = true. This will be set during the first render of the path.
4941
5030
  */
@@ -5129,8 +5218,11 @@ declare class OutlineComponent implements Outline {
5129
5218
  }
5130
5219
  declare class FocusableComponent {
5131
5220
  readonly type: "focusable";
5132
- focusMesh?: Mesh;
5133
5221
  dirty: boolean;
5222
+ /**
5223
+ * Vertices of the geometry in world space
5224
+ */
5225
+ vertices?: Vector3[];
5134
5226
  }
5135
5227
  type TextureStyle = {
5136
5228
  texture?: SingleTexture;
@@ -5387,6 +5479,38 @@ interface PathUniforms {
5387
5479
  type: "f";
5388
5480
  value: number;
5389
5481
  };
5482
+ dashLength: {
5483
+ type: "f";
5484
+ value: number;
5485
+ };
5486
+ dashGap: {
5487
+ type: "f";
5488
+ value: number;
5489
+ };
5490
+ dashRelativeToWidth: {
5491
+ type: "b";
5492
+ value: boolean;
5493
+ };
5494
+ dashSize: {
5495
+ type: "f";
5496
+ value: number;
5497
+ };
5498
+ gapSize: {
5499
+ type: "f";
5500
+ value: number;
5501
+ };
5502
+ dashAbsolute: {
5503
+ type: "b";
5504
+ value: boolean;
5505
+ };
5506
+ dashMeters: {
5507
+ type: "f";
5508
+ value: number;
5509
+ };
5510
+ gapMeters: {
5511
+ type: "f";
5512
+ value: number;
5513
+ };
5390
5514
  }
5391
5515
  declare class PubSub<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof EVENT_PAYLOAD> {
5392
5516
  /**
@@ -5397,13 +5521,37 @@ declare class PubSub<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof EV
5397
5521
  /**
5398
5522
  * @private
5399
5523
  * @internal
5524
+ * AbortController for managing lifecycle and cleanup
5400
5525
  */
5401
- private _destroyed;
5526
+ private _abortController;
5527
+ /**
5528
+ * @protected
5529
+ * @internal
5530
+ * Tracks all cleanup functions for subscriptions made via on()
5531
+ */
5532
+ protected _cleanupFunctions: Array<() => void>;
5533
+ /**
5534
+ * Returns the AbortSignal for this PubSub instance.
5535
+ * Use this signal with APIs that support cancellation (fetch, addEventListener, etc.)
5536
+ * When the PubSub is destroyed, the signal will be aborted and all listeners using it will be automatically removed.
5537
+ *
5538
+ * @example
5539
+ * ```typescript
5540
+ * // Automatically cleaned up when PubSub is destroyed
5541
+ * pubsub.addEventListener(window, 'resize', handler, { signal: pubsub.signal });
5542
+ * ```
5543
+ */
5544
+ get signal(): AbortSignal;
5402
5545
  /**
5403
5546
  * @private
5404
5547
  * @internal
5405
5548
  */
5406
5549
  publish<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, data?: EVENT_PAYLOAD[EVENT_NAME]): void;
5550
+ /**
5551
+ * Subscribe a function to be called when the signal is aborted.
5552
+ * @param fn The function to call when the signal is aborted.
5553
+ */
5554
+ onAbort<T extends (...args: any[]) => void>(fn: T): void;
5407
5555
  /**
5408
5556
  * Subscribe a function to an event.
5409
5557
  *
@@ -5411,6 +5559,9 @@ declare class PubSub<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof EV
5411
5559
  * function.
5412
5560
  * @param fn A callback that gets called when the corresponding event is fired. The
5413
5561
  * callback will get passed an argument with a type that's one of event payloads.
5562
+ * @param options Optional options object. If a signal is provided, the subscription will be
5563
+ * automatically cleaned up when that signal is aborted.
5564
+ * @returns A cleanup function that unsubscribes the event listener when called.
5414
5565
  * @example
5415
5566
  * // Subscribe to the 'click' event
5416
5567
  * const handler = (event) => {
@@ -5422,7 +5573,9 @@ declare class PubSub<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof EV
5422
5573
  */
5423
5574
  on<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, fn: (payload: EVENT_PAYLOAD[EVENT_NAME] extends {
5424
5575
  data: null;
5425
- } ? EVENT_PAYLOAD[EVENT_NAME]["data"] : EVENT_PAYLOAD[EVENT_NAME]) => void): void;
5576
+ } ? EVENT_PAYLOAD[EVENT_NAME]["data"] : EVENT_PAYLOAD[EVENT_NAME]) => void, options?: {
5577
+ signal?: AbortSignal;
5578
+ }): () => void;
5426
5579
  /**
5427
5580
  * Unsubscribe a function previously subscribed with {@link on}
5428
5581
  *
@@ -5443,6 +5596,7 @@ declare class PubSub<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof EV
5443
5596
  /**
5444
5597
  * @private
5445
5598
  * @internal
5599
+ * Destroys the PubSub instance and automatically unsubscribes all listeners registered via on().
5446
5600
  */
5447
5601
  destroy(): void;
5448
5602
  }
@@ -5702,13 +5856,37 @@ declare class PubSub$1<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof
5702
5856
  /**
5703
5857
  * @private
5704
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
+ * ```
5705
5878
  */
5706
- private _destroyed;
5879
+ get signal(): AbortSignal;
5707
5880
  /**
5708
5881
  * @private
5709
5882
  * @internal
5710
5883
  */
5711
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;
5712
5890
  /**
5713
5891
  * Subscribe a function to an event.
5714
5892
  *
@@ -5716,6 +5894,9 @@ declare class PubSub$1<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof
5716
5894
  * function.
5717
5895
  * @param fn A callback that gets called when the corresponding event is fired. The
5718
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.
5719
5900
  * @example
5720
5901
  * // Subscribe to the 'click' event
5721
5902
  * const handler = (event) => {
@@ -5727,7 +5908,9 @@ declare class PubSub$1<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof
5727
5908
  */
5728
5909
  on<EVENT_NAME extends EVENT>(eventName: EVENT_NAME, fn: (payload: EVENT_PAYLOAD[EVENT_NAME] extends {
5729
5910
  data: null;
5730
- } ? EVENT_PAYLOAD[EVENT_NAME]["data"] : EVENT_PAYLOAD[EVENT_NAME]) => void): void;
5911
+ } ? EVENT_PAYLOAD[EVENT_NAME]["data"] : EVENT_PAYLOAD[EVENT_NAME]) => void, options?: {
5912
+ signal?: AbortSignal;
5913
+ }): () => void;
5731
5914
  /**
5732
5915
  * Unsubscribe a function previously subscribed with {@link on}
5733
5916
  *
@@ -5748,6 +5931,7 @@ declare class PubSub$1<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof
5748
5931
  /**
5749
5932
  * @private
5750
5933
  * @internal
5934
+ * Destroys the PubSub instance and automatically unsubscribes all listeners registered via on().
5751
5935
  */
5752
5936
  destroy(): void;
5753
5937
  }
@@ -15989,12 +16173,6 @@ declare class DOMVisibilitySystem {
15989
16173
  constructor(state: RendererState, domTree: Entity2DHTMLDivElementContainer);
15990
16174
  update(): void;
15991
16175
  }
15992
- declare class TwoDProjectionSystem {
15993
- state: RendererState;
15994
- project: (projection: Vector2, position: Vector3) => void;
15995
- constructor(state: RendererState, project: (projection: Vector2, position: Vector3) => void);
15996
- update(): void;
15997
- }
15998
16176
  declare enum PINVISIBILITY {
15999
16177
  /** The pin is visible. */
16000
16178
  ACTIVE = 1,
@@ -16697,7 +16875,6 @@ declare class CameraSystem extends PubSub<CameraEvents> {
16697
16875
  private addMouseEventListeners;
16698
16876
  private addMouseMoveEventListeners;
16699
16877
  private removeMouseMoveEventListeners;
16700
- private removeEventListeners;
16701
16878
  private removeMouseUpEventListeners;
16702
16879
  private onContextMenu;
16703
16880
  private onMouseUp;
@@ -16818,7 +16995,11 @@ export declare const ANIMATION_TWEENS: {
16818
16995
  "ease-out": (amount: number) => number;
16819
16996
  "ease-in-out": (amount: number) => number;
16820
16997
  };
16821
- declare class Camera$2 {
16998
+ declare class Camera$2 extends PubSub$1<{
16999
+ "padding-change": {
17000
+ padding: InsetPadding;
17001
+ };
17002
+ }> {
16822
17003
  #private;
16823
17004
  /**
16824
17005
  * @internal
@@ -17111,7 +17292,7 @@ declare class ImageSystem extends PubSub$1<{
17111
17292
  private naturalBearing;
17112
17293
  private imagePlacementOptions;
17113
17294
  private cameraFrustum;
17114
- constructor(rendererState: RendererState, convertTo3DMapPosition: Core["convertTo3DMapPosition"], projectToScreen: (projectVector: Vector2, position: Vector3) => void, initialBearing?: number, naturalBearing?: number, imagePlacementOptions?: ImagePlacementOptions);
17295
+ constructor(rendererState: RendererState, convertTo3DMapPosition: Core["convertTo3DMapPosition"], projectToScreen: Core["project"], initialBearing?: number, naturalBearing?: number, imagePlacementOptions?: ImagePlacementOptions);
17115
17296
  private createImageMesh;
17116
17297
  private getOrDownloadImage;
17117
17298
  /**
@@ -17140,28 +17321,59 @@ declare class GeometryInFocusSystem extends PubSub$1<{
17140
17321
  focusablesDirty: boolean;
17141
17322
  private state;
17142
17323
  private camera;
17324
+ private projectToScreen;
17325
+ private cameraFrustum;
17326
+ private viewProjectionMatrix;
17327
+ private tempScreenPos;
17143
17328
  private debugEl;
17144
- private raycasters;
17145
17329
  private collisions;
17146
17330
  private focusableEntities;
17147
- private debugRaycasters;
17148
- constructor(state: RendererState, camera: PerspectiveCamera);
17331
+ private debug;
17332
+ private debugBBoxElements;
17333
+ private debugVertexDots;
17334
+ private viewfinder;
17335
+ private screenBoundsMap;
17336
+ private screenDiagonal;
17337
+ constructor(state: RendererState, camera: PerspectiveCamera, projectToScreen: Core["project"]);
17149
17338
  resize(): void;
17150
17339
  /**
17151
- * Build 5 raycasters, one for the center of the screen, and one for each corner of the screen.
17152
- * the center one has the highest weight, and the corners have the lowest weight.
17153
- * this allows us to detect focus closer to the center of the screen more easily.
17340
+ * Everything within this square is considered "in focus" and ranked based on proximity to center.
17341
+ */
17342
+ private createViewfinder;
17343
+ /**
17344
+ * Filters vertices to keep only those on the perimeter (convex hull)
17345
+ * @param vertices - Array of all vertices in world space
17346
+ * @returns Array of perimeter vertices in world space
17347
+ */
17348
+ private simplifyVertices;
17349
+ /**
17350
+ * Projects a 3D vertex from world space to screen coordinates
17351
+ * @param worldPosition - Position in world space
17154
17352
  */
17155
- private buildRaycasters;
17353
+ private projectVertexToScreen;
17354
+ /**
17355
+ * 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
17358
+ */
17359
+ private computeScreenSpaceBounds;
17156
17360
  private updateFocusableEntities;
17157
17361
  update: (cameraIsMoving?: boolean, cameraStoppedMovingTime?: number) => void;
17158
17362
  updateRaf(): void;
17159
- raycast(): void;
17160
- showRaycasters(): void;
17161
- hideRaycasters(): void;
17363
+ /**
17364
+ * Updates debug visualization for screen-space bounding boxes
17365
+ */
17366
+ private updateDebugBBoxes;
17367
+ /**
17368
+ * Updates debug visualization for vertex dots on screen
17369
+ */
17370
+ private updateDebugVertexDots;
17371
+ compute(): void;
17372
+ showDebug(): void;
17373
+ hideDebug(): void;
17162
17374
  destroy(): void;
17163
17375
  }
17164
- declare class OutdoorLayers {
17376
+ declare class OutdoorLayers extends PubSub<{}> {
17165
17377
  #private;
17166
17378
  idleQueue: IdleQueue;
17167
17379
  hideLayersIntersectingPolygons(polygons: Feature$1<Polygon$1 | MultiPolygon$1, any>[], layers: string[]): void;
@@ -17371,6 +17583,12 @@ declare class Core extends PubSub<MapEvent> {
17371
17583
  * @internal
17372
17584
  */
17373
17585
  constructor(container: HTMLElement, options?: RendererCoreOptions);
17586
+ /**
17587
+ * Projects a position into screen space. If a Vector3 is provided, the z-coordinate will include the depth from the camera.
17588
+ * @param projectVector - The vector to project the position into
17589
+ * @param position - The position to project
17590
+ */
17591
+ private project;
17374
17592
  /**
17375
17593
  * Add a container that can hold other containers, geometry groups, markers, labels and paths. Use this to group entities together.
17376
17594
  */
@@ -17624,16 +17842,7 @@ declare class Core extends PubSub<MapEvent> {
17624
17842
  /**
17625
17843
  * Remove a MapLibre event listener
17626
17844
  */
17627
- offMapLibreEvent(event: keyof MapEventType, handler: (...args: any[]) => void): void;
17628
- /**
17629
- * Returns true if the renderer has been aborted.
17630
- */
17631
- get aborted(): boolean;
17632
- /**
17633
- * Register a handler once to be called when the renderer is aborted.
17634
- * The handler will be removed after it is called.
17635
- */
17636
- onAbort(handler: () => void): void;
17845
+ offMapLibreEvent(event: LiteralUnion<keyof MapEventType, string>, handler: (...args: any[]) => void): void;
17637
17846
  /**
17638
17847
  * @internal for testing
17639
17848
  */
@@ -17662,7 +17871,7 @@ declare class Core extends PubSub<MapEvent> {
17662
17871
  * };
17663
17872
  * map.on('click', handler);
17664
17873
  */
17665
- on: <EventName extends keyof MapEvent>(eventName: EventName, fn: (payload: MapEventPayload<EventName>) => void) => void;
17874
+ on: PubSub<MapEvent>["on"];
17666
17875
  /**
17667
17876
  * Unsubscribe a function previously subscribed with {@link on}
17668
17877
  *
@@ -17677,7 +17886,7 @@ declare class Core extends PubSub<MapEvent> {
17677
17886
  * };
17678
17887
  * map.off('click', handler);
17679
17888
  */
17680
- off: <EventName extends keyof MapEvent>(eventName: EventName, fn: (payload: MapEventPayload<EventName>) => void) => void;
17889
+ off: PubSub<MapEvent>["off"];
17681
17890
  /**
17682
17891
  * @hidden
17683
17892
  * Returns the current cursor decided by Mappedin. This is useful when integrating with other overlays to show the correct user interaction.
@@ -18219,6 +18428,12 @@ type MapEvent = {
18219
18428
  * If outdoor view is enabled, this is fired when the style first loads or changes.
18220
18429
  */
18221
18430
  "outdoor-style-loaded": undefined;
18431
+ /**
18432
+ * Fired when outdoor style loading fails. The map will fall back to indoor-only rendering.
18433
+ */
18434
+ "outdoor-style-error": {
18435
+ error: unknown;
18436
+ };
18222
18437
  /**
18223
18438
  * Fired when the user starts interacting with the map.
18224
18439
  */
@@ -18249,9 +18464,6 @@ type MapEvent = {
18249
18464
  resize: undefined;
18250
18465
  "pan-bounds-change": PanBounds;
18251
18466
  };
18252
- type MapEventPayload<EventName extends keyof MapEvent> = MapEvent[EventName] extends {
18253
- data: null;
18254
- } ? MapEvent[EventName]["data"] : MapEvent[EventName];
18255
18467
  type All3DTypes = Geometry3DTypes | GeometryGroupObject3D | GroupContainerObject3D;
18256
18468
  type RendererState = {
18257
18469
  /**
@@ -19082,7 +19294,10 @@ declare class FloorObject implements MVFFloor {
19082
19294
  facadesByStyleId: Map<string, string[]>;
19083
19295
  get geoJSONBoundingBox(): BBox | undefined;
19084
19296
  constructor(parentId: string, floor: MVFFloor, mapObject: GeojsonApiMapObject, multiFloorView: Required<TShow3DMapOptions["multiFloorView"]>, options: TShow3DMapOptions, mvf?: ParsedMVF, styleMap?: AggregatedStyleMap, mapDataInternal?: MapDataInternal);
19085
- load: () => this;
19297
+ /**
19298
+ * @param focusable - Whether the floor is part of a building and should be focusable. This will be set on the geometry layer.
19299
+ */
19300
+ load: (focusable?: boolean) => this;
19086
19301
  /**
19087
19302
  * Add an occluder to the floor if it has a footprint.
19088
19303
  */
@@ -19093,6 +19308,7 @@ declare class FloorObject implements MVFFloor {
19093
19308
  get hasFacadeGeometry(): boolean;
19094
19309
  get visible(): boolean;
19095
19310
  setVisible(visible: boolean): void;
19311
+ setBatchedTextVisible(visible: boolean): void;
19096
19312
  }
19097
19313
  declare class FloorStackObject implements Omit<MVFFloorStack, "maps" | "floors" | "defaultFloor" | "footprint"> {
19098
19314
  #private;
@@ -19108,7 +19324,6 @@ declare class FloorStackObject implements Omit<MVFFloorStack, "maps" | "floors"
19108
19324
  metadata?: MVFFloorStack["metadata"];
19109
19325
  containerId: string;
19110
19326
  facade?: MVFFacade;
19111
- private renderer;
19112
19327
  constructor(floorStack: MVFFloorStack, parentId: string, renderer: Core, facade?: MVFFacade);
19113
19328
  get defaultFloor(): FloorObject;
19114
19329
  /**
@@ -21621,6 +21836,9 @@ declare const floorStateSchemaPartial: z.ZodObject<{
21621
21836
  type: z.ZodOptional<z.ZodDefault<z.ZodLiteral<"floor.areas">>>;
21622
21837
  visible: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
21623
21838
  }, z.core.$strip>>;
21839
+ text3d: z.ZodOptional<z.ZodObject<{
21840
+ visible: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
21841
+ }, z.core.$strip>>;
21624
21842
  type: z.ZodOptional<z.ZodDefault<z.ZodLiteral<"floor">>>;
21625
21843
  visible: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
21626
21844
  altitude: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
@@ -21668,6 +21886,9 @@ declare const floorStateSchemaStrict: z.ZodObject<{
21668
21886
  type: z.ZodDefault<z.ZodLiteral<"floor.areas">>;
21669
21887
  visible: z.ZodDefault<z.ZodBoolean>;
21670
21888
  }, z.core.$strict>;
21889
+ text3d: z.ZodObject<{
21890
+ visible: z.ZodDefault<z.ZodBoolean>;
21891
+ }, z.core.$strict>;
21671
21892
  type: z.ZodDefault<z.ZodLiteral<"floor">>;
21672
21893
  visible: z.ZodDefault<z.ZodBoolean>;
21673
21894
  altitude: z.ZodDefault<z.ZodNumber>;
@@ -21899,6 +22120,24 @@ declare const pathStateSchemaPartial: z.ZodObject<{
21899
22120
  xrayOpacity: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
21900
22121
  __EXPERIMENTAL_SMOOTHING_TENSION: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
21901
22122
  __EXPERIMENTAL_SMOOTHING_CORNER_RADIUS: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
22123
+ dashed: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
22124
+ __EXPERIMENTAL_DASH_OPTIONS: z.ZodOptional<z.ZodOptional<z.ZodDiscriminatedUnion<[
22125
+ z.ZodObject<{
22126
+ __EXPERIMENTAL_DASH_MODE: z.ZodLiteral<"length-scaling">;
22127
+ __EXPERIMENTAL_DASH_LENGTH: z.ZodDefault<z.ZodNumber>;
22128
+ __EXPERIMENTAL_DASH_GAP: z.ZodDefault<z.ZodNumber>;
22129
+ }, z.core.$strip>,
22130
+ z.ZodObject<{
22131
+ __EXPERIMENTAL_DASH_MODE: z.ZodLiteral<"width-scaling">;
22132
+ __EXPERIMENTAL_DASH_SIZE: z.ZodDefault<z.ZodNumber>;
22133
+ __EXPERIMENTAL_GAP_SIZE: z.ZodDefault<z.ZodNumber>;
22134
+ }, z.core.$strip>,
22135
+ z.ZodObject<{
22136
+ __EXPERIMENTAL_DASH_MODE: z.ZodLiteral<"absolute">;
22137
+ __EXPERIMENTAL_DASH_METERS: z.ZodDefault<z.ZodNumber>;
22138
+ __EXPERIMENTAL_GAP_METERS: z.ZodDefault<z.ZodNumber>;
22139
+ }, z.core.$strip>
22140
+ ], "__EXPERIMENTAL_DASH_MODE">>>;
21902
22141
  }, z.core.$strip>;
21903
22142
  declare const pathStateSchemaStrict: z.ZodObject<{
21904
22143
  type: z.ZodDefault<z.ZodLiteral<"path">>;
@@ -21915,9 +22154,27 @@ declare const pathStateSchemaStrict: z.ZodObject<{
21915
22154
  xrayOpacity: z.ZodDefault<z.ZodNumber>;
21916
22155
  __EXPERIMENTAL_SMOOTHING_TENSION: z.ZodDefault<z.ZodNumber>;
21917
22156
  __EXPERIMENTAL_SMOOTHING_CORNER_RADIUS: z.ZodDefault<z.ZodNumber>;
22157
+ dashed: z.ZodDefault<z.ZodBoolean>;
22158
+ __EXPERIMENTAL_DASH_OPTIONS: z.ZodOptional<z.ZodDiscriminatedUnion<[
22159
+ z.ZodObject<{
22160
+ __EXPERIMENTAL_DASH_MODE: z.ZodLiteral<"length-scaling">;
22161
+ __EXPERIMENTAL_DASH_LENGTH: z.ZodDefault<z.ZodNumber>;
22162
+ __EXPERIMENTAL_DASH_GAP: z.ZodDefault<z.ZodNumber>;
22163
+ }, z.core.$strip>,
22164
+ z.ZodObject<{
22165
+ __EXPERIMENTAL_DASH_MODE: z.ZodLiteral<"width-scaling">;
22166
+ __EXPERIMENTAL_DASH_SIZE: z.ZodDefault<z.ZodNumber>;
22167
+ __EXPERIMENTAL_GAP_SIZE: z.ZodDefault<z.ZodNumber>;
22168
+ }, z.core.$strip>,
22169
+ z.ZodObject<{
22170
+ __EXPERIMENTAL_DASH_MODE: z.ZodLiteral<"absolute">;
22171
+ __EXPERIMENTAL_DASH_METERS: z.ZodDefault<z.ZodNumber>;
22172
+ __EXPERIMENTAL_GAP_METERS: z.ZodDefault<z.ZodNumber>;
22173
+ }, z.core.$strip>
22174
+ ], "__EXPERIMENTAL_DASH_MODE">>;
21918
22175
  }, z.core.$strict>;
21919
22176
  export type TPathState = z.infer<typeof pathStateSchemaStrict>;
21920
- export type TPathUpdateState = z.infer<typeof pathStateSchemaPartial>;
22177
+ export type TPathUpdateState = z.input<typeof pathStateSchemaPartial>;
21921
22178
  declare const shapeStateSchemaPartial: z.ZodObject<{
21922
22179
  type: z.ZodOptional<z.ZodDefault<z.ZodLiteral<"shape">>>;
21923
22180
  visible: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
@@ -22509,6 +22766,12 @@ type GreedyLosOptions = BaseSimplifyOptions & {
22509
22766
  };
22510
22767
  type RdpOptions = BaseSimplifyOptions & {
22511
22768
  __EXPERIMENTAL_METHOD: "rdp";
22769
+ /**
22770
+ * Whether to include door-adjacent nodes (predecessor/successor of doors) in the must-include set.
22771
+ * When true, nodes immediately before and after doors are preserved during simplification.
22772
+ * @default true
22773
+ */
22774
+ mustIncludeDoorBufferNodes?: boolean;
22512
22775
  };
22513
22776
  type DpOptimalOptions = BaseSimplifyOptions & {
22514
22777
  __EXPERIMENTAL_METHOD: "dp-optimal";
@@ -23411,6 +23674,52 @@ export type TDirectionZone = {
23411
23674
  */
23412
23675
  floor?: Floor;
23413
23676
  };
23677
+ type TExperimentalDashOptions = {
23678
+ /**
23679
+ * Length-scaling mode: dash/gap as fractions of path length (0-1)
23680
+ */
23681
+ __EXPERIMENTAL_DASH_MODE: "length-scaling";
23682
+ /**
23683
+ * Dash length as fraction of path (0-1).
23684
+ * @default 0.1
23685
+ */
23686
+ __EXPERIMENTAL_DASH_LENGTH?: number;
23687
+ /**
23688
+ * Gap length as fraction of path (0-1).
23689
+ * @default 0.1
23690
+ */
23691
+ __EXPERIMENTAL_DASH_GAP?: number;
23692
+ } | {
23693
+ /**
23694
+ * Width-scaling mode: dash/gap as multiples of path width (deck.gl style)
23695
+ */
23696
+ __EXPERIMENTAL_DASH_MODE: "width-scaling";
23697
+ /**
23698
+ * Dash size as multiple of path width.
23699
+ * @default 3.0
23700
+ */
23701
+ __EXPERIMENTAL_DASH_SIZE?: number;
23702
+ /**
23703
+ * Gap size as multiple of path width.
23704
+ * @default 2.0
23705
+ */
23706
+ __EXPERIMENTAL_GAP_SIZE?: number;
23707
+ } | {
23708
+ /**
23709
+ * Absolute mode: dash/gap in meters (deterministic regardless of path length)
23710
+ */
23711
+ __EXPERIMENTAL_DASH_MODE: "absolute";
23712
+ /**
23713
+ * Dash length in meters.
23714
+ * @default 1.0
23715
+ */
23716
+ __EXPERIMENTAL_DASH_METERS?: number;
23717
+ /**
23718
+ * Gap length in meters.
23719
+ * @default 0.5
23720
+ */
23721
+ __EXPERIMENTAL_GAP_METERS?: number;
23722
+ };
23414
23723
  /**
23415
23724
  * Options for controlling the behavior of a {@link Path}.
23416
23725
  */
@@ -23533,6 +23842,13 @@ export type TAddPathOptions = {
23533
23842
  * @defaultValue 0.5
23534
23843
  */
23535
23844
  __EXPERIMENTAL_SMOOTHING_CORNER_RADIUS?: number;
23845
+ /**
23846
+ * @experimental
23847
+ * Dash configuration. When dashed=true, controls dash/gap sizing.
23848
+ * Uses discriminated union - mode determines which properties are valid.
23849
+ * @see TExperimentalDashOptions
23850
+ */
23851
+ __EXPERIMENTAL_DASH_OPTIONS?: TExperimentalDashOptions;
23536
23852
  };
23537
23853
  /**
23538
23854
  * Defines the priority levels for collider collision handling, allowing customization of collider visibility in congested areas.
@@ -23665,6 +23981,13 @@ export type TGetDirectionsOptions = {
23665
23981
  * Always uses line-of-sight validation (cannot be disabled).
23666
23982
  */
23667
23983
  __EXPERIMENTAL_METHOD: "rdp";
23984
+ /**
23985
+ * @experimental
23986
+ * Whether to include door-adjacent nodes (predecessor/successor of doors) in the must-include set.
23987
+ * When true (default), nodes immediately before and after doors are preserved during simplification.
23988
+ * @default true
23989
+ */
23990
+ __EXPERIMENTAL_MUST_INCLUDE_DOOR_BUFFER_NODES?: boolean;
23668
23991
  } | {
23669
23992
  /**
23670
23993
  * Enable or disable path smoothing.
@@ -26212,6 +26535,10 @@ export declare class EnterpriseVenue extends BaseMetaData implements MVFEnterpri
26212
26535
  * The default map of the venue.
26213
26536
  */
26214
26537
  get defaultMap(): string;
26538
+ /**
26539
+ * The enterprise venue type.
26540
+ */
26541
+ get enterpriseType(): EnterpriseVenueType | undefined;
26215
26542
  /**
26216
26543
  * Serializes the EnterpriseVenue data to JSON.
26217
26544
  *