@mappedin/mappedin-js 6.17.1 → 6.18.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,13 +1,13 @@
1
- import * as _mappedin_mvf_v22 from "@mappedin/mvf-v2";
1
+ import * as _mappedin_mvf_v28 from "@mappedin/mvf-v2";
2
2
  import { AnnotationCollection, AnnotationSymbol, AreaCollection, AreaId, BaseTextAreaProperties, Category, CategoryId, Connection as Connection$1, Details, EnterpriseCategory as EnterpriseCategory$1, EnterpriseCategoryId, EnterpriseLocation as EnterpriseLocation$1, EnterpriseLocationId, EnterpriseLocationInstance, EnterpriseTexture, EnterpriseVenue as EnterpriseVenue$1, EnterpriseVenueType, EntranceCollection, EntranceFeature, Facade as Facade$1, Feature as Feature$1, FeatureCollection as FeatureCollection$1, FloatingFloorTextProperties, FloorCollection, FloorId, FloorProperties, FloorStack as FloorStack$1, FloorTextCommonProperties, Geometry as Geometry$1, Hyperlink as Hyperlink$1, Image, Language, LineStringStyle, LineStringStyle as TMVFLineStringStyle, Location, LocationId, LocationLink, LocationSocial, LocationSocial as LocationSocial$1, LocationState, LocationState as LocationState$1, MVFv2_STANDARD_MVFv3, MultiPolygon as MultiPolygon$1, NavigationFlagDeclarations, NodeCollection, NodeId, ObstructionCollection, ObstructionCollection as ObstructionCollection$1, ObstructionFeature, ObstructionId, OpeningHoursSpecification, OperationHours, OperationHours as OperationHours$1, ParsedMVF, ParsedMVF as TMVF, ParsedMVFLocalePack, Point as Point$1, PointStyle, PointStyle as TMVFPointStyle, Polygon as Polygon$1, PolygonStyle, PolygonStyle as TMVFPolygonStyle, SiblingGroup, SiblingGroup as SiblingGroup$1, SpaceCollection, SpaceCollection as SpaceCollection$1, SpaceFeature, SpaceId, SpaceProperties, Style as TMVFStyle, StyleCollection, StyleCollection as TMVFStyleCollection, TilesetStyle } from "@mappedin/mvf-v2";
3
3
  import { MVFv2_STANDARD_MVFv3 as MVFv2_STANDARD_MVFv3$1, ParsedMVF as ParsedMVF$1, RawMVF } from "@mappedin/mvf-v2/no-validator-lite";
4
4
  import * as _mappedin_renderer_three0 from "@mappedin/renderer-three";
5
- import { AddLabelOptionsInternal, AddText3DOptions, AddText3DOptions as AddText3DOptions$1, AddText3DPointOptions, CameraSystemState, ColorString, EntityId, EnvMapOptions, EnvMapOptions as EnvMapOptions$1, GLTFExportOptions as GLTFExportOptions$1, GroupContainerState, ISystemPlugin, ISystemPlugin as ISystemPlugin$1, ImagePlacementOptions, InitializeModelState, InitializeModelState as InitializeModelState$1, InitializeText3DState, InsetPadding, InsetPadding as InsetPadding$1, InsetPaddingOption, InsetPaddingOption as InsetPaddingOption$1, InterpolateOn, Interpolation, Interpolation as Interpolation$1, LabelAppearance as LabelAppearance$1, LabelRenderedState, LabelTextPlacement as LabelTextPlacement$1, LineStyle, LineStyle as LineStyle$1, MapViewState, MarkerState, OutlinesOptions, PaintStyle, PaintStyle as PaintStyle$1, PathState, Position as Position$1, RendererCore, RendererCoreOptions, Shading, Text3DState, WatermarkUpdateOptions } from "@mappedin/renderer-three";
5
+ import { AddLabelOptionsInternal, AddText3DOptions, AddText3DOptions as AddText3DOptions$1, AddText3DPointOptions, CameraSystemState, ColorString, DebugState, DebugState as DebugState$1, EntityId, EnvMapOptions, EnvMapOptions as EnvMapOptions$1, GLTFExportOptions as GLTFExportOptions$1, GroupContainerState, ISystemPlugin, ISystemPlugin as ISystemPlugin$1, ImagePlacementOptions, InitializeModelState, InitializeModelState as InitializeModelState$1, InitializeText3DState, InsetPadding, InsetPadding as InsetPadding$1, InsetPaddingOption, InsetPaddingOption as InsetPaddingOption$1, InterpolateOn, Interpolation, LabelAppearance as LabelAppearance$1, LabelRenderedState, LabelTextPlacement as LabelTextPlacement$1, LineStyle, LineStyle as LineStyle$1, MapViewState, MarkerState, OutlinesOptions, PaintStyle, PaintStyle as PaintStyle$1, PathState, PathWidth, PathWidth as PathWidth$1, PixelWidth, Position as Position$1, RendererCore, RendererCoreOptions, Shading, Text3DState, WatermarkUpdateOptions } from "@mappedin/renderer-three";
6
6
  import * as _tweenjs_tween_js0 from "@tweenjs/tween.js";
7
7
  import { Group, Tween } from "@tweenjs/tween.js";
8
8
  import { CustomLayerInterface, IControl, Map as Map$1, MapEventType } from "@mappedin/outdoor-context";
9
+ import { ANIMATION_TWEENS, PathWidth as PathWidth$2, PathWidth as PathWidth$3, enableTestMode } from "@mappedin/renderer-shared";
9
10
  import { MatchInfo, SearchResult as SearchResult$1, Suggestion, Suggestion as Suggestion$1 } from "minisearch";
10
- import { ANIMATION_TWEENS, enableTestMode } from "@mappedin/renderer-shared";
11
11
  import * as three0 from "three";
12
12
  import { AmbientLight, BatchedMesh, BatchedMeshGeometryRange, Box3, BufferAttribute, BufferGeometry, Camera as Camera$1, Color, DirectionalLight, Group as Group$1, Intersection, LineSegments, Matrix4, Mesh, MeshLambertMaterial, MeshLambertMaterialParameters, Object3D, Object3DEventMap, PerspectiveCamera, Plane, PlaneGeometry, Raycaster, Scene, ShaderMaterial, Texture, TubeGeometry, Vector2, Vector3, WebGLRenderer } from "three";
13
13
  import { BatchedText, BatchedText as BatchedText$1, Text, Text as Text$1 } from "troika-three-text";
@@ -290,6 +290,12 @@ type TGetMapDataSharedOptions = {
290
290
  * @internal
291
291
  */
292
292
  version?: string;
293
+ /**
294
+ * The externalId parameter attaches a custom tracking identifier to every analytics event sent during the session.
295
+ * This is useful for correlating Mappedin analytics data with an external system — for example, linking a map session
296
+ * back to a specific marketing campaign, CRM record, or third-party tracking platform.
297
+ */
298
+ externalId?: string;
293
299
  };
294
300
  search?: TSearchOptions;
295
301
  /**
@@ -542,7 +548,7 @@ declare class AnalyticsInternal {
542
548
  sendGetDirectionsEvent: DebouncedFunction<(start: string, end: string, accessible?: boolean) => void | Promise<void> | Promise<Response>>;
543
549
  sendBlueDotEvents(event: BlueDotEvents): void | Promise<void> | Promise<Response>;
544
550
  }
545
- type UpdateStateParam = Partial<Pick<AnalyticState, 'geolocationMode' | 'context' | 'logEvents' | 'userPosition' | 'mapId' | 'sendEvents' | 'logEvents' | 'accessToken' | 'sessionId' | 'deviceId'>>;
551
+ type UpdateStateParam = Partial<Pick<AnalyticState, 'geolocationMode' | 'context' | 'logEvents' | 'userPosition' | 'mapId' | 'sendEvents' | 'logEvents' | 'accessToken' | 'sessionId' | 'deviceId' | 'externalId'>>;
546
552
  /**
547
553
  * Maps reserved analytics event names to their payload structures.
548
554
  *
@@ -641,6 +647,12 @@ declare class Analytics {
641
647
  logEvents: boolean;
642
648
  /** Flag to enable sending of events. */
643
649
  sendEvents: boolean;
650
+ /**
651
+ * The externalId parameter attaches a custom tracking identifier to every analytics event sent during the session.
652
+ * This is useful for correlating Mappedin analytics data with an external system — for example, linking a map session
653
+ * back to a specific marketing campaign, CRM record, or third-party tracking platform.
654
+ */
655
+ externalId?: string;
644
656
  /** The API key for authentication. */
645
657
  key?: string;
646
658
  /** The API secret for authentication. */
@@ -693,6 +705,12 @@ type AnalyticState = {
693
705
  logEvents: boolean;
694
706
  /** Flag to enable sending of events. */
695
707
  sendEvents: boolean;
708
+ /**
709
+ * The externalId parameter attaches a custom tracking identifier to every analytics event sent during the session.
710
+ * This is useful for correlating Mappedin analytics data with an external system — for example, linking a map session
711
+ * back to a specific marketing campaign, CRM record, or third-party tracking platform.
712
+ */
713
+ externalId?: string;
696
714
  } & AnalyticsAuth;
697
715
  type AnalyticsOptions = Partial<Omit<AnalyticState, 'analyticsBaseUrl' | 'geolocationMode' | 'userPosition'>>;
698
716
  type AnalyticsUpdateOptions = Omit<AnalyticsOptions, keyof AnalyticsAuth> & ((Required<Pick<AnalyticsAuth, 'key' | 'secret'>> & Partial<Pick<AnalyticsAuth, 'accessToken'>>) | (Required<Pick<AnalyticsAuth, 'accessToken'>> & Partial<Pick<AnalyticsAuth, 'key' | 'secret'>>));
@@ -700,7 +718,7 @@ type AnalyticsUpdateOptions = Omit<AnalyticsOptions, keyof AnalyticsAuth> & ((Re
700
718
  * Options for updating the current state of analytics.
701
719
  * @interface
702
720
  */
703
- type TAnalyticsUpdateState = Pick<Partial<AnalyticState>, 'logEvents' | 'sendEvents' | 'baseUri' | 'accessToken'>;
721
+ type TAnalyticsUpdateState = Pick<Partial<AnalyticState>, 'logEvents' | 'sendEvents' | 'baseUri' | 'accessToken' | 'externalId'>;
704
722
  //#endregion
705
723
  //#region ../packages/shave-text/shave-text.d.ts
706
724
  type TDrawFn = (ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, x: number, y: number) => void;
@@ -3041,7 +3059,7 @@ declare const LABEL_LOW_PRIORITY = "low-priority";
3041
3059
  type LabelTextPlacement = (typeof LABEL_TEXT_PLACEMENT)[keyof typeof LABEL_TEXT_PLACEMENT];
3042
3060
  type LabelTextPlacementInternal = LabelTextPlacement | typeof LABEL_LOW_PRIORITY;
3043
3061
  type EasingCurve$1 = string;
3044
- type Interpolation$3<T$1 extends string, U$1 extends unknown[]> = {
3062
+ type Interpolation$2<T$1 extends string, U$1 extends unknown[]> = {
3045
3063
  on: T$1;
3046
3064
  input: number[];
3047
3065
  output: U$1;
@@ -3081,9 +3099,18 @@ declare const labelAppearanceSchemaBase: ZodObject<{
3081
3099
  }>>;
3082
3100
  iconVisible: ZodDefault<ZodUnion<readonly [ZodBoolean, ZodNumber]>>;
3083
3101
  opacity: ZodDefault<ZodNumber>;
3102
+ __EXPERIMENTAL_wrapperBackgroundColor: ZodOptional<ZodString>;
3103
+ __EXPERIMENTAL_wrapperPaddingX: ZodDefault<ZodNumber>;
3104
+ __EXPERIMENTAL_wrapperPaddingY: ZodDefault<ZodNumber>;
3105
+ __EXPERIMENTAL_wrapperBorderRadius: ZodDefault<ZodNumber>;
3106
+ __EXPERIMENTAL_wrapperDotSize: ZodDefault<ZodNumber>;
3107
+ __EXPERIMENTAL_wrapperShadowColor: ZodOptional<ZodString>;
3108
+ __EXPERIMENTAL_wrapperShadowOffsetX: ZodDefault<ZodNumber>;
3109
+ __EXPERIMENTAL_wrapperShadowOffsetY: ZodDefault<ZodNumber>;
3110
+ __EXPERIMENTAL_wrapperShadowBlur: ZodDefault<ZodNumber>;
3084
3111
  }, $strip>;
3085
3112
  type LabelAppearance = Partial<input<typeof labelAppearanceSchemaBase>> & {
3086
- iconScale?: number | Interpolation$3<'zoom-level', number[]>;
3113
+ iconScale?: number | Interpolation$2<'zoom-level', number[]>;
3087
3114
  };
3088
3115
  type LabelAppearanceWithDefaults = output<typeof labelAppearanceSchema>;
3089
3116
  declare const labelAppearanceSchema: ZodPipe<ZodObject<{
@@ -3120,6 +3147,15 @@ declare const labelAppearanceSchema: ZodPipe<ZodObject<{
3120
3147
  }>>;
3121
3148
  iconVisible: ZodDefault<ZodUnion<readonly [ZodBoolean, ZodNumber]>>;
3122
3149
  opacity: ZodDefault<ZodNumber>;
3150
+ __EXPERIMENTAL_wrapperBackgroundColor: ZodOptional<ZodString>;
3151
+ __EXPERIMENTAL_wrapperPaddingX: ZodDefault<ZodNumber>;
3152
+ __EXPERIMENTAL_wrapperPaddingY: ZodDefault<ZodNumber>;
3153
+ __EXPERIMENTAL_wrapperBorderRadius: ZodDefault<ZodNumber>;
3154
+ __EXPERIMENTAL_wrapperDotSize: ZodDefault<ZodNumber>;
3155
+ __EXPERIMENTAL_wrapperShadowColor: ZodOptional<ZodString>;
3156
+ __EXPERIMENTAL_wrapperShadowOffsetX: ZodDefault<ZodNumber>;
3157
+ __EXPERIMENTAL_wrapperShadowOffsetY: ZodDefault<ZodNumber>;
3158
+ __EXPERIMENTAL_wrapperShadowBlur: ZodDefault<ZodNumber>;
3123
3159
  }, $strip>, ZodTransform<Required<LabelAppearance>, {
3124
3160
  margin: number;
3125
3161
  maxLines: number;
@@ -3140,6 +3176,13 @@ declare const labelAppearanceSchema: ZodPipe<ZodObject<{
3140
3176
  iconOverflow: "hidden" | "visible";
3141
3177
  iconVisible: number | boolean;
3142
3178
  opacity: number;
3179
+ __EXPERIMENTAL_wrapperPaddingX: number;
3180
+ __EXPERIMENTAL_wrapperPaddingY: number;
3181
+ __EXPERIMENTAL_wrapperBorderRadius: number;
3182
+ __EXPERIMENTAL_wrapperDotSize: number;
3183
+ __EXPERIMENTAL_wrapperShadowOffsetX: number;
3184
+ __EXPERIMENTAL_wrapperShadowOffsetY: number;
3185
+ __EXPERIMENTAL_wrapperShadowBlur: number;
3143
3186
  textColor?: string | undefined;
3144
3187
  textOutlineColor?: string | undefined;
3145
3188
  pinColor?: string | undefined;
@@ -3147,6 +3190,8 @@ declare const labelAppearanceSchema: ZodPipe<ZodObject<{
3147
3190
  pinColorInactive?: string | undefined;
3148
3191
  pinOutlineColorInactive?: string | undefined;
3149
3192
  icon?: string | undefined;
3193
+ __EXPERIMENTAL_wrapperBackgroundColor?: string | undefined;
3194
+ __EXPERIMENTAL_wrapperShadowColor?: string | undefined;
3150
3195
  }>>;
3151
3196
  type AddLabelOptionsInternal$1 = {
3152
3197
  rank?: CollisionRankingTier;
@@ -3334,6 +3379,12 @@ type AddMarkerOptions = {
3334
3379
  * @default { size: 2, color: '#666' }
3335
3380
  */
3336
3381
  lowPriorityPin?: Partial<LowPriorityPinConfig>;
3382
+ /**
3383
+ * Whether the marker should animate visibility transitions.
3384
+ * When false, opacity is set directly without transitions.
3385
+ * @default true
3386
+ */
3387
+ animated?: boolean;
3337
3388
  };
3338
3389
  type MarkerStrategy = {
3339
3390
  name: MarkerPlacement;
@@ -3503,12 +3554,6 @@ declare class PubSub<EVENT_PAYLOAD, EVENT extends keyof EVENT_PAYLOAD = keyof EV
3503
3554
  * AbortController for managing lifecycle and cleanup
3504
3555
  */
3505
3556
  private _abortController;
3506
- /**
3507
- * @protected
3508
- * @internal
3509
- * Tracks all cleanup functions for subscriptions made via on()
3510
- */
3511
- protected _cleanupFunctions: Array<() => void>;
3512
3557
  /**
3513
3558
  * Returns the AbortSignal for this PubSub instance.
3514
3559
  * Use this signal with APIs that support cancellation (fetch, addEventListener, etc.)
@@ -3657,6 +3702,14 @@ declare class TwoDDrawSystem extends PubSub<{
3657
3702
  url: string;
3658
3703
  }>;
3659
3704
  pinCache: Record<string, [HTMLCanvasElement | OffscreenCanvas, HTMLCanvasElement | OffscreenCanvas]>;
3705
+ /**
3706
+ * Caches pre-rasterized experimental wrapper sprites (shape + baked shadow)
3707
+ * keyed by geometry + color + shadow params. Blitting the sprite with
3708
+ * `drawImage` sidesteps per-frame path construction and shadow
3709
+ * rasterization — the hot cost in the wrapper render path. Cleared on
3710
+ * full-redraw (`this.dirty`) to match `pinCache`/`textCache` invalidation.
3711
+ */
3712
+ wrapperCache: Record<string, OffscreenCanvas | HTMLCanvasElement>;
3660
3713
  /** Stores the loaded images ready to be drawn. */
3661
3714
  imageCache: Record<number, HTMLImageElement | ImageBitmap>;
3662
3715
  /** Stores the promises for each image fetch. */
@@ -3670,6 +3723,22 @@ declare class TwoDDrawSystem extends PubSub<{
3670
3723
  center?: OffscreenCanvas | HTMLCanvasElement;
3671
3724
  right?: OffscreenCanvas | HTMLCanvasElement;
3672
3725
  }>;
3726
+ /** Number of labels that cleared the `canShow && visible` gate this frame. */
3727
+ private drawCount;
3728
+ /**
3729
+ * Number of `project()` calls issued this frame. Owned and written by the
3730
+ * pipeline (which performs the actual projection loop); read-only here.
3731
+ */
3732
+ projectionCount: number;
3733
+ /**
3734
+ * Number of labels currently in `visibilitySystem.animating`. Owned and
3735
+ * written by the pipeline right before the draw pass; read-only here.
3736
+ */
3737
+ animatingCount: number;
3738
+ /** Number of labels that reached `recomputeCurrentStrategy` this frame. */
3739
+ private drawAttemptCount;
3740
+ /** Lazily-mounted DOM overlay that renders per-frame stats. */
3741
+ private statsElement?;
3673
3742
  /**
3674
3743
  * Runs the draw pass for all label entities.
3675
3744
  * @param zoomLevel - Current zoom level (for icon scale interpolation)
@@ -3684,6 +3753,72 @@ declare class TwoDDrawSystem extends PubSub<{
3684
3753
  cacheImage: (label: LabelComponent) => void;
3685
3754
  createPinCanvas: (label: LabelComponent, pinSize: number, backgroundColor: string, foregroundColor: string, maxIconScale?: number) => HTMLCanvasElement | OffscreenCanvas;
3686
3755
  prepare: (label: LabelComponent, labelCacheId: string, context: CanvasRenderingContext2D) => void;
3756
+ /**
3757
+ * Lazily mounts (and updates) a small DOM overlay reporting per-frame
3758
+ * label-pipeline stats:
3759
+ *
3760
+ * - `projections` — raw count of `project()` calls issued by the pipeline
3761
+ * (every entity, regardless of whether it lands on-screen).
3762
+ * - `draw-attempts` — labels that reached `recomputeCurrentStrategy`, i.e.
3763
+ * survived the `offscreen`/`visible` cull and had their layout/strategy
3764
+ * recomputed.
3765
+ * - `draws` — labels that cleared the final `canShow && visible` gate in
3766
+ * `draw()` and issued canvas draw calls.
3767
+ *
3768
+ * Intended as a lightweight diagnostic for tuning visibility strategies
3769
+ * and culling.
3770
+ */
3771
+ private updateStatsOverlay;
3772
+ /**
3773
+ * Creates an offscreen sprite containing a filled wrapper shape with its
3774
+ * drop shadow pre-rasterized. The shape is drawn at `(marginX, marginY)`
3775
+ * inside a canvas sized to fully contain the shadow spread.
3776
+ *
3777
+ * @param w - Shape width in canvas pixels (integer, excludes shadow margin).
3778
+ * @param h - Shape height in canvas pixels (integer, excludes shadow margin).
3779
+ * @param marginX - Horizontal padding added to the sprite to hold the shadow.
3780
+ * @param marginY - Vertical padding added to the sprite to hold the shadow.
3781
+ * @param drawShape - Callback that issues the path for the shape at the
3782
+ * provided top-left `(x, y)` with dimensions `(w, h)`. The caller already
3783
+ * set `fillStyle` + shadow properties; `beginPath` is the callback's
3784
+ * responsibility.
3785
+ * @param bgColor - Fill color for the shape.
3786
+ * @param shadowColor - Drop-shadow color; `''`/`undefined` disables shadow.
3787
+ * @param shadowOffsetX - Drop-shadow X offset in canvas pixels.
3788
+ * @param shadowOffsetY - Drop-shadow Y offset in canvas pixels.
3789
+ * @param shadowBlur - Drop-shadow blur radius in canvas pixels.
3790
+ * @returns An OffscreenCanvas (preferred) or HTMLCanvasElement fallback.
3791
+ */
3792
+ private createWrapperSprite;
3793
+ /**
3794
+ * Draws the experimental wrapper background shape behind the label.
3795
+ *
3796
+ * Shape varies with the active strategy:
3797
+ * - Text visible → rounded rectangle union of pin + text, expanded by
3798
+ * `__EXPERIMENTAL_wrapperPaddingX` / `__EXPERIMENTAL_wrapperPaddingY`.
3799
+ * - No text, pin ACTIVE (HIDDEN placement with visible icon) → filled
3800
+ * circle with radius `visiblePinRadius + max(paddingX, paddingY)` so the
3801
+ * icon sits inside a colored chip.
3802
+ * - No text, pin INACTIVE (LOW_PRIORITY / HIDDEN without icon) → tiny
3803
+ * filled dot. Radius is half of `__EXPERIMENTAL_wrapperDotSize` (CSS
3804
+ * pixels) when set, otherwise the intrinsic inactive pin fill radius.
3805
+ *
3806
+ * The pin contribution to the rect / chip uses the *visible* pin radius
3807
+ * (`(pinSize + PIN_STROKE_SIZE * pixelRatio) / 2`) rather than `drawSize`.
3808
+ * `drawSize` reflects the pin's padded canvas extent (includes transparent
3809
+ * margin for shadow / stroke headroom), which would otherwise inflate the
3810
+ * wrapper to ~2× the visible pin — making small padding values read as
3811
+ * much larger than requested.
3812
+ *
3813
+ * Hot-path optimization: the shape + shadow are rasterized once into an
3814
+ * offscreen sprite keyed by geometry/color/shadow params (see
3815
+ * `wrapperCache`) and blitted with `drawImage` on subsequent frames,
3816
+ * avoiding per-frame path construction and shadow rasterization.
3817
+ *
3818
+ * No-op unless the appearance sets `__EXPERIMENTAL_wrapperBackgroundColor`.
3819
+ * All coordinates are in canvas pixels (already multiplied by pixelRatio).
3820
+ */
3821
+ private drawWrapperBackground;
3687
3822
  /**
3688
3823
  * Draws a single label to the canvas.
3689
3824
  */
@@ -3744,6 +3879,8 @@ declare class TwoDPipeline {
3744
3879
  get drawSystem(): TwoDDrawSystem;
3745
3880
  /** Exposed for testing; DOM draw is internal to the pipeline */
3746
3881
  get domDrawSystem(): DOMDrawSystem;
3882
+ /** @internal Canvas used for rendering 2D labels. */
3883
+ get labelCanvas(): HTMLCanvasElement;
3747
3884
  constructor(container: HTMLElement, state: TwoDPipelineState, project: ProjectFn, options?: TwoDPipelineOptions);
3748
3885
  /**
3749
3886
  * Registers an entity in the lookup map without activating it.
@@ -4269,15 +4406,6 @@ type TNavigationPathOptions = TAddPathOptions & {
4269
4406
  * If not specified, connection paths use the main `color` property.
4270
4407
  */
4271
4408
  __EXPERIMENTAL__CONNECTION_COLOR?: string;
4272
- /**
4273
- * @experimental Controls billboarding for connection path geometry.
4274
- * - `boolean`: Enable/disable billboarding directly
4275
- * - `number`: Angle threshold in degrees (0-90). Billboard when path angle from horizontal >= threshold.
4276
- * For example, 80 means billboard only when path is >=80 degrees from horizontal (nearly vertical).
4277
- *
4278
- * @defaultValue false
4279
- */
4280
- __EXPERIMENTAL__CONNECTION_BILLBOARDING?: boolean | number;
4281
4409
  /**
4282
4410
  * @experimental Amount in meters to shorten connection path from each end.
4283
4411
  * Prevents visual overlap with floor paths at junctions.
@@ -4297,6 +4425,13 @@ type TNavigationPathOptions = TAddPathOptions & {
4297
4425
  * If not specified, connection paths use the main `__EXPERIMENTAL_GEOMETRY` property.
4298
4426
  */
4299
4427
  __EXPERIMENTAL__CONNECTION_GEOMETRY?: 'tube' | 'ribbon';
4428
+ /**
4429
+ * @experimental
4430
+ * @deprecated Use `__EXPERIMENTAL_BILLBOARDING` instead. With per-vertex angle gating in the shader,
4431
+ * billboarding applies to all path segments but only affects vertices above the angle threshold.
4432
+ * A numeric value (degrees) naturally billboards only steep connection segments while leaving floor paths flat.
4433
+ */
4434
+ __EXPERIMENTAL__CONNECTION_BILLBOARDING?: boolean | number;
4300
4435
  };
4301
4436
  /**
4302
4437
  * Options for navigation.
@@ -4335,7 +4470,7 @@ type TNavigationOptions = {
4335
4470
  /**
4336
4471
  * Path Options for the non-current path in multi-destination mode.
4337
4472
  */
4338
- inactivePathOptions?: Partial<TAddPathOptions>;
4473
+ inactivePathOptions?: Partial<TNavigationPathOptions>;
4339
4474
  /**
4340
4475
  * Controls whether the path drawing is animated across floors.
4341
4476
  * @default true
@@ -4779,7 +4914,7 @@ declare class GeojsonApiMapObject extends PubSub<{
4779
4914
  * @param floorStackId - The floor stack ID
4780
4915
  * @returns The altitude map for the floor stack
4781
4916
  */
4782
- getFloorStackAltitudeData(floorStackId: string): Map<any, any>;
4917
+ getFloorStackAltitudeData(floorStackId: string): Map<number, TFloorAltitudeData>;
4783
4918
  private cancelAnimation;
4784
4919
  Models: {
4785
4920
  add: (id: string, targets: Coordinate[], opts: TAddModelOptions & {
@@ -5029,9 +5164,9 @@ type InspectorOption = Partial<InspectorState>;
5029
5164
  //#region src/debug.d.ts
5030
5165
  declare class Debug {
5031
5166
  #private;
5032
- state: RendererCore['Debug']['state'];
5167
+ state: DebugState$1;
5033
5168
  constructor(core: RendererCore);
5034
- update: RendererCore['Debug']['update'];
5169
+ update: (updateState: Partial<DebugState$1>) => void;
5035
5170
  /**
5036
5171
  * Returns the current camera state as a JSON object that can be passed directly to `mapView.Camera.set()`.
5037
5172
  * @returns The current camera state including center, zoomLevel, bearing, and pitch.
@@ -6959,12 +7094,105 @@ declare class MapView {
6959
7094
  */
6960
7095
  set __INTERNAL__hidePathsNotOnCurrentFloor(value: boolean);
6961
7096
  /**
6962
- * @internal
7097
+ * **Super experimental — this API may change or be removed in any release without notice.
7098
+ * Do not depend on it in production.**
7099
+ *
7100
+ * Registers a plugin that runs every frame in the render loop.
7101
+ *
7102
+ * The plugin's {@link ISystemPlugin.update | update()} method receives the full
7103
+ * {@link TRendererState} — including the Three.js scene, camera, renderer, lighting,
7104
+ * and all ECS geometry entities — allowing you to inject custom Three.js objects,
7105
+ * apply per-frame effects, or read scene state.
7106
+ *
7107
+ * Plugins execute during the finalization phase of the render loop (after camera,
7108
+ * path, and 2D systems, but before `DrawSystem` and `paint()`).
7109
+ *
7110
+ * @param plugin - An object implementing {@link ISystemPlugin}. Must have an
7111
+ * `update(state: TRendererState)` method.
7112
+ *
7113
+ * @example
7114
+ * ### Standalone mode — add a spinning cube
7115
+ * ```ts
7116
+ * import { type ISystemPlugin, type TRendererState } from '@mappedin/mappedin-js';
7117
+ * import { BoxGeometry, Mesh, MeshStandardMaterial } from 'three';
7118
+ *
7119
+ * class CubePlugin implements ISystemPlugin {
7120
+ * private cube: Mesh | null = null;
7121
+ *
7122
+ * update(state: TRendererState): void {
7123
+ * if (!this.cube) {
7124
+ * this.cube = new Mesh(
7125
+ * new BoxGeometry(5, 5, 5),
7126
+ * new MeshStandardMaterial({ color: 0x00ff88 }),
7127
+ * );
7128
+ * this.cube.position.set(0, 0, 10);
7129
+ * state.threeJSScene.add(this.cube);
7130
+ * }
7131
+ * this.cube.rotation.y += 0.01;
7132
+ * }
7133
+ * }
7134
+ *
7135
+ * mapView.registerPlugin(new CubePlugin());
7136
+ * ```
7137
+ *
7138
+ * @example
7139
+ * ### MapLibre overlay mode — add a floating sphere
7140
+ * ```ts
7141
+ * import { type ISystemPlugin, type TRendererState } from '@mappedin/mappedin-js';
7142
+ * import { Mesh, MeshStandardMaterial, SphereGeometry } from 'three';
7143
+ *
7144
+ * class SpherePlugin implements ISystemPlugin {
7145
+ * private sphere: Mesh | null = null;
7146
+ *
7147
+ * update(state: TRendererState): void {
7148
+ * if (!this.sphere) {
7149
+ * this.sphere = new Mesh(
7150
+ * new SphereGeometry(3, 32, 32),
7151
+ * new MeshStandardMaterial({ color: 0xff4444 }),
7152
+ * );
7153
+ * // In overlay mode, add to geometryScene (not threeJSScene)
7154
+ * state.geometryScene.add(this.sphere);
7155
+ * }
7156
+ * }
7157
+ * }
7158
+ *
7159
+ * // Inside the overlay's 'loaded' callback:
7160
+ * overlay.on('loaded', ({ mapView }) => {
7161
+ * mapView.registerPlugin(new SpherePlugin());
7162
+ * });
7163
+ * ```
7164
+ *
7165
+ * @see {@link unregisterPlugin} to remove a plugin.
7166
+ * @see {@link ISystemPlugin} for the plugin interface and lifecycle details.
7167
+ *
6963
7168
  * @experimental
6964
7169
  */
6965
7170
  registerPlugin(plugin: ISystemPlugin$1): void;
6966
7171
  /**
6967
- * @internal
7172
+ * **Super experimental — this API may change or be removed in any release without notice.
7173
+ * Do not depend on it in production.**
7174
+ *
7175
+ * Removes a previously registered plugin from the render loop.
7176
+ *
7177
+ * After removal, the plugin's `update()` method will no longer be called.
7178
+ * Any Three.js objects the plugin added to the scene are **not** automatically
7179
+ * removed — the plugin is responsible for its own cleanup before or after
7180
+ * unregistration.
7181
+ *
7182
+ * @param plugin - The same plugin instance that was passed to {@link registerPlugin}.
7183
+ *
7184
+ * @example
7185
+ * ```ts
7186
+ * const plugin = new CubePlugin();
7187
+ *
7188
+ * mapView.registerPlugin(plugin);
7189
+ *
7190
+ * // Later, when the plugin is no longer needed:
7191
+ * mapView.unregisterPlugin(plugin);
7192
+ * ```
7193
+ *
7194
+ * @see {@link registerPlugin} to add a plugin.
7195
+ *
6968
7196
  * @experimental
6969
7197
  */
6970
7198
  unregisterPlugin(plugin: ISystemPlugin$1): void;
@@ -8480,7 +8708,7 @@ type TGeometryUpdateState = output<typeof geometryStateSchemaPartial>;
8480
8708
  declare const labelStateSchema: ZodObject<{
8481
8709
  type: ZodDefault<ZodLiteral<"label">>;
8482
8710
  text: ZodString;
8483
- rank: ZodCustom<"initial" | TCollisionRankingTier, "initial" | TCollisionRankingTier>;
8711
+ rank: ZodCustom<TCollisionRankingTier | "initial", TCollisionRankingTier | "initial">;
8484
8712
  appearance: ZodCustom<LabelAppearance, LabelAppearance>;
8485
8713
  interactive: ZodDefault<ZodBoolean>;
8486
8714
  enabled: ZodDefault<ZodBoolean>;
@@ -8502,7 +8730,7 @@ declare const labelStateSchema: ZodObject<{
8502
8730
  declare const labelStateSchemaPartial: ZodObject<{
8503
8731
  type: ZodOptional<ZodDefault<ZodLiteral<"label">>>;
8504
8732
  text: ZodOptional<ZodString>;
8505
- rank: ZodOptional<ZodCustom<"initial" | TCollisionRankingTier, "initial" | TCollisionRankingTier>>;
8733
+ rank: ZodOptional<ZodCustom<TCollisionRankingTier | "initial", TCollisionRankingTier | "initial">>;
8506
8734
  appearance: ZodOptional<ZodCustom<LabelAppearance, LabelAppearance>>;
8507
8735
  interactive: ZodOptional<ZodDefault<ZodBoolean>>;
8508
8736
  enabled: ZodOptional<ZodDefault<ZodBoolean>>;
@@ -8527,7 +8755,7 @@ type TLabelUpdateState = output<typeof labelStateSchemaPartial>;
8527
8755
  //#region src/states/marker-state.d.ts
8528
8756
  declare const markerStateSchema: ZodObject<{
8529
8757
  type: ZodDefault<ZodLiteral<"marker">>;
8530
- rank: ZodCustom<"initial" | TCollisionRankingTier, "initial" | TCollisionRankingTier>;
8758
+ rank: ZodCustom<TCollisionRankingTier | "initial", TCollisionRankingTier | "initial">;
8531
8759
  placement: ZodOptional<ZodUnion<readonly [ZodEnum<{
8532
8760
  hidden: "hidden";
8533
8761
  top: "top";
@@ -8563,13 +8791,12 @@ declare const markerStateSchema: ZodObject<{
8563
8791
  element: ZodCustom<HTMLElement, HTMLElement>;
8564
8792
  contentHTML: ZodString;
8565
8793
  occlude: ZodDefault<ZodBoolean>;
8794
+ animated: ZodDefault<ZodBoolean>;
8566
8795
  }, $strip>;
8567
8796
  declare const markerStateSchemaPartial: ZodObject<{
8568
8797
  type: ZodOptional<ZodDefault<ZodLiteral<"marker">>>;
8569
8798
  enabled: ZodOptional<ZodDefault<ZodBoolean>>;
8570
- interactive: ZodOptional<ZodDefault<ZodUnion<readonly [ZodBoolean, ZodLiteral<"pointer-events-auto">]>>>;
8571
- rank: ZodOptional<ZodCustom<"initial" | TCollisionRankingTier, "initial" | TCollisionRankingTier>>;
8572
- occlude: ZodOptional<ZodDefault<ZodBoolean>>;
8799
+ rank: ZodOptional<ZodCustom<TCollisionRankingTier | "initial", TCollisionRankingTier | "initial">>;
8573
8800
  placement: ZodOptional<ZodOptional<ZodUnion<readonly [ZodEnum<{
8574
8801
  hidden: "hidden";
8575
8802
  top: "top";
@@ -8593,6 +8820,7 @@ declare const markerStateSchemaPartial: ZodObject<{
8593
8820
  "bottom-left": "bottom-left";
8594
8821
  "bottom-right": "bottom-right";
8595
8822
  }>>]>>>;
8823
+ interactive: ZodOptional<ZodDefault<ZodUnion<readonly [ZodBoolean, ZodLiteral<"pointer-events-auto">]>>>;
8596
8824
  dynamicResize: ZodOptional<ZodDefault<ZodBoolean>>;
8597
8825
  zIndex: ZodOptional<ZodOptional<ZodNumber>>;
8598
8826
  lowPriorityPin: ZodOptional<ZodOptional<ZodObject<{
@@ -8601,6 +8829,8 @@ declare const markerStateSchemaPartial: ZodObject<{
8601
8829
  color: ZodOptional<ZodString>;
8602
8830
  }, $strip>>>;
8603
8831
  contentHTML: ZodOptional<ZodString>;
8832
+ occlude: ZodOptional<ZodDefault<ZodBoolean>>;
8833
+ animated: ZodOptional<ZodDefault<ZodBoolean>>;
8604
8834
  }, $strip>;
8605
8835
  type TMarkerState = output<typeof markerStateSchema>;
8606
8836
  type TMarkerUpdateState = output<typeof markerStateSchemaPartial>;
@@ -8611,7 +8841,7 @@ type BorderColor = LiteralUnion<'darken', string>;
8611
8841
  declare const pathStateSchemaPartial: ZodObject<{
8612
8842
  type: ZodOptional<ZodDefault<ZodLiteral<"path">>>;
8613
8843
  color: ZodOptional<ZodDefault<ZodString>>;
8614
- width: ZodOptional<ZodType<number | Interpolation$1<"zoom-level", number[]>, unknown, $ZodTypeInternals<number | Interpolation$1<"zoom-level", number[]>, unknown>>>;
8844
+ width: ZodOptional<ZodType<PathWidth$2, unknown, $ZodTypeInternals<PathWidth$2, unknown>>>;
8615
8845
  completeFraction: ZodOptional<ZodDefault<ZodNumber>>;
8616
8846
  visible: ZodOptional<ZodDefault<ZodBoolean>>;
8617
8847
  verticalOffset: ZodOptional<ZodDefault<ZodNumber>>;
@@ -8642,18 +8872,24 @@ declare const pathStateSchemaPartial: ZodObject<{
8642
8872
  ribbon: "ribbon";
8643
8873
  }>>>;
8644
8874
  __EXPERIMENTAL_ENDCAP_EXTENSION: ZodOptional<ZodDefault<ZodTuple<[ZodNumber, ZodNumber], null>>>;
8645
- __EXPERIMENTAL_BILLBOARDING: ZodOptional<ZodDefault<ZodBoolean>>;
8875
+ __EXPERIMENTAL_BILLBOARDING: ZodOptional<ZodDefault<ZodUnion<readonly [ZodBoolean, ZodNumber]>>>;
8646
8876
  __EXPERIMENTAL_BORDER: ZodOptional<ZodOptional<ZodObject<{
8647
8877
  enabled: ZodBoolean;
8648
8878
  color: ZodCustom<BorderColor, BorderColor>;
8649
8879
  width: ZodOptional<ZodNumber>;
8650
8880
  }, $strip>>>;
8651
8881
  __EXPERIMENTAL_PREVENT_SELF_OVERLAP: ZodOptional<ZodDefault<ZodBoolean>>;
8882
+ __EXPERIMENTAL_XRAY_STYLE: ZodOptional<ZodOptional<ZodObject<{
8883
+ opacity: ZodOptional<ZodNumber>;
8884
+ color: ZodOptional<ZodString>;
8885
+ tint: ZodOptional<ZodNumber>;
8886
+ dithering: ZodOptional<ZodNumber>;
8887
+ }, $strip>>>;
8652
8888
  }, $strip>;
8653
8889
  declare const pathStateSchemaStrict: ZodObject<{
8654
8890
  type: ZodDefault<ZodLiteral<"path">>;
8655
8891
  color: ZodDefault<ZodString>;
8656
- width: ZodType<number | Interpolation$1<"zoom-level", number[]>>;
8892
+ width: ZodType<PathWidth$2>;
8657
8893
  completeFraction: ZodDefault<ZodNumber>;
8658
8894
  visible: ZodDefault<ZodBoolean>;
8659
8895
  verticalOffset: ZodDefault<ZodNumber>;
@@ -8684,13 +8920,19 @@ declare const pathStateSchemaStrict: ZodObject<{
8684
8920
  ribbon: "ribbon";
8685
8921
  }>>;
8686
8922
  __EXPERIMENTAL_ENDCAP_EXTENSION: ZodDefault<ZodTuple<[ZodNumber, ZodNumber], null>>;
8687
- __EXPERIMENTAL_BILLBOARDING: ZodDefault<ZodBoolean>;
8923
+ __EXPERIMENTAL_BILLBOARDING: ZodDefault<ZodUnion<readonly [ZodBoolean, ZodNumber]>>;
8688
8924
  __EXPERIMENTAL_BORDER: ZodOptional<ZodObject<{
8689
8925
  enabled: ZodBoolean;
8690
8926
  color: ZodCustom<BorderColor, BorderColor>;
8691
8927
  width: ZodOptional<ZodNumber>;
8692
8928
  }, $strip>>;
8693
8929
  __EXPERIMENTAL_PREVENT_SELF_OVERLAP: ZodDefault<ZodBoolean>;
8930
+ __EXPERIMENTAL_XRAY_STYLE: ZodOptional<ZodObject<{
8931
+ opacity: ZodOptional<ZodNumber>;
8932
+ color: ZodOptional<ZodString>;
8933
+ tint: ZodOptional<ZodNumber>;
8934
+ dithering: ZodOptional<ZodNumber>;
8935
+ }, $strip>>;
8694
8936
  }, $strict>;
8695
8937
  type TPathState = output<typeof pathStateSchemaStrict>;
8696
8938
  type TPathUpdateState = input<typeof pathStateSchemaPartial>;
@@ -8997,7 +9239,7 @@ declare class GeoJsonApi extends PubSub<TNavigationEvents> {
8997
9239
  * @param floorStackId - The floor stack ID
8998
9240
  * @returns A map of floor elevation to altitude and effective height data
8999
9241
  */
9000
- getFloorStackAltitudeData(floorStackId: string): Map<any, any>;
9242
+ getFloorStackAltitudeData(floorStackId: string): Map<number, TFloorAltitudeData>;
9001
9243
  /**
9002
9244
  * Create a coordinate from a screen coordinate
9003
9245
  * @param x - The x coordinate of the screen
@@ -9922,6 +10164,10 @@ type TEvents = {
9922
10164
  * Emitted when the pan bounds of the camera changes.
9923
10165
  */
9924
10166
  'camera-bounds-change': CameraBounds;
10167
+ /**
10168
+ * Emitted when the camera's screen offsets change.
10169
+ */
10170
+ 'camera-screen-offsets-change': InsetPadding$1;
9925
10171
  /**
9926
10172
  * Emitted when a floor change starts.
9927
10173
  */
@@ -10253,6 +10499,8 @@ type TFocusOnOptions = TCameraAnimationOptions & {
10253
10499
  * @default: true
10254
10500
  */
10255
10501
  interruptible?: boolean;
10502
+ /** @internal @experimental Debug color override (CSS color string) for this point cloud. */
10503
+ debugColor?: string;
10256
10504
  };
10257
10505
  /**
10258
10506
  * Defines the target for camera operations.
@@ -10382,11 +10630,15 @@ type TAddPathOptions = {
10382
10630
  */
10383
10631
  pulsePauseDuration?: number;
10384
10632
  /**
10385
- * The width of the path in meters. Can be a number or an {@link Interpolation}.
10633
+ * The width of the path.
10634
+ * - `number` — meters (e.g. `1.5`)
10635
+ * - `'Npx'` — screen-space pixels (e.g. `'20px'`), ribbon geometry only
10636
+ * - `Interpolation` — zoom-interpolated meters
10637
+ * - `Interpolation<'zoom-level', PixelWidth[]>` — zoom-interpolated pixels (e.g. `output: ['10px', '20px']`), ribbon geometry only
10386
10638
  *
10387
10639
  * @defaultValue Interpolation { on: 'zoom-level', input: [17, 22], output: [0.8, 0.4] }
10388
10640
  */
10389
- width?: number | Interpolation$1<'zoom-level', number[]>;
10641
+ width?: PathWidth$1;
10390
10642
  /**
10391
10643
  * Duration of path drawing in milliseconds.
10392
10644
  *
@@ -10458,9 +10710,26 @@ type TAddPathOptions = {
10458
10710
  /**
10459
10711
  * The opacity of the path when it's behind geometry (x-ray effect). Value from 0 to 1.
10460
10712
  *
10713
+ * Prefer {@link __EXPERIMENTAL_XRAY_STYLE}.opacity instead.
10714
+ * If both are set, `__EXPERIMENTAL_XRAY_STYLE.opacity` takes precedence.
10715
+ *
10461
10716
  * @defaultValue 0.25
10462
10717
  */
10463
10718
  xrayOpacity?: number;
10719
+ /**
10720
+ * @experimental
10721
+ * Consolidated x-ray appearance configuration. Controls how paths look when behind geometry.
10722
+ */
10723
+ __EXPERIMENTAL_XRAY_STYLE?: {
10724
+ /** The opacity when behind geometry (0-1). @default 0.25 */
10725
+ opacity?: number;
10726
+ /** Explicit color override for the x-ray portion. Omit to auto-compute from path color. */
10727
+ color?: string;
10728
+ /** Tint strength (0-1). 0 = no muting, 1 = fully muted. @default 0.3 */
10729
+ tint?: number;
10730
+ /** Dithering cell size in screen pixels (e.g. 4 = 4x4px checkerboard). 0 or undefined = off. */
10731
+ dithering?: number;
10732
+ };
10464
10733
  /**
10465
10734
  * @experimental Controls the smoothness of path corners using CatmullRom curve tension. Higher values create smoother curves.
10466
10735
  * Values between 0.1-0.3 provide subtle smoothing suitable for most use cases.
@@ -10499,12 +10768,15 @@ type TAddPathOptions = {
10499
10768
  */
10500
10769
  __EXPERIMENTAL_ENDCAP_EXTENSION?: [number, number];
10501
10770
  /**
10502
- * @experimental When true and using ribbon geometry, the path will always face the camera (billboard effect).
10503
- * Most useful for vertical paths between floors.
10771
+ * @experimental Controls billboarding for ribbon path geometry.
10772
+ * - `true`: Every vertex faces the camera (unconditional billboard)
10773
+ * - `false`: Flat world-space orientation
10774
+ * - `number`: Angle threshold in degrees (0-90). Billboard only when path tangent
10775
+ * verticality >= threshold. E.g. 80 means billboard only nearly-vertical segments.
10504
10776
  *
10505
- * @defaultValue false
10777
+ * @defaultValue 80
10506
10778
  */
10507
- __EXPERIMENTAL_BILLBOARDING?: boolean;
10779
+ __EXPERIMENTAL_BILLBOARDING?: boolean | number;
10508
10780
  /**
10509
10781
  * @experimental Border configuration for ribbon path geometry.
10510
10782
  * Renders darkened edges along both sides of the ribbon.
@@ -10527,18 +10799,9 @@ type TAddPathOptions = {
10527
10799
  };
10528
10800
  /**
10529
10801
  * @experimental Options specific to connection paths (vertical paths between floors).
10530
- * Extends TAddPathOptions but with enhanced billboarding that supports angle-threshold activation.
10802
+ * Extends TAddPathOptions with junction inset control.
10531
10803
  */
10532
- type TConnectionPathOptions = Omit<TAddPathOptions, '__EXPERIMENTAL_BILLBOARDING'> & {
10533
- /**
10534
- * @experimental Controls billboarding for connection path geometry.
10535
- * - `boolean`: Enable/disable billboarding directly
10536
- * - `number`: Angle threshold in degrees (0-90). Billboard when path angle from horizontal >= threshold.
10537
- * For example, 80 means billboard only when path is >=80 degrees from horizontal (nearly vertical).
10538
- *
10539
- * @defaultValue false
10540
- */
10541
- __EXPERIMENTAL_BILLBOARDING?: boolean | number;
10804
+ type TConnectionPathOptions = TAddPathOptions & {
10542
10805
  /**
10543
10806
  * @experimental Amount in meters to shorten connection path from each end.
10544
10807
  * Prevents visual overlap with floor paths at junctions.
@@ -11087,7 +11350,7 @@ interface UpdateGlobalState {
11087
11350
  /**
11088
11351
  * A map element that can be focused on by the camera.
11089
11352
  */
11090
- type TFocusTarget = Coordinate | Space | Area | MapObject | Floor | Shape;
11353
+ type TFocusTarget = Coordinate | Space | Area | MapObject | Floor | FloorStack | Shape;
11091
11354
  /**
11092
11355
  * Associates MapData type strings with their corresponding classes.
11093
11356
  */
@@ -12013,8 +12276,8 @@ declare class Area extends DetailedMapData<AreaCollection['features'][number]> i
12013
12276
  */
12014
12277
  get geoJSON(): {
12015
12278
  properties: null;
12016
- type: _mappedin_mvf_v22.FeatureType;
12017
- geometry: _mappedin_mvf_v22.Polygon;
12279
+ type: _mappedin_mvf_v28.FeatureType;
12280
+ geometry: _mappedin_mvf_v28.Polygon;
12018
12281
  };
12019
12282
  /** @internal */
12020
12283
  get focusTarget(): this;
@@ -12116,8 +12379,8 @@ declare class Door extends DetailedMapData<EntranceFeature> implements IGeoJSOND
12116
12379
  */
12117
12380
  get geoJSON(): {
12118
12381
  properties: null;
12119
- type: _mappedin_mvf_v22.FeatureType;
12120
- geometry: _mappedin_mvf_v22.LineString;
12382
+ type: _mappedin_mvf_v28.FeatureType;
12383
+ geometry: _mappedin_mvf_v28.LineString;
12121
12384
  };
12122
12385
  /** @internal */
12123
12386
  get focusTarget(): Coordinate;
@@ -12253,8 +12516,8 @@ declare class Space extends DetailedMapData<SpaceFeature> implements IGeoJSONDat
12253
12516
  */
12254
12517
  get geoJSON(): {
12255
12518
  properties: null;
12256
- type: _mappedin_mvf_v22.FeatureType;
12257
- geometry: _mappedin_mvf_v22.Point | _mappedin_mvf_v22.Polygon | _mappedin_mvf_v22.LineString;
12519
+ type: _mappedin_mvf_v28.FeatureType;
12520
+ geometry: _mappedin_mvf_v28.Point | _mappedin_mvf_v28.Polygon | _mappedin_mvf_v28.LineString;
12258
12521
  };
12259
12522
  /** @internal */
12260
12523
  get focusTarget(): this | Coordinate;
@@ -12340,7 +12603,7 @@ declare class PointOfInterest extends DetailedMapData<FeatureCollection$1<Point$
12340
12603
  */
12341
12604
  get geoJSON(): {
12342
12605
  properties: null;
12343
- type: _mappedin_mvf_v22.FeatureType;
12606
+ type: _mappedin_mvf_v28.FeatureType;
12344
12607
  geometry: Point$1;
12345
12608
  };
12346
12609
  /**
@@ -12454,8 +12717,8 @@ declare class Annotation extends DetailedMapData<AnnotationCollection['features'
12454
12717
  */
12455
12718
  get geoJSON(): {
12456
12719
  properties: null;
12457
- type: _mappedin_mvf_v22.FeatureType;
12458
- geometry: _mappedin_mvf_v22.Point;
12720
+ type: _mappedin_mvf_v28.FeatureType;
12721
+ geometry: _mappedin_mvf_v28.Point;
12459
12722
  };
12460
12723
  /** @internal */
12461
12724
  get focusTarget(): Coordinate;
@@ -12671,8 +12934,8 @@ declare class MapObject extends DetailedMapData<ObstructionFeature> implements I
12671
12934
  */
12672
12935
  get geoJSON(): {
12673
12936
  properties: null;
12674
- type: _mappedin_mvf_v22.FeatureType;
12675
- geometry: _mappedin_mvf_v22.Polygon | _mappedin_mvf_v22.LineString;
12937
+ type: _mappedin_mvf_v28.FeatureType;
12938
+ geometry: _mappedin_mvf_v28.Polygon | _mappedin_mvf_v28.LineString;
12676
12939
  };
12677
12940
  /** @internal */
12678
12941
  get anchorTarget(): Coordinate;
@@ -12985,8 +13248,8 @@ declare class Node extends BaseMetaData implements IGeoJSONData, IFocusable, IAn
12985
13248
  */
12986
13249
  get geoJSON(): {
12987
13250
  properties: null;
12988
- type: _mappedin_mvf_v22.FeatureType;
12989
- geometry: _mappedin_mvf_v22.Point;
13251
+ type: _mappedin_mvf_v28.FeatureType;
13252
+ geometry: _mappedin_mvf_v28.Point;
12990
13253
  };
12991
13254
  /** @internal */
12992
13255
  get focusTarget(): Coordinate;
@@ -13026,7 +13289,7 @@ declare class Node extends BaseMetaData implements IGeoJSONData, IFocusable, IAn
13026
13289
  *
13027
13290
  * FloorStacks are used to represent a group of floors that are part of a single entity.
13028
13291
  */
13029
- declare class FloorStack extends BaseMapData implements IGeoJSONData {
13292
+ declare class FloorStack extends BaseMapData implements IGeoJSONData, IFocusable {
13030
13293
  #private;
13031
13294
  /**
13032
13295
  * @internal
@@ -13084,6 +13347,10 @@ declare class FloorStack extends BaseMapData implements IGeoJSONData {
13084
13347
  * Gets the facade ({@link Facade}) representing this floor stack, if it exists.
13085
13348
  */
13086
13349
  get facade(): Facade | undefined;
13350
+ /**
13351
+ * Returns this FloorStack as the focus target for the camera.
13352
+ */
13353
+ get focusTarget(): FloorStack;
13087
13354
  /**
13088
13355
  * Gets the underlying GeoJSON Feature representation of this FloorStack.
13089
13356
  *
@@ -13424,7 +13691,7 @@ declare class EnterpriseLocation extends BaseMetaData implements Omit<Enterprise
13424
13691
  parentId?: string;
13425
13692
  });
13426
13693
  /** @internal */
13427
- get focusTarget(): Space[] | Coordinate[];
13694
+ get focusTarget(): Coordinate[] | Space[];
13428
13695
  /** @internal */
13429
13696
  get navigationTarget(): Space[];
13430
13697
  /**
@@ -15018,7 +15285,7 @@ declare class MapData {
15018
15285
  * console.log(`Current language: ${language.name} (${language.code})`);
15019
15286
  * ```
15020
15287
  */
15021
- get currentLanguage(): _mappedin_mvf_v22.Language | undefined;
15288
+ get currentLanguage(): _mappedin_mvf_v28.Language | undefined;
15022
15289
  /**
15023
15290
  * Gets the natural bearing of the map.
15024
15291
  *
@@ -15631,13 +15898,14 @@ declare class Mask {
15631
15898
  dirty: boolean;
15632
15899
  }
15633
15900
  //#endregion
15634
- //#region ../renderer-three/src/entities/geometry-group.d.ts
15901
+ //#region ../renderer-three/src/entities/batched-geometry-group.d.ts
15635
15902
  /**
15636
- * State representing a Geometry Group, which is a container for Geometries and Models.
15903
+ * State representing a Batched Geometry Group, which is a container for Geometries and Models
15904
+ * rendered via THREE.js BatchedMesh.
15637
15905
  */
15638
- type GeometryGroupState = {
15906
+ type BatchedGeometryGroupState = {
15639
15907
  readonly id: string | number;
15640
- readonly type: 'geometry-group';
15908
+ readonly type: 'batched-geometry-group';
15641
15909
  /**
15642
15910
  * The ids of the children of the geometry group
15643
15911
  */
@@ -15688,9 +15956,9 @@ type GeometryGroupState = {
15688
15956
  */
15689
15957
  position: Position$2;
15690
15958
  };
15691
- declare class GeometryGroupObject3D extends Object3D {
15959
+ declare class BatchedGeometryGroupObject3D extends Object3D {
15692
15960
  visible: boolean;
15693
- readonly type: "geometry-group";
15961
+ readonly type: "batched-geometry-group";
15694
15962
  components: [Mask?];
15695
15963
  getComponent(type: 'mask'): Mask | undefined;
15696
15964
  userData: {
@@ -15708,8 +15976,9 @@ declare class GeometryGroupObject3D extends Object3D {
15708
15976
  removeEntity(): void;
15709
15977
  constructor(id: string);
15710
15978
  /**
15711
- * Get first child entity of a group if it's a batched mesh
15712
- * We use this logic a lot for getting the material of the group. since group does not have material and batched mesh does
15979
+ * Get first child entity of a group if it's a batched mesh.
15980
+ * We use this logic a lot for getting the material of the group, since the group does not have
15981
+ * a material and the batched mesh does.
15713
15982
  */
15714
15983
  getfirstChildEntityId(): string | number | undefined;
15715
15984
  }
@@ -15721,7 +15990,7 @@ declare class InteractionComponent {
15721
15990
  dirty: boolean;
15722
15991
  }
15723
15992
  //#endregion
15724
- //#region ../renderer-three/src/systems/mesh-creation-and-optimization/batched-material.d.ts
15993
+ //#region ../renderer-three/src/systems/batched-mesh/batched-material.d.ts
15725
15994
  declare class BatchedStandardMaterial extends MeshLambertMaterial {
15726
15995
  private propertiesTexture;
15727
15996
  texturesVisible: boolean;
@@ -15908,7 +16177,7 @@ type GeometryState = {
15908
16177
  /**
15909
16178
  * The parent group of the geometry
15910
16179
  */
15911
- readonly parent: EntityId$1<GeometryGroupState>;
16180
+ readonly parent: EntityId$1<BatchedGeometryGroupState>;
15912
16181
  /**
15913
16182
  * Whether the geometry is visible. This is independent of the visibility of the children, but will affect the visibility of the children if set to false.
15914
16183
  */
@@ -16070,7 +16339,7 @@ type ModelState = {
16070
16339
  /**
16071
16340
  * The parent container of the marker
16072
16341
  */
16073
- readonly parent?: EntityId$1<GeometryGroupState> | string | number;
16342
+ readonly parent?: EntityId$1<BatchedGeometryGroupState> | string | number;
16074
16343
  /**
16075
16344
  * The position of the model in [lon, lat]
16076
16345
  */
@@ -16147,6 +16416,19 @@ type BorderConfig = {
16147
16416
  /** Border width as fraction of total ribbon width (0-0.5). @default 0.1 */
16148
16417
  width?: number;
16149
16418
  };
16419
+ /**
16420
+ * @experimental
16421
+ * Configuration for the x-ray appearance of paths behind geometry.
16422
+ */
16423
+ type XrayStyleConfig = {
16424
+ /** Explicit color override for the x-ray base color. When omitted, uses the path color. Tint is always applied on top. */
16425
+ color?: string;
16426
+ /** Tint strength (0-1) controlling how much the color is desaturated.
16427
+ * 0 = no muting (same as base color), 1 = fully gray. @default 0.2 */
16428
+ tint?: number;
16429
+ /** Dithering cell size in screen pixels. 0 or undefined = off. */
16430
+ dithering?: number;
16431
+ };
16150
16432
  type PathProperties = {
16151
16433
  /**
16152
16434
  * The parentId of the point. The point will be anchored to the altitude of this parent group container.
@@ -16207,9 +16489,10 @@ type PathState$1 = {
16207
16489
  */
16208
16490
  animateArrowsOnPath: boolean;
16209
16491
  /**
16210
- * The width of the path in meters. Can be a number or an {@link Interpolation}.
16492
+ * The width of the path. Can be a number (meters), a pixel string like '20px',
16493
+ * or an {@link Interpolation} (meters or pixels).
16211
16494
  */
16212
- width: number | Interpolation$2<'zoom-level', number[]>;
16495
+ width: PathWidth$3;
16213
16496
  /**
16214
16497
  * The fraction of the path that should be highlighted. This can be used to animate the highlight.
16215
16498
  * @default 0
@@ -16224,6 +16507,11 @@ type PathState$1 = {
16224
16507
  * @default 0.25
16225
16508
  */
16226
16509
  xrayOpacity: number;
16510
+ /**
16511
+ * @experimental
16512
+ * Configuration for x-ray appearance when path is behind geometry.
16513
+ */
16514
+ xrayStyle?: XrayStyleConfig;
16227
16515
  /**
16228
16516
  * Controls the smoothness of path corners using CatmullRom curve tension. Higher values create smoother curves.
16229
16517
  * Values between 0.1-0.3 provide subtle smoothing suitable for most use cases.
@@ -16292,7 +16580,7 @@ type PathState$1 = {
16292
16580
  * Most useful for vertical paths between floors.
16293
16581
  * @default false
16294
16582
  */
16295
- __EXPERIMENTAL_BILLBOARDING: boolean;
16583
+ __EXPERIMENTAL_BILLBOARDING: boolean | number;
16296
16584
  /**
16297
16585
  * @experimental
16298
16586
  * Border configuration for ribbon path geometry.
@@ -16319,10 +16607,14 @@ type AddPathOptions = {
16319
16607
  id?: string | number;
16320
16608
  /**
16321
16609
  * The width of the path.
16610
+ * - `number` — meters (e.g. `1.5`)
16611
+ * - `'Npx'` — screen-space pixels (e.g. `'20px'`)
16612
+ * - `Interpolation` — zoom-interpolated meters
16613
+ * - `Interpolation<'zoom-level', PixelWidth[]>` — zoom-interpolated pixels (e.g. `output: ['10px', '20px']`)
16322
16614
  *
16323
16615
  * @default Interpolation { on: 'zoom-level', input: [17, 22], output: [0.8, 0.4] }
16324
16616
  */
16325
- width?: number | Interpolation$2<'zoom-level', number[]>;
16617
+ width?: PathWidth$3;
16326
16618
  /**
16327
16619
  * The color of the path.
16328
16620
  */
@@ -16365,6 +16657,11 @@ type AddPathOptions = {
16365
16657
  * @default 0.25
16366
16658
  */
16367
16659
  xrayOpacity?: number;
16660
+ /**
16661
+ * @experimental
16662
+ * Configuration for x-ray appearance when path is behind geometry.
16663
+ */
16664
+ xrayStyle?: XrayStyleConfig;
16368
16665
  /**
16369
16666
  * Controls the smoothness of path corners using CatmullRom curve tension. Higher values create smoother curves.
16370
16667
  * Values between 0.1-0.3 provide subtle smoothing suitable for most use cases.
@@ -16439,7 +16736,7 @@ type AddPathOptions = {
16439
16736
  * Most useful for vertical paths between floors.
16440
16737
  * @default false
16441
16738
  */
16442
- __EXPERIMENTAL_BILLBOARDING?: boolean;
16739
+ __EXPERIMENTAL_BILLBOARDING?: boolean | number;
16443
16740
  /**
16444
16741
  * @experimental
16445
16742
  * Border configuration for ribbon path geometry.
@@ -16463,8 +16760,12 @@ declare class PathComponent {
16463
16760
  outline?: LineSegments;
16464
16761
  feature: FeatureCollection<Point, PathProperties>;
16465
16762
  options: AddPathOptions;
16466
- width: number | Interpolation$2<'zoom-level', number[]>;
16763
+ width: PathWidth$3;
16467
16764
  breakpoint: number;
16765
+ /** Whether width is in screen-space pixels (derived from width value). */
16766
+ screenSpace: boolean;
16767
+ /** Pre-parsed numeric output values for interpolated widths. Avoids parseFloat on every frame. */
16768
+ parsedOutputValues: number[];
16468
16769
  altitudeBreakpoints?: number[];
16469
16770
  accentColor: string;
16470
16771
  completeFraction: number;
@@ -16478,6 +16779,7 @@ declare class PathComponent {
16478
16779
  highlightWidthMultiplier: number;
16479
16780
  highlightColor: string;
16480
16781
  xrayOpacity: number;
16782
+ xrayStyle?: XrayStyleConfig;
16481
16783
  dashed: boolean;
16482
16784
  smoothingTension: number;
16483
16785
  smoothingCornerRadius: number;
@@ -16491,7 +16793,7 @@ declare class PathComponent {
16491
16793
  gapMeters: number;
16492
16794
  __EXPERIMENTAL_GEOMETRY: 'tube' | 'ribbon';
16493
16795
  __EXPERIMENTAL_ENDCAP_EXTENSION: [number, number];
16494
- __EXPERIMENTAL_BILLBOARDING: boolean;
16796
+ __EXPERIMENTAL_BILLBOARDING: boolean | number;
16495
16797
  __EXPERIMENTAL_BORDER?: BorderConfig;
16496
16798
  __EXPERIMENTAL_PREVENT_SELF_OVERLAP: boolean;
16497
16799
  /**
@@ -16501,6 +16803,7 @@ declare class PathComponent {
16501
16803
  dirty: boolean;
16502
16804
  materialDirty: boolean;
16503
16805
  constructor(feature: FeatureCollection<Point, PathProperties>, options?: AddPathOptions);
16806
+ updateScreenSpaceState(): void;
16504
16807
  setColor(): void;
16505
16808
  setOpacity(): void;
16506
16809
  set visible(visible: boolean);
@@ -16845,7 +17148,7 @@ declare class Geometry3D<M$1 extends MeshComponentTypes = MeshComponent, S exten
16845
17148
  */
16846
17149
  parentId?: string | number;
16847
17150
  get object3d(): M$1["mesh"];
16848
- get parentObject3D(): GroupContainerObject3D | GeometryGroupObject3D | null;
17151
+ get parentObject3D(): GroupContainerObject3D | BatchedGeometryGroupObject3D | null;
16849
17152
  type: T$1;
16850
17153
  entities2D: Map<string | number, Geometry2D>;
16851
17154
  constructor(meshComponent: M$1, styleComponent: S);
@@ -16942,6 +17245,10 @@ interface PathUniforms {
16942
17245
  type: 'b';
16943
17246
  value: boolean;
16944
17247
  };
17248
+ xrayDithering: {
17249
+ type: 'f';
17250
+ value: number;
17251
+ };
16945
17252
  highlightStartFraction: {
16946
17253
  type: 'f';
16947
17254
  value: number;
@@ -16998,9 +17305,9 @@ interface PathUniforms {
16998
17305
  type: 'b';
16999
17306
  value: boolean;
17000
17307
  };
17001
- billboarded: {
17002
- type: 'b';
17003
- value: boolean;
17308
+ billboardThreshold: {
17309
+ type: 'f';
17310
+ value: number;
17004
17311
  };
17005
17312
  borderEnabled: {
17006
17313
  type: 'b';
@@ -17026,6 +17333,14 @@ interface PathUniforms {
17026
17333
  type: 'm4';
17027
17334
  value: Matrix4;
17028
17335
  };
17336
+ screenSpace: {
17337
+ type: 'b';
17338
+ value: boolean;
17339
+ };
17340
+ metersPerPixel: {
17341
+ type: 'f';
17342
+ value: number;
17343
+ };
17029
17344
  }
17030
17345
  //#endregion
17031
17346
  //#region ../renderer-three/src/services/renderer.d.ts
@@ -17242,8 +17557,8 @@ declare class ExporterSystem {
17242
17557
  destroy(): void;
17243
17558
  }
17244
17559
  //#endregion
17245
- //#region ../renderer-three/src/systems/mesh-creation-and-optimization/system.d.ts
17246
- declare class MeshCreationAndOptimizationSystem extends PubSub<{
17560
+ //#region ../renderer-three/src/systems/batched-mesh/system.d.ts
17561
+ declare class BatchedMeshSystem extends PubSub<{
17247
17562
  'geometry-2d-added': void;
17248
17563
  'geometry-group-added': void;
17249
17564
  }> {
@@ -17904,6 +18219,17 @@ declare class CameraSystem extends PubSub<CameraEvents> {
17904
18219
  getCurrentMetersPerPixel(): number;
17905
18220
  }
17906
18221
  //#endregion
18222
+ //#region ../renderer-three/src/camera-debug.d.ts
18223
+ type FocusOnDebugConfig = {
18224
+ pointCloud?: {
18225
+ size?: number;
18226
+ color?: string;
18227
+ } | false;
18228
+ boundingBox?: {
18229
+ color?: string;
18230
+ } | false;
18231
+ } | false;
18232
+ //#endregion
17907
18233
  //#region ../renderer-three/src/camera.d.ts
17908
18234
  type AnimationOptions = {
17909
18235
  duration?: number;
@@ -17920,6 +18246,10 @@ type FocusOnOptions = AnimationOptions & {
17920
18246
  maxZoomLevel?: number;
17921
18247
  interruptible?: boolean;
17922
18248
  verticalPadding?: number;
18249
+ /** Debug key — the target object used as a Map key so multiple debug visualizations coexist. */
18250
+ debugKey?: object;
18251
+ /** Debug color override (CSS color string) for this point cloud. */
18252
+ debugColor?: string;
17923
18253
  };
17924
18254
  type AnimateToOptions = AnimationOptions & {
17925
18255
  center?: Position$2;
@@ -18097,6 +18427,16 @@ declare class Camera$2 extends PubSub<{
18097
18427
  * @internal
18098
18428
  */
18099
18429
  hideCameraTargetsDebug(): void;
18430
+ /**
18431
+ * Enable 3D debug visualization of the focusOn point cloud and bounding boxes.
18432
+ * @internal
18433
+ */
18434
+ showFocusOnDebug(cfg: FocusOnDebugConfig): void;
18435
+ /**
18436
+ * Disable 3D debug visualization of the focusOn point cloud and bounding boxes.
18437
+ * @internal
18438
+ */
18439
+ hideFocusOnDebug(): void;
18100
18440
  /**
18101
18441
  * Enable debug visualization of screen offsets.
18102
18442
  * Shows colored overlays for each padding area.
@@ -18364,7 +18704,7 @@ declare class OutlineInterpolationSystem extends PubSub<{
18364
18704
  * @param options - Optional configuration for outline rendering
18365
18705
  */
18366
18706
  constructor(rendererState: RendererState, options?: OutlinesOptions$1);
18367
- buildOutlines(geometryGroupEntity: GeometryGroupObject3D): void;
18707
+ buildOutlines(geometryGroupEntity: BatchedGeometryGroupObject3D): void;
18368
18708
  /**
18369
18709
  * Update the outline color of all entities with an outline component.
18370
18710
  * @param zoomLevel - The current zoom level.
@@ -18526,7 +18866,7 @@ declare class PathSystem extends PubSub<{
18526
18866
  getParentContainer: Core['getParentContainer'];
18527
18867
  convertZoomLevelToAltitude: CameraSystem['convertZoomLevelToAltitude'];
18528
18868
  constructor(rendererState: RendererState, convertTo3DMapPosition: Core['convertTo3DMapPosition'], getParentContainer: Core['getParentContainer'], convertZoomLevelToAltitude: CameraSystem['convertZoomLevelToAltitude']);
18529
- update(minZoomAltitude: number, maxZoomAltitude: number, currentZoomAltitude: number): void;
18869
+ update(minZoomAltitude: number, maxZoomAltitude: number, currentZoomAltitude: number, metersPerPixel: number): void;
18530
18870
  }
18531
18871
  //#endregion
18532
18872
  //#region ../renderer-three/src/systems/mesh-detachment/system.d.ts
@@ -18633,12 +18973,17 @@ declare const DEFAULT_DEBUG_STATE: {
18633
18973
  * - Cyan box: getFocusOnTransform bounding area
18634
18974
  */
18635
18975
  showCameraTargets: boolean;
18976
+ /**
18977
+ * Shows focusOn 3D debug visualization (point cloud spheres and/or wireframe bounding boxes).
18978
+ * Pass `{ pointCloud?: { size?, color? } | false, boundingBox?: { color? } | false }` to configure.
18979
+ */
18980
+ focusOn: FocusOnDebugConfig;
18636
18981
  };
18637
18982
  /**
18638
18983
  * Type definition for the debug state configuration.
18639
18984
  * Represents all available debug options that can be toggled.
18640
18985
  */
18641
- type DebugState = typeof DEFAULT_DEBUG_STATE;
18986
+ type DebugState$2 = typeof DEFAULT_DEBUG_STATE;
18642
18987
  /**
18643
18988
  * Debug utility class for toggling various debug visualization features.
18644
18989
  *
@@ -18697,6 +19042,11 @@ declare class Debug$1 {
18697
19042
  * - Cyan box: getFocusOnTransform bounding area
18698
19043
  */
18699
19044
  showCameraTargets: boolean;
19045
+ /**
19046
+ * Shows focusOn 3D debug visualization (point cloud spheres and/or wireframe bounding boxes).
19047
+ * Pass `{ pointCloud?: { size?, color? } | false, boundingBox?: { color? } | false }` to configure.
19048
+ */
19049
+ focusOn: FocusOnDebugConfig;
18700
19050
  };
18701
19051
  /** Reference to the core renderer instance */
18702
19052
  core: Core;
@@ -18724,7 +19074,7 @@ declare class Debug$1 {
18724
19074
  * });
18725
19075
  * ```
18726
19076
  */
18727
- update(updateState: Partial<DebugState>): void;
19077
+ update(updateState: Partial<DebugState$2>): void;
18728
19078
  /**
18729
19079
  * Handles the actual system updates based on changed debug state values.
18730
19080
  * This method applies the debug state changes to the appropriate renderer systems.
@@ -18888,17 +19238,118 @@ declare class ClippingPlaneSystem {
18888
19238
  }
18889
19239
  //#endregion
18890
19240
  //#region ../renderer-three/src/systems/system-plugins/system.d.ts
19241
+ /**
19242
+ * **Super experimental — this API may change or be removed in any release without notice.
19243
+ * Do not depend on it in production.**
19244
+ *
19245
+ * Interface for plugins that hook into the Mappedin render loop.
19246
+ *
19247
+ * Plugins receive the full renderer state every frame, providing direct access
19248
+ * to the Three.js scene, camera, renderer, lighting, and all ECS geometry entities.
19249
+ * Use this to inject custom Three.js objects, apply per-frame effects, or read scene state.
19250
+ *
19251
+ * ## Lifecycle
19252
+ *
19253
+ * - `update()` is called **every frame** during the finalization phase of the render loop
19254
+ * (after camera, path, and 2D systems have run, but before `DrawSystem` applies
19255
+ * style changes and before `paint()` draws the frame).
19256
+ * - Plugins are called in registration order.
19257
+ *
19258
+ * ## Standalone vs. Overlay Mode
19259
+ *
19260
+ * | Concern | Standalone | MapLibre Overlay |
19261
+ * |---|---|---|
19262
+ * | Add meshes to | `state.threeJSScene` | `state.geometryScene` |
19263
+ * | Camera position | Reflects actual viewer position | **Not reliable** — MapLibre overwrites the projection matrix each frame |
19264
+ * | Coordinate space | Scene units (meters from map center) | Scene units (meters from map center) |
19265
+ *
19266
+ * ## Performance
19267
+ *
19268
+ * `update()` runs on the main thread every frame. Avoid heavy computation, allocations,
19269
+ * or GPU-blocking operations. Gate one-time work behind an initialization flag.
19270
+ *
19271
+ * @example
19272
+ * ### Adding a custom Three.js mesh
19273
+ * ```ts
19274
+ * import { type ISystemPlugin, type TRendererState } from '@mappedin/mappedin-js';
19275
+ * import { Mesh, MeshStandardMaterial, SphereGeometry } from 'three';
19276
+ *
19277
+ * class SpherePlugin implements ISystemPlugin {
19278
+ * private sphere: Mesh | null = null;
19279
+ *
19280
+ * update(state: TRendererState): void {
19281
+ * // One-time setup — add a sphere to the scene
19282
+ * if (!this.sphere) {
19283
+ * const geo = new SphereGeometry(3, 32, 32);
19284
+ * const mat = new MeshStandardMaterial({ color: 0xff4444 });
19285
+ * this.sphere = new Mesh(geo, mat);
19286
+ * // Use geometryScene for overlay mode, threeJSScene for standalone
19287
+ * state.geometryScene.add(this.sphere);
19288
+ * }
19289
+ * this.sphere.rotation.y += 0.01;
19290
+ * }
19291
+ * }
19292
+ *
19293
+ * mapView.registerPlugin(new SpherePlugin());
19294
+ * ```
19295
+ *
19296
+ * @example
19297
+ * ### Reading ECS component data
19298
+ * ```ts
19299
+ * class InspectorPlugin implements ISystemPlugin {
19300
+ * update(state: TRendererState): void {
19301
+ * for (const geometry of state.geometry3DsInScene) {
19302
+ * const style = geometry.getComponent('style');
19303
+ * if (style) {
19304
+ * console.log(geometry.id, style.color, style.opacity);
19305
+ * }
19306
+ * }
19307
+ * }
19308
+ * }
19309
+ * ```
19310
+ *
19311
+ * @example
19312
+ * ### Mutating ECS styles (mark dirty to apply)
19313
+ * ```ts
19314
+ * class HighlightPlugin implements ISystemPlugin {
19315
+ * update(state: TRendererState): void {
19316
+ * for (const geometry of state.geometry3DMap.values()) {
19317
+ * const style = geometry.getComponent('style');
19318
+ * if (style) {
19319
+ * style.color = 'red';
19320
+ * style.dirty = true; // Required — triggers DrawSystem to apply the change
19321
+ * }
19322
+ * }
19323
+ * }
19324
+ * }
19325
+ * ```
19326
+ *
19327
+ * @experimental
19328
+ */
18891
19329
  interface ISystemPlugin$2 {
18892
19330
  /**
19331
+ * Called every frame with the current renderer state.
18893
19332
  *
18894
- * @param state - The current state of the renderer.
19333
+ * @param state - The renderer state snapshot for this frame. Contains Three.js objects
19334
+ * (`threeJSScene`, `renderer`, `cameraObject`, `directionalLight`, `ambientLight`),
19335
+ * the geometry scene graph (`geometryScene`), and all ECS entity maps
19336
+ * (`geometry3DMap`, `geometry3DsInScene`, `geometry2DMap`, `geometry2DsInScene`).
18895
19337
  */
18896
19338
  update(state: RendererState): void;
18897
19339
  }
19340
+ /**
19341
+ * Manages registered {@link ISystemPlugin} instances and invokes them each frame.
19342
+ *
19343
+ * @internal — Not part of the public API. Use {@link MapView.registerPlugin} and
19344
+ * {@link MapView.unregisterPlugin} instead.
19345
+ */
18898
19346
  declare class PluginSystem {
18899
19347
  private plugins;
19348
+ /** @internal */
18900
19349
  registerPlugin(plugin: ISystemPlugin$2): void;
19350
+ /** @internal */
18901
19351
  unregisterPlugin(plugin: ISystemPlugin$2): void;
19352
+ /** @internal */
18902
19353
  update(state: RendererState): void;
18903
19354
  }
18904
19355
  //#endregion
@@ -19213,7 +19664,7 @@ declare class ModelSystem extends PubSub<{
19213
19664
  * @param tree - The geometry group container
19214
19665
  * @returns The created Object3D containing the model instances
19215
19666
  */
19216
- populateModelGroup(entities: Set<string | number>, url: string, tree: GeometryGroupObject3D): Promise<Geometry3DObject3D>;
19667
+ populateModelGroup(entities: Set<string | number>, url: string, tree: BatchedGeometryGroupObject3D): Promise<Geometry3DObject3D>;
19217
19668
  /**
19218
19669
  * Updates the model system, processing any pending model loads and style updates
19219
19670
  * @returns A promise that resolves when all model loading is complete
@@ -19298,6 +19749,8 @@ declare class TwoDEntitySystem {
19298
19749
  constructor(container: HTMLElement, state: RendererState, pipelineState: TwoDPipelineState, projectFn: (out: Vector2, v3: Vector3) => void, options?: TwoDPipelineOptions);
19299
19750
  /** Returns the internal pipeline for direct access (test use only). */
19300
19751
  get pipeline(): TwoDPipeline;
19752
+ /** @internal Canvas used for rendering 2D labels. */
19753
+ get labelCanvas(): HTMLCanvasElement;
19301
19754
  /** Quad tree of interactive colliders for hit testing. */
19302
19755
  get interactiveCollidersQTree(): QuadTree<{
19303
19756
  entityId: string | number;
@@ -19387,7 +19840,7 @@ type Systems = {
19387
19840
  panBoundsSystem: PanBoundsSystem;
19388
19841
  twoDEntitySystem: TwoDEntitySystem;
19389
19842
  interactionSystem: InteractionSystem;
19390
- meshOptimizationSystem: MeshCreationAndOptimizationSystem;
19843
+ batchedMeshSystem: BatchedMeshSystem;
19391
19844
  modelSystem: ModelSystem;
19392
19845
  drawSystem: DrawSystem;
19393
19846
  renderSystem: RenderSystem;
@@ -19488,9 +19941,10 @@ declare class Core extends PubSub<MapEvent> {
19488
19941
  registerPlugin(plugin: ISystemPlugin$2): void;
19489
19942
  unregisterPlugin(plugin: ISystemPlugin$2): void;
19490
19943
  /**
19491
- * Add a geometry group from GeoJSON data
19944
+ * Add a batched geometry group from GeoJSON data.
19945
+ * Features are batched into a single BatchedMesh per material group for efficient rendering.
19492
19946
  */
19493
- addGeometryGroup<T$1 extends FeatureCollection<Polygon | MultiPolygon | LineString, any>>(id: string, geometry: T$1, style?: (T$1 extends FeatureCollection<LineString, any> ? LineStyle$2 : PaintStyle$2) | ((feature: Feature<Polygon | MultiPolygon | LineString, any>) => T$1 extends FeatureCollection<LineString, any> ? LineStyle$2 : PaintStyle$2), parent?: EntityId$1<GroupContainerState$1> | string | number | null): EntityId$1<GeometryGroupState>;
19947
+ addBatchedGeometryGroup<T$1 extends FeatureCollection<Polygon | MultiPolygon | LineString, any>>(id: string, geometry: T$1, style?: (T$1 extends FeatureCollection<LineString, any> ? LineStyle$2 : PaintStyle$2) | ((feature: Feature<Polygon | MultiPolygon | LineString, any>) => T$1 extends FeatureCollection<LineString, any> ? LineStyle$2 : PaintStyle$2), parent?: EntityId$1<GroupContainerState$1> | string | number | null): EntityId$1<BatchedGeometryGroupState>;
19494
19948
  addOccluder<T$1 extends Feature<Polygon | MultiPolygon, any>>(feature: T$1, parent?: EntityId$1<GroupContainerState$1> | string | number | null): number;
19495
19949
  addImage(id: string, geometry: Feature<Point, ImageProperties>, style: ImageStyle, parent?: EntityId$1<GroupContainerState$1> | string | null): EntityId$1<ImageState> | undefined;
19496
19950
  /**
@@ -19502,7 +19956,7 @@ declare class Core extends PubSub<MapEvent> {
19502
19956
  }?: {
19503
19957
  parent?: EntityId$1<GroupContainerState$1> | string | null;
19504
19958
  onComplete?: () => void;
19505
- }): EntityId$1<GeometryGroupState> | undefined;
19959
+ }): EntityId$1<BatchedGeometryGroupState> | undefined;
19506
19960
  /**
19507
19961
  * Add an HTML Marker at a GeoJSON coordinate.
19508
19962
  */
@@ -19584,9 +20038,9 @@ declare class Core extends PubSub<MapEvent> {
19584
20038
  * Get the current state of the map view, or any entity that was added, regardless of whether it is visible in the scene
19585
20039
  */
19586
20040
  getState(): MapViewState$1;
19587
- getState<T$1 extends EntityId$1<EntityState>>(geometryOrGeometryId: T$1): T$1 extends EntityId$1<LabelState> ? LabelState : T$1 extends EntityId$1<GeometryState> ? GeometryState : T$1 extends EntityId$1<MarkerState$1> ? MarkerState$1 : T$1 extends EntityId$1<GeometryGroupState> ? GeometryGroupState : T$1 extends EntityId$1<GroupContainerState$1> ? GroupContainerState$1 : T$1 extends EntityId$1<ModelState> ? ModelState : T$1 extends EntityId$1<PathState$1> ? PathState$1 : T$1 extends EntityId$1<ShapeState> ? ShapeState : T$1 extends EntityId$1<ImageState> ? ImageState : T$1 extends EntityId$1<Text3DState$1> ? Text3DState$1 : EntityState;
20041
+ getState<T$1 extends EntityId$1<EntityState>>(geometryOrGeometryId: T$1): T$1 extends EntityId$1<LabelState> ? LabelState : T$1 extends EntityId$1<GeometryState> ? GeometryState : T$1 extends EntityId$1<MarkerState$1> ? MarkerState$1 : T$1 extends EntityId$1<BatchedGeometryGroupState> ? BatchedGeometryGroupState : T$1 extends EntityId$1<GroupContainerState$1> ? GroupContainerState$1 : T$1 extends EntityId$1<ModelState> ? ModelState : T$1 extends EntityId$1<PathState$1> ? PathState$1 : T$1 extends EntityId$1<ShapeState> ? ShapeState : T$1 extends EntityId$1<ImageState> ? ImageState : T$1 extends EntityId$1<Text3DState$1> ? Text3DState$1 : EntityState;
19588
20042
  getState(geometryOrGeometryId?: Record<string | number, any> | string | number): EntityState;
19589
- getState<T$1 extends EntityState>(geometryOrGeometryId: T$1['id']): T$1 extends LabelState ? LabelState : T$1 extends GeometryState ? GeometryState : T$1 extends MarkerState$1 ? MarkerState$1 : T$1 extends GeometryGroupState ? GeometryGroupState : T$1 extends GroupContainerState$1 ? GroupContainerState$1 : T$1 extends ModelState ? ModelState : T$1 extends PathState$1 ? PathState$1 : T$1 extends ShapeState ? ShapeState : T$1 extends ImageState ? ImageState : EntityState;
20043
+ getState<T$1 extends EntityState>(geometryOrGeometryId: T$1['id']): T$1 extends LabelState ? LabelState : T$1 extends GeometryState ? GeometryState : T$1 extends MarkerState$1 ? MarkerState$1 : T$1 extends BatchedGeometryGroupState ? BatchedGeometryGroupState : T$1 extends GroupContainerState$1 ? GroupContainerState$1 : T$1 extends ModelState ? ModelState : T$1 extends PathState$1 ? PathState$1 : T$1 extends ShapeState ? ShapeState : T$1 extends ImageState ? ImageState : EntityState;
19590
20044
  /**
19591
20045
  * Get rendered state for an entity (e.g., runtime rendering state that changes frequently)
19592
20046
  * @param entity The entity to get rendered state for
@@ -19599,7 +20053,7 @@ declare class Core extends PubSub<MapEvent> {
19599
20053
  setState(object: Partial<Omit<MapViewState$1, 'type'>>): void;
19600
20054
  setState<T$1 extends EntityId$1<LabelState>>(object: T$1 | T$1['id'], state: Partial<LabelState>): void;
19601
20055
  setState<T$1 extends EntityId$1<MarkerState$1>>(object: T$1 | T$1['id'], state: Partial<MarkerStateUpdate>): void;
19602
- setState<T$1 extends EntityId$1<GeometryGroupState>>(object: T$1 | T$1['id'], state: Partial<GeometryGroupState>): void;
20056
+ setState<T$1 extends EntityId$1<BatchedGeometryGroupState>>(object: T$1 | T$1['id'], state: Partial<BatchedGeometryGroupState>): void;
19603
20057
  setState<T$1 extends EntityId$1<GroupContainerState$1>>(object: T$1 | T$1['id'], state: Partial<GroupContainerState$1>): void;
19604
20058
  setState<T$1 extends EntityId$1<GeometryState>>(object: T$1 | T$1['id'], state: Partial<GeometryState>): void;
19605
20059
  setState<T$1 extends EntityId$1<ShapeState>>(object: T$1 | T$1['id'], state: Partial<ShapeState>): void;
@@ -19785,7 +20239,7 @@ type GroupContainerState$1 = {
19785
20239
  /**
19786
20240
  * The states of the children of the group container
19787
20241
  */
19788
- readonly children: (PathState$1 | MarkerState$1 | LabelState | GroupContainerState$1 | GeometryGroupState)[];
20242
+ readonly children: (PathState$1 | MarkerState$1 | LabelState | GroupContainerState$1 | BatchedGeometryGroupState)[];
19789
20243
  /**
19790
20244
  * Whether the group container is visible
19791
20245
  */
@@ -19807,7 +20261,7 @@ type GroupContainerState$1 = {
19807
20261
  };
19808
20262
  declare class GroupContainerObject3D extends Object3D {
19809
20263
  childrenIds: Set<string | number>;
19810
- children: (GroupContainerObject3D | GeometryGroupObject3D | BatchedText$1 | Geometry2D['object3d'] | NonNullable<Geometry3D['object3d']>)[];
20264
+ children: (GroupContainerObject3D | BatchedGeometryGroupObject3D | BatchedText$1 | Geometry2D['object3d'] | NonNullable<Geometry3D['object3d']>)[];
19811
20265
  getComponent(): void;
19812
20266
  readonly type: "group-container";
19813
20267
  userData: {
@@ -19828,7 +20282,7 @@ declare class GroupContainerObject3D extends Object3D {
19828
20282
  components: [InteractionComponent?, FocusableComponent?];
19829
20283
  constructor(id: string);
19830
20284
  addOccluderFeature(feature: Feature<Polygon | MultiPolygon, any>, occluderId: number): void;
19831
- addEntity(entityGroupOrContainer: GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | Geometry3DTypes): void;
20285
+ addEntity(entityGroupOrContainer: GroupContainerObject3D | BatchedGeometryGroupObject3D | Geometry2D | Geometry3DTypes): void;
19832
20286
  removeEntity(entityGroupOrContainer: EntityTypes): void;
19833
20287
  setVisible(visible: boolean): void;
19834
20288
  setAltitude(altitude: number): void;
@@ -19869,7 +20323,7 @@ declare class Geometry2D {
19869
20323
  type: 'label' | 'marker';
19870
20324
  /** Lightweight entity for the 2D pipeline */
19871
20325
  entity2D: Entity2D;
19872
- get parentObject3D(): GroupContainerObject3D | GeometryGroupObject3D | null;
20326
+ get parentObject3D(): GroupContainerObject3D | BatchedGeometryGroupObject3D | null;
19873
20327
  /** The geometry3D that this 2D entity is attached to */
19874
20328
  get attachedTo(): string | number | undefined;
19875
20329
  verticalOffset: number;
@@ -19879,6 +20333,12 @@ declare class Geometry2D {
19879
20333
  disposed: boolean;
19880
20334
  constructor(ui: MarkerComponent | LabelComponent, position: Vector3, verticalOffset?: number);
19881
20335
  private worldPosition;
20336
+ /**
20337
+ * Recomputes the cached world position from the Object3D scene graph.
20338
+ * matrixAutoUpdate must be temporarily enabled so updateWorldMatrix
20339
+ * (called internally by getWorldPosition) incorporates parent transforms.
20340
+ */
20341
+ private computeWorldPosition;
19882
20342
  get position(): Vector3;
19883
20343
  /**
19884
20344
  * When the position of the entity changes, this should be set to true, so that systems like pan bounds can update
@@ -19887,8 +20347,16 @@ declare class Geometry2D {
19887
20347
  set positionDirty(value: boolean);
19888
20348
  updatePosition(position: Vector3): void;
19889
20349
  setAltitude(z: number): void;
19890
- /** Copies the ThreeJS world position to the lightweight Entity2D */
20350
+ /**
20351
+ * Copies the ThreeJS world position to the lightweight Entity2D.
20352
+ * Uses the position getter which clears positionDirty.
20353
+ */
19891
20354
  syncPosition(): void;
20355
+ /**
20356
+ * Syncs the Entity2D world position without clearing positionDirty,
20357
+ * so that downstream systems (e.g. pan bounds) still see the dirty flag.
20358
+ */
20359
+ private syncEntity2DWorldPosition;
19892
20360
  }
19893
20361
  //#endregion
19894
20362
  //#region ../renderer-three/src/types/geometry.d.ts
@@ -20052,53 +20520,11 @@ type ShadowsOptions = {
20052
20520
  visibleAtZoomLevel?: number;
20053
20521
  };
20054
20522
  //#endregion
20055
- //#region ../renderer-three/src/types/interpolation.d.ts
20056
- /**
20057
- * Different properties that can be interpolated on, and what input values are expected.
20058
- */
20059
- type InterpolateOn$1 = {
20060
- 'zoom-level': number[];
20061
- };
20062
- /**
20063
- * Define interpolation behavior for a value.
20064
- * @example
20065
- * ```ts
20066
- * // Interpolate a value from 1 to 2 between zoom levels 17 and 18 with easing
20067
- * const value: Interpolation<'zoom-level', [number, number]> = {
20068
- * on: 'zoom-level',
20069
- * input: [17, 18],
20070
- * output: [1, 2],
20071
- * easing: 'ease-in',
20072
- * };
20073
- */
20074
- type Interpolation$2<T$1 extends keyof InterpolateOn$1, U$1 extends unknown[]> = {
20075
- /**
20076
- * The property to observe when interpolating.
20077
- *
20078
- * @defaultValue 'zoom-level'
20079
- */
20080
- on: T$1;
20081
- /**
20082
- * Breakpoints in the observed property.
20083
- */
20084
- input: [InterpolateOn$1[T$1][number], ...InterpolateOn$1[T$1]];
20085
- /**
20086
- * Output values corresponding to the input breakpoints.
20087
- */
20088
- output: [U$1[number], ...U$1];
20089
- /**
20090
- * The easing function to use for the interpolation.
20091
- *
20092
- * @defaultValue 'linear'
20093
- */
20094
- easing?: EasingCurve;
20095
- };
20096
- //#endregion
20097
20523
  //#region ../renderer-three/src/types/index.d.ts
20098
20524
  /**
20099
20525
  * The state of an entity, which can be a geometry, geometry group, group container, path, model, label, or marker.
20100
20526
  */
20101
- type EntityState = GeometryState | GeometryGroupState | GroupContainerState$1 | PathState$1 | ModelState | LabelState | MarkerState$1 | ImageState | Text3DState$1 | ShapeState;
20527
+ type EntityState = GeometryState | BatchedGeometryGroupState | GroupContainerState$1 | PathState$1 | ModelState | LabelState | MarkerState$1 | ImageState | Text3DState$1 | ShapeState;
20102
20528
  /**
20103
20529
  * A wrapper object that contains the ID and type of an entity. This is returned when adding entities to the scene, and can be used
20104
20530
  * to `getState` and `setState` of the entity.
@@ -20379,7 +20805,7 @@ type MapEvent = {
20379
20805
  /**
20380
20806
  * All entities in 3D
20381
20807
  */
20382
- type All3DTypes = Geometry3DTypes | GeometryGroupObject3D | GroupContainerObject3D;
20808
+ type All3DTypes = Geometry3DTypes | BatchedGeometryGroupObject3D | GroupContainerObject3D;
20383
20809
  type RendererState = {
20384
20810
  /**
20385
20811
  * A map of all 3D geometries in the world.
@@ -20410,7 +20836,7 @@ type RendererState = {
20410
20836
  /**
20411
20837
  * IDs of geometry groups that need to be loaded, including preloaded geometry groups that are not in the scene yet
20412
20838
  */
20413
- readonly geometryGroupIdsToLoad: Set<GeometryGroupObject3D['userData']['entityId']>;
20839
+ readonly geometryGroupIdsToLoad: Set<BatchedGeometryGroupObject3D['userData']['entityId']>;
20414
20840
  readonly geometryScene: GroupContainerObject3D;
20415
20841
  hoverColor: string;
20416
20842
  text3dHoverColor: string;
@@ -20450,7 +20876,7 @@ type RendererState = {
20450
20876
  /**
20451
20877
  * All of the entities in the scene
20452
20878
  */
20453
- type EntityTypes = Geometry3DTypes | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D;
20879
+ type EntityTypes = Geometry3DTypes | Geometry2D | BatchedGeometryGroupObject3D | GroupContainerObject3D;
20454
20880
  /** @internal */
20455
20881
  type TransformImageRequest = (url: string) => Promise<{
20456
20882
  url: string;
@@ -21090,4 +21516,4 @@ declare const getVersion: () => string | undefined;
21090
21516
  */
21091
21517
  declare const show3dMapGeojson: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
21092
21518
  //#endregion
21093
- export { ACTION_TYPE, ANIMATION_TWEENS, type AddText3DOptions, type Analytics, Annotation, Area, type AutoElements, BBox, BEARING_TYPE, CONNECTION_TYPE, type Camera, type CameraBounds, type CameraTransform, type CaptureEventsPayloadMap, type ColorString, Connection, Coordinate, DOORS, type Debug, DetailedMapData, Directions, Door, E_SDK_LOG_LEVEL, EnterpriseCategory, EnterpriseLocation, EnterpriseVenue, type EnvMapOptions, type Environment, type Exporter, Facade, Feature, FeatureCollection, Floor, FloorStack, type FootprintConfig, GeoJSON$1 as GeoJSON, GeoJsonGeometryTypes, GeoJsonObject, GeoJsonProperties, GeoJsonTypes, Geometry, GeometryCollection, GeometryObject, type GlobalState, Hyperlink, type IAnchorable, type IFocusable, type IGeoJSONData, type INavigatable, type ISystemPlugin, type Image3D, type Image3DView, ImageMetaData, type InitializeModelState, type InitializeText3DState, type InsetPadding, type InsetPaddingOption, type InterpolateOn, type Interpolation, type Label, type LabelAppearance, type LabelTextPlacement, type Labels, LineString, type LineStyle, LocationCategory, LocationProfile, type LocationSocial, type LocationState, MAPPEDIN_COLORS, type MapData, type MapDataElements, type MapElementToGetRenderedState, type MapElementToGetState, type MapElementToUpdateState, type MapElementsWithState, type MapFeatureOfType, MapObject, MapView, type MapViewElements, type MapViewState, type MappedinError, type MappedinRenderError, type Marker, type Markers, type MatchInfo, type Model, type Models, type MultiFloorViewEffectState, MultiLineString, MultiPoint, MultiPolygon, type Navigation, type NavigationState, Node, type OpeningHours, type OperationHours, type Outdoor, type OutlinesOptions, type PaintStyle, type Path, type PathSegment$1 as PathSegment, type Paths, type Places, Point, PointOfInterest, Polygon, type Position, type PubSub, type Query, type RendererCoreOptions, type Search, type SearchOptions, type SearchResult, type SearchResultEnterpriseCategory, type SearchResultEnterpriseLocations, type SearchResultItem, type SearchResultPlaces, type Shading, type Shape, type Shapes, type SiblingGroup, Space, type Style, type Suggestion, type TActionType, type TAddImageOptions, type TAddLabelOptions, type TAddMarkerOptions, type TAddModel, type TAddModelOptions, type TAddPathOptions, type TAddText3DAnchorableOptions, type TAddText3DOptions, type TAnalyticsUpdateState, type TAnimateStateResult, type TAnimationOptions, type TAntialiasingOptions, type TBearingType, type TCameraAnimationOptions, type TCameraInteractionsSetOptions, type TCameraTarget, type TCancellablePromise, type TClickPayload, type TCollisionRankingTier, type TConnectionPathOptions, type TConnectionType, type TCoordinateParams, type TCreateMarker, type TDirectionInstruction, type TDirectionInstructionAction, type TDirectionZone, type TDoorsState, type TDoorsUpdateState, type TEasingFunction, type TEventPayload, type TEvents, type TFacadeState, type TFacadeUpdateState, type TFindNearestOptions, type TFindNearestResult, type TFindPreferredLanguageInVenueOptions, type TFloorAltitudeData, type TFloorChangePayload, type TFloorChangeReason, type TFloorState, type TFloorUpdateState, type TFocusOnOptions, type TFocusTarget, type TGeometryState, type TGeometryUpdateState, type TGetDirectionsOptions, type TGetMapDataOptions, type TGetMapDataSharedOptions, type TGetMapDataWithAccessTokenOptions, type TGetMapDataWithCredentialsOptions, type TGetState, type THoverPayload, type THydrateMapDataBundle, type TImage3DState as TImageState, type TImage3DUpdateState as TImageUpdateState, type TLabelState, type TLabelUpdateState, type TMVF, type TMVFLineStringStyle, type TMVFPointStyle, type TMVFPolygonStyle, type TMVFStyle, type TMVFStyleCollection, type TMapDataEvents, type TMapDataObjectTypes, type TMapFeatureTypes, type TMapViewObjectTypes, type TMarkerPlacement, type TMarkerState, type TMarkerUpdateState, type TModelState, type TModelUpdateState, type TMultiFloorViewOptions, type TNavigationOptions, type TNavigationPathOptions, type TNavigationTarget, type TPathSectionHighlightOptions, type TPathState, type TPathUpdateState, type TQueriables, type TQueryAtResult, type RendererState as TRendererState, type TSearchOptions, type TSetFloorOptions, type TShapeState, type TShapeUpdateState, type TShow3DMapOptions, type TSpaceType, type TStateChangedInternalPayload, type TTakeScreenshotOptions, type TText3DState, type TText3DUpdateState, type TUpdateState, type TWallsState, type TWallsUpdateState, TWatermarkOptions, type Text3D, type Text3DView, type UpdateGlobalState, type VisibilityState, WALLS, type WithState, MapLibreOverlay as __INTERNAL__MapLibreOverlay, __setWatermarkOnClickFn, checkWorkerUrls, disableText3DWorker, enableTestMode, findPreferredLanguageInVenue, forceEnterpriseLocations, getMapData, getMapDataEnterprise, getMultiFloorState, getVersion, hydrateMapData, hydrateMapDataFromMVF, parseMVFv2 as parseMVF, preloadFont, setLoggerLevel, setUseEnterpriseAPI, setWorkersUrl, shouldForceEnterpriseLocations, show3dMap, show3dMapGeojson, unzipAndParseMVFv2, unzipMVFv2 as unzipMVF };
21519
+ export { ACTION_TYPE, ANIMATION_TWEENS, type AddText3DOptions, type Analytics, Annotation, Area, type AutoElements, BBox, BEARING_TYPE, CONNECTION_TYPE, type Camera, type CameraBounds, type CameraTransform, type CaptureEventsPayloadMap, type ColorString, Connection, Coordinate, DOORS, type Debug, type DebugState, DetailedMapData, Directions, Door, E_SDK_LOG_LEVEL, EnterpriseCategory, EnterpriseLocation, EnterpriseVenue, type EnvMapOptions, type Environment, type Exporter, Facade, Feature, FeatureCollection, Floor, FloorStack, type FootprintConfig, GeoJSON$1 as GeoJSON, GeoJsonGeometryTypes, GeoJsonObject, GeoJsonProperties, GeoJsonTypes, Geometry, GeometryCollection, GeometryObject, type GlobalState, Hyperlink, type IAnchorable, type IFocusable, type IGeoJSONData, type INavigatable, type ISystemPlugin, type Image3D, type Image3DView, ImageMetaData, type InitializeModelState, type InitializeText3DState, type InsetPadding, type InsetPaddingOption, type InterpolateOn, type Interpolation, type Label, type LabelAppearance, type LabelTextPlacement, type Labels, LineString, type LineStyle, LocationCategory, LocationProfile, type LocationSocial, type LocationState, MAPPEDIN_COLORS, type MapData, type MapDataElements, type MapElementToGetRenderedState, type MapElementToGetState, type MapElementToUpdateState, type MapElementsWithState, type MapFeatureOfType, MapObject, MapView, type MapViewElements, type MapViewState, type MappedinError, type MappedinRenderError, type Marker, type Markers, type MatchInfo, type Model, type Models, type MultiFloorViewEffectState, MultiLineString, MultiPoint, MultiPolygon, type Navigation, type NavigationState, Node, type OpeningHours, type OperationHours, type Outdoor, type OutlinesOptions, type PaintStyle, type Path, type PathSegment$1 as PathSegment, type PathWidth, type Paths, type PixelWidth, type Places, Point, PointOfInterest, Polygon, type Position, type PubSub, type Query, type RendererCoreOptions, type Search, type SearchOptions, type SearchResult, type SearchResultEnterpriseCategory, type SearchResultEnterpriseLocations, type SearchResultItem, type SearchResultPlaces, type Shading, type Shape, type Shapes, type SiblingGroup, Space, type Style, type Suggestion, type TActionType, type TAddImageOptions, type TAddLabelOptions, type TAddMarkerOptions, type TAddModel, type TAddModelOptions, type TAddPathOptions, type TAddText3DAnchorableOptions, type TAddText3DOptions, type TAnalyticsUpdateState, type TAnimateStateResult, type TAnimationOptions, type TAntialiasingOptions, type TBearingType, type TCameraAnimationOptions, type TCameraInteractionsSetOptions, type TCameraTarget, type TCancellablePromise, type TClickPayload, type TCollisionRankingTier, type TConnectionPathOptions, type TConnectionType, type TCoordinateParams, type TCreateMarker, type TDirectionInstruction, type TDirectionInstructionAction, type TDirectionZone, type TDoorsState, type TDoorsUpdateState, type TEasingFunction, type TEventPayload, type TEvents, type TFacadeState, type TFacadeUpdateState, type TFindNearestOptions, type TFindNearestResult, type TFindPreferredLanguageInVenueOptions, type TFloorAltitudeData, type TFloorChangePayload, type TFloorChangeReason, type TFloorState, type TFloorUpdateState, type TFocusOnOptions, type TFocusTarget, type TGeometryState, type TGeometryUpdateState, type TGetDirectionsOptions, type TGetMapDataOptions, type TGetMapDataSharedOptions, type TGetMapDataWithAccessTokenOptions, type TGetMapDataWithCredentialsOptions, type TGetState, type THoverPayload, type THydrateMapDataBundle, type TImage3DState as TImageState, type TImage3DUpdateState as TImageUpdateState, type TLabelState, type TLabelUpdateState, type TMVF, type TMVFLineStringStyle, type TMVFPointStyle, type TMVFPolygonStyle, type TMVFStyle, type TMVFStyleCollection, type TMapDataEvents, type TMapDataObjectTypes, type TMapFeatureTypes, type TMapViewObjectTypes, type TMarkerPlacement, type TMarkerState, type TMarkerUpdateState, type TModelState, type TModelUpdateState, type TMultiFloorViewOptions, type TNavigationOptions, type TNavigationPathOptions, type TNavigationTarget, type TPathSectionHighlightOptions, type TPathState, type TPathUpdateState, type TQueriables, type TQueryAtResult, type RendererState as TRendererState, type TSearchOptions, type TSetFloorOptions, type TShapeState, type TShapeUpdateState, type TShow3DMapOptions, type TSpaceType, type TStateChangedInternalPayload, type TTakeScreenshotOptions, type TText3DState, type TText3DUpdateState, type TUpdateState, type TWallsState, type TWallsUpdateState, TWatermarkOptions, type Text3D, type Text3DView, type UpdateGlobalState, type VisibilityState, WALLS, type WithState, MapLibreOverlay as __INTERNAL__MapLibreOverlay, __setWatermarkOnClickFn, checkWorkerUrls, disableText3DWorker, enableTestMode, findPreferredLanguageInVenue, forceEnterpriseLocations, getMapData, getMapDataEnterprise, getMultiFloorState, getVersion, hydrateMapData, hydrateMapDataFromMVF, parseMVFv2 as parseMVF, preloadFont, setLoggerLevel, setUseEnterpriseAPI, setWorkersUrl, shouldForceEnterpriseLocations, show3dMap, show3dMapGeojson, unzipAndParseMVFv2, unzipMVFv2 as unzipMVF };