@mappedin/mappedin-js 6.0.1-beta.4 → 6.0.1-beta.6

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.
@@ -5,10 +5,11 @@
5
5
  // ../mappedin-js/@packages/internal/common/pubsub
6
6
  // ../mappedin-js/@packages/internal/common/Mappedin.Logger
7
7
  // ../mappedin-js/geojson
8
- // ../mappedin-js/@mappedin/core-sdk
9
8
  // ../mappedin-js/@packages/internal/common
9
+ // ../mappedin-js/@mappedin/core-sdk
10
10
  // ../mappedin-js/@mappedin/core-sdk/src/camera
11
11
  // ../mappedin-js/three
12
+ // ../mappedin-js/zod
12
13
  // ../mappedin-js/@packages/internal/shave-text/shave-text
13
14
  // ../mappedin-js/@turf/turf
14
15
  // ../mappedin-js/@packages/internal/quad-tree
@@ -37,7 +38,6 @@ declare module '@mappedin/mappedin-js' {
37
38
  import type { Shading, PaintStyle, LineStyle, WatermarkOptions } from '@mappedin/mappedin-js/geojson/src';
38
39
  import { enableTestMode } from '@mappedin/mappedin-js/geojson/src';
39
40
  export type { PubSub } from '@packages/internal/common/pubsub';
40
- import { analytics } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
41
41
  import { MappedinMapLibreOverlay } from '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay';
42
42
  export { setLoggerLevel, E_SDK_LOG_LEVEL } from '@packages/internal/common/Mappedin.Logger';
43
43
  /**
@@ -306,16 +306,21 @@ declare module '@mappedin/mappedin-js' {
306
306
  export type { MapView, MapData, MappedinMapLibreOverlay, TEvents, TEventPayload, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAmbientOcclusionOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, };
307
307
  export type * from 'geojson';
308
308
  export type { TUpdateState, TLabelState, TGeometryState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TCameraFocusOnTarget, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, } from '@mappedin/mappedin-js/mappedin-js/src/types';
309
+ export { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
309
310
  export type { Label, Marker, Path, Shape, CameraTransform, Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
310
311
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
311
312
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
312
- export { Coordinate, Annotation, Connection, Door, Floor, MapObject, PointOfInterest, Space, Image, Hyperlink, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
313
+ export { Coordinate, Annotation, Connection, Door, Floor, MapObject, PointOfInterest, Space, Image, Hyperlink, Location, Category, Venue, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
313
314
  export type { Camera, Models, Labels, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
314
- export { analytics };
315
315
  }
316
316
 
317
317
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
318
+ import { PubSub } from '@packages/internal/common';
319
+ import { Analytics } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
318
320
  import type { Connection, Door, Floor, MapDataInternal, Space, MapObject, PointOfInterest, Annotation, Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
321
+ import type Category from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category';
322
+ import type Location from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location';
323
+ import type Venue from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue';
319
324
  /**
320
325
  * A WeakMap to associate {@link MapData} instances with their internal representation.
321
326
  * We need a way to get the internal data object from the API
@@ -327,8 +332,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
327
332
  * Represents the data for a map, providing access to map elements
328
333
  * like spaces, floors, and points of interest.
329
334
  */
330
- class MapData {
335
+ class MapData extends PubSub<{
336
+ 'language-change': {
337
+ code: string;
338
+ name: string;
339
+ };
340
+ }> {
331
341
  #private;
342
+ Analytics: Analytics;
332
343
  /**
333
344
  * Constructs a new instance of {@link MapData}.
334
345
  *
@@ -353,6 +364,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
353
364
  * @returns {string} The organization ID of the map.
354
365
  */
355
366
  get organizationId(): string;
367
+ /**
368
+ * @internal
369
+ */
370
+ get venue(): Venue | undefined;
356
371
  /**
357
372
  * The token is used to fetch outdoor tiles.
358
373
  *
@@ -410,6 +425,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
410
425
  * const annotations = mapData.getByType('annotation');
411
426
  */
412
427
  getByType(type: 'annotation'): Annotation[];
428
+ /**
429
+ * @internal
430
+ */
431
+ getByType(type: 'location'): Location[];
432
+ /**
433
+ * @internal
434
+ */
435
+ getByType(type: 'category'): Category[];
413
436
  /**
414
437
  * Retrieves a specific map feature by its type and ID.
415
438
  *
@@ -426,9 +449,26 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
426
449
  getById(type: 'object', id: string): MapObject | undefined;
427
450
  getById(type: 'point-of-interest', id: string): PointOfInterest | undefined;
428
451
  getById(type: 'annotation', id: string): Annotation | undefined;
452
+ getById(type: 'location', id: string): Location | undefined;
453
+ getById(type: 'category', id: string): Category | undefined;
429
454
  getById(type: string, id: string): object | undefined;
455
+ /**
456
+ * @internal
457
+ */
458
+ changeLanguage(languageCode: string): Promise<void>;
459
+ /**
460
+ * @internal
461
+ */
462
+ get currentLanguage(): {
463
+ code: string;
464
+ name: string;
465
+ };
430
466
  }
431
467
  export default MapData;
468
+ /**
469
+ * @internal
470
+ */
471
+ export function getMapDataInternal(mapData: MapData): MapDataInternal;
432
472
  }
433
473
 
434
474
  declare module '@mappedin/mappedin-js/mappedin-js/src/events' {
@@ -552,15 +592,26 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
552
592
  import Annotation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/annotation';
553
593
  import Hyperlink from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/hyperlink';
554
594
  import Image from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image';
555
- import type { AnnotationCollection, ParsedMVF, Connection as MVFConnection, EntranceCollection, NodeCollection, ObstructionCollection, SpaceCollection, Map as MVFMap } from '@mappedin/mvf';
595
+ import type { AnnotationCollection, ParsedMVF, Connection as MVFConnection, EntranceCollection, NodeCollection, ObstructionCollection, SpaceCollection, Map as MVFMap, EnterpriseLocation, EnterpriseCategory } from '@mappedin/mvf';
556
596
  import type { MapDataObjects } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
597
+ import Location from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location';
598
+ import Category from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category';
599
+ import Venue from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue';
600
+ import { PubSub } from '@packages/internal/common';
601
+ import { AnalyticsInternal } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
557
602
  /**
558
603
  * Internal class representing detailed map data.
559
604
  *
560
605
  * @internal
561
606
  */
562
- class MapDataInternal {
607
+ class MapDataInternal extends PubSub<{
608
+ 'language-change': {
609
+ code: string;
610
+ name: string;
611
+ };
612
+ }> {
563
613
  #private;
614
+ Analytics: AnalyticsInternal;
564
615
  /**
565
616
  * Represents the parsed Mappedin Venue Format (MVF) data.
566
617
  */
@@ -581,7 +632,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
581
632
  * Represents a map of entrance IDs to obstruction IDs.
582
633
  */
583
634
  readonly obstructionIdByEntranceId: Record<string, string>;
635
+ readonly venue?: Venue;
584
636
  doorsByNodeId: Record<string, Door>;
637
+ locationsBySpaceId: Record<string, EnterpriseLocation[]>;
585
638
  /**
586
639
  * @internal
587
640
  */
@@ -644,6 +697,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
644
697
  * @returns {Annotation[]} An array of Annotation objects.
645
698
  */
646
699
  get nodes(): Node[];
700
+ get locations(): Location[];
701
+ get categories(): Category[];
647
702
  /**
648
703
  * Retrieves an object by its type and ID.
649
704
  *
@@ -659,6 +714,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
659
714
  getById(type: 'object', id: string): MapObject | undefined;
660
715
  getById(type: 'point-of-interest', id: string): PointOfInterest | undefined;
661
716
  getById(type: 'annotation', id: string): Annotation | undefined;
717
+ getById(type: 'location', id: string): Location | undefined;
718
+ getById(type: 'category', id: string): Category | undefined;
662
719
  getMapDataById(id: string): MapDataObjects | undefined;
663
720
  /**
664
721
  * Retrieves a feature by its type and ID from the Mappedin Venue Format (MVF) data.
@@ -676,6 +733,25 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
676
733
  getMVFFeatureById(type: 'annotation', id: string): AnnotationCollection['features'][number] | undefined;
677
734
  getMVFFeatureById(type: string, id: string): object | undefined;
678
735
  getMVFFeatureByNodeId(type: 'connection', id: string): MVFConnection | undefined;
736
+ currentLanguage: {
737
+ code: string;
738
+ name: string;
739
+ };
740
+ /**
741
+ * These represent maps of diffed objects that are used to store the translated values
742
+ */
743
+ languagePacks: {
744
+ [key: string]: {
745
+ location: {
746
+ [key: string]: Partial<EnterpriseLocation>;
747
+ };
748
+ category: {
749
+ [key: string]: Partial<EnterpriseCategory>;
750
+ };
751
+ };
752
+ };
753
+ getPropTranslation(type: 'location' | 'category', prop: string, id: string, fallback: EnterpriseLocation[keyof EnterpriseLocation] | EnterpriseCategory[keyof EnterpriseCategory]): unknown;
754
+ changeLanguage(languageCode: string): Promise<void>;
679
755
  /**
680
756
  * Cleans up resources used by the instance.
681
757
  *
@@ -683,7 +759,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
683
759
  */
684
760
  destroy(): void;
685
761
  }
686
- export { MapDataInternal, Space, Floor, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, };
762
+ export { MapDataInternal, Space, Floor, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, Location, Category, Venue, };
687
763
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space';
688
764
  export type { MapDataObjects };
689
765
  }
@@ -693,12 +769,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
693
769
  import { PubSub } from '@packages/internal/common';
694
770
  import { type TEvents, type TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
695
771
  import type { Navigation } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
696
- import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
772
+ import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor, Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
697
773
  import type { BlueDot } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
698
774
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
699
- import type { Floor, MapObject, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
700
- import type { TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState, TUpdateStates } from '@mappedin/mappedin-js/mappedin-js/src/types';
701
- import type { Label, Marker } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
775
+ import type { Door, Floor, MapObject, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
776
+ import type { DOORS, WALLS, TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState, TUpdateStates } from '@mappedin/mappedin-js/mappedin-js/src/types';
777
+ import type { Label, Marker, Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
702
778
  import type { TEventPayload } from '@mappedin/mappedin-js/mappedin-js/src/events';
703
779
  import type { Shapes } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes';
704
780
  export class MapView extends PubSub<TEvents> {
@@ -715,6 +791,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
715
791
  * Controls for the map's markers.
716
792
  */
717
793
  Markers: Markers;
794
+ /**
795
+ * Controls for the map's markers.
796
+ */
797
+ Images: Images;
718
798
  /**
719
799
  * Controls for the map's models.
720
800
  */
@@ -770,8 +850,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
770
850
  * // Update the color of a space to red.
771
851
  * map.updateState(space, { color: 'red' });
772
852
  */
773
- updateState<T extends Space | MapObject | Label | Marker>(target: T | string, state: TUpdateState<T>): any;
774
- updateState<T extends 'walls' | (string & NonNullable<unknown>)>(target: T, state: TUpdateStates): any;
853
+ updateState<T extends Space | MapObject | Label | Marker | Door | WALLS | DOORS>(target: T, state: TUpdateState<T>): any;
854
+ updateState<T extends string & NonNullable<unknown>>(target: T, state: TUpdateStates): any;
775
855
  update: () => void;
776
856
  getMapData(): {
777
857
  [x: string]: MapData;
@@ -819,7 +899,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
819
899
  * @hidden
820
900
  */
821
901
  updateWatermark(options: Omit<WatermarkOptions, 'onClick'>): void;
822
- getState<T extends Space | MapObject | Label | Marker | string>(target: T): TGetState<T> | undefined;
902
+ getState<T extends Space | MapObject | Label | Marker | Image | string>(target: T): TGetState<T> | undefined;
823
903
  setHoverColor(c: string): void;
824
904
  getHoverColor(): string | undefined;
825
905
  /**
@@ -909,9 +989,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
909
989
  */
910
990
  destroy(): void;
911
991
  /**
912
- * @internal
913
992
  * @experimental
914
- * SDK debug mode wip
993
+ * Enable debug interface
915
994
  */
916
995
  enableDebug(): Promise<void>;
917
996
  }
@@ -954,11 +1033,6 @@ declare module '@mappedin/mappedin-js/geojson/src' {
954
1033
  }): Promise<RendererCore>;
955
1034
  }
956
1035
 
957
- declare module '@mappedin/mappedin-js/mappedin-js/src/analytics' {
958
- export { analytics, analyticsInternal } from '@mappedin/mappedin-js/mappedin-js/src/analytics/customer';
959
- export type { CustomerAnalytics, AnalyticsOptions } from '@mappedin/mappedin-js/mappedin-js/src/analytics/customer';
960
- }
961
-
962
1036
  declare module '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay' {
963
1037
  import { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
964
1038
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
@@ -991,12 +1065,15 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay' {
991
1065
  declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
992
1066
  import type { Feature, MultiPolygon, Polygon } from 'geojson';
993
1067
  import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
994
- import type { Label, Marker, Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
1068
+ import type { Label, Marker, Model, Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
995
1069
  import type { EasingCurve } from '@mappedin/core-sdk/src/camera';
996
- import { GeometryGroupState } from '@mappedin/core-sdk';
997
1070
  export type DeepRequired<T> = Required<{
998
1071
  [K in keyof T]: T[K] extends Required<T[K]> ? T[K] : DeepRequired<T[K]>;
999
1072
  }>;
1073
+ export type CancellablePromise<T> = {
1074
+ promise: Promise<T>;
1075
+ cancel: () => void;
1076
+ };
1000
1077
  /**
1001
1078
  * @hidden
1002
1079
  */
@@ -1058,6 +1135,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1058
1135
  * Defines the state for a label when its appearance is updated.
1059
1136
  */
1060
1137
  export type TLabelState = {
1138
+ text: string;
1061
1139
  type: 'label';
1062
1140
  /**
1063
1141
  * Appearance settings for the label.
@@ -1082,6 +1160,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1082
1160
  export type TModelState = {
1083
1161
  type: 'model';
1084
1162
  };
1163
+ /**
1164
+ * Defines the state for an image when its appearance is updated.
1165
+ */
1166
+ export type TImageState = {
1167
+ type: 'image';
1168
+ };
1085
1169
  export type TWallsState = {
1086
1170
  /**
1087
1171
  * Color of the walls.
@@ -1091,6 +1175,31 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1091
1175
  * Color of the top of walls, if not set, defaults to the color.
1092
1176
  */
1093
1177
  topColor?: string | 'initial';
1178
+ /**
1179
+ * Texture to apply to the geometry element.
1180
+ */
1181
+ texture?: {
1182
+ url?: string;
1183
+ };
1184
+ /**
1185
+ * Top texture to apply to the geometry element.
1186
+ */
1187
+ topTexture?: {
1188
+ url?: string;
1189
+ };
1190
+ /**
1191
+ * Visibility of the walls.
1192
+ */
1193
+ visible: boolean;
1194
+ };
1195
+ /**
1196
+ * @interface
1197
+ */
1198
+ export type TDoorsState = TWallsState & {
1199
+ /**
1200
+ * Opacity of the doors.
1201
+ */
1202
+ opacity: number;
1094
1203
  };
1095
1204
  export type TMarkerState = {
1096
1205
  type: 'marker';
@@ -1148,13 +1257,33 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1148
1257
  * Height of the geometry element in meters.
1149
1258
  */
1150
1259
  height: number;
1260
+ /**
1261
+ * Texture to apply to the geometry element.
1262
+ */
1263
+ texture?: {
1264
+ url: string;
1265
+ };
1266
+ /**
1267
+ * Top texture to apply to the geometry element.
1268
+ */
1269
+ topTexture?: {
1270
+ url: string;
1271
+ };
1151
1272
  };
1273
+ export enum WALLS {
1274
+ Exterior = "exterior-walls",
1275
+ Interior = "interior-walls"
1276
+ }
1277
+ export enum DOORS {
1278
+ Interior = "interior-doors",
1279
+ Exterior = "exterior-doors"
1280
+ }
1152
1281
  /**
1153
1282
  * The type for updating the state of map elements (colors, texts, etc.).
1154
1283
  */
1155
- export type TUpdateState<T> = T extends 'walls' ? Partial<Omit<GeometryGroupState, 'interactive' | 'hoverColor' | 'type'>> : T extends Marker ? Partial<TMarkerState> : T extends Label ? Partial<TLabelState> : T extends Space | MapObject ? Partial<TGeometryState> : T extends string ? Record<string, any> : never;
1284
+ export type TUpdateState<T> = T extends WALLS ? Partial<TWallsState> : T extends DOORS ? Partial<TDoorsState> : T extends Marker ? Partial<TMarkerState> : T extends Label ? Partial<TLabelState> : T extends Space | MapObject ? Partial<TGeometryState> : T extends Door ? Partial<TGeometryState> : T extends string ? Record<string, any> : never;
1156
1285
  export type TUpdateStates = Partial<Omit<TGeometryState, 'interactive' | 'hoverColor' | 'type'>> | Partial<TMarkerState> | Partial<TLabelState> | Partial<TGeometryState>;
1157
- export type TGetEntityState<T> = T extends Marker ? TMarkerState : T extends Model ? TModelState : T extends Label ? TLabelState : T extends Space | MapObject ? TGeometryState : T extends string ? TLabelState | TGeometryState | TMarkerState | TModelState | undefined : never;
1286
+ export type TGetEntityState<T> = T extends Marker ? TMarkerState : T extends Model ? TModelState : T extends Label ? TLabelState : T extends Image ? TImageState : T extends Space | MapObject ? TGeometryState : T extends string ? TLabelState | TGeometryState | TMarkerState | TModelState | undefined : never;
1158
1287
  export type TGetState<T> = TGetEntityState<T> | undefined;
1159
1288
  /**
1160
1289
  * Options for {@link Camera} animations on the map.
@@ -1616,6 +1745,42 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1616
1745
  */
1617
1746
  url: string;
1618
1747
  };
1748
+ /**
1749
+ * Options for controlling the behavior of a {@link Marker}.
1750
+ * @interface
1751
+ */
1752
+ export type TAddImageOptions = {
1753
+ /**
1754
+ * @internal
1755
+ */
1756
+ id?: string;
1757
+ /**
1758
+ * Width of the image in meters.
1759
+ */
1760
+ width: number;
1761
+ /**
1762
+ * Height of the image in meters.
1763
+ */
1764
+ height: number;
1765
+ /**
1766
+ * Rotation of the image in degrees.
1767
+ *
1768
+ * @default 0
1769
+ */
1770
+ rotation?: number;
1771
+ /**
1772
+ * Vertical offset of the image in meters.
1773
+ *
1774
+ * @default 0
1775
+ */
1776
+ verticalOffset?: number;
1777
+ /**
1778
+ * Attempt to keep the image facing the camera as much as possible
1779
+ *
1780
+ * @default false
1781
+ */
1782
+ flipImageToFaceCamera?: boolean;
1783
+ };
1619
1784
  /**
1620
1785
  * Options for controlling the behavior of a {@link Marker}.
1621
1786
  * @interface
@@ -1710,6 +1875,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1710
1875
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects' {
1711
1876
  export { Label } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/label';
1712
1877
  export { Marker } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/marker';
1878
+ export { Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/image';
1713
1879
  export { Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/model';
1714
1880
  export { Path } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path';
1715
1881
  export { CameraTransform } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/camera-transform';
@@ -1717,8 +1883,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects' {
1717
1883
  }
1718
1884
 
1719
1885
  declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
1720
- import type { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
1721
1886
  import type { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
1887
+ import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
1888
+ import type { RendererCore } from '@mappedin/core-sdk';
1722
1889
  /**
1723
1890
  * Options for navigation.
1724
1891
  */
@@ -1794,18 +1961,24 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
1794
1961
  /**
1795
1962
  * @internal
1796
1963
  */
1797
- constructor(mapView: MapView);
1964
+ get currentMap(): GeojsonApiMapObject;
1965
+ /**
1966
+ * @internal
1967
+ */
1968
+ constructor(core: RendererCore, currentMapGetter: CurrentMapGetter);
1798
1969
  /**
1799
1970
  * Draws the specified directions on the map.
1800
1971
  * @param directions The directions to be drawn.
1801
1972
  * @param options Optional additional options for the navigation.
1802
1973
  */
1803
- draw: (directions: Directions, options?: TNavigationOptions) => Promise<void>;
1974
+ draw: (directions: Directions, options?: TNavigationOptions) => Promise<unknown>;
1804
1975
  /**
1805
1976
  * Clears any drawn navigation paths or directions from the map.
1806
1977
  */
1807
1978
  clear: () => void;
1808
1979
  }
1980
+ type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
1981
+ export {};
1809
1982
  }
1810
1983
 
1811
1984
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson' {
@@ -1820,6 +1993,225 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson' {
1820
1993
  export { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions';
1821
1994
  export { Style } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/style';
1822
1995
  export { default as Outdoor } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor';
1996
+ export { Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images';
1997
+ }
1998
+
1999
+ declare module '@mappedin/mappedin-js/mappedin-js/src/analytics' {
2000
+ export { Analytics, AnalyticsInternal } from '@mappedin/mappedin-js/mappedin-js/src/analytics/customer';
2001
+ export type { AnalyticsUpdateOptions } from '@mappedin/mappedin-js/mappedin-js/src/analytics/customer';
2002
+ }
2003
+
2004
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category' {
2005
+ import type { EnterpriseCategory } from '@mappedin/mvf';
2006
+ import type { MapDataInternal, Location } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2007
+ import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
2008
+ /**
2009
+ * A Category is a collection of similar Locations.
2010
+ *
2011
+ */
2012
+ class Category extends BaseMapData implements Omit<EnterpriseCategory, 'children' | 'locations'> {
2013
+ #private;
2014
+ /**
2015
+ * @internal
2016
+ */
2017
+ static readonly __type = "category";
2018
+ /**
2019
+ * @internal
2020
+ */
2021
+ readonly __type = "category";
2022
+ name: string;
2023
+ color?: string | undefined;
2024
+ externalId: string;
2025
+ extra?: Record<string, unknown> | undefined;
2026
+ icon?: string | undefined;
2027
+ iconFromDefaultList?: string | null | undefined;
2028
+ sortOrder: number;
2029
+ /**
2030
+ * Checks if the provided instance is of type Category.
2031
+ *
2032
+ * @param instance The instance to check.
2033
+ * @returns {boolean} True if the instance is a Category, false otherwise.
2034
+ */
2035
+ static is(instance: object): instance is Category;
2036
+ /**
2037
+ * @internal
2038
+ */
2039
+ constructor(data: MapDataInternal, options: {
2040
+ mvfData: EnterpriseCategory;
2041
+ });
2042
+ get children(): Category[];
2043
+ get locations(): Location[];
2044
+ /**
2045
+ * Serializes the category data to JSON.
2046
+ *
2047
+ * @returns An object representing the category.
2048
+ */
2049
+ toJSON(): {
2050
+ id: string;
2051
+ name: string;
2052
+ };
2053
+ /**
2054
+ * Cleans up resources used by the instance.
2055
+ *
2056
+ * @internal
2057
+ */
2058
+ destroy(): void;
2059
+ }
2060
+ export default Category;
2061
+ }
2062
+
2063
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location' {
2064
+ import type { EnterpriseLocation, LocationState, OperationHours, SiblingGroup } from '@mappedin/mvf';
2065
+ import type { Coordinate, MapDataInternal, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2066
+ import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
2067
+ import type Node from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node';
2068
+ /**
2069
+ * A class representing location data within the map.
2070
+ *
2071
+ * A Location is something like a store, or a washroom on a map.
2072
+ */
2073
+ class Location extends BaseMapData implements Omit<EnterpriseLocation, 'polygons' | 'nodes' | 'links'> {
2074
+ #private;
2075
+ /**
2076
+ * @internal
2077
+ */
2078
+ static readonly __type = "location";
2079
+ /**
2080
+ * @internal
2081
+ */
2082
+ readonly __type = "location";
2083
+ description?: string | undefined;
2084
+ name: string;
2085
+ amenity?: string | undefined;
2086
+ externalId: string;
2087
+ extra?: Record<string, unknown> | undefined;
2088
+ gallery?: {
2089
+ caption?: string | null;
2090
+ image: string;
2091
+ embeddedUrl?: string | null;
2092
+ }[] | undefined;
2093
+ logo?: string | undefined;
2094
+ operationHours?: OperationHours[] | undefined;
2095
+ phone?: {
2096
+ number: string;
2097
+ extension?: string;
2098
+ } | undefined;
2099
+ picture?: string | undefined;
2100
+ shortName?: string | undefined;
2101
+ showFloatingLabelWhenImagePresent?: boolean | undefined;
2102
+ showLogo?: boolean | undefined;
2103
+ siblingGroups?: SiblingGroup[] | undefined;
2104
+ social?: {
2105
+ facebook?: string;
2106
+ instagram?: string;
2107
+ twitter?: string;
2108
+ website?: string;
2109
+ } | undefined;
2110
+ sortOrder: number;
2111
+ states?: LocationState[] | undefined;
2112
+ tags?: string[] | undefined;
2113
+ type: string;
2114
+ /**
2115
+ * Checks if the provided instance is of type Location.
2116
+ *
2117
+ * @param instance The instance to check.
2118
+ * @returns {boolean} True if the instance is a Location, false otherwise.
2119
+ */
2120
+ static is(instance: object): instance is Location;
2121
+ /**
2122
+ * @internal
2123
+ */
2124
+ constructor(data: MapDataInternal, options: {
2125
+ mvfData: EnterpriseLocation;
2126
+ });
2127
+ get coordinates(): Coordinate[];
2128
+ get nodes(): Node[];
2129
+ get spaces(): Space[];
2130
+ /**
2131
+ * Serializes the location data to JSON.
2132
+ *
2133
+ * @returns An object representing the location.
2134
+ */
2135
+ toJSON(): {
2136
+ id: string;
2137
+ name: string;
2138
+ };
2139
+ /**
2140
+ * Cleans up resources used by the instance.
2141
+ *
2142
+ * @internal
2143
+ */
2144
+ destroy(): void;
2145
+ }
2146
+ export default Location;
2147
+ }
2148
+
2149
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue' {
2150
+ import type { EnterpriseVenue, Language } from '@mappedin/mvf';
2151
+ import type { Hyperlink, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2152
+ import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
2153
+ /**
2154
+ * A Venue is a specific place (like a mall, office building, or stadium) with one or more Floors
2155
+ */
2156
+ class Venue extends BaseMapData implements EnterpriseVenue {
2157
+ #private;
2158
+ /**
2159
+ * @internal
2160
+ */
2161
+ static readonly __type = "venue";
2162
+ /**
2163
+ * @internal
2164
+ */
2165
+ readonly __type = "venue";
2166
+ countrycode?: string | undefined;
2167
+ externalId: string;
2168
+ defaultLanguage: Language;
2169
+ defaultMap?: string | undefined;
2170
+ extra?: Record<string, unknown> | undefined;
2171
+ icon?: string | undefined;
2172
+ languages: Language[];
2173
+ links: Hyperlink[];
2174
+ logo?: string | undefined;
2175
+ mappedinWebUrl?: string | undefined;
2176
+ slug: string;
2177
+ topLocations?: string[] | undefined;
2178
+ tzid?: string | undefined;
2179
+ /**
2180
+ * Checks if the provided instance is of type Venue.
2181
+ *
2182
+ * @param instance The instance to check.
2183
+ * @returns {boolean} True if the instance is a Venue, false otherwise.
2184
+ */
2185
+ static is(instance: object): instance is Venue;
2186
+ /**
2187
+ * @internal
2188
+ */
2189
+ constructor(_data: MapDataInternal, options: {
2190
+ mvfData: EnterpriseVenue;
2191
+ });
2192
+ /**
2193
+ * Gets the name of the venue.
2194
+ *
2195
+ * @returns {string} The name of the venue.
2196
+ */
2197
+ get name(): string;
2198
+ /**
2199
+ * Serializes the venue data to JSON.
2200
+ *
2201
+ * @returns An object representing the venue.
2202
+ */
2203
+ toJSON(): {
2204
+ id: string;
2205
+ name: string;
2206
+ };
2207
+ /**
2208
+ * Cleans up resources used by the instance.
2209
+ *
2210
+ * @internal
2211
+ */
2212
+ destroy(): void;
2213
+ }
2214
+ export default Venue;
1823
2215
  }
1824
2216
 
1825
2217
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps' {
@@ -2058,7 +2450,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door' {
2058
2450
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space' {
2059
2451
  import type { Image, SpaceCollection } from '@mappedin/mvf';
2060
2452
  import Coordinate from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/coordinate';
2061
- import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2453
+ import type { Location, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2062
2454
  import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
2063
2455
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
2064
2456
  import Door from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door';
@@ -2116,6 +2508,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space' {
2116
2508
  get type(): TSpaceType;
2117
2509
  get description(): string;
2118
2510
  get images(): Image[];
2511
+ /**
2512
+ * @internal
2513
+ */
2514
+ get locations(): Location[];
2119
2515
  /**
2120
2516
  * Gets the {@link Floor} object associated with the space.
2121
2517
  *
@@ -2830,7 +3226,6 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
2830
3226
  import type { Shading, PaintStyle, LineStyle, WatermarkOptions } from '@mappedin/mappedin-js/geojson/src';
2831
3227
  import { enableTestMode } from '@mappedin/mappedin-js/geojson/src';
2832
3228
  export type { PubSub } from '@packages/internal/common/pubsub';
2833
- import { analytics } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
2834
3229
  import { MappedinMapLibreOverlay } from '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay';
2835
3230
  export { setLoggerLevel, E_SDK_LOG_LEVEL } from '@packages/internal/common/Mappedin.Logger';
2836
3231
  /**
@@ -3099,12 +3494,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3099
3494
  export type { MapView, MapData, MappedinMapLibreOverlay, TEvents, TEventPayload, TClickPayload, THoverPayload, TShow3DMapOptions, TGetMapDataOptions, TGetMapDataWithAccessTokenOptions, TGetMapDataWithCredentialsOptions, TGetMapDataSharedOptions, TAmbientOcclusionOptions, TAntialiasingOptions, TMVF, PaintStyle, LineStyle, Shading, TMVFStyleCollection, TMVFStyle, TMVFLineStringStyle, TMVFPolygonStyle, TMVFPointStyle, };
3100
3495
  export type * from 'geojson';
3101
3496
  export type { TUpdateState, TLabelState, TGeometryState, TCameraAnimationOptions, TAnimationOptions, TFocusOnOptions, TEasingFunction, TCameraTarget, TNavigationTarget, TDirectionZone, TCameraFocusOnTarget, TAddMarkerOptions, TAddPathOptions, TLabelAppearance, TAddLabelOptions, TAddModelOptions, TAddModel, TGetDirectionsOptions, TCollisionRankingTier, TMarkerAnchor, TDirectionInstruction, TDirectionInstructionAction, TGetState, TMarkerState, TBlueDotOptions, } from '@mappedin/mappedin-js/mappedin-js/src/types';
3497
+ export { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
3102
3498
  export type { Label, Marker, Path, Shape, CameraTransform, Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
3103
3499
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
3104
3500
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3105
- export { Coordinate, Annotation, Connection, Door, Floor, MapObject, PointOfInterest, Space, Image, Hyperlink, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3501
+ export { Coordinate, Annotation, Connection, Door, Floor, MapObject, PointOfInterest, Space, Image, Hyperlink, Location, Category, Venue, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3106
3502
  export type { Camera, Models, Labels, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
3107
- export { analytics };
3108
3503
  }
3109
3504
 
3110
3505
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot' {
@@ -3161,12 +3556,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes' {
3161
3556
  */
3162
3557
  add<T extends FeatureCollection<Polygon | MultiPolygon | LineString, any>>(geometry: T, style: T extends FeatureCollection<LineString, any> ? LineStyle : PaintStyle, floor?: Floor): Shape;
3163
3558
  /**
3164
- * Removes a specific shapes ({@link Shape}) from the map.
3165
- * @param shapes The shapes to be removed.
3559
+ * Removes a specific shape ({@link Shape}) from the map.
3560
+ * @param shape The shape to be removed.
3166
3561
  * @example
3167
3562
  * map.Shapes.remove(geo);
3168
3563
  */
3169
- remove(shapes: Shape): void;
3564
+ remove(shape: Shape): void;
3170
3565
  /**
3171
3566
  * Removes all Shapes ({@link Shape}) from the map.
3172
3567
  *
@@ -3185,6 +3580,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
3185
3580
  import type { Entity2DHTMLDivElement, EntityId, Position } from '@mappedin/mappedin-js/geojson/src/types';
3186
3581
  import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
3187
3582
  import type { CollisionRankingTier } from '@mappedin/mappedin-js/geojson/src/utils/collision-ranking-tier';
3583
+ import { z } from 'zod';
3188
3584
  /**
3189
3585
  * State reprsenting a Marker
3190
3586
  */
@@ -3231,6 +3627,26 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
3231
3627
  interactive?: boolean;
3232
3628
  };
3233
3629
  };
3630
+ export const addMarkerOptionsSchema: z.ZodObject<{
3631
+ rank: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["low", "medium", "high", "always-visible"]>, z.ZodNumber]>>;
3632
+ interactive: z.ZodOptional<z.ZodBoolean>;
3633
+ id: z.ZodOptional<z.ZodString>;
3634
+ anchor: z.ZodOptional<z.ZodEnum<["top", "bottom", "left", "right", "center"]>>;
3635
+ dynamicResize: z.ZodOptional<z.ZodBoolean>;
3636
+ }, "strip", z.ZodTypeAny, {
3637
+ interactive?: boolean | undefined;
3638
+ id?: string | undefined;
3639
+ anchor?: "center" | "left" | "right" | "bottom" | "top" | undefined;
3640
+ rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
3641
+ dynamicResize?: boolean | undefined;
3642
+ }, {
3643
+ interactive?: boolean | undefined;
3644
+ id?: string | undefined;
3645
+ anchor?: "center" | "left" | "right" | "bottom" | "top" | undefined;
3646
+ rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
3647
+ dynamicResize?: boolean | undefined;
3648
+ }>;
3649
+ export function validateMarker(coordinate: Position, contentHTML: string, options: AddMarkerOptions): void;
3234
3650
  /**
3235
3651
  * Options for creating a new Marker
3236
3652
  */
@@ -3420,6 +3836,172 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
3420
3836
  import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
3421
3837
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
3422
3838
  import type { CollisionRankingTier } from '@mappedin/mappedin-js/geojson/src';
3839
+ import { z } from 'zod';
3840
+ export const addLabelOptionsSchema: z.ZodObject<{
3841
+ rank: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["low", "medium", "high", "always-visible"]>, z.ZodNumber]>>;
3842
+ interactive: z.ZodOptional<z.ZodBoolean>;
3843
+ appearance: z.ZodOptional<z.ZodObject<{
3844
+ margin: z.ZodOptional<z.ZodNumber>;
3845
+ text: z.ZodOptional<z.ZodObject<{
3846
+ numLines: z.ZodOptional<z.ZodNumber>;
3847
+ lineHeight: z.ZodOptional<z.ZodNumber>;
3848
+ size: z.ZodOptional<z.ZodNumber>;
3849
+ maxWidth: z.ZodOptional<z.ZodNumber>;
3850
+ foregroundColor: z.ZodOptional<z.ZodString>;
3851
+ backgroundColor: z.ZodOptional<z.ZodString>;
3852
+ }, "strip", z.ZodTypeAny, {
3853
+ size?: number | undefined;
3854
+ maxWidth?: number | undefined;
3855
+ lineHeight?: number | undefined;
3856
+ numLines?: number | undefined;
3857
+ foregroundColor?: string | undefined;
3858
+ backgroundColor?: string | undefined;
3859
+ }, {
3860
+ size?: number | undefined;
3861
+ maxWidth?: number | undefined;
3862
+ lineHeight?: number | undefined;
3863
+ numLines?: number | undefined;
3864
+ foregroundColor?: string | undefined;
3865
+ backgroundColor?: string | undefined;
3866
+ }>>;
3867
+ marker: z.ZodOptional<z.ZodObject<{
3868
+ size: z.ZodOptional<z.ZodNumber>;
3869
+ foregroundColor: z.ZodOptional<z.ZodObject<{
3870
+ active: z.ZodOptional<z.ZodString>;
3871
+ inactive: z.ZodOptional<z.ZodString>;
3872
+ }, "strip", z.ZodTypeAny, {
3873
+ active?: string | undefined;
3874
+ inactive?: string | undefined;
3875
+ }, {
3876
+ active?: string | undefined;
3877
+ inactive?: string | undefined;
3878
+ }>>;
3879
+ backgroundColor: z.ZodOptional<z.ZodObject<{
3880
+ active: z.ZodOptional<z.ZodString>;
3881
+ inactive: z.ZodOptional<z.ZodString>;
3882
+ }, "strip", z.ZodTypeAny, {
3883
+ active?: string | undefined;
3884
+ inactive?: string | undefined;
3885
+ }, {
3886
+ active?: string | undefined;
3887
+ inactive?: string | undefined;
3888
+ }>>;
3889
+ }, "strip", z.ZodTypeAny, {
3890
+ size?: number | undefined;
3891
+ foregroundColor?: {
3892
+ active?: string | undefined;
3893
+ inactive?: string | undefined;
3894
+ } | undefined;
3895
+ backgroundColor?: {
3896
+ active?: string | undefined;
3897
+ inactive?: string | undefined;
3898
+ } | undefined;
3899
+ }, {
3900
+ size?: number | undefined;
3901
+ foregroundColor?: {
3902
+ active?: string | undefined;
3903
+ inactive?: string | undefined;
3904
+ } | undefined;
3905
+ backgroundColor?: {
3906
+ active?: string | undefined;
3907
+ inactive?: string | undefined;
3908
+ } | undefined;
3909
+ }>>;
3910
+ }, "strip", z.ZodTypeAny, {
3911
+ text?: {
3912
+ size?: number | undefined;
3913
+ maxWidth?: number | undefined;
3914
+ lineHeight?: number | undefined;
3915
+ numLines?: number | undefined;
3916
+ foregroundColor?: string | undefined;
3917
+ backgroundColor?: string | undefined;
3918
+ } | undefined;
3919
+ marker?: {
3920
+ size?: number | undefined;
3921
+ foregroundColor?: {
3922
+ active?: string | undefined;
3923
+ inactive?: string | undefined;
3924
+ } | undefined;
3925
+ backgroundColor?: {
3926
+ active?: string | undefined;
3927
+ inactive?: string | undefined;
3928
+ } | undefined;
3929
+ } | undefined;
3930
+ margin?: number | undefined;
3931
+ }, {
3932
+ text?: {
3933
+ size?: number | undefined;
3934
+ maxWidth?: number | undefined;
3935
+ lineHeight?: number | undefined;
3936
+ numLines?: number | undefined;
3937
+ foregroundColor?: string | undefined;
3938
+ backgroundColor?: string | undefined;
3939
+ } | undefined;
3940
+ marker?: {
3941
+ size?: number | undefined;
3942
+ foregroundColor?: {
3943
+ active?: string | undefined;
3944
+ inactive?: string | undefined;
3945
+ } | undefined;
3946
+ backgroundColor?: {
3947
+ active?: string | undefined;
3948
+ inactive?: string | undefined;
3949
+ } | undefined;
3950
+ } | undefined;
3951
+ margin?: number | undefined;
3952
+ }>>;
3953
+ }, "strip", z.ZodTypeAny, {
3954
+ interactive?: boolean | undefined;
3955
+ rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
3956
+ appearance?: {
3957
+ text?: {
3958
+ size?: number | undefined;
3959
+ maxWidth?: number | undefined;
3960
+ lineHeight?: number | undefined;
3961
+ numLines?: number | undefined;
3962
+ foregroundColor?: string | undefined;
3963
+ backgroundColor?: string | undefined;
3964
+ } | undefined;
3965
+ marker?: {
3966
+ size?: number | undefined;
3967
+ foregroundColor?: {
3968
+ active?: string | undefined;
3969
+ inactive?: string | undefined;
3970
+ } | undefined;
3971
+ backgroundColor?: {
3972
+ active?: string | undefined;
3973
+ inactive?: string | undefined;
3974
+ } | undefined;
3975
+ } | undefined;
3976
+ margin?: number | undefined;
3977
+ } | undefined;
3978
+ }, {
3979
+ interactive?: boolean | undefined;
3980
+ rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
3981
+ appearance?: {
3982
+ text?: {
3983
+ size?: number | undefined;
3984
+ maxWidth?: number | undefined;
3985
+ lineHeight?: number | undefined;
3986
+ numLines?: number | undefined;
3987
+ foregroundColor?: string | undefined;
3988
+ backgroundColor?: string | undefined;
3989
+ } | undefined;
3990
+ marker?: {
3991
+ size?: number | undefined;
3992
+ foregroundColor?: {
3993
+ active?: string | undefined;
3994
+ inactive?: string | undefined;
3995
+ } | undefined;
3996
+ backgroundColor?: {
3997
+ active?: string | undefined;
3998
+ inactive?: string | undefined;
3999
+ } | undefined;
4000
+ } | undefined;
4001
+ margin?: number | undefined;
4002
+ } | undefined;
4003
+ }>;
4004
+ export function validateLabel(coordinate: Position, text: string, options: AddLabelOptions): void;
3423
4005
  export const labelThemes: {
3424
4006
  lightOnDark: {
3425
4007
  text: {
@@ -3861,6 +4443,14 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry-group' {
3861
4443
  * Whether the geometry and its children are outlined. This will affect all children of the geometry group and override their outline state.
3862
4444
  */
3863
4445
  outline?: boolean;
4446
+ /**
4447
+ * The texture URL of the geometry
4448
+ */
4449
+ texture?: string;
4450
+ /**
4451
+ * The top texture URL of the geometry
4452
+ */
4453
+ topTexture?: string;
3864
4454
  };
3865
4455
  export type ChildUpdatable<T> = T extends LineStyle ? Partial<Pick<LineStyle, 'color' | 'opacity' | 'visible'>> : Partial<Pick<PaintStyle, 'color' | 'opacity' | 'visible'>>;
3866
4456
  export class GeometryGroupObject3D extends Object3D {
@@ -3962,8 +4552,6 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
3962
4552
  showImage?: boolean;
3963
4553
  flipImageToFaceCamera?: boolean;
3964
4554
  };
3965
- export type Cap = 'round' | 'square' | 'butt';
3966
- export type Join = 'round' | 'bevel' | 'miter';
3967
4555
  export type Shading = {
3968
4556
  start?: number;
3969
4557
  end?: number;
@@ -3977,8 +4565,8 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
3977
4565
  height?: number;
3978
4566
  altitude?: number;
3979
4567
  visible?: boolean;
3980
- cap?: Cap;
3981
- join?: Join;
4568
+ cap?: 'round' | 'square' | 'butt';
4569
+ join?: 'round' | 'bevel' | 'miter';
3982
4570
  shading?: Shading;
3983
4571
  outline?: boolean;
3984
4572
  };
@@ -4182,6 +4770,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
4182
4770
  entities: {
4183
4771
  [key: number]: string | number;
4184
4772
  };
4773
+ detached?: boolean;
4185
4774
  };
4186
4775
  }
4187
4776
  /**
@@ -4247,9 +4836,17 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
4247
4836
  * The height of the geometry
4248
4837
  */
4249
4838
  height: number;
4250
- };
4251
- export class MeshComponent {
4252
- #private;
4839
+ /**
4840
+ * The texture URL of the geometry
4841
+ */
4842
+ texture?: string;
4843
+ /**
4844
+ * The top texture URL of the geometry
4845
+ */
4846
+ topTexture?: string;
4847
+ };
4848
+ export class MeshComponent {
4849
+ #private;
4253
4850
  mesh?: EntityBatchedMesh;
4254
4851
  focusMesh?: Mesh;
4255
4852
  outline?: LineSegments;
@@ -4281,12 +4878,16 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
4281
4878
  set opacity(value: number);
4282
4879
  get texture(): string;
4283
4880
  set texture(texture: Texture);
4881
+ get textureInstance(): Texture | undefined;
4284
4882
  set topTexture(texture: Texture);
4285
4883
  get topTexture(): string;
4884
+ get topTextureInstance(): Texture | undefined;
4286
4885
  get featureBbox(): BBox;
4287
4886
  texturesVisible: boolean;
4288
4887
  showTextures(): void;
4289
4888
  hideTextures(): void;
4889
+ removeSideTexture(): void;
4890
+ removeTopTexture(): void;
4290
4891
  }
4291
4892
  }
4292
4893
 
@@ -4350,10 +4951,11 @@ declare module '@mappedin/mappedin-js/geojson/src/components/model' {
4350
4951
  import type { LineSegments, Object3D } from 'three';
4351
4952
  import { Color, Vector3 } from 'three';
4352
4953
  import type { BatchedStandardMaterial } from '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-optimization/batched-material';
4353
- import type { Position, EntityId } from '@mappedin/mappedin-js/geojson/src/types';
4354
- import type { Feature, Point } from 'geojson';
4954
+ import type { Position, EntityId, ModelProperties, ModelStyle } from '@mappedin/mappedin-js/geojson/src/types';
4955
+ import type { Feature, FeatureCollection, Point } from 'geojson';
4355
4956
  import type { Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
4356
4957
  import type { GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
4958
+ import { z } from 'zod';
4357
4959
  /**
4358
4960
  * State representing a Model, typically loaded via a URL
4359
4961
  */
@@ -4378,6 +4980,190 @@ declare module '@mappedin/mappedin-js/geojson/src/components/model' {
4378
4980
  */
4379
4981
  interactive: boolean;
4380
4982
  };
4983
+ export const modelPropertiesSchema: z.ZodObject<{
4984
+ rotation: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
4985
+ altitude: z.ZodOptional<z.ZodNumber>;
4986
+ scale: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
4987
+ interactive: z.ZodOptional<z.ZodBoolean>;
4988
+ id: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
4989
+ }, "strip", z.ZodTypeAny, {
4990
+ rotation?: number[] | undefined;
4991
+ altitude?: number | undefined;
4992
+ scale?: number[] | undefined;
4993
+ interactive?: boolean | undefined;
4994
+ id?: string | number | undefined;
4995
+ }, {
4996
+ rotation?: number[] | undefined;
4997
+ altitude?: number | undefined;
4998
+ scale?: number[] | undefined;
4999
+ interactive?: boolean | undefined;
5000
+ id?: string | number | undefined;
5001
+ }>;
5002
+ export const featureSchema: z.ZodObject<{
5003
+ type: z.ZodEnum<["Feature"]>;
5004
+ geometry: z.ZodObject<{
5005
+ type: z.ZodEnum<["Point"]>;
5006
+ coordinates: z.ZodArray<z.ZodNumber, "many">;
5007
+ }, "strip", z.ZodTypeAny, {
5008
+ type: "Point";
5009
+ coordinates: number[];
5010
+ }, {
5011
+ type: "Point";
5012
+ coordinates: number[];
5013
+ }>;
5014
+ properties: z.ZodObject<{
5015
+ rotation: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
5016
+ altitude: z.ZodOptional<z.ZodNumber>;
5017
+ scale: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
5018
+ interactive: z.ZodOptional<z.ZodBoolean>;
5019
+ id: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
5020
+ }, "strip", z.ZodTypeAny, {
5021
+ rotation?: number[] | undefined;
5022
+ altitude?: number | undefined;
5023
+ scale?: number[] | undefined;
5024
+ interactive?: boolean | undefined;
5025
+ id?: string | number | undefined;
5026
+ }, {
5027
+ rotation?: number[] | undefined;
5028
+ altitude?: number | undefined;
5029
+ scale?: number[] | undefined;
5030
+ interactive?: boolean | undefined;
5031
+ id?: string | number | undefined;
5032
+ }>;
5033
+ }, "strip", z.ZodTypeAny, {
5034
+ type: "Feature";
5035
+ geometry: {
5036
+ type: "Point";
5037
+ coordinates: number[];
5038
+ };
5039
+ properties: {
5040
+ rotation?: number[] | undefined;
5041
+ altitude?: number | undefined;
5042
+ scale?: number[] | undefined;
5043
+ interactive?: boolean | undefined;
5044
+ id?: string | number | undefined;
5045
+ };
5046
+ }, {
5047
+ type: "Feature";
5048
+ geometry: {
5049
+ type: "Point";
5050
+ coordinates: number[];
5051
+ };
5052
+ properties: {
5053
+ rotation?: number[] | undefined;
5054
+ altitude?: number | undefined;
5055
+ scale?: number[] | undefined;
5056
+ interactive?: boolean | undefined;
5057
+ id?: string | number | undefined;
5058
+ };
5059
+ }>;
5060
+ export const addModelFeatureSchema: z.ZodObject<{
5061
+ type: z.ZodEnum<["FeatureCollection"]>;
5062
+ features: z.ZodArray<z.ZodObject<{
5063
+ type: z.ZodEnum<["Feature"]>;
5064
+ geometry: z.ZodObject<{
5065
+ type: z.ZodEnum<["Point"]>;
5066
+ coordinates: z.ZodArray<z.ZodNumber, "many">;
5067
+ }, "strip", z.ZodTypeAny, {
5068
+ type: "Point";
5069
+ coordinates: number[];
5070
+ }, {
5071
+ type: "Point";
5072
+ coordinates: number[];
5073
+ }>;
5074
+ properties: z.ZodObject<{
5075
+ rotation: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
5076
+ altitude: z.ZodOptional<z.ZodNumber>;
5077
+ scale: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
5078
+ interactive: z.ZodOptional<z.ZodBoolean>;
5079
+ id: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
5080
+ }, "strip", z.ZodTypeAny, {
5081
+ rotation?: number[] | undefined;
5082
+ altitude?: number | undefined;
5083
+ scale?: number[] | undefined;
5084
+ interactive?: boolean | undefined;
5085
+ id?: string | number | undefined;
5086
+ }, {
5087
+ rotation?: number[] | undefined;
5088
+ altitude?: number | undefined;
5089
+ scale?: number[] | undefined;
5090
+ interactive?: boolean | undefined;
5091
+ id?: string | number | undefined;
5092
+ }>;
5093
+ }, "strip", z.ZodTypeAny, {
5094
+ type: "Feature";
5095
+ geometry: {
5096
+ type: "Point";
5097
+ coordinates: number[];
5098
+ };
5099
+ properties: {
5100
+ rotation?: number[] | undefined;
5101
+ altitude?: number | undefined;
5102
+ scale?: number[] | undefined;
5103
+ interactive?: boolean | undefined;
5104
+ id?: string | number | undefined;
5105
+ };
5106
+ }, {
5107
+ type: "Feature";
5108
+ geometry: {
5109
+ type: "Point";
5110
+ coordinates: number[];
5111
+ };
5112
+ properties: {
5113
+ rotation?: number[] | undefined;
5114
+ altitude?: number | undefined;
5115
+ scale?: number[] | undefined;
5116
+ interactive?: boolean | undefined;
5117
+ id?: string | number | undefined;
5118
+ };
5119
+ }>, "many">;
5120
+ }, "strip", z.ZodTypeAny, {
5121
+ type: "FeatureCollection";
5122
+ features: {
5123
+ type: "Feature";
5124
+ geometry: {
5125
+ type: "Point";
5126
+ coordinates: number[];
5127
+ };
5128
+ properties: {
5129
+ rotation?: number[] | undefined;
5130
+ altitude?: number | undefined;
5131
+ scale?: number[] | undefined;
5132
+ interactive?: boolean | undefined;
5133
+ id?: string | number | undefined;
5134
+ };
5135
+ }[];
5136
+ }, {
5137
+ type: "FeatureCollection";
5138
+ features: {
5139
+ type: "Feature";
5140
+ geometry: {
5141
+ type: "Point";
5142
+ coordinates: number[];
5143
+ };
5144
+ properties: {
5145
+ rotation?: number[] | undefined;
5146
+ altitude?: number | undefined;
5147
+ scale?: number[] | undefined;
5148
+ interactive?: boolean | undefined;
5149
+ id?: string | number | undefined;
5150
+ };
5151
+ }[];
5152
+ }>;
5153
+ export const modelStyleSchema: z.ZodObject<{
5154
+ url: z.ZodString;
5155
+ color: z.ZodOptional<z.ZodString>;
5156
+ opacity: z.ZodOptional<z.ZodNumber>;
5157
+ }, "strip", z.ZodTypeAny, {
5158
+ url: string;
5159
+ color?: string | undefined;
5160
+ opacity?: number | undefined;
5161
+ }, {
5162
+ url: string;
5163
+ color?: string | undefined;
5164
+ opacity?: number | undefined;
5165
+ }>;
5166
+ export function validateModelGroup(id: string | number, geometry: FeatureCollection<Point, ModelProperties>, style: ModelStyle): void;
4381
5167
  export class ModelComponent {
4382
5168
  #private;
4383
5169
  mesh?: Geometry3DObject3D;
@@ -4442,7 +5228,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
4442
5228
  import { OutdoorLayers } from '@mappedin/mappedin-js/geojson/src/systems/outdoor-layers/system';
4443
5229
  import { PathSystem } from '@mappedin/mappedin-js/geojson/src/systems/path';
4444
5230
  import { type ImageProperties, type ImageState, type ImageStyle } from '@mappedin/mappedin-js/geojson/src/components/image';
4445
- import { MeshOpacitySystem } from '@mappedin/mappedin-js/geojson/src/systems/mesh-opacity/system';
5231
+ import { MeshDetachmentSystem } from '@mappedin/mappedin-js/geojson/src/systems/mesh-detachment/system';
4446
5232
  import { MeshModificationSystem } from '@mappedin/mappedin-js/geojson/src/systems/mesh-modification/system';
4447
5233
  export type * from '@mappedin/mappedin-js/geojson/src/types';
4448
5234
  export const raycaster: Raycaster;
@@ -4487,7 +5273,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
4487
5273
  pathSystem: PathSystem;
4488
5274
  imageSystem: ImageSystem;
4489
5275
  geometryInFocusSystem: GeometryInFocusSystem;
4490
- meshOpacitySystem: MeshOpacitySystem;
5276
+ meshDetachmentSystem: MeshDetachmentSystem;
4491
5277
  meshModificationSystem: MeshModificationSystem;
4492
5278
  };
4493
5279
  export type MapViewState = {
@@ -4550,15 +5336,15 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
4550
5336
  /**
4551
5337
  * Add a group of models from GeoJSON data. These will be instanced automatically for better performance.
4552
5338
  */
4553
- addModelGroup(id: string, geometry: FeatureCollection<Point, ModelProperties>, style: ModelStyle, parent?: EntityId<GroupContainerState> | string | null): EntityId<GeometryGroupState>;
5339
+ addModelGroup(id: string, geometry: FeatureCollection<Point, ModelProperties>, style: ModelStyle, parent?: EntityId<GroupContainerState> | string | null): EntityId<GeometryGroupState> | undefined;
4554
5340
  /**
4555
5341
  * Add an HTML Marker at a GeoJSON coordinate.
4556
5342
  */
4557
- addMarker2D(coordinate: Position, contentHTML: string, options?: AddMarkerOptions, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<MarkerState>;
5343
+ addMarker2D(coordinate: Position, contentHTML: string, options?: AddMarkerOptions, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<MarkerState> | undefined;
4558
5344
  /**
4559
5345
  * Add a 2D label at a GeoJSON coordinate.
4560
5346
  */
4561
- addLabel2D(coordinate: Position, text: string, options?: AddLabelOptions, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<LabelState>;
5347
+ addLabel2D(coordinate: Position, text: string, options?: AddLabelOptions, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<LabelState> | undefined;
4562
5348
  /**
4563
5349
  * Add a Path along a set of GeoJSON coordinates that can be animated.
4564
5350
  */
@@ -5199,126 +5985,6 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/html-controls/system'
5199
5985
  }
5200
5986
  }
5201
5987
 
5202
- declare module '@mappedin/mappedin-js/mappedin-js/src/analytics/customer' {
5203
- /**
5204
- * Valid track-analytics API contexts. These should match the expected values of that endpoint or the requests will fail.
5205
- * If a set context is not in this list, it will default to the first VALID_CONTEXTS value.
5206
- */
5207
- export const VALID_CONTEXTS: readonly ["websdk", "web", "webv2", "kiosk-v2", "mobile", "iossdk", "androidsdk", "reactnativesdk"];
5208
- type ValidContext = (typeof VALID_CONTEXTS)[number];
5209
- export const DEFAULT_CONTEXT: "websdk";
5210
- export const ANALYTICS_URL = "https://api-gateway.mappedin.com/track-analytics/a/";
5211
- export class CustomerAnalytics {
5212
- #private;
5213
- constructor();
5214
- init(options?: AnalyticsOptions): void;
5215
- /**
5216
- * Reset state and options
5217
- */
5218
- reset(): void;
5219
- updateState(update: UpdateStateParam): void;
5220
- get authReady(): boolean;
5221
- getState(): AnalyticState;
5222
- capture<T extends keyof CaptureEventsPayloadMap>(eventName: T, query: CaptureEventsPayloadMap[T]): Promise<Response> | Promise<void>;
5223
- capture<T extends keyof CaptureEventsPayloadMap | (string & NonNullable<unknown>)>(target: T, query: T extends keyof CaptureEventsPayloadMap ? CaptureEventsPayloadMap[T] : Record<string, any>): Promise<Response> | Promise<void>;
5224
- /**
5225
- * @internal
5226
- */
5227
- sendGetMapDataEvent(payload: {
5228
- parseDuration: string;
5229
- downloadDuration: string;
5230
- viewId?: string;
5231
- }): Promise<void> | Promise<Response>;
5232
- sendWatchPositionDenied(): Promise<void> | Promise<Response>;
5233
- /**
5234
- * @internal
5235
- */
5236
- sendMapViewLoadedEvent({ firstRenderDuration, dimension, }: {
5237
- firstRenderDuration: string;
5238
- dimension: {
5239
- height: number;
5240
- width: number;
5241
- };
5242
- }): Promise<void> | Promise<Response>;
5243
- /**
5244
- * @internal
5245
- */
5246
- sendGetDirectionsEvent: (start: string, end: string) => void;
5247
- }
5248
- type AnalyticsUserPosition = {
5249
- bluedotTimestamp: number;
5250
- latitude: number;
5251
- longitude: number;
5252
- floorLevel?: number;
5253
- accuracy: number;
5254
- };
5255
- export type AnalyticsOptions = {
5256
- key?: string;
5257
- secret?: string;
5258
- accessToken?: string;
5259
- noAuth?: boolean;
5260
- mapId?: string;
5261
- logEvents?: boolean;
5262
- sendEvents?: boolean;
5263
- context?: string;
5264
- platformString?: string;
5265
- };
5266
- export type AnalyticState = {
5267
- accessToken?: string | undefined;
5268
- version: string;
5269
- platformString: string;
5270
- baseUrl: string;
5271
- noAuth: boolean;
5272
- geolocationMode: boolean;
5273
- mi_uuid: string;
5274
- mi_session: string;
5275
- context: ValidContext;
5276
- userPosition?: AnalyticsUserPosition;
5277
- mapId?: string;
5278
- key?: string;
5279
- secret?: string;
5280
- logEvents: boolean;
5281
- sendEvents: boolean;
5282
- };
5283
- type UpdateStateParam = Partial<Pick<AnalyticState, 'geolocationMode' | 'context' | 'logEvents' | 'userPosition' | 'mapId' | 'sendEvents' | 'logEvents' | 'accessToken'>>;
5284
- type CaptureEventsPayloadMap = {
5285
- '$select-location': {
5286
- id: string;
5287
- };
5288
- '$select-category': {
5289
- id: string;
5290
- };
5291
- '$query-suggest': Record<string, any>;
5292
- '$query-search': Record<string, any>;
5293
- };
5294
- export const analyticsInternal: CustomerAnalytics;
5295
- export const analytics: {
5296
- /**
5297
- * Initializes the analytics with the provided options.
5298
- * @param args - The options to initialize the analytics.
5299
- */
5300
- init(options?: AnalyticsOptions | undefined): void;
5301
- /**
5302
- * Captures an analytic event with a custom target and query payload.
5303
- *
5304
- * @param target - The event name or target can be .
5305
- * @param query - The payload associated with the event.
5306
- * @returns A promise that resolves to the server response or void.
5307
- */
5308
- capture(target: keyof CaptureEventsPayloadMap | (string & {}), query: Record<string, any> | {
5309
- id: string;
5310
- } | {
5311
- id: string;
5312
- }): Promise<void> | Promise<Response>;
5313
- /**
5314
- * Updates the analytics state with the provided parameters.
5315
- * @param update - The state parameters to update.
5316
- */
5317
- updateState(update: Partial<Pick<AnalyticState, "logEvents" | "sendEvents" | "logEvents" | "accessToken">>): void;
5318
- };
5319
- export {};
5320
- }
5321
-
5322
5988
  declare module '@mappedin/mappedin-js/geojson/src/maplibre-overlay' {
5323
5989
  import type { IControl, Map as MapLibreMap, CustomLayerInterface } from '@packages/internal/outdoor-context-v4';
5324
5990
  import type { Position } from '@mappedin/mappedin-js/geojson/src/types';
@@ -5407,6 +6073,42 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/marker' {
5407
6073
  }
5408
6074
  }
5409
6075
 
6076
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/image' {
6077
+ /**
6078
+ * Class representing an Image on the {@link MapView}.
6079
+ */
6080
+ export class Image {
6081
+ #private;
6082
+ /**
6083
+ * @internal
6084
+ */
6085
+ static readonly __type = "Image";
6086
+ /**
6087
+ * @internal
6088
+ */
6089
+ readonly __type = "Image";
6090
+ /**
6091
+ * Checks if the provided instance is of type Marker"
6092
+ *
6093
+ * @param instance The instance to check.
6094
+ * @returns {boolean} True if the instance is a Marker, false otherwise.
6095
+ */
6096
+ static is(instance: object): instance is Image;
6097
+ /**
6098
+ * @internal
6099
+ */
6100
+ constructor(id: string, url: string);
6101
+ /**
6102
+ * The image's id
6103
+ */
6104
+ get id(): string;
6105
+ /**
6106
+ * The image's url
6107
+ */
6108
+ get url(): string;
6109
+ }
6110
+ }
6111
+
5410
6112
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/model' {
5411
6113
  /**
5412
6114
  * Class representing a 3D model on the {@link MapView}.
@@ -5496,13 +6198,94 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/shape' {
5496
6198
  }
5497
6199
  }
5498
6200
 
6201
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
6202
+ import type { ParsedMVF } from '@mappedin/mvf';
6203
+ import type { FeatureCollection, LineString, MultiPolygon, Polygon } from 'geojson';
6204
+ import { PubSub } from '@packages/internal/common';
6205
+ import type { Position, AddLabelOptions, RendererCore, PathState, MarkerState, LineStyle, PaintStyle, EntityId } from '@mappedin/core-sdk';
6206
+ import { FloorObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object';
6207
+ import type { Coordinate, TAddMarkerOptions, TAddPathOptions, TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
6208
+ import type { GLTFExportOptions, TAnimationOptions, TAddModelOptions, TAddModel, TAddImageOptions, CancellablePromise } from '@mappedin/mappedin-js/mappedin-js/src/types';
6209
+ import { type AggregatedStyleMap } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils';
6210
+ import { StackedMaps } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
6211
+ import type { TFloorChangeReason } from '@mappedin/mappedin-js/mappedin-js/src/events';
6212
+ import type { Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
6213
+ export class GeojsonApiMapObject extends PubSub<{
6214
+ 'floor-change': {
6215
+ reason?: TFloorChangeReason;
6216
+ floorId: string;
6217
+ };
6218
+ 'floor-change-start': {
6219
+ floorId: string;
6220
+ };
6221
+ }> {
6222
+ floors: FloorObject[];
6223
+ currentFloorId: string;
6224
+ id: string;
6225
+ renderer: RendererCore;
6226
+ mvf: ParsedMVF;
6227
+ styleMap: AggregatedStyleMap;
6228
+ StackedMaps: StackedMaps;
6229
+ get currentFloor(): FloorObject;
6230
+ setFloor(floorId: string, reason?: TFloorChangeReason): void;
6231
+ Models: {
6232
+ add: (id: string, targets: TAddModel[], opts: TAddModelOptions & {
6233
+ floorId?: string;
6234
+ }) => (import("@mappedin/core-sdk").GeometryState | import("@mappedin/core-sdk").ModelState)[];
6235
+ remove: (_id: string, _groupId: string) => void;
6236
+ };
6237
+ Images: {
6238
+ add: (target: Position, url: string, opts: TAddImageOptions & {
6239
+ floorId?: string;
6240
+ }) => EntityId<import("@mappedin/core-sdk/src/components/image").ImageState> | undefined;
6241
+ remove: (id: string) => void;
6242
+ removeAll: () => void;
6243
+ };
6244
+ Markers: {
6245
+ add: (coordinate: Coordinate, html: string, opts: TAddMarkerOptions) => EntityId<MarkerState> | undefined;
6246
+ remove: (id: string) => void;
6247
+ getContentEl: (id: string) => HTMLElement | undefined;
6248
+ removeAll: () => void;
6249
+ setPosition: (id: string, coordinate: Position, targetFloorId: string) => void;
6250
+ animateTo: (id: string, coordinate: Position, targetFloorId: string, options?: TAnimationOptions) => Promise<void>;
6251
+ };
6252
+ Exporter: {
6253
+ getCurrentSceneGLTF: (options: GLTFExportOptions) => Promise<Blob>;
6254
+ };
6255
+ Shapes: {
6256
+ add: <T extends FeatureCollection<Polygon | MultiPolygon | LineString, any>>(geometry: T, style: T extends FeatureCollection<LineString, any> ? LineStyle : PaintStyle, opts: {
6257
+ floorId?: string;
6258
+ }) => string;
6259
+ remove: (customGeometry: Shape) => string;
6260
+ };
6261
+ Labels: {
6262
+ all: ({ onCreate }: {
6263
+ onCreate: (labelId: string | number, text: string) => void;
6264
+ }) => void;
6265
+ add: (coordinate: Position, text: string, opts?: AddLabelOptions & {
6266
+ floorId?: string;
6267
+ }) => {
6268
+ id: string | number;
6269
+ };
6270
+ remove: (targetId: string) => void;
6271
+ removeAll: () => void;
6272
+ };
6273
+ Paths: {
6274
+ add: (coordinates: Coordinate[], options?: TAddPathOptions) => CancellablePromise<EntityId<PathState>[]>;
6275
+ remove: (entityIds: string[]) => void;
6276
+ };
6277
+ constructor(id: string, mvf: any, styleMap: AggregatedStyleMap, options: TShow3DMapOptions | undefined, renderer: RendererCore);
6278
+ }
6279
+ }
6280
+
5499
6281
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
5500
6282
  import type { Position, RendererCore, WatermarkOptions } from '@mappedin/core-sdk';
5501
6283
  import { type TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
6284
+ import { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
5502
6285
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
5503
- import { Coordinate, MapObject, Space, Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
6286
+ import { Coordinate, MapObject, Space, Floor, type MapDataInternal, Door } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5504
6287
  import type { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
5505
- import { Label, Marker, type Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
6288
+ import { Label, Marker, type Model, type Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
5506
6289
  import { Navigation } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
5507
6290
  import type { TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/types';
5508
6291
  import { Camera } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/camera';
@@ -5511,6 +6294,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
5511
6294
  import { Labels } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/labels';
5512
6295
  import { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
5513
6296
  import { Markers } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/markers';
6297
+ import { Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images';
5514
6298
  import { Models } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/models';
5515
6299
  import { Paths } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/paths';
5516
6300
  import { BlueDot } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
@@ -5540,10 +6324,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
5540
6324
  BlueDot: BlueDot;
5541
6325
  Shapes: Shapes;
5542
6326
  Style: Style;
6327
+ Images: Images;
5543
6328
  constructor(rendererCore: RendererCore, mapView: MapView);
5544
- updateState<T extends Space | MapObject | Label | Marker | 'walls' | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
6329
+ updateState<T extends Space | MapObject | Label | Marker | Door | WALLS | DOORS | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
5545
6330
  update: () => void;
5546
- getMapDataInternal(): import("../map-data-objects").MapDataInternal | undefined;
6331
+ getMapDataInternal(): MapDataInternal | undefined;
5547
6332
  getMapData(): MapData | undefined;
5548
6333
  expand(opts?: {
5549
6334
  excludeFloors: Floor[];
@@ -5553,7 +6338,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
5553
6338
  setFloor(floor: Floor | string, reason?: TFloorChangeReason): void;
5554
6339
  updateWatermark(options: Omit<WatermarkOptions, 'onClick'>): void;
5555
6340
  get currentFloor(): Floor;
5556
- getState<T extends Space | MapObject | Label | Marker | Model | string>(target: T): TGetState<T> | undefined;
6341
+ getState<T extends Space | MapObject | Label | Marker | Model | Image | string>(target: T): TGetState<T> | undefined;
5557
6342
  setHoverColor(c: string): void;
5558
6343
  getHoverColor(): string | undefined;
5559
6344
  getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | TNavigationTarget[], opt?: TGetDirectionsOptions) => Directions | undefined;
@@ -6067,97 +6852,218 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor' {
6067
6852
  }
6068
6853
  }
6069
6854
 
6070
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
6071
- import type { ParsedMVF } from '@mappedin/mvf';
6072
- import { FloorObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object';
6073
- import type { Position, AddLabelOptions, RendererCore, MarkerState, LineStyle, PaintStyle } from '@mappedin/core-sdk';
6074
- import type { Coordinate, TAddMarkerOptions, TAddPathOptions, TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
6075
- import type { GLTFExportOptions, TAnimationOptions, TAddModelOptions, TAddModel } from '@mappedin/mappedin-js/mappedin-js/src/types';
6076
- import { type AggregatedStyleMap } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils';
6077
- import { PubSub } from '@packages/internal/common';
6078
- import { StackedMaps } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
6079
- import type { TFloorChangeReason } from '@mappedin/mappedin-js/mappedin-js/src/events';
6080
- import type { FeatureCollection, LineString, MultiPolygon, Polygon } from 'geojson';
6081
- import type { Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
6082
- export class GeojsonApiMapObject extends PubSub<{
6083
- 'floor-change': {
6084
- reason?: TFloorChangeReason;
6085
- floorId: string;
6086
- };
6087
- 'floor-change-start': {
6088
- floorId: string;
6089
- };
6090
- }> {
6091
- floors: FloorObject[];
6092
- currentFloorId: string;
6093
- id: string;
6094
- renderer: RendererCore;
6095
- mvf: ParsedMVF;
6096
- styleMap: AggregatedStyleMap;
6097
- StackedMaps: StackedMaps;
6098
- get currentFloor(): FloorObject;
6099
- setFloor(floorId: string, reason?: TFloorChangeReason): void;
6100
- Models: {
6101
- add: (id: string, targets: TAddModel[], opts: TAddModelOptions & {
6102
- floorId?: string;
6103
- }) => (import("@mappedin/core-sdk").GeometryState | import("@mappedin/core-sdk").ModelState)[];
6104
- remove: (_id: string, _groupId: string) => void;
6105
- };
6106
- Markers: {
6107
- add: (coordinate: Position, html: string, opts?: TAddMarkerOptions & {
6108
- floorId?: string;
6109
- }) => import("@mappedin/core-sdk").EntityId<MarkerState>;
6110
- remove: (_id: string) => void;
6111
- getContentEl: (id: string) => HTMLElement | undefined;
6112
- removeAll: () => void;
6113
- setPosition: (id: string, coordinate: Position, targetFloorId: string) => void;
6114
- animateTo: (id: string, coordinate: Position, targetFloorId: string, options?: TAnimationOptions) => Promise<void>;
6115
- };
6116
- Exporter: {
6117
- getCurrentSceneGLTF: (options: GLTFExportOptions) => Promise<Blob>;
6118
- };
6119
- Shapes: {
6120
- add: <T extends FeatureCollection<Polygon | MultiPolygon | LineString, any>>(geometry: T, style: T extends FeatureCollection<LineString, any> ? LineStyle : PaintStyle, opts: {
6121
- floorId?: string;
6122
- }) => string;
6123
- remove: (customGeometry: Shape) => string;
6124
- };
6125
- Labels: {
6126
- all: ({ onCreate }: {
6127
- onCreate: (labelId: string | number, text: string) => void;
6128
- }) => void;
6129
- add: (coordinate: Position, text: string, opts?: AddLabelOptions & {
6130
- floorId?: string;
6131
- }) => {
6132
- id: string | number;
6133
- };
6134
- remove: (targetId: string) => void;
6135
- removeAll: () => void;
6136
- };
6137
- Paths: {
6138
- add: (coordinates: Coordinate[], options?: TAddPathOptions) => Promise<{
6139
- id: string | number;
6140
- }[]>;
6141
- remove: (entityIds: string[]) => void;
6142
- };
6143
- constructor(id: string, mvf: any, styleMap: AggregatedStyleMap, options: TShow3DMapOptions | undefined, renderer: RendererCore);
6855
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
6856
+ import type { TAddImageOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
6857
+ import { Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
6858
+ import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
6859
+ import type { Space, Door, Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
6860
+ export class Images {
6861
+ #private;
6862
+ /**
6863
+ * @internal
6864
+ */
6865
+ get currentMap(): GeojsonApiMapObject | undefined;
6866
+ /**
6867
+ * @internal
6868
+ */
6869
+ constructor({ currentMapGetter }: {
6870
+ currentMapGetter: CurrentMapGetter;
6871
+ });
6872
+ /**
6873
+ * @internal
6874
+ */
6875
+ getById(id: string): {
6876
+ image: Image;
6877
+ entityId: string;
6878
+ } | undefined;
6879
+ /**
6880
+ * Adds an image to the map.
6881
+ *
6882
+ * @param target The target object ({@link Space}, {@link Door}, or {@link Coordinate}) for the image.
6883
+ * @param url The URL of the image.
6884
+ * @param options Optional additional options for the {@link Image}.
6885
+ * @returns {Image | undefined} The created {@link Image}, or undefined if creation failed.
6886
+ * @example
6887
+ * // Add an interactive {@link Image} to the map with custom HTML content.
6888
+ * map.Images.add(coordinate, '<div>Image Content</div>', { interactive: true });
6889
+ */
6890
+ add(target: Space | Door | Coordinate, url: string, options: TAddImageOptions): Image;
6891
+ /**
6892
+ * Removes a image from the map.
6893
+ *
6894
+ * @param image {Image} The {@link Image} which should be removed.
6895
+ * @example
6896
+ * mapView.Images.remove(image);
6897
+ */
6898
+ remove(image: Image): void;
6899
+ /**
6900
+ * Remove all the images from the map.
6901
+ *
6902
+ * @example
6903
+ * map.Images.removeAll();
6904
+ */
6905
+ removeAll(): Image[];
6144
6906
  }
6907
+ type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
6908
+ export {};
6145
6909
  }
6146
6910
 
6147
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object' {
6148
- import type { ParsedMVF } from '@mappedin/mvf';
6149
- import type { RendererCore } from '@mappedin/core-sdk';
6150
- import type { AggregatedStyleMap } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils';
6151
- import type { TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
6152
- export class FloorObject {
6153
- id: string;
6154
- name: string;
6155
- elevation: number;
6156
- containerId: string;
6157
- layers: Map<string, string>;
6158
- constructor(parentId: string, floor: ParsedMVF['map.geojson'][0], renderer: RendererCore, options: TShow3DMapOptions, mvf: ParsedMVF, styleMap?: AggregatedStyleMap);
6159
- load: () => this;
6911
+ declare module '@mappedin/mappedin-js/mappedin-js/src/analytics/customer' {
6912
+ /**
6913
+ * Valid track-analytics API contexts. These should match the expected values of that endpoint or the requests will fail.
6914
+ * If a set context is not in this list, it will default to the first VALID_CONTEXTS value.
6915
+ */
6916
+ export const VALID_CONTEXTS: readonly ["websdk", "web", "webv2", "kiosk-v2", "mobile", "iossdk", "androidsdk", "reactnativesdk"];
6917
+ type ValidContext = (typeof VALID_CONTEXTS)[number];
6918
+ export const DEFAULT_CONTEXT: "websdk";
6919
+ export const ANALYTICS_URL = "https://api-gateway.mappedin.com/track-analytics/a/";
6920
+ export const FOUND_POSITION = "found-position";
6921
+ export const FOUND_FLOOR = "found-floor";
6922
+ type BlueDotEvents = typeof FOUND_FLOOR | typeof FOUND_POSITION;
6923
+ export class AnalyticsInternal {
6924
+ #private;
6925
+ constructor();
6926
+ init(options: AnalyticsUpdateOptions): void;
6927
+ /**
6928
+ * Reset state and options
6929
+ */
6930
+ reset(): void;
6931
+ updateState(update: UpdateStateParam): void;
6932
+ get authReady(): boolean;
6933
+ getState(): AnalyticState;
6934
+ capture<T extends keyof CaptureEventsPayloadMap>(eventName: T, query: CaptureEventsPayloadMap[T]): Promise<Response> | Promise<void>;
6935
+ capture<T extends keyof CaptureEventsPayloadMap | (string & NonNullable<unknown>)>(target: T, query: T extends keyof CaptureEventsPayloadMap ? CaptureEventsPayloadMap[T] : Record<string, any>): Promise<Response> | Promise<void>;
6936
+ /**
6937
+ * @internal
6938
+ */
6939
+ sendGetMapDataEvent(payload: {
6940
+ parseDuration: number;
6941
+ downloadDuration: number;
6942
+ viewId?: string;
6943
+ }): void | Promise<Response> | Promise<void>;
6944
+ sendWatchPositionDenied(): void | Promise<Response> | Promise<void>;
6945
+ /**
6946
+ * @internal
6947
+ */
6948
+ sendMapViewLoadedEvent({ firstRenderDuration, dimension, }: {
6949
+ firstRenderDuration: number;
6950
+ dimension: {
6951
+ height: number;
6952
+ width: number;
6953
+ };
6954
+ }): void | Promise<Response> | Promise<void>;
6955
+ /**
6956
+ * @internal
6957
+ */
6958
+ sendGetDirectionsEvent: (start: string, end: string) => void;
6959
+ sendBlueDotEvents(event: BlueDotEvents): void | Promise<Response> | Promise<void>;
6160
6960
  }
6961
+ type AnalyticsUserPosition = {
6962
+ bluedotTimestamp: number;
6963
+ latitude: number;
6964
+ longitude: number;
6965
+ floorLevel?: number;
6966
+ accuracy: number;
6967
+ };
6968
+ type AnalyticsOptions = {
6969
+ /** The ID of the map to be used for analytics. */
6970
+ mapId?: string;
6971
+ /** The API key for authentication. */
6972
+ key?: string;
6973
+ /** The API secret for authentication. */
6974
+ secret?: string;
6975
+ /** The access token for authentication. */
6976
+ accessToken?: string;
6977
+ /** Flag to disable authentication. */
6978
+ noAuth?: boolean;
6979
+ /** Flag to enable logging of events. */
6980
+ logEvents?: boolean;
6981
+ /** Flag to enable sending of events. */
6982
+ sendEvents?: boolean;
6983
+ /** The context in which the analytics are being used. */
6984
+ context?: string;
6985
+ /** The platform string to be included in analytics. */
6986
+ platformString?: string;
6987
+ /** The base URI for the analytics endpoint. */
6988
+ baseUri?: string;
6989
+ };
6990
+ export type AnalyticsUpdateOptions = Omit<AnalyticsOptions, 'mapId' | 'key' | 'secret' | 'accessToken'> & {
6991
+ /** The ID of the map to be used for analytics. */
6992
+ mapId: string;
6993
+ } & ({
6994
+ /** The API key for authentication. */
6995
+ key: string;
6996
+ /** The API secret for authentication. */
6997
+ secret: string;
6998
+ } | {
6999
+ /** The access token for authentication. */
7000
+ accessToken: string;
7001
+ });
7002
+ export type AnalyticState = {
7003
+ accessToken?: string | undefined;
7004
+ version: string;
7005
+ platformString: string;
7006
+ baseUri: string;
7007
+ analyticsBaseUrl: string;
7008
+ noAuth: boolean;
7009
+ geolocationMode: boolean;
7010
+ mi_uuid: string;
7011
+ mi_session: string;
7012
+ context: ValidContext;
7013
+ userPosition?: AnalyticsUserPosition;
7014
+ mapId?: string;
7015
+ key?: string;
7016
+ secret?: string;
7017
+ logEvents: boolean;
7018
+ sendEvents: boolean;
7019
+ };
7020
+ type UpdateStateParam = Partial<Pick<AnalyticState, 'geolocationMode' | 'context' | 'logEvents' | 'userPosition' | 'mapId' | 'sendEvents' | 'logEvents' | 'accessToken'>>;
7021
+ type CaptureEventsPayloadMap = {
7022
+ '$select-location': {
7023
+ id: string;
7024
+ };
7025
+ '$select-category': {
7026
+ id: string;
7027
+ };
7028
+ '$query-suggest': {
7029
+ query: string;
7030
+ suggestions?: string[];
7031
+ };
7032
+ '$query-search': {
7033
+ query: string;
7034
+ hits?: string[];
7035
+ };
7036
+ };
7037
+ export const analyticsInternal: AnalyticsInternal;
7038
+ export class Analytics {
7039
+ #private;
7040
+ constructor(internalAnalytics: AnalyticsInternal);
7041
+ /**
7042
+ * Initializes the analytics with the provided options.
7043
+ * @param args - The options to initialize the analytics.
7044
+ */
7045
+ init(options: AnalyticsUpdateOptions): void;
7046
+ /**
7047
+ * Captures an analytic event with a custom target and query payload.
7048
+ *
7049
+ * @param target - The event name or target can be .
7050
+ * @param query - The payload associated with the event.
7051
+ * @returns A promise that resolves to the server response or void.
7052
+ */
7053
+ capture: typeof AnalyticsInternal.prototype.capture;
7054
+ /**
7055
+ * Updates the analytics state with the provided parameters.
7056
+ * @param update - The state parameters to update.
7057
+ */
7058
+ updateState: (update: Partial<Pick<AnalyticState, 'logEvents' | 'sendEvents' | 'logEvents' | 'baseUri' | 'accessToken'>>) => void;
7059
+ /**
7060
+ * Returns the current analytics state.
7061
+ * @internal
7062
+ * @returns the current analytics state
7063
+ */
7064
+ getState(): AnalyticState;
7065
+ }
7066
+ export {};
6161
7067
  }
6162
7068
 
6163
7069
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object' {
@@ -6178,6 +7084,22 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-obje
6178
7084
  }
6179
7085
  }
6180
7086
 
7087
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object' {
7088
+ import type { ParsedMVF } from '@mappedin/mvf';
7089
+ import type { RendererCore } from '@mappedin/core-sdk';
7090
+ import type { AggregatedStyleMap } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils';
7091
+ import type { TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
7092
+ export class FloorObject {
7093
+ id: string;
7094
+ name: string;
7095
+ elevation: number;
7096
+ containerId: string;
7097
+ layers: Map<string, string>;
7098
+ constructor(parentId: string, floor: ParsedMVF['map.geojson'][0], renderer: RendererCore, options: TShow3DMapOptions, mvf: ParsedMVF, styleMap?: AggregatedStyleMap);
7099
+ load: () => this;
7100
+ }
7101
+ }
7102
+
6181
7103
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-metadata-object' {
6182
7104
  export default abstract class BaseMetaData {
6183
7105
  /**
@@ -6214,7 +7136,7 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry3d' {
6214
7136
  export class Geometry3D {
6215
7137
  id: string | number;
6216
7138
  components: [MeshComponentTypes, StyleComponent, InteractionComponent?];
6217
- get object3d(): import("../components/mesh").EntityBatchedMesh | Geometry3DObject3D | undefined;
7139
+ get object3d(): Geometry3DObject3D | import("../components/mesh").EntityBatchedMesh | undefined;
6218
7140
  get parent(): GroupContainerObject3D | GeometryGroupObject3D | null;
6219
7141
  get type(): 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
6220
7142
  constructor(meshComponent: MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent, styleComponent: StyleComponent);
@@ -6273,6 +7195,8 @@ declare module '@mappedin/mappedin-js/geojson/src/components/geometry-group-styl
6273
7195
  opacity: number;
6274
7196
  shading?: Shading;
6275
7197
  outline: boolean;
7198
+ texture?: string;
7199
+ topTexture?: string;
6276
7200
  };
6277
7201
  export class GeometryGroupStyleComponent implements GeometryGroupStyle {
6278
7202
  #private;
@@ -6280,6 +7204,8 @@ declare module '@mappedin/mappedin-js/geojson/src/components/geometry-group-styl
6280
7204
  topColor?: string;
6281
7205
  opacity: number;
6282
7206
  outline: boolean;
7207
+ texture?: string;
7208
+ topTexture?: string;
6283
7209
  /**
6284
7210
  * Ideally for handling all style component changes. However, it's only used for handling outline for now.
6285
7211
  * Color update is handled separately in each child. See: https://github.com/MappedIn/sdk/blob/v6.0.1-beta.1/sdks/geojson/src/entities/utils.ts#L70
@@ -6298,6 +7224,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/image' {
6298
7224
  import type { Position } from '@mappedin/mappedin-js/geojson/src/types';
6299
7225
  import type { Feature, Point } from 'geojson';
6300
7226
  import { Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
7227
+ import { z } from 'zod';
6301
7228
  export class EntityMesh extends Mesh {
6302
7229
  userData: {
6303
7230
  entityId: string | number;
@@ -6319,7 +7246,70 @@ declare module '@mappedin/mappedin-js/geojson/src/components/image' {
6319
7246
  rotation?: number;
6320
7247
  verticalOffset?: number;
6321
7248
  };
6322
- export function validImageFeature(feature: Feature<Point, ImageProperties>): feature is Feature<Point, ImageProperties>;
7249
+ export const addImageFeatureStyleSchema: z.ZodObject<{
7250
+ flipImageToFaceCamera: z.ZodOptional<z.ZodBoolean>;
7251
+ url: z.ZodString;
7252
+ }, "strip", z.ZodTypeAny, {
7253
+ url: string;
7254
+ flipImageToFaceCamera?: boolean | undefined;
7255
+ }, {
7256
+ url: string;
7257
+ flipImageToFaceCamera?: boolean | undefined;
7258
+ }>;
7259
+ export const addImageFeatureSchema: z.ZodObject<{
7260
+ type: z.ZodEnum<["Feature"]>;
7261
+ properties: z.ZodObject<{
7262
+ width: z.ZodNumber;
7263
+ height: z.ZodNumber;
7264
+ rotation: z.ZodOptional<z.ZodNumber>;
7265
+ verticalOffset: z.ZodOptional<z.ZodNumber>;
7266
+ }, "strip", z.ZodTypeAny, {
7267
+ height: number;
7268
+ width: number;
7269
+ rotation?: number | undefined;
7270
+ verticalOffset?: number | undefined;
7271
+ }, {
7272
+ height: number;
7273
+ width: number;
7274
+ rotation?: number | undefined;
7275
+ verticalOffset?: number | undefined;
7276
+ }>;
7277
+ geometry: z.ZodObject<{
7278
+ type: z.ZodEnum<["Point"]>;
7279
+ coordinates: z.ZodArray<z.ZodNumber, "many">;
7280
+ }, "strip", z.ZodTypeAny, {
7281
+ type: "Point";
7282
+ coordinates: number[];
7283
+ }, {
7284
+ type: "Point";
7285
+ coordinates: number[];
7286
+ }>;
7287
+ }, "strip", z.ZodTypeAny, {
7288
+ type: "Feature";
7289
+ geometry: {
7290
+ type: "Point";
7291
+ coordinates: number[];
7292
+ };
7293
+ properties: {
7294
+ height: number;
7295
+ width: number;
7296
+ rotation?: number | undefined;
7297
+ verticalOffset?: number | undefined;
7298
+ };
7299
+ }, {
7300
+ type: "Feature";
7301
+ geometry: {
7302
+ type: "Point";
7303
+ coordinates: number[];
7304
+ };
7305
+ properties: {
7306
+ height: number;
7307
+ width: number;
7308
+ rotation?: number | undefined;
7309
+ verticalOffset?: number | undefined;
7310
+ };
7311
+ }>;
7312
+ export function validateImage(id: string | number, feature: Feature<Point, ImageProperties>, style: ImageStyle): void;
6323
7313
  /**
6324
7314
  * State representing an Image
6325
7315
  */
@@ -6405,7 +7395,14 @@ declare module '@mappedin/mappedin-js/geojson/src/types/constants' {
6405
7395
  declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-optimization/batched-material' {
6406
7396
  import { MeshLambertMaterial, type Color, type Texture, type MeshLambertMaterialParameters } from 'three';
6407
7397
  export class BatchedStandardMaterial extends MeshLambertMaterial {
6408
- constructor(params: MeshLambertMaterialParameters, geometryCount: number);
7398
+ constructor(params: MeshLambertMaterialParameters, geometryCount: number, scaleFactor?: number);
7399
+ /**
7400
+ * These control the repeat factor of the texture in the Y direction.
7401
+ * So when we scale a geometry, it needs to scale the texture as well.
7402
+ * For now this only applies to detached geometries.
7403
+ */
7404
+ get repeatYFactor(): number;
7405
+ set repeatYFactor(value: number);
6409
7406
  get texture(): Texture;
6410
7407
  set texture(texture: Texture);
6411
7408
  get topTexture(): Texture;
@@ -6418,6 +7415,8 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-opti
6418
7415
  };
6419
7416
  showTextures: (batchId: number) => void;
6420
7417
  hideTextures(batchId: number): void;
7418
+ removeSideTexture(batchId: number): void;
7419
+ removeTopTexture(batchId: number): void;
6421
7420
  dispose(): void;
6422
7421
  }
6423
7422
  }
@@ -6683,13 +7682,18 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/2d-draw/system' {
6683
7682
 
6684
7683
  declare module '@mappedin/mappedin-js/geojson/src/systems/draw/system' {
6685
7684
  import { PubSub } from '@packages/internal/common';
7685
+ import { MeshComponent } from '@mappedin/mappedin-js/geojson/src/components/mesh';
7686
+ import { StyleComponent } from '@mappedin/mappedin-js/geojson/src/components/style';
6686
7687
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
7688
+ import { InteractionComponent } from '@mappedin/mappedin-js/geojson/src/components/interaction';
7689
+ import type { GeometryGroupStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/geometry-group-style';
6687
7690
  export class DrawSystem extends PubSub<{
6688
7691
  'texture-loaded': void;
6689
7692
  }> {
6690
7693
  #private;
6691
7694
  state: RendererState;
6692
7695
  constructor(state: RendererState);
7696
+ processTextures(component: MeshComponent, styleComponent: StyleComponent | GeometryGroupStyleComponent, interactionComponent?: InteractionComponent): void;
6693
7697
  update(): void;
6694
7698
  destroy(): void;
6695
7699
  }
@@ -6987,6 +7991,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/outline-interpolation/
6987
7991
 
6988
7992
  declare module '@mappedin/mappedin-js/geojson/src/systems/image/system' {
6989
7993
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
7994
+ import { type Texture } from 'three';
6990
7995
  import type { RendererCore } from '@mappedin/mappedin-js/geojson/src';
6991
7996
  import { PubSub } from '@packages/internal/common';
6992
7997
  export const DEFAULT_VERTICAL_OFFSET = 0.01;
@@ -6994,6 +7999,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/image/system' {
6994
7999
  'image-loaded': void;
6995
8000
  }> {
6996
8001
  constructor(rendererState: RendererState, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']);
8002
+ imageLoadingCache: Map<string, Promise<Texture>>;
6997
8003
  update(cameraRotationRadians: number): void;
6998
8004
  }
6999
8005
  }
@@ -7031,13 +8037,13 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/path' {
7031
8037
  export { PathSystem } from '@mappedin/mappedin-js/geojson/src/systems/path/system';
7032
8038
  }
7033
8039
 
7034
- declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-opacity/system' {
8040
+ declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-detachment/system' {
7035
8041
  import { type Geometry3DTypes, type RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
7036
8042
  /**
7037
8043
  * This system is responsible for updating the opacity of the mesh, which results in the mesh
7038
8044
  * being detached from the parent's optimized geometry group and rendered as a separate mesh.
7039
8045
  */
7040
- export class MeshOpacitySystem {
8046
+ export class MeshDetachmentSystem {
7041
8047
  #private;
7042
8048
  rendererState: RendererState;
7043
8049
  dirty: boolean;
@@ -7179,15 +8185,20 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils' {
7179
8185
  import { Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7180
8186
  import type { Position, EntranceCollection, LineString, Polygon, Point, SpaceProperties, ObstructionProperties, StyleCollection, PolygonStyle, LineStringStyle, Feature, ObstructionCollection, PointStyle } from '@mappedin/mvf';
7181
8187
  import type { WithPolygonImage } from '@packages/internal/mvf-utils';
7182
- import type { MultiLineString } from 'geojson';
8188
+ import type { FeatureCollection, MultiLineString } from 'geojson';
7183
8189
  import type { LabelState, MarkerState, GeometryState, CollisionRankingTier, LineStyle, PaintStyle } from '@mappedin/core-sdk';
7184
8190
  import type { TGeometryState, TLabelState, TDirectionInstructionAction, TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
7185
- import type { TMarkerState } from '@mappedin/mappedin-js/mappedin-js/src/types';
8191
+ import type { TDoorsState, TMarkerState, TWallsState } from '@mappedin/mappedin-js/mappedin-js/src/types';
7186
8192
  export function convertCoordinateToPosition(coord: Coordinate): Position;
7187
8193
  export function convertPositionToCoordinate(coord: Position): Coordinate;
7188
- export const cutEntrancesFromLineStrings: (lineStrings: ObstructionCollection["features"], entranceCollection: EntranceCollection["features"]) => Feature<MultiLineString, any>;
8194
+ export const cutEntrancesFromLineStrings: (lineStrings: ObstructionCollection["features"], entranceCollection: EntranceCollection["features"]) => {
8195
+ entrances: FeatureCollection<LineString, any>;
8196
+ walls: Feature<MultiLineString, any>;
8197
+ };
7189
8198
  export function translateLabelStateToGeojsonCore(state: Partial<TLabelState>, currentState: Partial<LabelState>): Partial<LabelState>;
7190
8199
  export function translateMarkerStateToGeojsonCore(state: Partial<TMarkerState>, currentState: Partial<MarkerState>): Partial<MarkerState>;
8200
+ export function translateDoorsStateToGeojsonCore(state: Partial<TDoorsState>, currentState: Partial<GeometryState>): Partial<GeometryState>;
8201
+ export function translateWallsStateToGeojsonCore(state: Partial<TWallsState>, currentState: Partial<GeometryState>): Partial<GeometryState>;
7191
8202
  export function translateSpaceStateToGeojsonCore(state: Partial<TGeometryState>, currentState: Partial<GeometryState>): Partial<GeometryState>;
7192
8203
  export function differenceBetweenAngles(a: number, b: number): number;
7193
8204
  export function getRelativeBearing(relativeBearingAngle: number, threshold: number): TDirectionInstructionAction['bearing'];
@@ -7207,7 +8218,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils' {
7207
8218
  }
7208
8219
 
7209
8220
  declare module '@mappedin/mappedin-js/geojson/src/components/style' {
7210
- import type { Cap, Join } from '@mappedin/mappedin-js/geojson/src/types';
8221
+ import type { LineStyle } from '@mappedin/mappedin-js/geojson/src/renderer';
8222
+ export const DEFAULT_COLOR = "#ffffff";
7211
8223
  export const DEFAULT_HEIGHT = 0.1;
7212
8224
  type Style = {
7213
8225
  color: string;
@@ -7216,8 +8228,8 @@ declare module '@mappedin/mappedin-js/geojson/src/components/style' {
7216
8228
  visible: boolean;
7217
8229
  height: number;
7218
8230
  altitude: number;
7219
- join: Join;
7220
- cap: Cap;
8231
+ join: LineStyle['join'];
8232
+ cap: LineStyle['cap'];
7221
8233
  topColor?: string;
7222
8234
  texture?: string;
7223
8235
  topTexture?: string;
@@ -7238,9 +8250,10 @@ declare module '@mappedin/mappedin-js/geojson/src/components/style' {
7238
8250
  opacity: number;
7239
8251
  width: number;
7240
8252
  height: number;
8253
+ initialHeight: number;
7241
8254
  altitude: number;
7242
- join: Join;
7243
- cap: Cap;
8255
+ join: LineStyle['join'];
8256
+ cap: LineStyle['cap'];
7244
8257
  outline: boolean;
7245
8258
  showImage: boolean;
7246
8259
  flipImageToFaceCamera: boolean;
@@ -7252,12 +8265,14 @@ declare module '@mappedin/mappedin-js/geojson/src/components/style' {
7252
8265
 
7253
8266
  declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
7254
8267
  import type { CollisionRankingTier, GeometryState, LabelState, PathState, RendererCore } from '@mappedin/mappedin-js/geojson/src';
7255
- import type { MarkerState } from '@mappedin/mappedin-js/geojson/src/components/marker';
8268
+ import { type MarkerState } from '@mappedin/mappedin-js/geojson/src/components/marker';
7256
8269
  import type { Geometry3DTypes, Position, RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
7257
8270
  import { GeometryGroupObject3D, type GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
7258
8271
  import { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
7259
8272
  import { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
7260
8273
  import { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
8274
+ import type { StyleComponent } from '@mappedin/mappedin-js/geojson/src/components/style';
8275
+ import type { GeometryGroupStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/geometry-group-style';
7261
8276
  export function updateInteractivity(entity: Geometry3DTypes | Geometry2D, update: boolean | undefined, state: RendererState): boolean;
7262
8277
  export function updateGroupColor(entity: GeometryGroupObject3D, state: RendererState, update: Partial<Pick<GeometryGroupState, 'color' | 'topColor'>>): boolean | undefined;
7263
8278
  export function updateGroupShading(entity: GeometryGroupObject3D, update?: GeometryGroupState['shading']): boolean;
@@ -7268,13 +8283,15 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
7268
8283
  export function updateParent(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: GroupContainerObject3D | undefined): boolean;
7269
8284
  export function updateEnabled(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: boolean | undefined): void;
7270
8285
  export function updatePath(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<PathState> | undefined): void;
7271
- export function updateMarker(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<MarkerState> | undefined): boolean;
8286
+ export function updateMarker(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<MarkerState> | undefined, state: RendererState): boolean;
7272
8287
  export function updateRank(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: CollisionRankingTier | undefined): boolean;
7273
- export function updateLabel(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<LabelState> | undefined): void;
8288
+ export function updateLabel(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<LabelState> | undefined, state: RendererState): void;
7274
8289
  export function updateHoverColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: string): void;
7275
8290
  export function updateFlipImageToFaceCamera(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: boolean): void;
7276
8291
  export function updateVisibility(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: boolean): boolean;
7277
8292
  export function updateOpacity(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, state: RendererState, update?: number): void;
8293
+ export function updateGroupTexture(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Pick<GeometryGroupStyleComponent, 'texture' | 'topTexture'>): void;
8294
+ export function updateIndividualGeometryTexture(entity: Geometry3D, update?: Pick<StyleComponent, 'texture' | 'topTexture'>): boolean;
7278
8295
  export function updateIndividualGeometryOpacity(entity: Geometry3D, update?: number): boolean;
7279
8296
  export function updateAltitude(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: number): void;
7280
8297
  export function updateOutline(entity: Geometry3DTypes, update?: boolean): boolean;