@mappedin/mappedin-js 6.0.1-beta.1 → 6.0.1-beta.11

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,19 +5,22 @@
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
10
- // ../mappedin-js/@packages/internal/outdoor-context-v4
9
+ // ../mappedin-js/@mappedin/core-sdk
11
10
  // ../mappedin-js/@mappedin/core-sdk/src/camera
11
+ // ../mappedin-js/@tweenjs/tween.js
12
+ // ../mappedin-js/@mappedin/mvf/dist/locale
12
13
  // ../mappedin-js/three
14
+ // ../mappedin-js/zod
13
15
  // ../mappedin-js/@packages/internal/shave-text/shave-text
14
16
  // ../mappedin-js/@turf/turf
15
17
  // ../mappedin-js/@packages/internal/quad-tree
18
+ // ../mappedin-js/@packages/internal/outdoor-context-v4
16
19
  // ../mappedin-js/@packages/internal/geojson-navigator
20
+ // ../mappedin-js/minisearch
17
21
  // ../mappedin-js/three/addons/loaders/GLTFLoader.js
18
22
  // ../mappedin-js/@mapbox/point-geometry
19
23
  // ../mappedin-js/@maplibre/maplibre-gl-style-spec
20
- // ../mappedin-js/@tweenjs/tween.js
21
24
  // ../mappedin-js/gl-matrix
22
25
  // ../mappedin-js/@mapbox/vector-tile
23
26
  // ../mappedin-js/potpack
@@ -34,11 +37,11 @@ declare module '@mappedin/mappedin-js' {
34
37
  import type { Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
35
38
  import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle } from '@mappedin/mvf';
36
39
  import { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
37
- import type { Shading, PaintStyle, LineStyle, WatermarkOptions, Position } from '@mappedin/mappedin-js/geojson/src';
40
+ import type { Shading, PaintStyle, LineStyle, WatermarkOptions } from '@mappedin/mappedin-js/geojson/src';
38
41
  import { enableTestMode } from '@mappedin/mappedin-js/geojson/src';
39
42
  export type { PubSub } from '@packages/internal/common/pubsub';
40
- import { MapLibreOverlay } from '@mappedin/mappedin-js/geojson/src/maplibre-overlay';
41
- import { analytics } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
43
+ import { MappedinMapLibreOverlay } from '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay';
44
+ import type { LanguagePackHydrationItem } from '@mappedin/mappedin-js/mappedin-js/src/types';
42
45
  export { setLoggerLevel, E_SDK_LOG_LEVEL } from '@packages/internal/common/Mappedin.Logger';
43
46
  /**
44
47
  * Represents all the available antialiasing options.
@@ -143,6 +146,11 @@ declare module '@mappedin/mappedin-js' {
143
146
  */
144
147
  autoRenderBeauty?: boolean;
145
148
  };
149
+ /**
150
+ * @interface
151
+ * Options for the watermark.
152
+ */
153
+ export type TWatermarkOptions = Omit<WatermarkOptions, 'visible'>;
146
154
  /**
147
155
  * Options for showing a 3D map.
148
156
  *
@@ -216,18 +224,22 @@ declare module '@mappedin/mappedin-js' {
216
224
  *
217
225
  * @hidden
218
226
  */
219
- watermark?: WatermarkOptions;
227
+ watermark?: TWatermarkOptions;
220
228
  /**
221
229
  * Options for the attribution control.
222
230
  *
223
231
  * @hidden
224
232
  */
225
233
  attribution?: {
234
+ /**
235
+ * Custom attribution content.
236
+ */
237
+ custom?: string[];
226
238
  /**
227
239
  * Attribution position.
228
240
  * @default 'bottom-right'
229
241
  */
230
- position: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
242
+ position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
231
243
  };
232
244
  /**
233
245
  * First floor to be rendered.
@@ -250,6 +262,14 @@ declare module '@mappedin/mappedin-js' {
250
262
  * @experimental
251
263
  */
252
264
  style?: {
265
+ /**
266
+ * Background color. Only relevant if outdoor map is disabled.
267
+ */
268
+ backgroundColor?: string;
269
+ /**
270
+ * Background alpha value. Only relevant if outdoor map is disabled.
271
+ */
272
+ backgroundAlpha?: number;
253
273
  /**
254
274
  * Set the global shading for all elements. True will use default values, false will disable shading.
255
275
  * @default true
@@ -271,10 +291,12 @@ declare module '@mappedin/mappedin-js' {
271
291
  *
272
292
  * Returns a {@link MapData} instance from a parsed MVF object.
273
293
  */
274
- export const hydrateMapDataFromMVF: (mvf: TMVF, options?: TGetMapDataWithCredentialsOptions) => Promise<MapData>;
275
- export const getMapDataEnterprise: (userOptions: TGetMapDataOptions) => Promise<MapData>;
294
+ export const hydrateMapDataFromMVF: (mvf: TMVF, options?: TGetMapDataWithCredentialsOptions & {
295
+ languagePacks?: LanguagePackHydrationItem[];
296
+ }) => Promise<MapData>;
276
297
  /**
277
- * @internal temporary until we can detect which route to use based on keys
298
+ * @internal
299
+ * @deprecated Use {@link getMapData} and enterprise will be inferred from key/secret.
278
300
  */
279
301
  export function setUseEnterpriseAPI(value: boolean): void;
280
302
  /**
@@ -287,26 +309,11 @@ declare module '@mappedin/mappedin-js' {
287
309
  * const data = await getMapData({ key: 'api_key', secret: 'api_secret', mapId: 'id' });
288
310
  */
289
311
  export const getMapData: (userOptions: TGetMapDataOptions) => Promise<MapData>;
290
- class MappedinMapLibreOverlay extends MapLibreOverlay<{
291
- /**
292
- * Event emitted when the MappedinMap is loaded
293
- */
294
- loaded: {
295
- /**
296
- * MapView instance
297
- */
298
- mapView: MapView;
299
- /**
300
- * MapData instance
301
- */
302
- mapData: MapData;
303
- };
304
- }> {
305
- #private;
306
- static instance: MappedinMapLibreOverlay;
307
- constructor(origin: Position | undefined, mapData: MapData, options?: TShow3DMapOptions);
308
- onAdd(map: any): HTMLDivElement;
309
- }
312
+ /**
313
+ * @internal
314
+ * @deprecated Use {@link getMapData} and enterprise will be inferred from key/secret.
315
+ */
316
+ export const getMapDataEnterprise: (userOptions: TGetMapDataOptions) => Promise<MapData>;
310
317
  /**
311
318
  * Create a MapLibre overlay with a Map to render it within existing MapLibre projects.
312
319
  * @experimental
@@ -317,17 +324,26 @@ declare module '@mappedin/mappedin-js' {
317
324
  export { parseMVF, unzipMVF, enableTestMode };
318
325
  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, };
319
326
  export type * from 'geojson';
320
- 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, } from '@mappedin/mappedin-js/mappedin-js/src/types';
327
+ 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';
328
+ export { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
321
329
  export type { Label, Marker, Path, Shape, CameraTransform, Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
322
330
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
323
331
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
324
- export { Coordinate, Annotation, Connection, Door, Floor, MapObject, PointOfInterest, Space, Image, Hyperlink, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
325
- export type { Camera, Models, Labels, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
326
- export { analytics };
332
+ export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
333
+ export type { Camera, Models, Labels, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
334
+ export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search';
335
+ export type { Analytics, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
327
336
  }
328
337
 
329
338
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
330
- import type { Connection, Door, Floor, MapDataInternal, Space, MapObject, PointOfInterest, Annotation, Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
339
+ import { Analytics } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
340
+ import { PubSub } from '@packages/internal/common';
341
+ import type { TSearchOptions } from '@packages/internal/mvf-utils';
342
+ import type { Connection, Door, Floor, MapDataInternal, Space, MapObject, PointOfInterest, Annotation, Coordinate, FloorStack } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
343
+ import type EnterpriseCategory from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category';
344
+ import type EnterpriseLocation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location';
345
+ import type EnterpriseVenue from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue';
346
+ import { Search } from '@mappedin/mappedin-js/mappedin-js/src/search';
331
347
  /**
332
348
  * A WeakMap to associate {@link MapData} instances with their internal representation.
333
349
  * We need a way to get the internal data object from the API
@@ -339,14 +355,40 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
339
355
  * Represents the data for a map, providing access to map elements
340
356
  * like spaces, floors, and points of interest.
341
357
  */
342
- class MapData {
358
+ class MapData extends PubSub<{
359
+ 'language-change': {
360
+ code: string;
361
+ name: string;
362
+ };
363
+ }> {
343
364
  #private;
365
+ Analytics: Analytics;
366
+ /**
367
+ * Search API for MapData
368
+ *
369
+ * @example
370
+ * // Enable search
371
+ * const mapData = await getMapData({ search: { enabled: true } });
372
+ * // or
373
+ * await mapData.Search.enable();
374
+ *
375
+ * // Perform a search query
376
+ * const results = await mapData.Search.query('Coffee Shop');
377
+ * console.log(results.locations);
378
+ *
379
+ * // Get search suggestions
380
+ * const suggestions = await mapData.Search.suggest('Coff');
381
+ * console.log(suggestions);
382
+ */
383
+ Search: Search;
344
384
  /**
345
385
  * Constructs a new instance of {@link MapData}.
346
386
  *
347
387
  * @internal
348
388
  */
349
- constructor(internal: MapDataInternal);
389
+ constructor(internal: MapDataInternal, { search }?: {
390
+ search?: TSearchOptions;
391
+ });
350
392
  /**
351
393
  * The name of the map.
352
394
  *
@@ -398,6 +440,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
398
440
  * const floors = mapData.getByType('floor');
399
441
  */
400
442
  getByType(type: 'floor'): Floor[];
443
+ /**
444
+ * @returns The stacks of floors ({@link FloorStack}) within the map.
445
+ * @example
446
+ * const floorStacks = mapData.getByType('floor-stack');
447
+ */
448
+ getByType(type: 'floor-stack'): FloorStack[];
401
449
  /**
402
450
  * @returns The connections ({@link Connection}) on the map.
403
451
  * @example
@@ -422,6 +470,24 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
422
470
  * const annotations = mapData.getByType('annotation');
423
471
  */
424
472
  getByType(type: 'annotation'): Annotation[];
473
+ /**
474
+ * @returns The enterprise locations ({@link EnterpriseLocation}) on the map.
475
+ * @example
476
+ * const enterpriseLocations = mapData.getByType('enterprise-location');
477
+ */
478
+ getByType(type: 'enterprise-location'): EnterpriseLocation[];
479
+ /**
480
+ * @returns The enterprise categories ({@link EnterpriseCategory}) on the map.
481
+ * @example
482
+ * const enterpriseCategories = mapData.getByType('enterprise-category');
483
+ */
484
+ getByType(type: 'enterprise-category'): EnterpriseCategory[];
485
+ /**
486
+ * @returns The enterprise venue ({@link EnterpriseVenue}) on the map.
487
+ * @example
488
+ * const enterpriseVenue = mapData.getByType('enterprise-venue');
489
+ */
490
+ getByType(type: 'enterprise-venue'): EnterpriseVenue;
425
491
  /**
426
492
  * Retrieves a specific map feature by its type and ID.
427
493
  *
@@ -434,13 +500,39 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data' {
434
500
  getById(type: 'space', id: string): Space | undefined;
435
501
  getById(type: 'door', id: string): Door | undefined;
436
502
  getById(type: 'floor', id: string): Floor | undefined;
503
+ getById(type: 'floor-stack', id: string): FloorStack | undefined;
437
504
  getById(type: 'connection', id: string): Connection | undefined;
438
505
  getById(type: 'object', id: string): MapObject | undefined;
439
506
  getById(type: 'point-of-interest', id: string): PointOfInterest | undefined;
440
507
  getById(type: 'annotation', id: string): Annotation | undefined;
508
+ getById(type: 'enterprise-location', id: string): EnterpriseLocation | undefined;
509
+ getById(type: 'enterprise-category', id: string): EnterpriseCategory | undefined;
441
510
  getById(type: string, id: string): object | undefined;
511
+ /**
512
+ * Changes the language of the map data.
513
+ *
514
+ * @param localeCode The ISO 639-1 language code to change to (e.g., 'en' for English, 'fr' for French). Check ({@link EnterpriseVenue.languages}) for available languages
515
+ * @returns A promise that resolves when the language change is complete.
516
+ * @throws An error if the language change fails.
517
+ * @example
518
+ * try {
519
+ * await mapData.changeLanguage('fr');
520
+ * console.log('Language changed to French');
521
+ * } catch (error) {
522
+ * console.error('Failed to change language:', error);
523
+ * }
524
+ */
525
+ changeLanguage(localeCode: string): Promise<void>;
526
+ /**
527
+ * @internal
528
+ */
529
+ get currentLanguage(): import("@mappedin/mvf").Language | undefined;
442
530
  }
443
531
  export default MapData;
532
+ /**
533
+ * @internal
534
+ */
535
+ export function getMapDataInternal(mapData: MapData): MapDataInternal;
444
536
  }
445
537
 
446
538
  declare module '@mappedin/mappedin-js/mappedin-js/src/events' {
@@ -564,15 +656,30 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
564
656
  import Annotation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/annotation';
565
657
  import Hyperlink from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/hyperlink';
566
658
  import Image from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image';
567
- import type { AnnotationCollection, ParsedMVF, Connection as MVFConnection, EntranceCollection, NodeCollection, ObstructionCollection, SpaceCollection, Map as MVFMap } from '@mappedin/mvf';
568
- import type { MapDataObjects } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
659
+ import FloorStack from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-stack';
660
+ import type { MapDataRecords } from '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation';
661
+ import type { AnnotationCollection, ParsedMVF, Connection as MVFConnection, EntranceCollection, NodeCollection, ObstructionCollection, SpaceCollection, FloorProperties as MVFFloor, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseCategory as MVFEnterpriseCategory, Language } from '@mappedin/mvf';
662
+ import { AnalyticsInternal } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
663
+ import EnterpriseLocation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location';
664
+ import EnterpriseCategory from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category';
665
+ import EnterpriseVenue from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue';
666
+ import { PubSub } from '@packages/internal/common';
667
+ import type { LanguagePack, Places } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types';
668
+ import { type LocalePackUrls } from '@packages/internal/mvf-utils';
669
+ import type { LanguagePackHydrationItem } from '@mappedin/mappedin-js/mappedin-js/src/types';
569
670
  /**
570
671
  * Internal class representing detailed map data.
571
672
  *
572
673
  * @internal
573
674
  */
574
- class MapDataInternal {
675
+ class MapDataInternal extends PubSub<{
676
+ 'language-change': {
677
+ code: string;
678
+ name: string;
679
+ };
680
+ }> {
575
681
  #private;
682
+ Analytics: AnalyticsInternal;
576
683
  /**
577
684
  * Represents the parsed Mappedin Venue Format (MVF) data.
578
685
  */
@@ -593,10 +700,47 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
593
700
  * Represents a map of entrance IDs to obstruction IDs.
594
701
  */
595
702
  readonly obstructionIdByEntranceId: Record<string, string>;
703
+ readonly venue?: EnterpriseVenue;
704
+ enterpriseMode: boolean;
705
+ nodesById: MapDataRecords['nodesById'];
706
+ spacesById: MapDataRecords['spacesById'];
707
+ floorsById: MapDataRecords['floorsById'];
708
+ floorStacksById: MapDataRecords['floorStacksById'];
709
+ connectionsById: MapDataRecords['connectionsById'];
710
+ objectsById: MapDataRecords['objectsById'];
711
+ doorsById: MapDataRecords['doorsById'];
712
+ pointsOfInterestById: MapDataRecords['poisById'];
713
+ annotationsById: MapDataRecords['annotationsById'];
714
+ locationsById: MapDataRecords['locationsById'];
715
+ categoriesById: MapDataRecords['categoriesById'];
716
+ doorsByNodeId: MapDataRecords['doorsByNodeId'];
717
+ locationsBySpaceId: MapDataRecords['mvfLocationsBySpaceId'];
718
+ mvfAnnotationsById: MapDataRecords['mvfAnnotationsById'];
719
+ mvfConnectionsById: MapDataRecords['mvfConnectionsById'];
720
+ mvfConnectionsByNodeId: MapDataRecords['mvfConnectionsByNodeId'];
721
+ mvfEntrancesById: MapDataRecords['mvfEntrancesById'];
722
+ mvfNodesById: MapDataRecords['mvfNodesById'];
723
+ mvfObstructionById: MapDataRecords['mvfObstructionById'];
724
+ mvfSpacesById: MapDataRecords['mvfSpacesById'];
725
+ mvfFloorsById: MapDataRecords['mvfFloorsById'];
726
+ mvfFloorStacksById: MapDataRecords['mvfFloorStacksById'];
727
+ localePacksUrls: LocalePackUrls;
728
+ currentLanguage?: Language;
729
+ /**
730
+ * These represent maps of diffed objects that are used to store the translated values
731
+ */
732
+ languagePacks: {
733
+ [languageCode: string]: LanguagePack;
734
+ };
596
735
  /**
597
736
  * @internal
598
737
  */
599
- constructor(mvf: ParsedMVF, outdoorViewToken?: string);
738
+ constructor(mvf: ParsedMVF, { outdoorViewToken, localePacksUrls: localePacks, enterprise, languagePacks, }?: {
739
+ enterprise?: boolean;
740
+ outdoorViewToken?: string;
741
+ localePacksUrls?: LocalePackUrls;
742
+ languagePacks?: LanguagePackHydrationItem[];
743
+ });
600
744
  /**
601
745
  * Retrieves the map name.
602
746
  *
@@ -629,6 +773,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
629
773
  * @returns {Floor[]} An array of Floor objects.
630
774
  */
631
775
  get floors(): Floor[];
776
+ get floorStacks(): FloorStack[];
632
777
  /**
633
778
  * Retrieves all doors in the map.
634
779
  *
@@ -655,6 +800,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
655
800
  * @returns {Annotation[]} An array of Annotation objects.
656
801
  */
657
802
  get nodes(): Node[];
803
+ get locations(): EnterpriseLocation[];
804
+ get categories(): EnterpriseCategory[];
658
805
  /**
659
806
  * Retrieves an object by its type and ID.
660
807
  *
@@ -666,11 +813,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
666
813
  getById(type: 'space', id: string): Space | undefined;
667
814
  getById(type: 'door', id: string): Door | undefined;
668
815
  getById(type: 'floor', id: string): Floor | undefined;
816
+ getById(type: 'floor-stack', id: string): FloorStack | undefined;
669
817
  getById(type: 'connection', id: string): Connection | undefined;
670
818
  getById(type: 'object', id: string): MapObject | undefined;
671
819
  getById(type: 'point-of-interest', id: string): PointOfInterest | undefined;
672
820
  getById(type: 'annotation', id: string): Annotation | undefined;
673
- getMapDataById(id: string): MapDataObjects | undefined;
821
+ getById(type: 'enterprise-location', id: string): EnterpriseLocation | undefined;
822
+ getById(type: 'enterprise-category', id: string): EnterpriseCategory | undefined;
823
+ getMapDataById(id: string): Places | undefined;
674
824
  /**
675
825
  * Retrieves a feature by its type and ID from the Mappedin Venue Format (MVF) data.
676
826
  *
@@ -681,12 +831,17 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
681
831
  getMVFFeatureById(type: 'space', id: string): SpaceCollection['features'][number] | undefined;
682
832
  getMVFFeatureById(type: 'node', id: string): NodeCollection['features'][number] | undefined;
683
833
  getMVFFeatureById(type: 'obstruction', id: string): ObstructionCollection['features'][number] | undefined;
684
- getMVFFeatureById(type: 'map', id: string): MVFMap | undefined;
834
+ getMVFFeatureById(type: 'map', id: string): MVFFloor | undefined;
685
835
  getMVFFeatureById(type: 'connection', id: string): MVFConnection | undefined;
686
836
  getMVFFeatureById(type: 'entrance', id: string): EntranceCollection['features'][number] | undefined;
687
837
  getMVFFeatureById(type: 'annotation', id: string): AnnotationCollection['features'][number] | undefined;
688
838
  getMVFFeatureById(type: string, id: string): object | undefined;
689
839
  getMVFFeatureByNodeId(type: 'connection', id: string): MVFConnection | undefined;
840
+ getPropTranslation(type: 'enterprise-location' | 'enterprise-category', prop: string, id: string, fallback: MVFEnterpriseLocation[keyof MVFEnterpriseLocation] | MVFEnterpriseCategory[keyof MVFEnterpriseCategory]): unknown;
841
+ /**
842
+ * change the langauge of the data objects in mapdata
843
+ */
844
+ changeLanguage(languageCode: string): Promise<void>;
690
845
  /**
691
846
  * Cleans up resources used by the instance.
692
847
  *
@@ -694,24 +849,25 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects' {
694
849
  */
695
850
  destroy(): void;
696
851
  }
697
- export { MapDataInternal, Space, Floor, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, };
852
+ export { MapDataInternal, Space, Floor, FloorStack, Connection, MapObject, Door, Coordinate, PointOfInterest, Annotation, Hyperlink, Image, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, };
698
853
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space';
699
- export type { MapDataObjects };
854
+ export type { Places };
700
855
  }
701
856
 
702
857
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
703
- import type { RendererCore, WatermarkOptions } from '@mappedin/core-sdk';
858
+ import type { RendererCore, WatermarkUpdateOptions } from '@mappedin/core-sdk';
704
859
  import { PubSub } from '@packages/internal/common';
705
860
  import { type TEvents, type TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
706
861
  import type { Navigation } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
707
- import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
862
+ import type { Camera, Labels, Markers, Models, Paths, Exporter, Directions, Style, Outdoor, Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
708
863
  import type { BlueDot } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
709
864
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
710
- import type { Floor, MapObject, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
711
- import type { TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState, TUpdateStates } from '@mappedin/mappedin-js/mappedin-js/src/types';
712
- import type { Label, Marker } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
865
+ import type { Door, Floor, MapObject, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
866
+ import type { DOORS, WALLS, TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState, TUpdateStates } from '@mappedin/mappedin-js/mappedin-js/src/types';
867
+ import type { Label, Marker, Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
713
868
  import type { TEventPayload } from '@mappedin/mappedin-js/mappedin-js/src/events';
714
869
  import type { Shapes } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes';
870
+ import type { TShowStackOptions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
715
871
  export class MapView extends PubSub<TEvents> {
716
872
  #private;
717
873
  /**
@@ -726,6 +882,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
726
882
  * Controls for the map's markers.
727
883
  */
728
884
  Markers: Markers;
885
+ /**
886
+ * Controls for the map's markers.
887
+ */
888
+ Images: Images;
729
889
  /**
730
890
  * Controls for the map's models.
731
891
  */
@@ -781,8 +941,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
781
941
  * // Update the color of a space to red.
782
942
  * map.updateState(space, { color: 'red' });
783
943
  */
784
- updateState<T extends Space | MapObject | Label | Marker>(target: T | string, state: TUpdateState<T>): any;
785
- updateState<T extends 'walls' | (string & NonNullable<unknown>)>(target: T, state: TUpdateStates): any;
944
+ updateState<T extends Space | MapObject | Label | Marker | Door | WALLS | DOORS>(target: T, state: TUpdateState<T>): any;
945
+ updateState<T extends string & NonNullable<unknown>>(target: T, state: TUpdateStates): any;
786
946
  update: () => void;
787
947
  getMapData(): {
788
948
  [x: string]: MapData;
@@ -802,6 +962,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
802
962
  expand(opts?: {
803
963
  excludeFloors: Floor[];
804
964
  }): Promise<void> | undefined;
965
+ showStack(opts?: TShowStackOptions): Promise<void> | undefined;
805
966
  /**
806
967
  * @experimental
807
968
  * @hidden
@@ -818,7 +979,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
818
979
  * Sets the current floor ({@link Floor}) of the map.
819
980
  * @param floor The floor or floor ID to set.
820
981
  */
821
- setFloor(floor: Floor | string): void;
982
+ setFloor(floor: Floor | string): Promise<void> | undefined;
822
983
  /**
823
984
  * The current floor ({@link Floor}) of the map.
824
985
  */
@@ -829,8 +990,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
829
990
  * @param options {WatermarkOptions}
830
991
  * @hidden
831
992
  */
832
- updateWatermark(options: Omit<WatermarkOptions, 'onClick'>): void;
833
- getState<T extends Space | MapObject | Label | Marker | string>(target: T): TGetState<T> | undefined;
993
+ updateWatermark(options: WatermarkUpdateOptions): void;
994
+ getState<T extends Space | MapObject | Label | Marker | Image | string>(target: T): TGetState<T> | undefined;
834
995
  setHoverColor(c: string): void;
835
996
  getHoverColor(): string | undefined;
836
997
  /**
@@ -911,14 +1072,17 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view' {
911
1072
  * @internal
912
1073
  */
913
1074
  get __core(): RendererCore;
1075
+ /**
1076
+ * Clears all added elements from the map.
1077
+ */
1078
+ clear(): void;
914
1079
  /**
915
1080
  * Destroys the MapView.
916
1081
  */
917
1082
  destroy(): void;
918
1083
  /**
919
- * @internal
920
1084
  * @experimental
921
- * SDK debug mode wip
1085
+ * Enable debug interface
922
1086
  */
923
1087
  enableDebug(): Promise<void>;
924
1088
  }
@@ -928,8 +1092,8 @@ declare module '@mappedin/mappedin-js/geojson/src' {
928
1092
  import type { MarkerState, AddMarkerOptions } from '@mappedin/mappedin-js/geojson/src/components/marker';
929
1093
  import type { PathState, AddPathOptions } from '@mappedin/mappedin-js/geojson/src/components/path';
930
1094
  import type { AddLabelOptions, LabelAppearance, LabelState } from '@mappedin/mappedin-js/geojson/src/components/label';
931
- import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
932
- import type { GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group';
1095
+ import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
1096
+ import type { GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
933
1097
  import type { Position } from '@mappedin/mappedin-js/geojson/src/types/geometry';
934
1098
  import type { InsetPadding, RendererCoreOptions, ClickPayload, HoverPayload, CameraPayload, MapEvent, MapEventPayload } from '@mappedin/mappedin-js/geojson/src/types';
935
1099
  import type { GeometryState } from '@mappedin/mappedin-js/geojson/src/components/mesh';
@@ -951,7 +1115,7 @@ declare module '@mappedin/mappedin-js/geojson/src' {
951
1115
  export { mountSceneGraphVisualizer };
952
1116
  export type { EntityId, EntityState, LineStyle, PaintStyle, ModelStyle, ModelProperties, Shading } from '@mappedin/mappedin-js/geojson/src/types';
953
1117
  export type * from 'geojson';
954
- export type { WatermarkOptions, WatermarkPosition } from '@mappedin/mappedin-js/geojson/src/systems/watermark/system';
1118
+ export type { WatermarkUpdateOptions, WatermarkOptions, WatermarkPosition } from '@mappedin/mappedin-js/geojson/src/systems/watermark/system';
955
1119
  export type { GLTFExportOptions } from '@mappedin/mappedin-js/geojson/src/systems/exporter';
956
1120
  export type { AttributionControlOptions, AttributionPosition } from '@mappedin/mappedin-js/geojson/src/systems/html-controls/system';
957
1121
  export { ATTRIBUTION_POSITIONS } from '@mappedin/mappedin-js/geojson/src/systems/html-controls/system';
@@ -961,31 +1125,48 @@ declare module '@mappedin/mappedin-js/geojson/src' {
961
1125
  }): Promise<RendererCore>;
962
1126
  }
963
1127
 
964
- declare module '@mappedin/mappedin-js/geojson/src/maplibre-overlay' {
965
- import type { IControl, Map as MapLibreMap } from '@packages/internal/outdoor-context-v4';
966
- import type { Position } from '@mappedin/mappedin-js/geojson/src/types';
967
- import RendererCore from '@mappedin/mappedin-js/geojson/src/renderer';
968
- import { PubSub } from '@packages/internal/common';
969
- export class MapLibreOverlay<T> extends PubSub<T> implements IControl {
970
- el: HTMLDivElement;
971
- core: RendererCore;
972
- origin?: Position;
973
- constructor(origin: Position | undefined);
974
- onAdd(map: MapLibreMap): HTMLDivElement;
975
- onRemove(): void;
1128
+ declare module '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay' {
1129
+ import { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
1130
+ import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
1131
+ import type { TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
1132
+ import { MapLibreOverlay } from '@mappedin/mappedin-js/geojson/src/maplibre-overlay';
1133
+ import type { Position } from '@mappedin/core-sdk';
1134
+ export class MappedinMapLibreOverlay extends MapLibreOverlay<{
1135
+ /**
1136
+ * Event emitted when the MappedinMap is loaded
1137
+ */
1138
+ loaded: {
1139
+ /**
1140
+ * MapView instance
1141
+ */
1142
+ mapView: MapView;
1143
+ /**
1144
+ * MapData instance
1145
+ */
1146
+ mapData: MapData;
1147
+ };
1148
+ }> {
1149
+ #private;
1150
+ static instance: MappedinMapLibreOverlay;
1151
+ constructor(origin: Position | undefined, mapData: MapData, options?: TShow3DMapOptions);
1152
+ onAdd(map: any): HTMLDivElement;
1153
+ onRemove(): void;
976
1154
  }
977
1155
  }
978
1156
 
979
- declare module '@mappedin/mappedin-js/mappedin-js/src/analytics' {
980
- export { analytics, analyticsInternal } from '@mappedin/mappedin-js/mappedin-js/src/analytics/customer';
981
- export type { CustomerAnalytics, AnalyticsOptions } from '@mappedin/mappedin-js/mappedin-js/src/analytics/customer';
982
- }
983
-
984
1157
  declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
985
- import { Feature, MultiPolygon, Polygon } from 'geojson';
986
- import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
987
- import type { Label, Marker, Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
1158
+ import type { Feature, MultiPolygon, Polygon } from 'geojson';
1159
+ import type { Coordinate, Floor, Door, Space, MapObject, PointOfInterest, Connection, Annotation, EnterpriseLocation } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
1160
+ import type { Label, Marker, Model, Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
988
1161
  import type { EasingCurve } from '@mappedin/core-sdk/src/camera';
1162
+ import type { Language, ParsedMVFLocalePack } from '@mappedin/mvf';
1163
+ export type DeepRequired<T> = Required<{
1164
+ [K in keyof T]: T[K] extends Required<T[K]> ? T[K] : DeepRequired<T[K]>;
1165
+ }>;
1166
+ export type CancellablePromise<T> = {
1167
+ promise: Promise<T>;
1168
+ cancel: () => void;
1169
+ };
989
1170
  /**
990
1171
  * @hidden
991
1172
  */
@@ -1016,6 +1197,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1016
1197
  * The target {@link Floor} for this action.
1017
1198
  */
1018
1199
  toFloor?: Floor;
1200
+ /**
1201
+ * Connection object related to the action.
1202
+ * This represents the specific connection (e.g., elevator, stairs) involved in the current direction step.
1203
+ */
1019
1204
  connection?: Connection;
1020
1205
  /**
1021
1206
  * The direction of the connection (e.g., 'up', 'down').
@@ -1023,6 +1208,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1023
1208
  direction?: 'up' | 'down' | 'none';
1024
1209
  /**
1025
1210
  * The type of the connection (e.g., 'elevator', 'escalator').
1211
+ * @deprecated in favor of `connection.type`
1026
1212
  */
1027
1213
  connectionType?: string;
1028
1214
  };
@@ -1047,6 +1233,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1047
1233
  * Defines the state for a label when its appearance is updated.
1048
1234
  */
1049
1235
  export type TLabelState = {
1236
+ text: string;
1050
1237
  type: 'label';
1051
1238
  /**
1052
1239
  * Appearance settings for the label.
@@ -1071,7 +1258,44 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1071
1258
  export type TModelState = {
1072
1259
  type: 'model';
1073
1260
  };
1261
+ /**
1262
+ * Defines the state for an image when its appearance is updated.
1263
+ */
1264
+ export type TImageState = {
1265
+ type: 'image';
1266
+ };
1074
1267
  export type TWallsState = {
1268
+ type: 'walls';
1269
+ /**
1270
+ * Color of the walls.
1271
+ */
1272
+ color: string | 'initial';
1273
+ /**
1274
+ * Color of the top of walls, if not set, defaults to the color.
1275
+ */
1276
+ topColor?: string | 'initial';
1277
+ /**
1278
+ * Texture to apply to the geometry element.
1279
+ */
1280
+ texture?: {
1281
+ url?: string;
1282
+ };
1283
+ /**
1284
+ * Top texture to apply to the geometry element.
1285
+ */
1286
+ topTexture?: {
1287
+ url?: string;
1288
+ };
1289
+ /**
1290
+ * Visibility of the walls.
1291
+ */
1292
+ visible: boolean;
1293
+ };
1294
+ /**
1295
+ * @interface
1296
+ */
1297
+ export type TDoorsState = {
1298
+ type: 'doors';
1075
1299
  /**
1076
1300
  * Color of the walls.
1077
1301
  */
@@ -1080,6 +1304,26 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1080
1304
  * Color of the top of walls, if not set, defaults to the color.
1081
1305
  */
1082
1306
  topColor?: string | 'initial';
1307
+ /**
1308
+ * Texture to apply to the geometry element.
1309
+ */
1310
+ texture?: {
1311
+ url?: string;
1312
+ };
1313
+ /**
1314
+ * Top texture to apply to the geometry element.
1315
+ */
1316
+ topTexture?: {
1317
+ url?: string;
1318
+ };
1319
+ /**
1320
+ * Visibility of the walls.
1321
+ */
1322
+ visible: boolean;
1323
+ /**
1324
+ * Opacity of the doors.
1325
+ */
1326
+ opacity: number;
1083
1327
  };
1084
1328
  export type TMarkerState = {
1085
1329
  type: 'marker';
@@ -1129,13 +1373,41 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1129
1373
  * Indicates if the geometry element is interactive. Color can be set using CSS colors names `DarkGoldenRod`, as Hex strings `#0000FF` or the rgb values `rgb(255,0,0)`.
1130
1374
  */
1131
1375
  interactive: boolean;
1376
+ /**
1377
+ * Opacity of the geometry element.
1378
+ */
1379
+ opacity: number;
1380
+ /**
1381
+ * Height of the geometry element in meters.
1382
+ */
1383
+ height: number;
1384
+ /**
1385
+ * Texture to apply to the geometry element.
1386
+ */
1387
+ texture?: {
1388
+ url: string;
1389
+ };
1390
+ /**
1391
+ * Top texture to apply to the geometry element.
1392
+ */
1393
+ topTexture?: {
1394
+ url: string;
1395
+ };
1132
1396
  };
1397
+ export enum WALLS {
1398
+ Exterior = "exterior-walls",
1399
+ Interior = "interior-walls"
1400
+ }
1401
+ export enum DOORS {
1402
+ Interior = "interior-doors",
1403
+ Exterior = "exterior-doors"
1404
+ }
1133
1405
  /**
1134
1406
  * The type for updating the state of map elements (colors, texts, etc.).
1135
1407
  */
1136
- export type TUpdateState<T> = T extends 'walls' ? Partial<Omit<TGeometryState, '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;
1408
+ 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;
1137
1409
  export type TUpdateStates = Partial<Omit<TGeometryState, 'interactive' | 'hoverColor' | 'type'>> | Partial<TMarkerState> | Partial<TLabelState> | Partial<TGeometryState>;
1138
- 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;
1410
+ export type TGetEntityState<T> = T extends WALLS ? TWallsState : T extends DOORS ? TDoorsState : 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;
1139
1411
  export type TGetState<T> = TGetEntityState<T> | undefined;
1140
1412
  /**
1141
1413
  * Options for {@link Camera} animations on the map.
@@ -1243,7 +1515,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1243
1515
  /**
1244
1516
  * Defines the target for navigation operations.
1245
1517
  */
1246
- export type TNavigationTarget = Space | MapObject | Coordinate | Door | PointOfInterest | Connection;
1518
+ export type TNavigationTarget = Space | MapObject | Coordinate | Door | PointOfInterest | Connection | EnterpriseLocation;
1247
1519
  /**
1248
1520
  * Defines the special zone for navigation operations.
1249
1521
  */
@@ -1597,6 +1869,42 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1597
1869
  */
1598
1870
  url: string;
1599
1871
  };
1872
+ /**
1873
+ * Options for controlling the behavior of a {@link Marker}.
1874
+ * @interface
1875
+ */
1876
+ export type TAddImageOptions = {
1877
+ /**
1878
+ * @internal
1879
+ */
1880
+ id?: string;
1881
+ /**
1882
+ * Width of the image in meters.
1883
+ */
1884
+ width: number;
1885
+ /**
1886
+ * Height of the image in meters.
1887
+ */
1888
+ height: number;
1889
+ /**
1890
+ * Rotation of the image in degrees.
1891
+ *
1892
+ * @default 0
1893
+ */
1894
+ rotation?: number;
1895
+ /**
1896
+ * Vertical offset of the image in meters.
1897
+ *
1898
+ * @default 0
1899
+ */
1900
+ verticalOffset?: number;
1901
+ /**
1902
+ * Attempt to keep the image facing the camera as much as possible
1903
+ *
1904
+ * @default false
1905
+ */
1906
+ flipImageToFaceCamera?: boolean;
1907
+ };
1600
1908
  /**
1601
1909
  * Options for controlling the behavior of a {@link Marker}.
1602
1910
  * @interface
@@ -1664,11 +1972,38 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/types' {
1664
1972
  */
1665
1973
  id?: string;
1666
1974
  };
1975
+ export type TBlueDotOptions = {
1976
+ /** The radius of the BlueDot in pixels. The BlueDot will maintain this size clamped to a minimum of 0.35 metres. */
1977
+ radius?: number;
1978
+ /** The color of the BlueDot core element. */
1979
+ color?: string;
1980
+ /** Options for the accuracy ring around the BlueDot. */
1981
+ accuracyRing?: {
1982
+ /** The color of the accuracy ring. */
1983
+ color?: string;
1984
+ /** The opacity of the accuracy ring. */
1985
+ opacity?: number;
1986
+ };
1987
+ /**
1988
+ * Options for the bearing directional indicator.
1989
+ */
1990
+ bearing?: {
1991
+ /** The color of the bearing cone. */
1992
+ color?: string;
1993
+ /** The opacity of the bearing cone. */
1994
+ opacity?: number;
1995
+ };
1996
+ };
1997
+ export type LanguagePackHydrationItem = {
1998
+ language: Language;
1999
+ localePack: ParsedMVFLocalePack;
2000
+ };
1667
2001
  }
1668
2002
 
1669
2003
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects' {
1670
2004
  export { Label } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/label';
1671
2005
  export { Marker } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/marker';
2006
+ export { Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/image';
1672
2007
  export { Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/model';
1673
2008
  export { Path } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path';
1674
2009
  export { CameraTransform } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/camera-transform';
@@ -1676,8 +2011,9 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects' {
1676
2011
  }
1677
2012
 
1678
2013
  declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
1679
- import type { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
1680
2014
  import type { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
2015
+ import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
2016
+ import type { RendererCore } from '@mappedin/core-sdk';
1681
2017
  /**
1682
2018
  * Options for navigation.
1683
2019
  */
@@ -1738,14 +2074,19 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
1738
2074
  animateArrowsOnPath?: boolean;
1739
2075
  };
1740
2076
  /**
1741
- * Options for the departure and destination polygons.
2077
+ * Options for the markers at the departure and destination.
1742
2078
  */
1743
- polygons?: {
2079
+ markerOptions?: {
1744
2080
  /**
1745
- * The color of the departure polygon.
1746
- * @default '#40A9FF'
2081
+ * The color of the departure marker.
2082
+ * @default '#1890FF'
2083
+ */
2084
+ departureColor?: string;
2085
+ /**
2086
+ * The color of the destination marker.
2087
+ * @default '#722ED1'
1747
2088
  */
1748
- departure?: string;
2089
+ destinationColor?: string;
1749
2090
  };
1750
2091
  };
1751
2092
  export class Navigation {
@@ -1753,18 +2094,24 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/navigation' {
1753
2094
  /**
1754
2095
  * @internal
1755
2096
  */
1756
- constructor(mapView: MapView);
2097
+ get currentMap(): GeojsonApiMapObject;
2098
+ /**
2099
+ * @internal
2100
+ */
2101
+ constructor(core: RendererCore, currentMapGetter: CurrentMapGetter);
1757
2102
  /**
1758
2103
  * Draws the specified directions on the map.
1759
2104
  * @param directions The directions to be drawn.
1760
2105
  * @param options Optional additional options for the navigation.
1761
2106
  */
1762
- draw: (directions: Directions, options?: TNavigationOptions) => Promise<void>;
2107
+ draw: (directions: Directions, options?: TNavigationOptions) => Promise<unknown>;
1763
2108
  /**
1764
2109
  * Clears any drawn navigation paths or directions from the map.
1765
2110
  */
1766
2111
  clear: () => void;
1767
2112
  }
2113
+ type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
2114
+ export {};
1768
2115
  }
1769
2116
 
1770
2117
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson' {
@@ -1779,39 +2126,274 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson' {
1779
2126
  export { Directions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions';
1780
2127
  export { Style } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/style';
1781
2128
  export { default as Outdoor } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor';
2129
+ export { Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images';
1782
2130
  }
1783
2131
 
1784
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps' {
1785
- import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
1786
- import type { RendererCore } from '@mappedin/core-sdk';
1787
- import type { FloorObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object';
1788
- import { PubSub } from '@packages/internal/common';
1789
- export const GAP_BELOW_FLOORS = 30;
1790
- export const DURATION = 1000;
1791
- export type TStackedMapsEvents = {
1792
- expanded: void;
1793
- collapsed: void;
1794
- };
1795
- export class StackedMaps extends PubSub<TStackedMapsEvents> {
1796
- #private;
1797
- constructor(api: GeojsonApiMapObject, core: RendererCore);
1798
- includedFloors: FloorObject[];
1799
- get percentExpanded(): number;
1800
- set percentExpanded(value: number);
1801
- animateToCurrentFloor(): void;
1802
- expanded: boolean;
1803
- expand(opts?: {
1804
- excludeFloorIds: string[];
1805
- }): Promise<void>;
1806
- collapse(): Promise<void>;
1807
- animate(direction: 'expand' | 'collapse'): Promise<void>;
1808
- }
2132
+ declare module '@mappedin/mappedin-js/mappedin-js/src/search' {
2133
+ export type { SearchResult, SearchResultItem, SearchOptions, Suggestion, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search/internal';
2134
+ export type { SearchState } from '@mappedin/mappedin-js/mappedin-js/src/search/external';
2135
+ export { Search } from '@mappedin/mappedin-js/mappedin-js/src/search/external';
1809
2136
  }
1810
2137
 
1811
- declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/camera-transform' {
1812
- import type { Camera } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
1813
- /**
1814
- * Class representing camera transformation data.
2138
+ declare module '@mappedin/mappedin-js/mappedin-js/src/analytics' {
2139
+ export { Analytics, AnalyticsInternal } from '@mappedin/mappedin-js/mappedin-js/src/analytics/customer';
2140
+ export type { AnalyticsUpdateOptions, AnalyticState, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics/customer';
2141
+ }
2142
+
2143
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category' {
2144
+ import type { EnterpriseCategory as MVFEnterpriseCategory } from '@mappedin/mvf';
2145
+ import type { MapDataInternal, EnterpriseLocation } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2146
+ import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
2147
+ /**
2148
+ * An EnterpriseCategory is a collection of similar EnterpriseLocations.
2149
+ *
2150
+ */
2151
+ class EnterpriseCategory extends BaseMapData implements Omit<MVFEnterpriseCategory, 'children' | 'locations'> {
2152
+ #private;
2153
+ /**
2154
+ * @internal
2155
+ */
2156
+ static readonly __type = "enterprise-category";
2157
+ /**
2158
+ * @internal
2159
+ */
2160
+ readonly __type = "enterprise-category";
2161
+ name: string;
2162
+ color?: string | undefined;
2163
+ externalId: string;
2164
+ extra?: Record<string, unknown> | undefined;
2165
+ icon?: string | undefined;
2166
+ iconFromDefaultList?: string | null | undefined;
2167
+ sortOrder: number;
2168
+ /**
2169
+ * Checks if the provided instance is of type EnterpriseCategory.
2170
+ *
2171
+ * @param instance The instance to check.
2172
+ * @returns {boolean} True if the instance is a EnterpriseCategory, false otherwise.
2173
+ */
2174
+ static is(instance: object): instance is EnterpriseCategory;
2175
+ /**
2176
+ * @internal
2177
+ */
2178
+ constructor(data: MapDataInternal, options: {
2179
+ mvfData: MVFEnterpriseCategory;
2180
+ });
2181
+ get children(): EnterpriseCategory[];
2182
+ get locations(): EnterpriseLocation[];
2183
+ /**
2184
+ * Serializes the EnterpriseCategory data to JSON.
2185
+ *
2186
+ * @returns An object representing the EnterpriseCategory.
2187
+ */
2188
+ toJSON(): {
2189
+ id: string;
2190
+ name: string;
2191
+ };
2192
+ /**
2193
+ * Cleans up resources used by the instance.
2194
+ *
2195
+ * @internal
2196
+ */
2197
+ destroy(): void;
2198
+ }
2199
+ export default EnterpriseCategory;
2200
+ }
2201
+
2202
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location' {
2203
+ import type { EnterpriseLocation as MVFEnterpriseLocation, LocationState, OperationHours, SiblingGroup } from '@mappedin/mvf';
2204
+ import type { Coordinate, MapDataInternal, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2205
+ import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
2206
+ import type Node from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node';
2207
+ /**
2208
+ * A class representing enterprise location data within the map.
2209
+ *
2210
+ * An EnterpriseLocation is something like a store, or a washroom on a map.
2211
+ */
2212
+ class EnterpriseLocation extends BaseMapData implements Omit<MVFEnterpriseLocation, 'polygons' | 'nodes' | 'links'> {
2213
+ #private;
2214
+ /**
2215
+ * @internal
2216
+ */
2217
+ static readonly __type = "enterprise-location";
2218
+ /**
2219
+ * @internal
2220
+ */
2221
+ readonly __type = "enterprise-location";
2222
+ description?: string | undefined;
2223
+ name: string;
2224
+ amenity?: string | undefined;
2225
+ externalId: string;
2226
+ extra?: Record<string, unknown> | undefined;
2227
+ gallery?: {
2228
+ caption?: string | null;
2229
+ image: string;
2230
+ embeddedUrl?: string | null;
2231
+ }[] | undefined;
2232
+ logo?: string | undefined;
2233
+ operationHours?: OperationHours[] | undefined;
2234
+ phone?: {
2235
+ number: string;
2236
+ extension?: string;
2237
+ } | undefined;
2238
+ picture?: string | undefined;
2239
+ shortName?: string | undefined;
2240
+ showFloatingLabelWhenImagePresent?: boolean | undefined;
2241
+ showLogo?: boolean | undefined;
2242
+ siblingGroups?: SiblingGroup[] | undefined;
2243
+ social?: {
2244
+ facebook?: string;
2245
+ instagram?: string;
2246
+ twitter?: string;
2247
+ website?: string;
2248
+ } | undefined;
2249
+ sortOrder: number;
2250
+ states?: LocationState[] | undefined;
2251
+ tags?: string[] | undefined;
2252
+ type: string;
2253
+ /**
2254
+ * Checks if the provided instance is of type EnterpriseLocation.
2255
+ *
2256
+ * @param instance The instance to check.
2257
+ * @returns {boolean} True if the instance is a EnterpriseLocation, false otherwise.
2258
+ */
2259
+ static is(instance: object): instance is EnterpriseLocation;
2260
+ /**
2261
+ * @internal
2262
+ */
2263
+ constructor(data: MapDataInternal, options: {
2264
+ mvfData: MVFEnterpriseLocation;
2265
+ });
2266
+ get coordinates(): Coordinate[];
2267
+ get nodes(): Node[];
2268
+ get spaces(): Space[];
2269
+ /**
2270
+ * Serializes the EnterpriseLocation data to JSON.
2271
+ *
2272
+ * @returns An object representing the EnterpriseLocation.
2273
+ */
2274
+ toJSON(): {
2275
+ id: string;
2276
+ name: string;
2277
+ };
2278
+ /**
2279
+ * Cleans up resources used by the instance.
2280
+ *
2281
+ * @internal
2282
+ */
2283
+ destroy(): void;
2284
+ }
2285
+ export default EnterpriseLocation;
2286
+ }
2287
+
2288
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/venue' {
2289
+ import type { EnterpriseVenue as MVFEnterpriseVenue, Language } from '@mappedin/mvf';
2290
+ import type { Hyperlink, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2291
+ import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
2292
+ /**
2293
+ * An EnterpriseVenue is a specific place (like a mall, office building, or stadium) with one or more Floors
2294
+ */
2295
+ class EnterpriseVenue extends BaseMapData implements MVFEnterpriseVenue {
2296
+ #private;
2297
+ /**
2298
+ * @internal
2299
+ */
2300
+ static readonly __type = "enterprise-venue";
2301
+ /**
2302
+ * @internal
2303
+ */
2304
+ readonly __type = "enterprise-venue";
2305
+ countrycode?: string | undefined;
2306
+ externalId: string;
2307
+ defaultLanguage: Language;
2308
+ defaultMap?: string | undefined;
2309
+ extra?: Record<string, unknown> | undefined;
2310
+ icon?: string | undefined;
2311
+ languages: Language[];
2312
+ links: Hyperlink[];
2313
+ logo?: string | undefined;
2314
+ mappedinWebUrl?: string | undefined;
2315
+ slug: string;
2316
+ topLocations?: string[] | undefined;
2317
+ tzid?: string | undefined;
2318
+ /**
2319
+ * Checks if the provided instance is of type EnterpriseVenue.
2320
+ *
2321
+ * @param instance The instance to check.
2322
+ * @returns {boolean} True if the instance is a EnterpriseVenue, false otherwise.
2323
+ */
2324
+ static is(instance: object): instance is EnterpriseVenue;
2325
+ /**
2326
+ * @internal
2327
+ */
2328
+ constructor(_data: MapDataInternal, options: {
2329
+ mvfData: MVFEnterpriseVenue;
2330
+ });
2331
+ /**
2332
+ * Gets the name of the EnterpriseVenue.
2333
+ *
2334
+ * @returns {string} The name of the EnterpriseVenue.
2335
+ */
2336
+ get name(): string;
2337
+ /**
2338
+ * Serializes the EnterpriseVenue data to JSON.
2339
+ *
2340
+ * @returns An object representing the EnterpriseVenue.
2341
+ */
2342
+ toJSON(): {
2343
+ id: string;
2344
+ name: string;
2345
+ };
2346
+ /**
2347
+ * Cleans up resources used by the instance.
2348
+ *
2349
+ * @internal
2350
+ */
2351
+ destroy(): void;
2352
+ }
2353
+ export default EnterpriseVenue;
2354
+ }
2355
+
2356
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps' {
2357
+ import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
2358
+ import type { RendererCore } from '@mappedin/core-sdk';
2359
+ import TWEEN from '@tweenjs/tween.js';
2360
+ import { PubSub } from '@packages/internal/common';
2361
+ import type { TFocusOnOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
2362
+ export const GAP_BELOW_FLOORS = 50;
2363
+ export const DURATION = 1000;
2364
+ export type TStackedMapsEvents = {
2365
+ expanded: void;
2366
+ collapsed: void;
2367
+ };
2368
+ export type TShowStackOptions = {
2369
+ numFloors?: number;
2370
+ cameraOptions?: TFocusOnOptions;
2371
+ };
2372
+ export class StackedMaps extends PubSub<TStackedMapsEvents> {
2373
+ #private;
2374
+ constructor(api: GeojsonApiMapObject, core: RendererCore);
2375
+ percentExpanded: number;
2376
+ animateToCurrentFloorTween: TWEEN.Tween | null;
2377
+ expanded: boolean;
2378
+ handlePreRender: () => void;
2379
+ handleUserInteractionStart: () => void;
2380
+ handleUserInteractionEnd: () => void;
2381
+ animateToCurrentFloor(): Promise<void>;
2382
+ expand(opts?: {
2383
+ excludeFloorIds: string[];
2384
+ }): Promise<void>;
2385
+ collapse(): Promise<void>;
2386
+ showStack(opts?: TShowStackOptions): Promise<void>;
2387
+ animate(direction: 'expand' | 'collapse', options?: {
2388
+ duration: number;
2389
+ }): Promise<void>;
2390
+ }
2391
+ }
2392
+
2393
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/camera-transform' {
2394
+ import type { Camera } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
2395
+ /**
2396
+ * Class representing camera transformation data.
1815
2397
  */
1816
2398
  export class CameraTransform {
1817
2399
  #private;
@@ -2017,9 +2599,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door' {
2017
2599
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space' {
2018
2600
  import type { Image, SpaceCollection } from '@mappedin/mvf';
2019
2601
  import Coordinate from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/coordinate';
2020
- import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2602
+ import type { EnterpriseLocation, MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2021
2603
  import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
2022
2604
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
2605
+ import type Door from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door';
2023
2606
  /**
2024
2607
  * Represents the various types of spaces that can be defined within a map.
2025
2608
  * - 'room': A standard room or enclosed area.
@@ -2074,6 +2657,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space' {
2074
2657
  get type(): TSpaceType;
2075
2658
  get description(): string;
2076
2659
  get images(): Image[];
2660
+ /**
2661
+ * @internal
2662
+ */
2663
+ get locations(): EnterpriseLocation[];
2077
2664
  /**
2078
2665
  * Gets the {@link Floor} object associated with the space.
2079
2666
  *
@@ -2081,6 +2668,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space' {
2081
2668
  * @throws Will throw an error if the floor is not found.
2082
2669
  */
2083
2670
  get floor(): Floor;
2671
+ /**
2672
+ * Gets the array of {@link Door}s associated with the space.
2673
+ *
2674
+ * @returns {Door[]} The doors array.
2675
+ */
2676
+ get doors(): Door[];
2084
2677
  /**
2085
2678
  * Gets the center {@link Coordinate} of the space.
2086
2679
  *
@@ -2119,8 +2712,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space' {
2119
2712
  }
2120
2713
 
2121
2714
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor' {
2122
- import type { Map } from '@mappedin/mvf';
2123
- import type { Annotation, Connection, Door, MapDataInternal, PointOfInterest, Space, MapObject } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2715
+ import type { FloorProperties as MVFFloor } from '@mappedin/mvf';
2716
+ import type { Annotation, Connection, Door, MapDataInternal, PointOfInterest, Space, MapObject, FloorStack } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2124
2717
  import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
2125
2718
  /**
2126
2719
  * A class representing floor data within the map.
@@ -2148,7 +2741,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor' {
2148
2741
  * @internal
2149
2742
  */
2150
2743
  constructor(data: MapDataInternal, options: {
2151
- mvfData: Map;
2744
+ mvfData: MVFFloor;
2152
2745
  });
2153
2746
  /**
2154
2747
  * Gets the name of the floor.
@@ -2198,6 +2791,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor' {
2198
2791
  * @returns {PointOfInterest[]} An array of PointOfInterest objects on this floor.
2199
2792
  */
2200
2793
  get pois(): PointOfInterest[];
2794
+ /**
2795
+ * Gets the FloorStack ({@link FloorStack}) that this floor belongs to.
2796
+ *
2797
+ * @returns {FloorStack} The FloorStack that this floor belongs to.
2798
+ */
2799
+ get floorStack(): FloorStack;
2201
2800
  /**
2202
2801
  * Serializes the floor data to JSON.
2203
2802
  *
@@ -2265,6 +2864,8 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/connectio
2265
2864
  get name(): string;
2266
2865
  get description(): string;
2267
2866
  get images(): Image[];
2867
+ get externalId(): string;
2868
+ /**
2268
2869
  /**
2269
2870
  * Gets the type of the connection.
2270
2871
  *
@@ -2292,6 +2893,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/connectio
2292
2893
  id: string;
2293
2894
  name: string;
2294
2895
  type: string;
2896
+ externalId: string;
2295
2897
  coordinates: {
2296
2898
  latitude: number;
2297
2899
  longitude: number;
@@ -2759,16 +3361,191 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/image' {
2759
3361
  export default Image;
2760
3362
  }
2761
3363
 
3364
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-stack' {
3365
+ import type { FloorStack as MVFFloorStack } from '@mappedin/mvf';
3366
+ import type { MapDataInternal, Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3367
+ import BaseMapData from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object';
3368
+ /**
3369
+ * A class representing floor stack data within the map.
3370
+ *
3371
+ * FloorStacks are used to represent a group of floors that are part of a single entity.
3372
+ */
3373
+ class FloorStack extends BaseMapData {
3374
+ #private;
3375
+ /**
3376
+ * @internal
3377
+ */
3378
+ static readonly __type = "floor-stack";
3379
+ /**
3380
+ * @internal
3381
+ */
3382
+ readonly __type = "floor-stack";
3383
+ /**
3384
+ * Checks if the provided instance is of type FloorStack.
3385
+ *
3386
+ * @param instance The instance to check.
3387
+ * @returns {boolean} True if the instance is a FloorStack, false otherwise.
3388
+ */
3389
+ static is(instance: object): instance is FloorStack;
3390
+ /**
3391
+ * @internal
3392
+ */
3393
+ constructor(data: MapDataInternal, options: {
3394
+ mvfData: MVFFloorStack;
3395
+ });
3396
+ /**
3397
+ * Gets the type of FloorStack.
3398
+ */
3399
+ get type(): MVFFloorStack['type'];
3400
+ /**
3401
+ * Gets the name of the FloorStack.
3402
+ *
3403
+ * @returns {string} The name of the FloorStack.
3404
+ */
3405
+ get name(): string;
3406
+ /**
3407
+ * Gets the floors ({@link Floor}) included in this FloorStack.
3408
+ *
3409
+ * @returns {Floor[]} An array of Floor objects in this FloorStack.
3410
+ */
3411
+ get floors(): Floor[];
3412
+ /**
3413
+ * Serializes the FloorStack data to JSON.
3414
+ *
3415
+ * @returns An object representing the FloorStack.
3416
+ */
3417
+ toJSON(): {
3418
+ id: string;
3419
+ name: string;
3420
+ type: "Building" | "Outdoor" | undefined;
3421
+ floors: string[];
3422
+ };
3423
+ /**
3424
+ * Cleans up resources used by the instance.
3425
+ *
3426
+ * @internal
3427
+ */
3428
+ destroy(): void;
3429
+ }
3430
+ export default FloorStack;
3431
+ }
3432
+
3433
+ declare module '@mappedin/mappedin-js/mappedin-js/src/utils/data-creation' {
3434
+ import type { Feature, FloorProperties as MVFFloor, FloorStack as MVFFloorStack, NodeCollection, ObstructionCollection, Point, SpaceCollection, SpaceProperties, Connection as MVFConnection, EntranceCollection, AnnotationCollection, ParsedMVF, EnterpriseLocation as MVFEnterpriseLocation, EnterpriseLocationId as MVFEnterpriseLocationId, EnterpriseCategoryId as MVFEnterpriseCategoryId, EnterpriseCategory as MVFEnterpriseCategory, EnterpriseVenue as MVFEnterpriseVenue } from '@mappedin/mvf';
3435
+ import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3436
+ import { Annotation, Connection, Door, Floor, MapObject, PointOfInterest, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3437
+ import Node from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node';
3438
+ import EnterpriseLocation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/location';
3439
+ import EnterpriseCategory from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/category';
3440
+ import FloorStack from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor-stack';
3441
+ export type MapDataRecords = {
3442
+ spacesById: Record<string, Space>;
3443
+ nodesById: Record<string, Node>;
3444
+ objectsById: Record<string, MapObject>;
3445
+ floorsById: Record<string, Floor>;
3446
+ floorStacksById: Record<string, FloorStack>;
3447
+ connectionsById: Record<string, Connection>;
3448
+ doorsById: Record<string, Door>;
3449
+ doorsByNodeId: Record<string, Door>;
3450
+ poisById: Record<string, PointOfInterest>;
3451
+ annotationsById: Record<string, Annotation>;
3452
+ locationsById: Record<MVFEnterpriseLocationId, EnterpriseLocation>;
3453
+ categoriesById: Record<MVFEnterpriseCategoryId, EnterpriseCategory>;
3454
+ venue: MVFEnterpriseVenue;
3455
+ spaceIdsByDestinationNodeId: Record<string, string[]>;
3456
+ objectEntranceNodeIdsByObstructionId: Record<string, string[]>;
3457
+ obstructionIdByEntranceId: Record<string, string>;
3458
+ connectionIdsByLatLon: Record<string, string[]>;
3459
+ mvfSpacesById: Record<string, SpaceCollection['features'][number]>;
3460
+ mvfNodesById: Record<string, NodeCollection['features'][number]>;
3461
+ mvfObstructionById: Record<string, ObstructionCollection['features'][number]>;
3462
+ mvfFloorsById: Record<string, MVFFloor>;
3463
+ mvfFloorStacksById: Record<string, MVFFloorStack>;
3464
+ mvfConnectionsById: Record<string, MVFConnection>;
3465
+ mvfConnectionsByNodeId: Record<string, MVFConnection>;
3466
+ mvfEntrancesById: Record<string, EntranceCollection['features'][number]>;
3467
+ mvfAnnotationsById: Record<string, AnnotationCollection['features'][number]>;
3468
+ mvfCategoriesById: Record<string, MVFEnterpriseCategory>;
3469
+ mvfLocationsById: Record<string, MVFEnterpriseLocation>;
3470
+ mvfLocationsBySpaceId: Record<string, MVFEnterpriseLocation[]>;
3471
+ };
3472
+ export const processMVFFloors: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorsById" | "mvfFloorsById">;
3473
+ export const processMVFFloorStacks: (mvf: ParsedMVF, data: MapDataInternal) => Pick<MapDataRecords, "floorStacksById" | "mvfFloorStacksById">;
3474
+ /**
3475
+ * @internal
3476
+ */
3477
+ export const createEnterpriseDataFromMVF: (mvf: ParsedMVF, data: MapDataInternal) => {
3478
+ locationsBySpaceId: Record<string, MVFEnterpriseLocation[]>;
3479
+ mvfLocationsById: Record<string, MVFEnterpriseLocation>;
3480
+ mvfCategoriesById: Record<string, MVFEnterpriseCategory>;
3481
+ locationsById: Record<string, EnterpriseLocation>;
3482
+ categoriesById: Record<string, EnterpriseCategory>;
3483
+ venue: MVFEnterpriseVenue;
3484
+ };
3485
+ /**
3486
+ * @internal
3487
+ */
3488
+ export const createDataFromMVF: (mvf: ParsedMVF, data: MapDataInternal) => {
3489
+ spacesById: Record<string, Space>;
3490
+ nodesById: Record<string, Node>;
3491
+ objectsById: Record<string, MapObject>;
3492
+ floorsById: Record<string, Floor>;
3493
+ floorStacksById: Record<string, FloorStack>;
3494
+ connectionsById: Record<string, Connection>;
3495
+ doorsById: Record<string, Door>;
3496
+ doorsByNodeId: Record<string, Door>;
3497
+ poisById: Record<string, PointOfInterest>;
3498
+ annotationsById: Record<string, Annotation>;
3499
+ spaceIdsByDestinationNodeId: Record<string, string[]>;
3500
+ objectEntranceNodeIdsByObstructionId: Record<string, string[]>;
3501
+ obstructionIdByEntranceId: Record<string, string>;
3502
+ connectionIdsByLatLon: Record<string, string[]>;
3503
+ mvfSpacesById: Record<string, Feature<Point | import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon, SpaceProperties>>;
3504
+ mvfNodesById: Record<string, Feature<Point, import("@mappedin/mvf").NodeProperties>>;
3505
+ mvfObstructionById: Record<string, Feature<import("@mappedin/mvf").LineString | import("@mappedin/mvf").Polygon, import("@mappedin/mvf").ObstructionProperties>>;
3506
+ mvfFloorsById: Record<string, MVFFloor>;
3507
+ mvfFloorStacksById: Record<string, MVFFloorStack>;
3508
+ mvfConnectionsById: Record<string, MVFConnection>;
3509
+ mvfConnectionsByNodeId: Record<string, MVFConnection>;
3510
+ mvfEntrancesById: Record<string, Feature<import("@mappedin/mvf").LineString, import("@mappedin/mvf").EntranceProperties>>;
3511
+ mvfAnnotationsById: Record<string, {
3512
+ type: import("@mappedin/mvf").FeatureType;
3513
+ geometry: Point;
3514
+ properties: import("@mappedin/mvf").AnnotationProperties;
3515
+ }>;
3516
+ };
3517
+ }
3518
+
2762
3519
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/types' {
2763
3520
  import type Door from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/door';
2764
3521
  import type Floor from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/floor';
2765
- import type Node from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/node';
2766
3522
  import type Space from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/space';
2767
3523
  import type PointOfInterest from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/poi';
2768
3524
  import type Annotation from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/annotation';
2769
3525
  import type Connection from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/connection';
2770
3526
  import type MapObject from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/object';
2771
- export type MapDataObjects = Space | Floor | Node | Door | Connection | MapObject | PointOfInterest | Annotation;
3527
+ import type { EnterpriseLocation as MvfEnterpriseLocation, EnterpriseCategory as MvfEnterpriseCategory, ParsedMVFLocalePack } from '@mappedin/mvf';
3528
+ import type { PartialExcept } from '@mappedin/mvf/dist/locale';
3529
+ /**
3530
+ * Places are the main objects that can be searched for.
3531
+ */
3532
+ export type Places = Space | Floor | Door | Connection | MapObject | PointOfInterest | Annotation;
3533
+ export type LocationWithLocale = PartialExcept<MvfEnterpriseLocation, 'id'>;
3534
+ export type CategoryWithLocale = PartialExcept<MvfEnterpriseCategory, 'id'>;
3535
+ export type LanguagePack = {
3536
+ type: 'downloaded';
3537
+ data: ParsedMVFLocalePack;
3538
+ optimized: {
3539
+ locations: Record<string, LocationWithLocale> | undefined;
3540
+ categories: Record<string, CategoryWithLocale> | undefined;
3541
+ };
3542
+ } | {
3543
+ type: 'initial';
3544
+ optimized: {
3545
+ locations: Record<string, MvfEnterpriseLocation>;
3546
+ categories: Record<string, MvfEnterpriseCategory>;
3547
+ };
3548
+ };
2772
3549
  }
2773
3550
 
2774
3551
  declare module '@mappedin/mappedin-js/mappedin-js/src' {
@@ -2779,11 +3556,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
2779
3556
  import type { Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
2780
3557
  import type { ParsedMVF as TMVF, StyleCollection as TMVFStyleCollection, Style as TMVFStyle, LineStringStyle as TMVFLineStringStyle, PolygonStyle as TMVFPolygonStyle, PointStyle as TMVFPointStyle } from '@mappedin/mvf';
2781
3558
  import { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
2782
- import type { Shading, PaintStyle, LineStyle, WatermarkOptions, Position } from '@mappedin/mappedin-js/geojson/src';
3559
+ import type { Shading, PaintStyle, LineStyle, WatermarkOptions } from '@mappedin/mappedin-js/geojson/src';
2783
3560
  import { enableTestMode } from '@mappedin/mappedin-js/geojson/src';
2784
3561
  export type { PubSub } from '@packages/internal/common/pubsub';
2785
- import { MapLibreOverlay } from '@mappedin/mappedin-js/geojson/src/maplibre-overlay';
2786
- import { analytics } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
3562
+ import { MappedinMapLibreOverlay } from '@mappedin/mappedin-js/mappedin-js/src/maplibre-overlay';
3563
+ import type { LanguagePackHydrationItem } from '@mappedin/mappedin-js/mappedin-js/src/types';
2787
3564
  export { setLoggerLevel, E_SDK_LOG_LEVEL } from '@packages/internal/common/Mappedin.Logger';
2788
3565
  /**
2789
3566
  * Represents all the available antialiasing options.
@@ -2888,6 +3665,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
2888
3665
  */
2889
3666
  autoRenderBeauty?: boolean;
2890
3667
  };
3668
+ /**
3669
+ * @interface
3670
+ * Options for the watermark.
3671
+ */
3672
+ export type TWatermarkOptions = Omit<WatermarkOptions, 'visible'>;
2891
3673
  /**
2892
3674
  * Options for showing a 3D map.
2893
3675
  *
@@ -2961,18 +3743,22 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
2961
3743
  *
2962
3744
  * @hidden
2963
3745
  */
2964
- watermark?: WatermarkOptions;
3746
+ watermark?: TWatermarkOptions;
2965
3747
  /**
2966
3748
  * Options for the attribution control.
2967
3749
  *
2968
3750
  * @hidden
2969
3751
  */
2970
3752
  attribution?: {
3753
+ /**
3754
+ * Custom attribution content.
3755
+ */
3756
+ custom?: string[];
2971
3757
  /**
2972
3758
  * Attribution position.
2973
3759
  * @default 'bottom-right'
2974
3760
  */
2975
- position: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
3761
+ position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
2976
3762
  };
2977
3763
  /**
2978
3764
  * First floor to be rendered.
@@ -2995,6 +3781,14 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
2995
3781
  * @experimental
2996
3782
  */
2997
3783
  style?: {
3784
+ /**
3785
+ * Background color. Only relevant if outdoor map is disabled.
3786
+ */
3787
+ backgroundColor?: string;
3788
+ /**
3789
+ * Background alpha value. Only relevant if outdoor map is disabled.
3790
+ */
3791
+ backgroundAlpha?: number;
2998
3792
  /**
2999
3793
  * Set the global shading for all elements. True will use default values, false will disable shading.
3000
3794
  * @default true
@@ -3016,10 +3810,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3016
3810
  *
3017
3811
  * Returns a {@link MapData} instance from a parsed MVF object.
3018
3812
  */
3019
- export const hydrateMapDataFromMVF: (mvf: TMVF, options?: TGetMapDataWithCredentialsOptions) => Promise<MapData>;
3020
- export const getMapDataEnterprise: (userOptions: TGetMapDataOptions) => Promise<MapData>;
3813
+ export const hydrateMapDataFromMVF: (mvf: TMVF, options?: TGetMapDataWithCredentialsOptions & {
3814
+ languagePacks?: LanguagePackHydrationItem[];
3815
+ }) => Promise<MapData>;
3021
3816
  /**
3022
- * @internal temporary until we can detect which route to use based on keys
3817
+ * @internal
3818
+ * @deprecated Use {@link getMapData} and enterprise will be inferred from key/secret.
3023
3819
  */
3024
3820
  export function setUseEnterpriseAPI(value: boolean): void;
3025
3821
  /**
@@ -3032,26 +3828,11 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3032
3828
  * const data = await getMapData({ key: 'api_key', secret: 'api_secret', mapId: 'id' });
3033
3829
  */
3034
3830
  export const getMapData: (userOptions: TGetMapDataOptions) => Promise<MapData>;
3035
- class MappedinMapLibreOverlay extends MapLibreOverlay<{
3036
- /**
3037
- * Event emitted when the MappedinMap is loaded
3038
- */
3039
- loaded: {
3040
- /**
3041
- * MapView instance
3042
- */
3043
- mapView: MapView;
3044
- /**
3045
- * MapData instance
3046
- */
3047
- mapData: MapData;
3048
- };
3049
- }> {
3050
- #private;
3051
- static instance: MappedinMapLibreOverlay;
3052
- constructor(origin: Position | undefined, mapData: MapData, options?: TShow3DMapOptions);
3053
- onAdd(map: any): HTMLDivElement;
3054
- }
3831
+ /**
3832
+ * @internal
3833
+ * @deprecated Use {@link getMapData} and enterprise will be inferred from key/secret.
3834
+ */
3835
+ export const getMapDataEnterprise: (userOptions: TGetMapDataOptions) => Promise<MapData>;
3055
3836
  /**
3056
3837
  * Create a MapLibre overlay with a Map to render it within existing MapLibre projects.
3057
3838
  * @experimental
@@ -3062,38 +3843,32 @@ declare module '@mappedin/mappedin-js/mappedin-js/src' {
3062
3843
  export { parseMVF, unzipMVF, enableTestMode };
3063
3844
  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, };
3064
3845
  export type * from 'geojson';
3065
- 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, } from '@mappedin/mappedin-js/mappedin-js/src/types';
3846
+ 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';
3847
+ export { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
3066
3848
  export type { Label, Marker, Path, Shape, CameraTransform, Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
3067
3849
  export type { Navigation, TNavigationOptions } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
3068
3850
  export type { TSpaceType } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3069
- export { Coordinate, Annotation, Connection, Door, Floor, MapObject, PointOfInterest, Space, Image, Hyperlink, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3070
- export type { Camera, Models, Labels, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
3071
- export { analytics };
3851
+ export { Coordinate, Annotation, Connection, Door, Floor, FloorStack, MapObject, PointOfInterest, Space, Image, Hyperlink, EnterpriseLocation, EnterpriseCategory, EnterpriseVenue, type Places, } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
3852
+ export type { Camera, Models, Labels, Markers, Paths, Exporter, Directions, Style, Shapes, Outdoor, Images, } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson';
3853
+ export type { SearchResult, SearchResultItem, SearchResultEnterpriseCategory, SearchResultEnterpriseLocations, SearchResultPlaces, SearchOptions, Search, Suggestion, MatchInfo, } from '@mappedin/mappedin-js/mappedin-js/src/search';
3854
+ export type { Analytics, TAnalyticsUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/analytics';
3072
3855
  }
3073
3856
 
3074
3857
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot' {
3075
3858
  import type { RendererCore } from '@mappedin/core-sdk';
3076
3859
  import { PubSub } from '@packages/internal/common';
3077
3860
  import type { GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
3861
+ import type { TBlueDotOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
3078
3862
  export type TBlueDotEvents = {
3079
3863
  'floor-change': {
3080
3864
  reason: 'blue-dot-floor-change';
3081
3865
  floorId: string;
3082
3866
  };
3083
3867
  };
3084
- export const POSITION_ANIMATION_DURATION = 500;
3085
- export const SCALE_ANIMATION_DURATION = 150;
3086
- export const ROTATION_ANIMATION_DURATION = 150;
3087
- export const MIN_AURA_RADIUS = 0;
3088
- export const MAX_AURA_RADIUS = 5;
3089
- export const MIN_ACCURACY = 5;
3090
- export const MAX_ACCURACY = 30;
3091
- export const CONE_START_RADIUS = 0.4;
3092
- export const CONE_DISTANCE = 1.25;
3093
- export const BLUE_DOT_RADIUS = 0.35;
3094
3868
  export class BlueDot extends PubSub<TBlueDotEvents> {
3869
+ #private;
3095
3870
  constructor(core: RendererCore, geoJSONApi: GeoJsonApi);
3096
- enable(): void;
3871
+ enable(options?: TBlueDotOptions): void;
3097
3872
  disable(): void;
3098
3873
  }
3099
3874
  }
@@ -3133,12 +3908,12 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes' {
3133
3908
  */
3134
3909
  add<T extends FeatureCollection<Polygon | MultiPolygon | LineString, any>>(geometry: T, style: T extends FeatureCollection<LineString, any> ? LineStyle : PaintStyle, floor?: Floor): Shape;
3135
3910
  /**
3136
- * Removes a specific shapes ({@link Shape}) from the map.
3137
- * @param shapes The shapes to be removed.
3911
+ * Removes a specific shape ({@link Shape}) from the map.
3912
+ * @param shape The shape to be removed.
3138
3913
  * @example
3139
3914
  * map.Shapes.remove(geo);
3140
3915
  */
3141
- remove(shapes: Shape): void;
3916
+ remove(shape: Shape): void;
3142
3917
  /**
3143
3918
  * Removes all Shapes ({@link Shape}) from the map.
3144
3919
  *
@@ -3155,8 +3930,9 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
3155
3930
  import './marker.scss';
3156
3931
  import { Vector2 } from 'three';
3157
3932
  import type { Entity2DHTMLDivElement, EntityId, Position } from '@mappedin/mappedin-js/geojson/src/types';
3158
- import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
3933
+ import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
3159
3934
  import type { CollisionRankingTier } from '@mappedin/mappedin-js/geojson/src/utils/collision-ranking-tier';
3935
+ import { z } from 'zod';
3160
3936
  /**
3161
3937
  * State reprsenting a Marker
3162
3938
  */
@@ -3203,6 +3979,26 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
3203
3979
  interactive?: boolean;
3204
3980
  };
3205
3981
  };
3982
+ export const addMarkerOptionsSchema: z.ZodObject<{
3983
+ rank: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["low", "medium", "high", "always-visible"]>, z.ZodNumber]>>;
3984
+ interactive: z.ZodOptional<z.ZodBoolean>;
3985
+ id: z.ZodOptional<z.ZodString>;
3986
+ anchor: z.ZodOptional<z.ZodEnum<["top", "bottom", "left", "right", "center"]>>;
3987
+ dynamicResize: z.ZodOptional<z.ZodBoolean>;
3988
+ }, "strip", z.ZodTypeAny, {
3989
+ interactive?: boolean | undefined;
3990
+ id?: string | undefined;
3991
+ anchor?: "center" | "left" | "right" | "bottom" | "top" | undefined;
3992
+ rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
3993
+ dynamicResize?: boolean | undefined;
3994
+ }, {
3995
+ interactive?: boolean | undefined;
3996
+ id?: string | undefined;
3997
+ anchor?: "center" | "left" | "right" | "bottom" | "top" | undefined;
3998
+ rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
3999
+ dynamicResize?: boolean | undefined;
4000
+ }>;
4001
+ export function validateMarker(coordinate: Position, contentHTML: string, options: AddMarkerOptions): void;
3206
4002
  /**
3207
4003
  * Options for creating a new Marker
3208
4004
  */
@@ -3286,10 +4082,18 @@ declare module '@mappedin/mappedin-js/geojson/src/components/marker' {
3286
4082
  }
3287
4083
 
3288
4084
  declare module '@mappedin/mappedin-js/geojson/src/components/path' {
3289
- import { type Mesh, type ShaderMaterial, type BufferGeometry, Vector3 } from 'three';
3290
- import type { Position } from '@mappedin/mappedin-js/geojson/src/types';
3291
- import { Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/three-d';
4085
+ import { Vector3 } from 'three';
4086
+ import type { Mesh, ShaderMaterial, BufferGeometry } from 'three';
4087
+ import type { EntityId, Position } from '@mappedin/mappedin-js/geojson/src/types';
4088
+ import { Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
3292
4089
  import type { FeatureCollection, Point } from 'geojson';
4090
+ import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
4091
+ export type PathProperties = {
4092
+ /**
4093
+ * The parentId of the point. The point will be anchored to the altitude of this parent group container.
4094
+ */
4095
+ parentId?: EntityId<GroupContainerState> | string | null;
4096
+ };
3293
4097
  /**
3294
4098
  * State representing a Path
3295
4099
  */
@@ -3361,7 +4165,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/path' {
3361
4165
  material?: ShaderMaterial;
3362
4166
  geometry?: BufferGeometry;
3363
4167
  outline?: Mesh;
3364
- feature: FeatureCollection<Point>;
4168
+ feature: FeatureCollection<Point, PathProperties>;
3365
4169
  options: AddPathOptions;
3366
4170
  nearRadius: number;
3367
4171
  farRadius: number;
@@ -3370,8 +4174,12 @@ declare module '@mappedin/mappedin-js/geojson/src/components/path' {
3370
4174
  altitudeAdjustment: number;
3371
4175
  displayArrowsOnPath: boolean;
3372
4176
  animateArrowsOnPath: boolean;
4177
+ /**
4178
+ * If the path is vertical it will be rebuilt whenever altitudeDirty = true. This will be set during the first render of the path.
4179
+ */
4180
+ isVertical: boolean;
3373
4181
  dirty: boolean;
3374
- constructor(feature: FeatureCollection<Point, any>, options?: AddPathOptions);
4182
+ constructor(feature: FeatureCollection<Point, PathProperties>, options?: AddPathOptions);
3375
4183
  setColor(): void;
3376
4184
  setOpacity(): void;
3377
4185
  set completeFraction(value: number);
@@ -3389,9 +4197,175 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
3389
4197
  import { Vector2 } from 'three';
3390
4198
  import type { TDrawFn } from '@packages/internal/shave-text/shave-text';
3391
4199
  import type { EntityId, Position } from '@mappedin/mappedin-js/geojson/src/types';
3392
- import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
4200
+ import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
3393
4201
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
3394
4202
  import type { CollisionRankingTier } from '@mappedin/mappedin-js/geojson/src';
4203
+ import { z } from 'zod';
4204
+ export const addLabelOptionsSchema: z.ZodObject<{
4205
+ rank: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["low", "medium", "high", "always-visible"]>, z.ZodNumber]>>;
4206
+ interactive: z.ZodOptional<z.ZodBoolean>;
4207
+ appearance: z.ZodOptional<z.ZodObject<{
4208
+ margin: z.ZodOptional<z.ZodNumber>;
4209
+ text: z.ZodOptional<z.ZodObject<{
4210
+ numLines: z.ZodOptional<z.ZodNumber>;
4211
+ lineHeight: z.ZodOptional<z.ZodNumber>;
4212
+ size: z.ZodOptional<z.ZodNumber>;
4213
+ maxWidth: z.ZodOptional<z.ZodNumber>;
4214
+ foregroundColor: z.ZodOptional<z.ZodString>;
4215
+ backgroundColor: z.ZodOptional<z.ZodString>;
4216
+ }, "strip", z.ZodTypeAny, {
4217
+ size?: number | undefined;
4218
+ maxWidth?: number | undefined;
4219
+ lineHeight?: number | undefined;
4220
+ numLines?: number | undefined;
4221
+ foregroundColor?: string | undefined;
4222
+ backgroundColor?: string | undefined;
4223
+ }, {
4224
+ size?: number | undefined;
4225
+ maxWidth?: number | undefined;
4226
+ lineHeight?: number | undefined;
4227
+ numLines?: number | undefined;
4228
+ foregroundColor?: string | undefined;
4229
+ backgroundColor?: string | undefined;
4230
+ }>>;
4231
+ marker: z.ZodOptional<z.ZodObject<{
4232
+ size: z.ZodOptional<z.ZodNumber>;
4233
+ foregroundColor: z.ZodOptional<z.ZodObject<{
4234
+ active: z.ZodOptional<z.ZodString>;
4235
+ inactive: z.ZodOptional<z.ZodString>;
4236
+ }, "strip", z.ZodTypeAny, {
4237
+ active?: string | undefined;
4238
+ inactive?: string | undefined;
4239
+ }, {
4240
+ active?: string | undefined;
4241
+ inactive?: string | undefined;
4242
+ }>>;
4243
+ backgroundColor: z.ZodOptional<z.ZodObject<{
4244
+ active: z.ZodOptional<z.ZodString>;
4245
+ inactive: z.ZodOptional<z.ZodString>;
4246
+ }, "strip", z.ZodTypeAny, {
4247
+ active?: string | undefined;
4248
+ inactive?: string | undefined;
4249
+ }, {
4250
+ active?: string | undefined;
4251
+ inactive?: string | undefined;
4252
+ }>>;
4253
+ }, "strip", z.ZodTypeAny, {
4254
+ size?: number | undefined;
4255
+ foregroundColor?: {
4256
+ active?: string | undefined;
4257
+ inactive?: string | undefined;
4258
+ } | undefined;
4259
+ backgroundColor?: {
4260
+ active?: string | undefined;
4261
+ inactive?: string | undefined;
4262
+ } | undefined;
4263
+ }, {
4264
+ size?: number | undefined;
4265
+ foregroundColor?: {
4266
+ active?: string | undefined;
4267
+ inactive?: string | undefined;
4268
+ } | undefined;
4269
+ backgroundColor?: {
4270
+ active?: string | undefined;
4271
+ inactive?: string | undefined;
4272
+ } | undefined;
4273
+ }>>;
4274
+ }, "strip", z.ZodTypeAny, {
4275
+ text?: {
4276
+ size?: number | undefined;
4277
+ maxWidth?: number | undefined;
4278
+ lineHeight?: number | undefined;
4279
+ numLines?: number | undefined;
4280
+ foregroundColor?: string | undefined;
4281
+ backgroundColor?: string | undefined;
4282
+ } | undefined;
4283
+ marker?: {
4284
+ size?: number | undefined;
4285
+ foregroundColor?: {
4286
+ active?: string | undefined;
4287
+ inactive?: string | undefined;
4288
+ } | undefined;
4289
+ backgroundColor?: {
4290
+ active?: string | undefined;
4291
+ inactive?: string | undefined;
4292
+ } | undefined;
4293
+ } | undefined;
4294
+ margin?: number | undefined;
4295
+ }, {
4296
+ text?: {
4297
+ size?: number | undefined;
4298
+ maxWidth?: number | undefined;
4299
+ lineHeight?: number | undefined;
4300
+ numLines?: number | undefined;
4301
+ foregroundColor?: string | undefined;
4302
+ backgroundColor?: string | undefined;
4303
+ } | undefined;
4304
+ marker?: {
4305
+ size?: number | undefined;
4306
+ foregroundColor?: {
4307
+ active?: string | undefined;
4308
+ inactive?: string | undefined;
4309
+ } | undefined;
4310
+ backgroundColor?: {
4311
+ active?: string | undefined;
4312
+ inactive?: string | undefined;
4313
+ } | undefined;
4314
+ } | undefined;
4315
+ margin?: number | undefined;
4316
+ }>>;
4317
+ }, "strip", z.ZodTypeAny, {
4318
+ interactive?: boolean | undefined;
4319
+ rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
4320
+ appearance?: {
4321
+ text?: {
4322
+ size?: number | undefined;
4323
+ maxWidth?: number | undefined;
4324
+ lineHeight?: number | undefined;
4325
+ numLines?: number | undefined;
4326
+ foregroundColor?: string | undefined;
4327
+ backgroundColor?: string | undefined;
4328
+ } | undefined;
4329
+ marker?: {
4330
+ size?: number | undefined;
4331
+ foregroundColor?: {
4332
+ active?: string | undefined;
4333
+ inactive?: string | undefined;
4334
+ } | undefined;
4335
+ backgroundColor?: {
4336
+ active?: string | undefined;
4337
+ inactive?: string | undefined;
4338
+ } | undefined;
4339
+ } | undefined;
4340
+ margin?: number | undefined;
4341
+ } | undefined;
4342
+ }, {
4343
+ interactive?: boolean | undefined;
4344
+ rank?: number | "high" | "low" | "medium" | "always-visible" | undefined;
4345
+ appearance?: {
4346
+ text?: {
4347
+ size?: number | undefined;
4348
+ maxWidth?: number | undefined;
4349
+ lineHeight?: number | undefined;
4350
+ numLines?: number | undefined;
4351
+ foregroundColor?: string | undefined;
4352
+ backgroundColor?: string | undefined;
4353
+ } | undefined;
4354
+ marker?: {
4355
+ size?: number | undefined;
4356
+ foregroundColor?: {
4357
+ active?: string | undefined;
4358
+ inactive?: string | undefined;
4359
+ } | undefined;
4360
+ backgroundColor?: {
4361
+ active?: string | undefined;
4362
+ inactive?: string | undefined;
4363
+ } | undefined;
4364
+ } | undefined;
4365
+ margin?: number | undefined;
4366
+ } | undefined;
4367
+ }>;
4368
+ export function validateLabel(coordinate: Position, text: string, options: AddLabelOptions): void;
3395
4369
  export const labelThemes: {
3396
4370
  lightOnDark: {
3397
4371
  text: {
@@ -3727,18 +4701,18 @@ declare module '@mappedin/mappedin-js/geojson/src/components/label' {
3727
4701
  export default LabelComponent;
3728
4702
  }
3729
4703
 
3730
- declare module '@mappedin/mappedin-js/geojson/src/entities/entity-group-container' {
4704
+ declare module '@mappedin/mappedin-js/geojson/src/entities/group-container' {
3731
4705
  import { Object3D } from 'three';
3732
- import type { GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group';
3733
- import { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/entity-group';
3734
- import { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/two-d';
4706
+ import type { GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
4707
+ import { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
4708
+ import { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
3735
4709
  import type { StackComponent } from '@mappedin/mappedin-js/geojson/src/components/stack';
3736
4710
  import type { MarkerState } from '@mappedin/mappedin-js/geojson/src/components/marker';
3737
4711
  import type { LabelState } from '@mappedin/mappedin-js/geojson/src/components/label';
3738
- import { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/three-d';
4712
+ import { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
3739
4713
  import type { PathState } from '@mappedin/mappedin-js/geojson/src/components/path';
3740
- import { InteractionComponent } from '@mappedin/mappedin-js/geojson/src/components/interaction';
3741
- export enum EntityContainerComponents {
4714
+ import type { InteractionComponent } from '@mappedin/mappedin-js/geojson/src/components/interaction';
4715
+ export enum GroupContainerComponents {
3742
4716
  Stack = 0,
3743
4717
  Interaction = 1
3744
4718
  }
@@ -3780,13 +4754,13 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/entity-group-containe
3780
4754
  }
3781
4755
  }
3782
4756
 
3783
- declare module '@mappedin/mappedin-js/geojson/src/entities/entity-group' {
4757
+ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry-group' {
3784
4758
  import type { LineStyle, PaintStyle, Shading } from '@mappedin/mappedin-js/geojson/src/types';
3785
4759
  import { Object3D } from 'three';
3786
- import type { GeometryState } from '@mappedin/mappedin-js/geojson/src/components/mesh';
4760
+ import { type GeometryState } from '@mappedin/mappedin-js/geojson/src/components/mesh';
3787
4761
  import type { ModelState } from '@mappedin/mappedin-js/geojson/src/components/model';
3788
4762
  import { GeometryGroupStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/geometry-group-style';
3789
- export enum GEOMETRY_GROUP_COMPONENTS {
4763
+ export enum GeometryGroupComponents {
3790
4764
  GeometryGroupStyle = 0
3791
4765
  }
3792
4766
  /**
@@ -3833,6 +4807,14 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/entity-group' {
3833
4807
  * Whether the geometry and its children are outlined. This will affect all children of the geometry group and override their outline state.
3834
4808
  */
3835
4809
  outline?: boolean;
4810
+ /**
4811
+ * The texture URL of the geometry
4812
+ */
4813
+ texture?: string;
4814
+ /**
4815
+ * The top texture URL of the geometry
4816
+ */
4817
+ topTexture?: string;
3836
4818
  };
3837
4819
  export type ChildUpdatable<T> = T extends LineStyle ? Partial<Pick<LineStyle, 'color' | 'opacity' | 'visible'>> : Partial<Pick<PaintStyle, 'color' | 'opacity' | 'visible'>>;
3838
4820
  export class GeometryGroupObject3D extends Object3D {
@@ -3853,6 +4835,11 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/entity-group' {
3853
4835
  setOpacity(opacity: number): void;
3854
4836
  removeEntity(): void;
3855
4837
  constructor(id: string, style?: GeometryGroupStyleComponent);
4838
+ /**
4839
+ * Get first child entity of a group if it's a batched mesh
4840
+ * We use this logic a lot for getting the material of the group. since group does not have material and batched mesh does
4841
+ */
4842
+ getfirstChildEntityId(): string | number | undefined;
3856
4843
  }
3857
4844
  }
3858
4845
 
@@ -3862,20 +4849,22 @@ declare module '@mappedin/mappedin-js/geojson/src/types/geometry' {
3862
4849
 
3863
4850
  declare module '@mappedin/mappedin-js/geojson/src/types' {
3864
4851
  import { Mesh, Object3D, InstancedMesh } from 'three';
3865
- import type { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/two-d';
4852
+ import type { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
3866
4853
  import type { Position } from '@mappedin/mappedin-js/geojson/src/types/geometry';
3867
4854
  import type { GeometryState } from '@mappedin/mappedin-js/geojson/src/components/mesh';
3868
- import type { GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group';
3869
- import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
4855
+ import type { GeometryGroupObject3D, GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
4856
+ import type { GroupContainerObject3D, GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
3870
4857
  import type { PathState } from '@mappedin/mappedin-js/geojson/src/components/path';
3871
4858
  import type { ModelState } from '@mappedin/mappedin-js/geojson/src/components/model';
3872
4859
  import type { LabelState } from '@mappedin/mappedin-js/geojson/src/components/label';
3873
4860
  import type { MarkerState } from '@mappedin/mappedin-js/geojson/src/components/marker';
4861
+ import type { ImageState } from '@mappedin/mappedin-js/geojson/src/components/image';
3874
4862
  import type { ShapeState } from '@mappedin/mappedin-js/geojson/src/components/custom';
4863
+ import type { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities';
3875
4864
  /**
3876
4865
  * The state of an entity, which can be a geometry, geometry group, group container, path, model, label, or marker.
3877
4866
  */
3878
- export type EntityState = GeometryState | GeometryGroupState | GroupContainerState | PathState | ModelState | LabelState | MarkerState | ShapeState;
4867
+ export type EntityState = GeometryState | GeometryGroupState | GroupContainerState | PathState | ModelState | LabelState | MarkerState | ImageState | ShapeState;
3879
4868
  /**
3880
4869
  * A wrapper object that contains the ID and type of an entity. This is returned when adding entities to the scene, and can be used
3881
4870
  * to `getState` and `setState` of the entity.
@@ -3924,9 +4913,9 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
3924
4913
  texture?: string;
3925
4914
  shading?: Shading;
3926
4915
  outline?: boolean;
4916
+ showImage?: boolean;
4917
+ flipImageToFaceCamera?: boolean;
3927
4918
  };
3928
- export type Cap = 'round' | 'square' | 'butt';
3929
- export type Join = 'round' | 'bevel' | 'miter';
3930
4919
  export type Shading = {
3931
4920
  start?: number;
3932
4921
  end?: number;
@@ -3940,8 +4929,8 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
3940
4929
  height?: number;
3941
4930
  altitude?: number;
3942
4931
  visible?: boolean;
3943
- cap?: Cap;
3944
- join?: Join;
4932
+ cap?: 'round' | 'square' | 'butt';
4933
+ join?: 'round' | 'bevel' | 'miter';
3945
4934
  shading?: Shading;
3946
4935
  outline?: boolean;
3947
4936
  };
@@ -3957,6 +4946,12 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
3957
4946
  };
3958
4947
  source: string;
3959
4948
  };
4949
+ export type PolygonImage = {
4950
+ width: number;
4951
+ height: number;
4952
+ verticalOffset?: number;
4953
+ rotation?: number;
4954
+ };
3960
4955
  export type PolygonSource = {
3961
4956
  features: {
3962
4957
  type: 'Feature';
@@ -4103,6 +5098,10 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
4103
5098
  * Geometries can be added to the focus listener via `mapView.setState(.., { focusable: true })`.
4104
5099
  */
4105
5100
  'geometry-in-focus': string | number | null;
5101
+ /**
5102
+ * Fired before the scene is rendered. Use this to modify the scene before it is rendered.
5103
+ */
5104
+ 'pre-render': undefined;
4106
5105
  };
4107
5106
  /**
4108
5107
  * The payload of an event. See also {@link MapEvent}.
@@ -4110,6 +5109,21 @@ declare module '@mappedin/mappedin-js/geojson/src/types' {
4110
5109
  export type MapEventPayload<EventName extends keyof MapEvent> = MapEvent[EventName] extends {
4111
5110
  data: null;
4112
5111
  } ? MapEvent[EventName]['data'] : MapEvent[EventName];
5112
+ export type Geometry3DTypes = Geometry3D | GeometryGroupObject3D | GroupContainerObject3D;
5113
+ export type RendererState = {
5114
+ geometry3DMap: Map<string | number, Geometry3DTypes>;
5115
+ geometry2DMap: Map<string | number, Geometry2D>;
5116
+ geometry2DIdsInScene: Set<Geometry2D['id']>;
5117
+ geometry3DIdsInScene: Set<Geometry3DTypes['id']>;
5118
+ entityScene: GroupContainerObject3D;
5119
+ hoverColor: string;
5120
+ center?: Position;
5121
+ insetsPadding: InsetPadding;
5122
+ shouldMeasureCanvas: boolean;
5123
+ pixelRatio: number;
5124
+ canvasWidth: number;
5125
+ canvasHeight: number;
5126
+ };
4113
5127
  }
4114
5128
 
4115
5129
  declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
@@ -4124,6 +5138,7 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
4124
5138
  entities: {
4125
5139
  [key: number]: string | number;
4126
5140
  };
5141
+ detached?: boolean;
4127
5142
  };
4128
5143
  }
4129
5144
  /**
@@ -4169,21 +5184,49 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
4169
5184
  * Whether the geometry is outlined with a 30% darkened color. This effect adds lines around the geometry to make it stand out.
4170
5185
  */
4171
5186
  outline: boolean;
5187
+ /**
5188
+ * Show geometry image if present
5189
+ */
5190
+ showImage: boolean;
5191
+ /**
5192
+ * Attempt to keep the image facing the camera as much as possible
5193
+ */
5194
+ flipImageToFaceCamera: boolean;
4172
5195
  /**
4173
5196
  * Whether the geometry should emit an event when focused on by the center of the camera
4174
5197
  */
4175
5198
  focusable: boolean;
5199
+ /**
5200
+ * The opacity of the geometry
5201
+ */
5202
+ opacity: number;
5203
+ /**
5204
+ * The height of the geometry
5205
+ */
5206
+ height: number;
5207
+ /**
5208
+ * The texture URL of the geometry
5209
+ */
5210
+ texture?: string;
5211
+ /**
5212
+ * The top texture URL of the geometry
5213
+ */
5214
+ topTexture?: string;
4176
5215
  };
4177
5216
  export class MeshComponent {
4178
5217
  #private;
4179
5218
  mesh?: EntityBatchedMesh;
4180
5219
  focusMesh?: Mesh;
4181
5220
  outline?: LineSegments;
5221
+ imageMesh?: Mesh;
4182
5222
  readonly type = "geometry";
5223
+ dirty: boolean;
5224
+ detached: boolean;
4183
5225
  instanceIndex: number;
4184
5226
  geometry?: BufferGeometry;
4185
5227
  material?: BatchedStandardMaterial;
4186
5228
  feature: Feature<Polygon | LineString | MultiPolygon | MultiLineString>;
5229
+ currentHeight: number;
4187
5230
  constructor(feature: Feature<Polygon | LineString | MultiPolygon | MultiLineString>);
4188
5231
  get visible(): boolean;
4189
5232
  set visible(visible: boolean);
@@ -4192,6 +5235,10 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
4192
5235
  color: Color;
4193
5236
  topColor: Color;
4194
5237
  setColor(color: string, topColor: string): void;
5238
+ getColor(): {
5239
+ color: Color;
5240
+ topColor: Color;
5241
+ } | undefined;
4195
5242
  position: Vector3;
4196
5243
  get altitude(): number;
4197
5244
  set altitude(value: number);
@@ -4199,12 +5246,16 @@ declare module '@mappedin/mappedin-js/geojson/src/components/mesh' {
4199
5246
  set opacity(value: number);
4200
5247
  get texture(): string;
4201
5248
  set texture(texture: Texture);
5249
+ get textureInstance(): Texture | undefined;
4202
5250
  set topTexture(texture: Texture);
4203
5251
  get topTexture(): string;
5252
+ get topTextureInstance(): Texture | undefined;
4204
5253
  get featureBbox(): BBox;
4205
5254
  texturesVisible: boolean;
4206
5255
  showTextures(): void;
4207
5256
  hideTextures(): void;
5257
+ removeSideTexture(): void;
5258
+ removeTopTexture(): void;
4208
5259
  }
4209
5260
  }
4210
5261
 
@@ -4212,8 +5263,8 @@ declare module '@mappedin/mappedin-js/geojson/src/components/custom' {
4212
5263
  import { Color, type Object3D, type LineSegments } from 'three';
4213
5264
  import type { EntityId, Position } from '@mappedin/mappedin-js/geojson/src/types';
4214
5265
  import type { Feature, Point } from 'geojson';
4215
- import { Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/three-d';
4216
- import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
5266
+ import { Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
5267
+ import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
4217
5268
  /**
4218
5269
  * State representing a Custom Geometry
4219
5270
  */
@@ -4268,10 +5319,11 @@ declare module '@mappedin/mappedin-js/geojson/src/components/model' {
4268
5319
  import type { LineSegments, Object3D } from 'three';
4269
5320
  import { Color, Vector3 } from 'three';
4270
5321
  import type { BatchedStandardMaterial } from '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-optimization/batched-material';
4271
- import type { Position, EntityId } from '@mappedin/mappedin-js/geojson/src/types';
4272
- import type { Feature, Point } from 'geojson';
4273
- import type { Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/three-d';
4274
- import type { GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group';
5322
+ import type { Position, EntityId, ModelProperties, ModelStyle } from '@mappedin/mappedin-js/geojson/src/types';
5323
+ import type { Feature, FeatureCollection, Point } from 'geojson';
5324
+ import type { Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
5325
+ import type { GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
5326
+ import { z } from 'zod';
4275
5327
  /**
4276
5328
  * State representing a Model, typically loaded via a URL
4277
5329
  */
@@ -4296,6 +5348,190 @@ declare module '@mappedin/mappedin-js/geojson/src/components/model' {
4296
5348
  */
4297
5349
  interactive: boolean;
4298
5350
  };
5351
+ export const modelPropertiesSchema: z.ZodObject<{
5352
+ rotation: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
5353
+ altitude: z.ZodOptional<z.ZodNumber>;
5354
+ scale: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
5355
+ interactive: z.ZodOptional<z.ZodBoolean>;
5356
+ id: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
5357
+ }, "strip", z.ZodTypeAny, {
5358
+ rotation?: number[] | undefined;
5359
+ altitude?: number | undefined;
5360
+ scale?: number[] | undefined;
5361
+ interactive?: boolean | undefined;
5362
+ id?: string | number | undefined;
5363
+ }, {
5364
+ rotation?: number[] | undefined;
5365
+ altitude?: number | undefined;
5366
+ scale?: number[] | undefined;
5367
+ interactive?: boolean | undefined;
5368
+ id?: string | number | undefined;
5369
+ }>;
5370
+ export const featureSchema: z.ZodObject<{
5371
+ type: z.ZodEnum<["Feature"]>;
5372
+ geometry: z.ZodObject<{
5373
+ type: z.ZodEnum<["Point"]>;
5374
+ coordinates: z.ZodArray<z.ZodNumber, "many">;
5375
+ }, "strip", z.ZodTypeAny, {
5376
+ type: "Point";
5377
+ coordinates: number[];
5378
+ }, {
5379
+ type: "Point";
5380
+ coordinates: number[];
5381
+ }>;
5382
+ properties: z.ZodObject<{
5383
+ rotation: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
5384
+ altitude: z.ZodOptional<z.ZodNumber>;
5385
+ scale: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
5386
+ interactive: z.ZodOptional<z.ZodBoolean>;
5387
+ id: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
5388
+ }, "strip", z.ZodTypeAny, {
5389
+ rotation?: number[] | undefined;
5390
+ altitude?: number | undefined;
5391
+ scale?: number[] | undefined;
5392
+ interactive?: boolean | undefined;
5393
+ id?: string | number | undefined;
5394
+ }, {
5395
+ rotation?: number[] | undefined;
5396
+ altitude?: number | undefined;
5397
+ scale?: number[] | undefined;
5398
+ interactive?: boolean | undefined;
5399
+ id?: string | number | undefined;
5400
+ }>;
5401
+ }, "strip", z.ZodTypeAny, {
5402
+ type: "Feature";
5403
+ geometry: {
5404
+ type: "Point";
5405
+ coordinates: number[];
5406
+ };
5407
+ properties: {
5408
+ rotation?: number[] | undefined;
5409
+ altitude?: number | undefined;
5410
+ scale?: number[] | undefined;
5411
+ interactive?: boolean | undefined;
5412
+ id?: string | number | undefined;
5413
+ };
5414
+ }, {
5415
+ type: "Feature";
5416
+ geometry: {
5417
+ type: "Point";
5418
+ coordinates: number[];
5419
+ };
5420
+ properties: {
5421
+ rotation?: number[] | undefined;
5422
+ altitude?: number | undefined;
5423
+ scale?: number[] | undefined;
5424
+ interactive?: boolean | undefined;
5425
+ id?: string | number | undefined;
5426
+ };
5427
+ }>;
5428
+ export const addModelFeatureSchema: z.ZodObject<{
5429
+ type: z.ZodEnum<["FeatureCollection"]>;
5430
+ features: z.ZodArray<z.ZodObject<{
5431
+ type: z.ZodEnum<["Feature"]>;
5432
+ geometry: z.ZodObject<{
5433
+ type: z.ZodEnum<["Point"]>;
5434
+ coordinates: z.ZodArray<z.ZodNumber, "many">;
5435
+ }, "strip", z.ZodTypeAny, {
5436
+ type: "Point";
5437
+ coordinates: number[];
5438
+ }, {
5439
+ type: "Point";
5440
+ coordinates: number[];
5441
+ }>;
5442
+ properties: z.ZodObject<{
5443
+ rotation: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
5444
+ altitude: z.ZodOptional<z.ZodNumber>;
5445
+ scale: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
5446
+ interactive: z.ZodOptional<z.ZodBoolean>;
5447
+ id: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
5448
+ }, "strip", z.ZodTypeAny, {
5449
+ rotation?: number[] | undefined;
5450
+ altitude?: number | undefined;
5451
+ scale?: number[] | undefined;
5452
+ interactive?: boolean | undefined;
5453
+ id?: string | number | undefined;
5454
+ }, {
5455
+ rotation?: number[] | undefined;
5456
+ altitude?: number | undefined;
5457
+ scale?: number[] | undefined;
5458
+ interactive?: boolean | undefined;
5459
+ id?: string | number | undefined;
5460
+ }>;
5461
+ }, "strip", z.ZodTypeAny, {
5462
+ type: "Feature";
5463
+ geometry: {
5464
+ type: "Point";
5465
+ coordinates: number[];
5466
+ };
5467
+ properties: {
5468
+ rotation?: number[] | undefined;
5469
+ altitude?: number | undefined;
5470
+ scale?: number[] | undefined;
5471
+ interactive?: boolean | undefined;
5472
+ id?: string | number | undefined;
5473
+ };
5474
+ }, {
5475
+ type: "Feature";
5476
+ geometry: {
5477
+ type: "Point";
5478
+ coordinates: number[];
5479
+ };
5480
+ properties: {
5481
+ rotation?: number[] | undefined;
5482
+ altitude?: number | undefined;
5483
+ scale?: number[] | undefined;
5484
+ interactive?: boolean | undefined;
5485
+ id?: string | number | undefined;
5486
+ };
5487
+ }>, "many">;
5488
+ }, "strip", z.ZodTypeAny, {
5489
+ type: "FeatureCollection";
5490
+ features: {
5491
+ type: "Feature";
5492
+ geometry: {
5493
+ type: "Point";
5494
+ coordinates: number[];
5495
+ };
5496
+ properties: {
5497
+ rotation?: number[] | undefined;
5498
+ altitude?: number | undefined;
5499
+ scale?: number[] | undefined;
5500
+ interactive?: boolean | undefined;
5501
+ id?: string | number | undefined;
5502
+ };
5503
+ }[];
5504
+ }, {
5505
+ type: "FeatureCollection";
5506
+ features: {
5507
+ type: "Feature";
5508
+ geometry: {
5509
+ type: "Point";
5510
+ coordinates: number[];
5511
+ };
5512
+ properties: {
5513
+ rotation?: number[] | undefined;
5514
+ altitude?: number | undefined;
5515
+ scale?: number[] | undefined;
5516
+ interactive?: boolean | undefined;
5517
+ id?: string | number | undefined;
5518
+ };
5519
+ }[];
5520
+ }>;
5521
+ export const modelStyleSchema: z.ZodObject<{
5522
+ url: z.ZodString;
5523
+ color: z.ZodOptional<z.ZodString>;
5524
+ opacity: z.ZodOptional<z.ZodNumber>;
5525
+ }, "strip", z.ZodTypeAny, {
5526
+ url: string;
5527
+ color?: string | undefined;
5528
+ opacity?: number | undefined;
5529
+ }, {
5530
+ url: string;
5531
+ color?: string | undefined;
5532
+ opacity?: number | undefined;
5533
+ }>;
5534
+ export function validateModelGroup(id: string | number, geometry: FeatureCollection<Point, ModelProperties>, style: ModelStyle): void;
4299
5535
  export class ModelComponent {
4300
5536
  #private;
4301
5537
  mesh?: Geometry3DObject3D;
@@ -4320,13 +5556,10 @@ declare module '@mappedin/mappedin-js/geojson/src/components/model' {
4320
5556
 
4321
5557
  declare module '@mappedin/mappedin-js/geojson/src/renderer' {
4322
5558
  import './utils/object-this-polyfill';
4323
- import type { Position as GeoJsonPosition } from 'geojson';
4324
5559
  import { Vector3, Raycaster, Camera as ThreeCamera } from 'three';
4325
- import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
4326
- import { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
5560
+ import type { GroupContainerState } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
5561
+ import { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
4327
5562
  import { PubSub } from '@mappedin/mappedin-js/packages/common/pubsub';
4328
- import { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/three-d';
4329
- import { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/two-d';
4330
5563
  import { CollisionSystem } from '@mappedin/mappedin-js/geojson/src/systems/collisions/system';
4331
5564
  import { InteractionSystem } from '@mappedin/mappedin-js/geojson/src/systems/interactions';
4332
5565
  import { ZoomInterpolationSystem } from '@mappedin/mappedin-js/geojson/src/systems/zoom-interpolation/zoom-interpolation';
@@ -4334,7 +5567,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
4334
5567
  import type { GLTFExportOptions } from '@mappedin/mappedin-js/geojson/src/systems/exporter';
4335
5568
  import { ExporterSystem } from '@mappedin/mappedin-js/geojson/src/systems/exporter';
4336
5569
  import type { AddLabelOptions, LabelState } from '@mappedin/mappedin-js/geojson/src/components/label';
4337
- import type { LineStyle, PaintStyle, RendererCoreOptions, Position, ModelProperties, ModelStyle, InsetPadding, EntityState, EntityId, MapEvent, MapEventPayload } from '@mappedin/mappedin-js/geojson/src/types';
5570
+ import type { LineStyle, PaintStyle, RendererCoreOptions, Position, ModelProperties, ModelStyle, EntityState, EntityId, MapEvent, MapEventPayload, RendererState } from '@mappedin/mappedin-js/geojson/src/types';
4338
5571
  import { MeshCreationAndOptimizationSystem } from '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-optimization/system';
4339
5572
  import { DOMVisibilitySystem } from '@mappedin/mappedin-js/geojson/src/systems/dom-visiblity/system';
4340
5573
  import { TwoDProjectionSystem } from '@mappedin/mappedin-js/geojson/src/systems/2d-projection/system';
@@ -4342,34 +5575,33 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
4342
5575
  import { DrawSystem } from '@mappedin/mappedin-js/geojson/src/systems/draw/system';
4343
5576
  import { TwoDVisibilitySystem } from '@mappedin/mappedin-js/geojson/src/systems/2d-visibility/system';
4344
5577
  import { RenderSystem } from '@mappedin/mappedin-js/geojson/src/systems/render/system';
4345
- import type { FeatureCollection, LineString, MultiPolygon, Polygon, Point, Feature } from 'geojson';
4346
- import type { AddPathOptions, PathState } from '@mappedin/mappedin-js/geojson/src/components/path';
5578
+ import type { Position as GeoJsonPosition, FeatureCollection, LineString, MultiPolygon, Polygon, Point, Feature } from 'geojson';
5579
+ import type { AddPathOptions, PathProperties, PathState } from '@mappedin/mappedin-js/geojson/src/components/path';
4347
5580
  import { StackSystem } from '@mappedin/mappedin-js/geojson/src/systems/stack/system';
4348
5581
  import { CameraSystem } from '@mappedin/mappedin-js/geojson/src/systems/camera';
4349
5582
  import { DOMDrawSystem } from '@mappedin/mappedin-js/geojson/src/systems/dom-draw/system';
4350
5583
  import { type Map as MapLibreMap } from '@mappedin/mappedin-js/packages/outdoor-context-v4';
4351
5584
  import type { GeometryState } from '@mappedin/mappedin-js/geojson/src/components/mesh';
4352
5585
  import type { ModelState } from '@mappedin/mappedin-js/geojson/src/components/model';
4353
- import type { GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group';
4354
- import { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/entity-group';
5586
+ import type { GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
4355
5587
  import { DOMResizeSystem } from '@mappedin/mappedin-js/geojson/src/systems/dom-resize/system';
4356
5588
  import { Camera } from '@mappedin/mappedin-js/geojson/src/camera';
4357
- import { type WatermarkOptions, WatermarkSystem } from '@mappedin/mappedin-js/geojson/src/systems/watermark/system';
5589
+ import { type WatermarkUpdateOptions, WatermarkSystem } from '@mappedin/mappedin-js/geojson/src/systems/watermark/system';
4358
5590
  import { PanBoundsSystem } from '@mappedin/mappedin-js/geojson/src/systems/pan-bounds/system';
4359
5591
  import { HTMLControlsSystem } from '@mappedin/mappedin-js/geojson/src/systems/html-controls/system';
4360
5592
  import { type CustomGeometryBuilder, type ShapeState } from '@mappedin/mappedin-js/geojson/src/components/custom';
4361
5593
  import { CustomGeometrySystem } from '@mappedin/mappedin-js/geojson/src/systems/custom-geometry/system';
4362
5594
  import { OutlineInterpolationSystem } from '@mappedin/mappedin-js/geojson/src/systems/outline-interpolation/system';
5595
+ import { ImageSystem } from '@mappedin/mappedin-js/geojson/src/systems/image/system';
4363
5596
  import { GeometryInFocusSystem } from '@mappedin/mappedin-js/geojson/src/systems/geometry-in-focus/system';
4364
5597
  import { OutdoorLayers } from '@mappedin/mappedin-js/geojson/src/systems/outdoor-layers/system';
4365
5598
  import { PathSystem } from '@mappedin/mappedin-js/geojson/src/systems/path';
5599
+ import { type ImageProperties, type ImageState, type ImageStyle } from '@mappedin/mappedin-js/geojson/src/components/image';
5600
+ import { MeshDetachmentSystem } from '@mappedin/mappedin-js/geojson/src/systems/mesh-detachment/system';
5601
+ import { MeshModificationSystem } from '@mappedin/mappedin-js/geojson/src/systems/mesh-modification/system';
5602
+ import { PreRenderSystem } from '@mappedin/mappedin-js/geojson/src/systems/pre-render/system';
4366
5603
  export type * from '@mappedin/mappedin-js/geojson/src/types';
4367
5604
  export const raycaster: Raycaster;
4368
- export const DEFAULT_ZOOM_LEVEL = 18;
4369
- export const DEFAULT_MIN_ZOOM_LEVEL = 12;
4370
- export const DEFAULT_MAX_ZOOM_LEVEL = 22;
4371
- export const DEFAULT_PITCH = 0;
4372
- export const DEFAULT_BEARING = 0;
4373
5605
  /**
4374
5606
  * Some preset orderings for updates.
4375
5607
  */
@@ -4381,21 +5613,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
4381
5613
  AFTER_RENDER: number;
4382
5614
  AFTER_ALL_UPDATES: number;
4383
5615
  };
4384
- export type Entity3DTypes = Geometry3D | GeometryGroupObject3D | GroupContainerObject3D;
4385
- export type RendererState = {
4386
- entity3DMap: Map<string | number, Entity3DTypes>;
4387
- entity2DMap: Map<string | number, Geometry2D>;
4388
- entity2DIds: Set<Geometry2D['id']>;
4389
- threeDEntities: (string | number)[];
4390
- entityScene: GroupContainerObject3D;
4391
- hoverColor: string;
4392
- center?: Position;
4393
- insetsPadding: InsetPadding;
4394
- shouldMeasureCanvas: boolean;
4395
- pixelRatio: number;
4396
- canvasWidth: number;
4397
- canvasHeight: number;
4398
- };
5616
+ export const DEFAULT_PITCH: number, DEFAULT_BEARING: number, DEFAULT_ZOOM_LEVEL: number, DEFAULT_MIN_ZOOM_LEVEL: number, DEFAULT_MAX_ZOOM_LEVEL: number;
4399
5617
  export type Systems = {
4400
5618
  cameraSystem: CameraSystem;
4401
5619
  panBoundsSystem: PanBoundsSystem;
@@ -4419,7 +5637,11 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
4419
5637
  outlineInterpolationSystem: OutlineInterpolationSystem;
4420
5638
  outdoorLayersSystem: OutdoorLayers;
4421
5639
  pathSystem: PathSystem;
5640
+ imageSystem: ImageSystem;
4422
5641
  geometryInFocusSystem: GeometryInFocusSystem;
5642
+ meshDetachmentSystem: MeshDetachmentSystem;
5643
+ meshModificationSystem: MeshModificationSystem;
5644
+ preRenderSystem: PreRenderSystem;
4423
5645
  };
4424
5646
  export type MapViewState = {
4425
5647
  readonly type: 'map-view';
@@ -4465,6 +5687,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
4465
5687
  id: string;
4466
5688
  type: string;
4467
5689
  };
5690
+ getParentContainer: (parent?: EntityId<GroupContainerState> | string | number | null, defaultToScene?: boolean) => GroupContainerObject3D | undefined;
4468
5691
  /**
4469
5692
  * Add a custom THREE.js entity to the map. The geometry is placed at the GeoJSON coordinate and includes a `setup` and `update` methods.
4470
5693
  * Setup is called when the first time the geometry visible, and update is called every render frame.
@@ -4477,36 +5700,29 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
4477
5700
  * Add a geometry group from GeoJSON data
4478
5701
  */
4479
5702
  addGeometryGroup<T extends FeatureCollection<Polygon | MultiPolygon | LineString, any>>(id: string, geometry: T, style?: T extends FeatureCollection<LineString, any> ? LineStyle : PaintStyle, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<GeometryGroupState>;
5703
+ addImage(id: string, geometry: Feature<Point, ImageProperties>, style: ImageStyle, parent?: EntityId<GroupContainerState> | string | null): EntityId<ImageState> | undefined;
4480
5704
  /**
4481
5705
  * Add a group of models from GeoJSON data. These will be instanced automatically for better performance.
4482
5706
  */
4483
- addModelGroup(id: string, geometry: FeatureCollection<Point, ModelProperties>, style: ModelStyle, parent?: EntityId<GroupContainerState> | string | null): EntityId<GeometryGroupState>;
5707
+ addModelGroup(id: string, geometry: FeatureCollection<Point, ModelProperties>, style: ModelStyle, parent?: EntityId<GroupContainerState> | string | null): EntityId<GeometryGroupState> | undefined;
4484
5708
  /**
4485
5709
  * Add an HTML Marker at a GeoJSON coordinate.
4486
5710
  */
4487
- addMarker2D(coordinate: Position, contentHTML: string, options?: AddMarkerOptions, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<MarkerState>;
5711
+ addMarker2D(coordinate: Position, contentHTML: string, options?: AddMarkerOptions, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<MarkerState> | undefined;
4488
5712
  /**
4489
5713
  * Add a 2D label at a GeoJSON coordinate.
4490
5714
  */
4491
- addLabel2D(coordinate: Position, text: string, options?: AddLabelOptions, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<LabelState>;
5715
+ addLabel2D(coordinate: Position, text: string, options?: AddLabelOptions, parent?: EntityId<GroupContainerState> | string | number | null): EntityId<LabelState> | undefined;
4492
5716
  /**
4493
5717
  * Add a Path along a set of GeoJSON coordinates that can be animated.
4494
5718
  */
4495
- addPath(geometry: FeatureCollection<Point, any>, options?: AddPathOptions, parent?: EntityId<GroupContainerState> | string | null): EntityId<PathState>;
5719
+ addPath(geometry: FeatureCollection<Point, PathProperties>, options?: AddPathOptions, parent?: EntityId<GroupContainerState> | string | null): EntityId<PathState>;
4496
5720
  /**
4497
5721
  * Updates the watermark on the map.
4498
5722
  *
4499
- * @param options {WatermarkOptions}
4500
- */
4501
- updateWatermark(options: Omit<WatermarkOptions, 'onClick'>): void;
4502
- /**
4503
- * @deprecated
4504
- * @TODO: remove this method and do this in setstate instead
5723
+ * @param options {WatermarkUpdateOptions}
4505
5724
  */
4506
- updateStackState(container: EntityId<GroupContainerState> | string | number, opts: {
4507
- expandedFactor?: number;
4508
- activeId?: string;
4509
- }): void;
5725
+ updateWatermark(options: WatermarkUpdateOptions): void;
4510
5726
  /**
4511
5727
  * Remove an entity from the renderer and release associated resources.
4512
5728
  */
@@ -4535,9 +5751,9 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
4535
5751
  * Get the current state of the map view, or any entity that was added, regardless of whether it is visible in the scene
4536
5752
  */
4537
5753
  getState(): MapViewState;
4538
- getState<T extends EntityId<EntityState>>(geometryOrGeometryId: T): T extends EntityId<LabelState> ? LabelState : T extends EntityId<GeometryState> ? GeometryState : T extends EntityId<MarkerState> ? MarkerState : T extends EntityId<GeometryGroupState> ? GeometryGroupState : T extends EntityId<GroupContainerState> ? GroupContainerState : T extends EntityId<ModelState> ? ModelState : T extends EntityId<PathState> ? ShapeState : T extends EntityId<ShapeState> ? ShapeState : EntityState;
5754
+ getState<T extends EntityId<EntityState>>(geometryOrGeometryId: T): T extends EntityId<LabelState> ? LabelState : T extends EntityId<GeometryState> ? GeometryState : T extends EntityId<MarkerState> ? MarkerState : T extends EntityId<GeometryGroupState> ? GeometryGroupState : T extends EntityId<GroupContainerState> ? GroupContainerState : T extends EntityId<ModelState> ? ModelState : T extends EntityId<PathState> ? ShapeState : T extends EntityId<ShapeState> ? ShapeState : T extends EntityId<ImageState> ? ImageState : EntityState;
4539
5755
  getState(geometryOrGeometryId?: Record<string | number, any> | string | number): EntityState;
4540
- getState<T extends EntityState>(geometryOrGeometryId: T['id']): T extends LabelState ? LabelState : T extends GeometryState ? GeometryState : T extends MarkerState ? MarkerState : T extends GeometryGroupState ? GeometryGroupState : T extends GroupContainerState ? GroupContainerState : T extends ModelState ? ModelState : T extends PathState ? ShapeState : T extends ShapeState ? PathState : EntityState;
5756
+ getState<T extends EntityState>(geometryOrGeometryId: T['id']): T extends LabelState ? LabelState : T extends GeometryState ? GeometryState : T extends MarkerState ? MarkerState : T extends GeometryGroupState ? GeometryGroupState : T extends GroupContainerState ? GroupContainerState : T extends ModelState ? ModelState : T extends PathState ? ShapeState : T extends ShapeState ? PathState : T extends ImageState ? ImageState : EntityState;
4541
5757
  /**
4542
5758
  * Set the state of the map view or any entity that was added, regardless of whether it is visible in the scene.
4543
5759
  */
@@ -4550,6 +5766,7 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
4550
5766
  setState<T extends EntityId<ShapeState>>(object: T | T['id'], state: Partial<ShapeState>): void;
4551
5767
  setState<T extends EntityId<PathState>>(object: T | T['id'], state: Partial<PathState>): void;
4552
5768
  setState<T extends EntityId<ModelState>>(object: T | T['id'], state: Partial<ModelState>): void;
5769
+ setState<T extends EntityId<ImageState>>(object: T | T['id'], state: Partial<ImageState>): void;
4553
5770
  setState<T extends EntityState>(object: T | T['id'], state: Partial<T>): void;
4554
5771
  /**
4555
5772
  * Project a screen coordinate to a geographic coordinate
@@ -4588,6 +5805,14 @@ declare module '@mappedin/mappedin-js/geojson/src/renderer' {
4588
5805
  * Sets the background color of the renderer. Only applies to "standalone mode"
4589
5806
  */
4590
5807
  setBackgroundColor: (color: any, alpha: any) => void;
5808
+ /**
5809
+ * Returns the background color of the renderer. Only applies to "standalone mode"
5810
+ */
5811
+ get backgroundColor(): import("three").Color;
5812
+ /**
5813
+ * Returns the current scale of the map in metres per pixel.
5814
+ */
5815
+ getMetresPerPixel: () => number | undefined;
4591
5816
  /**
4592
5817
  * @internal
4593
5818
  * Filters out layers at a certain point on the outdoor map. This can be used to hide the outdoor building footprint underneath the 3D geometry.
@@ -4738,13 +5963,23 @@ declare module '@mappedin/mappedin-js/geojson/src/camera' {
4738
5963
  * How far the camera can zoom out away from the ground
4739
5964
  */
4740
5965
  get minZoomLevel(): number;
5966
+ /**
5967
+ * Toggle the mode of the camera to automatically set the minimum zoom level based on the size of the scene.
5968
+ * It will be automatically disabled when the minimum zoom level is set manually.
5969
+ * @param value The new value for the auto min zoom level mode.
5970
+ */
5971
+ setAutoMinZoomLevel(value: boolean): void;
5972
+ /**
5973
+ * The mode of the camera to automatically set the minimum zoom level based on the size of the scene.
5974
+ */
5975
+ get autoMinZoomLevel(): boolean;
4741
5976
  /**
4742
5977
  * How far out the camera can zoom
4743
5978
  *
4744
5979
  * @param zoomLevel The minimum zoom level in mercator zoom level units.
4745
5980
  * @default 0
4746
5981
  */
4747
- setMinZoomLevel(zoomLevel: number): void;
5982
+ setMinZoomLevel(zoomLevel: number, disableAutoMinZoomLevel?: boolean): void;
4748
5983
  /**
4749
5984
  * How far in the camera can zoom
4750
5985
  *
@@ -4857,40 +6092,40 @@ declare module '@mappedin/mappedin-js/geojson/src/utils' {
4857
6092
  import { Box2 } from 'three';
4858
6093
  import { MercatorCoordinate } from '@mappedin/mappedin-js/packages/outdoor-context-v4';
4859
6094
  import type { CustomLayerInterface } from '@mappedin/mappedin-js/packages/outdoor-context-v4';
4860
- import type { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/entity-group';
4861
- import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
4862
- import type { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/two-d';
4863
- import type { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/three-d';
6095
+ import type { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
6096
+ import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
6097
+ import type { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
6098
+ import type { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
4864
6099
  import type { Position, RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
4865
6100
  import type { Camera } from '@mappedin/mappedin-js/geojson/src/camera';
4866
6101
  export function cartesianToGeographic(centerLat: number, centerLon: number, x: number, y: number): {
4867
- lat: number;
4868
- lon: number;
6102
+ lat: number;
6103
+ lon: number;
4869
6104
  };
4870
6105
  export function geographicToCartesian(centerLat: number, centerLon: number, targetLat: number, targetLon: number): {
4871
- x: number;
4872
- y: number;
6106
+ x: number;
6107
+ y: number;
4873
6108
  };
4874
- export const extract3DEntitiesFromTree: (tree: any, entities?: (string | number)[]) => (string | number)[];
4875
- export const extractEntitiesFromTree: (tree: any, entities: Set<Geometry2D["id"]>) => Set<string | number>;
6109
+ export const populateGeometry3DIdsInScene: (tree: any, entities: RendererState["geometry3DIdsInScene"]) => Set<string | number>;
6110
+ export const populateGeometry2DIdsInScene: (tree: any, entities: Set<Geometry2D["id"]>) => Set<string | number>;
4876
6111
  export function convertMapLibreStylePaintProps(paint: any): {
4877
- color: any;
4878
- height: any;
4879
- altitude: any;
4880
- opacity: any;
4881
- outline: any;
6112
+ color: any;
6113
+ height: any;
6114
+ altitude: any;
6115
+ opacity: any;
6116
+ outline: any;
4882
6117
  };
4883
6118
  export function convertMapLibreLineStylePaintProps(paint: any): {
4884
- color: any;
4885
- join: any;
4886
- opacity: any;
4887
- width: any;
4888
- cap: any;
6119
+ color: any;
6120
+ join: any;
6121
+ opacity: any;
6122
+ width: any;
6123
+ cap: any;
4889
6124
  };
4890
6125
  export function mergeObjects<T extends Record<string, any>>(obj1: T, obj2: T): T;
4891
6126
  export function createCustomLayer(modelAsMercatorCoordinate: MercatorCoordinate, viewCamera: THREECamera, camera: Camera, onRender: () => void): CustomLayerInterface;
4892
6127
  export function getRequestHeaders(authURL: string): Promise<{
4893
- 'x-mappedin-tiles-key': string;
6128
+ 'x-mappedin-tiles-key': string;
4894
6129
  }>;
4895
6130
  export function cyrb53(str: string, seed?: number): number;
4896
6131
  export const linearEase: (t: number) => number;
@@ -4902,38 +6137,53 @@ declare module '@mappedin/mappedin-js/geojson/src/utils' {
4902
6137
  /* getProjectionScaleFactor()
4903
6138
  /* finds the scale ratio between screen coordinates and 3D coordinates (in X-Z plane)
4904
6139
  /*
4905
- * R
4906
- * /|
4907
- * C : Camera / |
4908
- * PQ : Projection Plane / |
4909
- * OR : Origin / |
4910
- * F : FOV / |
4911
- * Q / |
4912
- * /| |
4913
- * / | |
4914
- * / | |
4915
- * / | |
4916
- * / | |
4917
- * / F/2 | |
4918
- * C ------------P------------ O
4919
- *
4920
- *
4921
- * ProjectionScaleFactor = ( OR / PQ )
4922
- * PQ = canvasHeight / 2
4923
- * CQ = zoom
4924
- *
4925
- * OR / C0 = tan(F/2)
4926
- * so OR = CO * tan(F/2)
4927
- */
6140
+ * R
6141
+ * /|
6142
+ * C : Camera / |
6143
+ * PQ : Projection Plane / |
6144
+ * OR : Origin / |
6145
+ * F : FOV / |
6146
+ * Q / |
6147
+ * /| |
6148
+ * / | |
6149
+ * / | |
6150
+ * / | |
6151
+ * / | |
6152
+ * / F/2 | |
6153
+ * C ------------P------------ O
6154
+ *
6155
+ *
6156
+ * ProjectionScaleFactor = ( OR / PQ )
6157
+ * PQ = canvasHeight / 2
6158
+ * CQ = zoom
6159
+ *
6160
+ * OR / C0 = tan(F/2)
6161
+ * so OR = CO * tan(F/2)
6162
+ */
4928
6163
  export function getProjectionScaleFactor(FOV: number, canvasHeight: number, zoom: number): number;
4929
6164
  export function getGeometryByGeometryId(state: RendererState, geometryOrGeometryId?: string | number | Record<string, any>): Geometry3D | GroupContainerObject3D | GeometryGroupObject3D | Geometry2D | undefined;
4930
6165
  export function getBoundingBoxCenter(bbox: Position[]): [number, number];
6166
+ export function toRadians(degrees: number): number;
6167
+ /**
6168
+ * Calculates the approximate distance between two geographic coordinates on Earth's surface.
6169
+ *
6170
+ * This function uses the equirectangular approximation method to compute the distance, which simplifies
6171
+ * the math and speeds up calculations, but is less accurate over long distances compared to other methods
6172
+ * like the haversine formula.
6173
+ *
6174
+ * @param {Position} point1 - The first point's longitude and latitude as [longitude, latitude].
6175
+ * @param {Position} point1 - The second point's longitude and latitude as [longitude, latitude].
6176
+ * @return
6177
+ * @return {number} The approximate distance between the two points in meters.
6178
+ */
6179
+ export function haversineDistance(point1: Position, point2: Position): number;
4931
6180
  export { getCornersOfBoundingBox } from '@mappedin/mappedin-js/geojson/src/utils/bounding-box';
4932
6181
  export function isFiniteBox(box: Box2 | Box3): boolean;
4933
6182
  export { getPixelRatio } from '@mappedin/mappedin-js/geojson/src/utils/get-pixel-ratio';
4934
6183
  export { debounce } from '@mappedin/mappedin-js/geojson/src/utils/async';
4935
6184
  export { shouldDisableOffscreenCanvas } from '@mappedin/mappedin-js/geojson/src/utils/browser';
4936
6185
  export { noop } from '@mappedin/mappedin-js/geojson/src/utils/fp';
6186
+ export { transformRequest } from '@mappedin/mappedin-js/geojson/src/utils/tranform-request';
4937
6187
  }
4938
6188
 
4939
6189
  declare module '@mappedin/mappedin-js/geojson/src/utils/constants' {
@@ -5002,6 +6252,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/watermark/system' {
5002
6252
  import { PubSub } from '@packages/internal/common';
5003
6253
  import type { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities';
5004
6254
  import type { QuadTree } from '@packages/internal/quad-tree';
6255
+ import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
5005
6256
  export type WatermarkPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'center' | 'top' | 'bottom' | 'left' | 'right';
5006
6257
  export type WatermarkOptions = {
5007
6258
  /**
@@ -5036,18 +6287,26 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/watermark/system' {
5036
6287
  scale?: number;
5037
6288
  /**
5038
6289
  * Callback when the watermark is clicked.
6290
+ * @hidden
5039
6291
  */
5040
6292
  onClick?: () => void;
6293
+ /**
6294
+ * Whether the watermark should be visible.
6295
+ * @hidden
6296
+ * @default true
6297
+ */
6298
+ visible?: boolean;
5041
6299
  };
6300
+ export type WatermarkUpdateOptions = Omit<WatermarkOptions, 'onClick' | 'visible'>;
5042
6301
  export class WatermarkSystem extends PubSub<{
5043
6302
  'texture-loaded': void;
5044
6303
  }> {
5045
6304
  #private;
5046
6305
  dirty: boolean;
5047
- get options(): WatermarkOptions;
5048
- set options(options: WatermarkOptions);
6306
+ get options(): Required<WatermarkOptions>;
6307
+ set options(options: WatermarkUpdateOptions);
5049
6308
  get icon(): string;
5050
- constructor(cameraObject: PerspectiveCamera, canvasWidth: number, canvasHeight: number, rendererState: any, options?: WatermarkOptions);
6309
+ constructor(cameraObject: PerspectiveCamera, rendererState: RendererState, options?: Partial<WatermarkOptions>);
5051
6310
  get width(): number;
5052
6311
  get height(): number;
5053
6312
  getPositionAlignedOffset(width: number, height: number): {
@@ -5069,6 +6328,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/watermark/system' {
5069
6328
  }>): void;
5070
6329
  resize(canvasWidth: number, canvasHeight: number): void;
5071
6330
  update(): void;
6331
+ destroy(): void;
5072
6332
  }
5073
6333
  }
5074
6334
 
@@ -5085,7 +6345,8 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/html-controls/system'
5085
6345
  export const ATTRIBUTION_POSITIONS: readonly ["top-left", "top-right", "bottom-left", "bottom-right"];
5086
6346
  export type AttributionPosition = (typeof ATTRIBUTION_POSITIONS)[number];
5087
6347
  export type AttributionControlOptions = {
5088
- position: AttributionPosition;
6348
+ custom?: string[];
6349
+ position?: AttributionPosition;
5089
6350
  };
5090
6351
  export class HTMLControlsSystem {
5091
6352
  controlContainerEl: HTMLDivElement;
@@ -5096,6 +6357,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/html-controls/system'
5096
6357
  attribButtonEl?: HTMLElement;
5097
6358
  feedbackLinkEl?: HTMLAnchorElement;
5098
6359
  attribHTML: string;
6360
+ customAttributions: string[];
5099
6361
  constructor(container: HTMLElement);
5100
6362
  addAttributionControl(options?: AttributionControlOptions): void;
5101
6363
  toggleAttribution: (e: MouseEvent) => void;
@@ -5109,124 +6371,21 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/html-controls/system'
5109
6371
  }
5110
6372
  }
5111
6373
 
5112
- declare module '@mappedin/mappedin-js/mappedin-js/src/analytics/customer' {
5113
- /**
5114
- * Valid track-analytics API contexts. These should match the expected values of that endpoint or the requests will fail.
5115
- * If a set context is not in this list, it will default to the first VALID_CONTEXTS value.
5116
- */
5117
- export const VALID_CONTEXTS: readonly ["websdk", "web", "webv2", "kiosk-v2", "mobile", "iossdk", "androidsdk", "reactnativesdk"];
5118
- type ValidContext = (typeof VALID_CONTEXTS)[number];
5119
- export const DEFAULT_CONTEXT: "websdk";
5120
- export const ANALYTICS_URL = "https://api-gateway.mappedin.com/track-analytics/a/";
5121
- export class CustomerAnalytics {
5122
- #private;
5123
- constructor();
5124
- init(options?: AnalyticsOptions): void;
5125
- /**
5126
- * Reset state and options
5127
- */
5128
- reset(): void;
5129
- updateState(update: UpdateStateParam): void;
5130
- get authReady(): boolean;
5131
- getState(): AnalyticState;
5132
- capture<T extends keyof CaptureEventsPayloadMap>(eventName: T, query: CaptureEventsPayloadMap[T]): Promise<Response> | Promise<void>;
5133
- capture<T extends keyof CaptureEventsPayloadMap | (string & NonNullable<unknown>)>(target: T, query: T extends keyof CaptureEventsPayloadMap ? CaptureEventsPayloadMap[T] : Record<string, any>): Promise<Response> | Promise<void>;
5134
- /**
5135
- * @internal
5136
- */
5137
- sendGetMapDataEvent(payload: {
5138
- parseDuration: string;
5139
- downloadDuration: string;
5140
- viewId?: string;
5141
- }): Promise<void> | Promise<Response>;
5142
- sendWatchPositionDenied(): Promise<void> | Promise<Response>;
5143
- /**
5144
- * @internal
5145
- */
5146
- sendMapViewLoadedEvent({ firstRenderDuration, dimension, }: {
5147
- firstRenderDuration: string;
5148
- dimension: {
5149
- height: number;
5150
- width: number;
5151
- };
5152
- }): Promise<void> | Promise<Response>;
5153
- /**
5154
- * @internal
5155
- */
5156
- sendGetDirectionsEvent: (start: string, end: string) => void;
6374
+ declare module '@mappedin/mappedin-js/geojson/src/maplibre-overlay' {
6375
+ import type { IControl, Map as MapLibreMap, CustomLayerInterface } from '@packages/internal/outdoor-context-v4';
6376
+ import type { Position } from '@mappedin/mappedin-js/geojson/src/types';
6377
+ import RendererCore from '@mappedin/mappedin-js/geojson/src/renderer';
6378
+ import { PubSub } from '@packages/internal/common';
6379
+ export class MapLibreOverlay<T> extends PubSub<T> implements IControl {
6380
+ el: HTMLDivElement;
6381
+ core: RendererCore;
6382
+ origin?: Position;
6383
+ map?: MapLibreMap;
6384
+ layer?: CustomLayerInterface;
6385
+ constructor(origin: Position | undefined);
6386
+ onAdd(map: MapLibreMap): HTMLDivElement;
6387
+ onRemove(): void;
5157
6388
  }
5158
- type AnalyticsUserPosition = {
5159
- bluedotTimestamp: number;
5160
- latitude: number;
5161
- longitude: number;
5162
- floorLevel?: number;
5163
- accuracy: number;
5164
- };
5165
- export type AnalyticsOptions = {
5166
- key?: string;
5167
- secret?: string;
5168
- accessToken?: string;
5169
- noAuth?: boolean;
5170
- mapId?: string;
5171
- logEvents?: boolean;
5172
- sendEvents?: boolean;
5173
- context?: string;
5174
- platformString?: string;
5175
- };
5176
- export type AnalyticState = {
5177
- accessToken?: string | undefined;
5178
- version: string;
5179
- platformString: string;
5180
- baseUrl: string;
5181
- noAuth: boolean;
5182
- geolocationMode: boolean;
5183
- mi_uuid: string;
5184
- mi_session: string;
5185
- context: ValidContext;
5186
- userPosition?: AnalyticsUserPosition;
5187
- mapId?: string;
5188
- key?: string;
5189
- secret?: string;
5190
- logEvents: boolean;
5191
- sendEvents: boolean;
5192
- };
5193
- type UpdateStateParam = Partial<Pick<AnalyticState, 'geolocationMode' | 'context' | 'logEvents' | 'userPosition' | 'mapId' | 'sendEvents' | 'logEvents' | 'accessToken'>>;
5194
- type CaptureEventsPayloadMap = {
5195
- '$select-location': {
5196
- id: string;
5197
- };
5198
- '$select-category': {
5199
- id: string;
5200
- };
5201
- '$query-suggest': Record<string, any>;
5202
- '$query-search': Record<string, any>;
5203
- };
5204
- export const analyticsInternal: CustomerAnalytics;
5205
- export const analytics: {
5206
- /**
5207
- * Initializes the analytics with the provided options.
5208
- * @param args - The options to initialize the analytics.
5209
- */
5210
- init(options?: AnalyticsOptions | undefined): void;
5211
- /**
5212
- * Captures an analytic event with a custom target and query payload.
5213
- *
5214
- * @param target - The event name or target can be .
5215
- * @param query - The payload associated with the event.
5216
- * @returns A promise that resolves to the server response or void.
5217
- */
5218
- capture(target: keyof CaptureEventsPayloadMap | (string & {}), query: Record<string, any> | {
5219
- id: string;
5220
- } | {
5221
- id: string;
5222
- }): Promise<void> | Promise<Response>;
5223
- /**
5224
- * Updates the analytics state with the provided parameters.
5225
- * @param update - The state parameters to update.
5226
- */
5227
- updateState(update: Partial<Pick<AnalyticState, "logEvents" | "sendEvents" | "logEvents" | "accessToken">>): void;
5228
- };
5229
- export {};
5230
6389
  }
5231
6390
 
5232
6391
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/label' {
@@ -5300,11 +6459,47 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/marker' {
5300
6459
  }
5301
6460
  }
5302
6461
 
5303
- declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/model' {
6462
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/image' {
5304
6463
  /**
5305
- * Class representing a 3D model on the {@link MapView}.
6464
+ * Class representing an Image on the {@link MapView}.
5306
6465
  */
5307
- export class Model {
6466
+ export class Image {
6467
+ #private;
6468
+ /**
6469
+ * @internal
6470
+ */
6471
+ static readonly __type = "Image";
6472
+ /**
6473
+ * @internal
6474
+ */
6475
+ readonly __type = "Image";
6476
+ /**
6477
+ * Checks if the provided instance is of type Marker"
6478
+ *
6479
+ * @param instance The instance to check.
6480
+ * @returns {boolean} True if the instance is a Marker, false otherwise.
6481
+ */
6482
+ static is(instance: object): instance is Image;
6483
+ /**
6484
+ * @internal
6485
+ */
6486
+ constructor(id: string, url: string);
6487
+ /**
6488
+ * The image's id
6489
+ */
6490
+ get id(): string;
6491
+ /**
6492
+ * The image's url
6493
+ */
6494
+ get url(): string;
6495
+ }
6496
+ }
6497
+
6498
+ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/model' {
6499
+ /**
6500
+ * Class representing a 3D model on the {@link MapView}.
6501
+ */
6502
+ export class Model {
5308
6503
  /**
5309
6504
  * The model's id
5310
6505
  */
@@ -5346,6 +6541,10 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path' {
5346
6541
  * The label's id
5347
6542
  */
5348
6543
  id: string;
6544
+ /**
6545
+ * The promise that resolves when the current path animation is complete.
6546
+ */
6547
+ animation: Promise<void>;
5349
6548
  /**
5350
6549
  * @internal
5351
6550
  */
@@ -5353,7 +6552,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/path' {
5353
6552
  /**
5354
6553
  * @internal
5355
6554
  */
5356
- constructor(id: string);
6555
+ constructor(id: string, drawAnimation: Promise<void>);
5357
6556
  }
5358
6557
  }
5359
6558
 
@@ -5389,14 +6588,97 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-view-objects/shape' {
5389
6588
  }
5390
6589
  }
5391
6590
 
6591
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
6592
+ import type { ParsedMVF } from '@mappedin/mvf';
6593
+ import type { FeatureCollection, LineString, MultiPolygon, Polygon } from 'geojson';
6594
+ import { PubSub } from '@packages/internal/common';
6595
+ import type { Position, AddLabelOptions, RendererCore, PathState, MarkerState, LineStyle, PaintStyle, EntityId } from '@mappedin/core-sdk';
6596
+ import { FloorObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object';
6597
+ import type { Coordinate, TAddMarkerOptions, TAddPathOptions, TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
6598
+ import type { GLTFExportOptions, TAnimationOptions, TAddModelOptions, TAddModel, TAddImageOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
6599
+ import { type AggregatedStyleMap } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils';
6600
+ import { StackedMaps } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
6601
+ import type { TFloorChangeReason } from '@mappedin/mappedin-js/mappedin-js/src/events';
6602
+ import type { Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
6603
+ export class GeojsonApiMapObject extends PubSub<{
6604
+ 'floor-change': {
6605
+ reason?: TFloorChangeReason;
6606
+ floorId: string;
6607
+ };
6608
+ 'floor-change-start': {
6609
+ floorId: string;
6610
+ };
6611
+ }> {
6612
+ floors: FloorObject[];
6613
+ currentFloorId: string;
6614
+ id: string;
6615
+ renderer: RendererCore;
6616
+ mvf: ParsedMVF;
6617
+ styleMap: AggregatedStyleMap;
6618
+ StackedMaps: StackedMaps;
6619
+ get currentFloor(): FloorObject;
6620
+ setFloor(floorId: string, reason?: TFloorChangeReason): Promise<void> | undefined;
6621
+ Models: {
6622
+ add: (id: string, targets: TAddModel[], opts: TAddModelOptions & {
6623
+ floorId?: string;
6624
+ }) => (import("@mappedin/core-sdk").GeometryState | import("@mappedin/core-sdk").ModelState)[];
6625
+ remove: (_id: string, _groupId: string) => void;
6626
+ };
6627
+ Images: {
6628
+ add: (target: Position, url: string, opts: TAddImageOptions & {
6629
+ floorId?: string;
6630
+ }) => EntityId<import("@mappedin/core-sdk/src/components/image").ImageState> | undefined;
6631
+ remove: (id: string) => void;
6632
+ removeAll: () => void;
6633
+ };
6634
+ Markers: {
6635
+ add: (coordinate: Coordinate, html: string, opts: TAddMarkerOptions) => EntityId<MarkerState> | undefined;
6636
+ remove: (id: string) => void;
6637
+ getContentEl: (id: string) => HTMLElement | undefined;
6638
+ removeAll: () => void;
6639
+ setPosition: (id: string, coordinate: Position, targetFloorId: string) => void;
6640
+ animateTo: (id: string, coordinate: Position, targetFloorId: string, options?: TAnimationOptions) => Promise<void>;
6641
+ };
6642
+ Exporter: {
6643
+ getCurrentSceneGLTF: (options: GLTFExportOptions) => Promise<Blob>;
6644
+ };
6645
+ Shapes: {
6646
+ add: <T extends FeatureCollection<Polygon | MultiPolygon | LineString, any>>(geometry: T, style: T extends FeatureCollection<LineString, any> ? LineStyle : PaintStyle, opts: {
6647
+ floorId?: string;
6648
+ }) => string;
6649
+ remove: (customGeometry: Shape) => string;
6650
+ };
6651
+ Labels: {
6652
+ all: ({ onCreate }: {
6653
+ onCreate: (labelId: string | number, text: string) => void;
6654
+ }) => void;
6655
+ add: (coordinate: Position, text: string, opts?: AddLabelOptions & {
6656
+ floorId?: string;
6657
+ }) => {
6658
+ id: string | number;
6659
+ };
6660
+ remove: (targetId: string) => void;
6661
+ removeAll: () => void;
6662
+ };
6663
+ Paths: {
6664
+ add: (coordinates: Coordinate[], options?: TAddPathOptions) => {
6665
+ paths: EntityId<PathState>[];
6666
+ animation: Promise<void>;
6667
+ };
6668
+ remove: (entityIds: string[]) => void;
6669
+ };
6670
+ constructor(id: string, mvf: any, styleMap: AggregatedStyleMap, options: TShow3DMapOptions | undefined, renderer: RendererCore);
6671
+ }
6672
+ }
6673
+
5392
6674
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
5393
6675
  import type { Position, RendererCore, WatermarkOptions } from '@mappedin/core-sdk';
5394
6676
  import { type TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
6677
+ import { WALLS, DOORS } from '@mappedin/mappedin-js/mappedin-js/src/types';
5395
6678
  import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
5396
- import { Floor } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5397
- import { Coordinate, MapObject, Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
6679
+ import { Coordinate, MapObject, Space, Floor, type MapDataInternal, Door } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5398
6680
  import type { MapView } from '@mappedin/mappedin-js/mappedin-js/src/map-view';
5399
- import { Label, Marker, type Model } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
6681
+ import { Label, Marker, type Model, type Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
5400
6682
  import { Navigation } from '@mappedin/mappedin-js/mappedin-js/src/navigation';
5401
6683
  import type { TGetDirectionsOptions, TGetState, TNavigationTarget, TUpdateState } from '@mappedin/mappedin-js/mappedin-js/src/types';
5402
6684
  import { Camera } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/camera';
@@ -5405,6 +6687,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
5405
6687
  import { Labels } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/labels';
5406
6688
  import { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
5407
6689
  import { Markers } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/markers';
6690
+ import { Images } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images';
5408
6691
  import { Models } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/models';
5409
6692
  import { Paths } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/paths';
5410
6693
  import { BlueDot } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/blue-dot/blue-dot';
@@ -5412,6 +6695,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
5412
6695
  import { Shapes } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/shapes';
5413
6696
  import { Style } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/style';
5414
6697
  import Outdoor from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor';
6698
+ import type { TShowStackOptions } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
5415
6699
  export class GeoJsonApi {
5416
6700
  core: RendererCore;
5417
6701
  outdoors: GeojsonApiMapObject;
@@ -5434,20 +6718,22 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
5434
6718
  BlueDot: BlueDot;
5435
6719
  Shapes: Shapes;
5436
6720
  Style: Style;
6721
+ Images: Images;
5437
6722
  constructor(rendererCore: RendererCore, mapView: MapView);
5438
- updateState<T extends Space | MapObject | Label | Marker | 'walls' | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
6723
+ updateState<T extends Space | MapObject | Label | Marker | Door | WALLS | DOORS | (string & NonNullable<unknown>)>(target: T, state: TUpdateState<T>): void;
5439
6724
  update: () => void;
5440
- getMapDataInternal(): import("../map-data-objects").MapDataInternal | undefined;
6725
+ getMapDataInternal(): MapDataInternal | undefined;
5441
6726
  getMapData(): MapData | undefined;
5442
6727
  expand(opts?: {
5443
6728
  excludeFloors: Floor[];
5444
6729
  }): Promise<void> | undefined;
5445
6730
  collapse(): Promise<void> | undefined;
6731
+ showStack(opts?: TShowStackOptions): Promise<void> | undefined;
5446
6732
  addMap(mapData: MapData, options?: TShow3DMapOptions): Promise<MapData>;
5447
- setFloor(floor: Floor | string, reason?: TFloorChangeReason): void;
6733
+ setFloor(floor: Floor | string, reason?: TFloorChangeReason): Promise<void> | undefined;
5448
6734
  updateWatermark(options: Omit<WatermarkOptions, 'onClick'>): void;
5449
6735
  get currentFloor(): Floor;
5450
- getState<T extends Space | MapObject | Label | Marker | Model | string>(target: T): TGetState<T> | undefined;
6736
+ getState<T extends Space | MapObject | Label | Marker | Model | Image | string>(target: T): TGetState<T> | undefined;
5451
6737
  setHoverColor(c: string): void;
5452
6738
  getHoverColor(): string | undefined;
5453
6739
  getDirections: (from: TNavigationTarget | TNavigationTarget[], to: TNavigationTarget | TNavigationTarget[], opt?: TGetDirectionsOptions) => Directions | undefined;
@@ -5459,6 +6745,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api' {
5459
6745
  * @internal
5460
6746
  */
5461
6747
  get __core(): RendererCore;
6748
+ clear(): void;
5462
6749
  destroy(): void;
5463
6750
  }
5464
6751
  }
@@ -5503,6 +6790,16 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/camera' {
5503
6790
  * The current center coordinate ({@link Coordinate}) of the camera.
5504
6791
  */
5505
6792
  get center(): Coordinate;
6793
+ /**
6794
+ * Toggle the mode of the camera to automatically set the minimum zoom level based on the size of the scene.
6795
+ * It will be automatically disabled when the minimum zoom level is set manually.
6796
+ * @param value The new value for the auto min zoom level mode.
6797
+ */
6798
+ setAutoMinZoomLevel(value: boolean): void;
6799
+ /**
6800
+ * The mode of the camera to automatically set the minimum zoom level based on the size of the scene.
6801
+ */
6802
+ get autoMinZoomLevel(): boolean;
5506
6803
  /**
5507
6804
  * The current zoom level of the camera in mercator zoom levels.
5508
6805
  *
@@ -5794,7 +7091,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/paths' {
5794
7091
  * // Add a red path to the map
5795
7092
  * map.Paths.add(coordinate, { color: '#ff0000' });
5796
7093
  */
5797
- add(coordinate: Coordinate[], options?: TAddPathOptions): Promise<Path>;
7094
+ add(coordinate: Coordinate[], options?: TAddPathOptions): Path;
5798
7095
  /**
5799
7096
  * Removes a specific path ({@link Path}) from the map.
5800
7097
  * @param path The path to be removed.
@@ -5849,7 +7146,7 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions' {
5849
7146
  import type { ParsedMVF } from '@mappedin/mvf';
5850
7147
  import type { DirectionsCollection } from '@packages/internal/geojson-navigator';
5851
7148
  import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5852
- import { Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7149
+ import { Connection, Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
5853
7150
  import type { TDirectionInstruction, TDirectionZone, TNavigationTarget } from '@mappedin/mappedin-js/mappedin-js/src/types';
5854
7151
  /**
5855
7152
  * Represents a set of directions between two points.
@@ -5875,14 +7172,16 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/directions' {
5875
7172
  * The array of instructions ({@link TDirectionInstruction}).
5876
7173
  */
5877
7174
  get instructions(): TDirectionInstruction[];
7175
+ lastConnectionAction?: 'take' | 'exit';
7176
+ lastConnection?: Connection;
5878
7177
  }
5879
7178
  export class DirectionsInternal {
5880
7179
  /**
5881
7180
  * @hidden
5882
7181
  */
5883
- constructor({ nodes, obstructions, connections, groupBy, }: {
7182
+ constructor({ nodes, geojsonCollection, connections, groupBy, }: {
5884
7183
  nodes: ParsedMVF['node.geojson'];
5885
- obstructions: ParsedMVF['obstruction'];
7184
+ geojsonCollection: ParsedMVF['obstruction'] | ParsedMVF['space'];
5886
7185
  connections: ParsedMVF['connection.json'];
5887
7186
  groupBy?: string;
5888
7187
  });
@@ -5957,100 +7256,584 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/outdoor' {
5957
7256
  * Whether the outdoorView is enabled.
5958
7257
  */
5959
7258
  get enabled(): boolean;
7259
+ /**
7260
+ * Whether the outdoorView is visible.
7261
+ */
7262
+ get visible(): boolean;
7263
+ /**
7264
+ * Show the outdoor view.
7265
+ */
7266
+ show(): void;
7267
+ /**
7268
+ * Hide the outdoor view.
7269
+ * @param excludedStyleLayerIds {string[]} E
7270
+ */
7271
+ hide(excludedStyleLayerIds?: string[]): void;
5960
7272
  }
5961
7273
  }
5962
7274
 
5963
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object' {
5964
- import type { ParsedMVF } from '@mappedin/mvf';
5965
- import { FloorObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object';
5966
- import type { Position, AddLabelOptions, RendererCore, MarkerState, LineStyle, PaintStyle } from '@mappedin/core-sdk';
5967
- import type { Coordinate, TAddMarkerOptions, TAddPathOptions, TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
5968
- import type { GLTFExportOptions, TAnimationOptions, TAddModelOptions, TAddModel } from '@mappedin/mappedin-js/mappedin-js/src/types';
5969
- import { type AggregatedStyleMap } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils';
5970
- import { PubSub } from '@packages/internal/common';
5971
- import { StackedMaps } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/stacked-maps/stacked-maps';
5972
- import type { TFloorChangeReason } from '@mappedin/mappedin-js/mappedin-js/src/events';
5973
- import type { FeatureCollection, LineString, MultiPolygon, Polygon } from 'geojson';
5974
- import type { Shape } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
5975
- export class GeojsonApiMapObject extends PubSub<{
5976
- 'floor-change': {
5977
- reason?: TFloorChangeReason;
5978
- floorId: string;
5979
- };
5980
- 'floor-change-start': {
5981
- floorId: string;
5982
- };
5983
- }> {
5984
- floors: FloorObject[];
5985
- currentFloorId: string;
5986
- id: string;
5987
- renderer: RendererCore;
5988
- mvf: ParsedMVF;
5989
- styleMap: AggregatedStyleMap;
5990
- StackedMaps: StackedMaps;
5991
- get currentFloor(): FloorObject;
5992
- setFloor(floorId: string, reason?: TFloorChangeReason): void;
5993
- Models: {
5994
- add: (id: string, targets: TAddModel[], opts: TAddModelOptions & {
5995
- floorId?: string;
5996
- }) => (import("@mappedin/core-sdk").GeometryState | import("@mappedin/core-sdk").ModelState)[];
5997
- remove: (_id: string, _groupId: string) => void;
5998
- };
5999
- Markers: {
6000
- add: (coordinate: Position, html: string, opts?: TAddMarkerOptions & {
6001
- floorId?: string;
6002
- }) => import("@mappedin/core-sdk").EntityId<MarkerState>;
6003
- remove: (_id: string) => void;
6004
- getContentEl: (id: string) => HTMLElement | undefined;
6005
- removeAll: () => void;
6006
- setPosition: (id: string, coordinate: Position, targetFloorId: string) => void;
6007
- animateTo: (id: string, coordinate: Position, targetFloorId: string, options?: TAnimationOptions) => Promise<void>;
6008
- };
6009
- Exporter: {
6010
- getCurrentSceneGLTF: (options: GLTFExportOptions) => Promise<Blob>;
6011
- };
6012
- Shapes: {
6013
- add: <T extends FeatureCollection<Polygon | MultiPolygon | LineString, any>>(geometry: T, style: T extends FeatureCollection<LineString, any> ? LineStyle : PaintStyle, opts: {
6014
- floorId?: string;
6015
- }) => string;
6016
- remove: (customGeometry: Shape) => string;
6017
- };
6018
- Labels: {
6019
- all: ({ onCreate }: {
6020
- onCreate: (labelId: string | number, text: string) => void;
6021
- }) => void;
6022
- add: (coordinate: Position, text: string, opts?: AddLabelOptions & {
6023
- floorId?: string;
6024
- }) => {
6025
- id: string | number;
6026
- };
6027
- remove: (targetId: string) => void;
6028
- removeAll: () => void;
6029
- };
6030
- Paths: {
6031
- add: (coordinates: Coordinate[], options?: TAddPathOptions) => Promise<{
6032
- id: string | number;
6033
- }[]>;
6034
- remove: (entityIds: string[]) => void;
6035
- };
6036
- constructor(id: string, mvf: any, styleMap: AggregatedStyleMap, options: TShow3DMapOptions | undefined, renderer: RendererCore);
7275
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/images' {
7276
+ import type { TAddImageOptions } from '@mappedin/mappedin-js/mappedin-js/src/types';
7277
+ import { Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
7278
+ import type { GeojsonApiMapObject } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/map-object';
7279
+ import type { Space, Door, Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7280
+ export class Images {
7281
+ #private;
7282
+ /**
7283
+ * @internal
7284
+ */
7285
+ get currentMap(): GeojsonApiMapObject | undefined;
7286
+ /**
7287
+ * @internal
7288
+ */
7289
+ constructor({ currentMapGetter }: {
7290
+ currentMapGetter: CurrentMapGetter;
7291
+ });
7292
+ /**
7293
+ * @internal
7294
+ */
7295
+ getById(id: string): {
7296
+ image: Image;
7297
+ entityId: string;
7298
+ } | undefined;
7299
+ /**
7300
+ * Adds an image to the map.
7301
+ *
7302
+ * @param target The target object ({@link Space}, {@link Door}, or {@link Coordinate}) for the image.
7303
+ * @param url The URL of the image.
7304
+ * @param options Optional additional options for the {@link Image}.
7305
+ * @returns {Image | undefined} The created {@link Image}, or undefined if creation failed.
7306
+ * @example
7307
+ * // Add an interactive {@link Image} to the map with custom HTML content.
7308
+ * map.Images.add(coordinate, '<div>Image Content</div>', { interactive: true });
7309
+ */
7310
+ add(target: Space | Door | Coordinate, url: string, options: TAddImageOptions): Image;
7311
+ /**
7312
+ * Removes a image from the map.
7313
+ *
7314
+ * @param image {Image} The {@link Image} which should be removed.
7315
+ * @example
7316
+ * mapView.Images.remove(image);
7317
+ */
7318
+ remove(image: Image): void;
7319
+ /**
7320
+ * Remove all the images from the map.
7321
+ *
7322
+ * @example
7323
+ * map.Images.removeAll();
7324
+ */
7325
+ removeAll(): Image[];
6037
7326
  }
7327
+ type CurrentMapGetter = () => GeojsonApiMapObject | undefined;
7328
+ export {};
6038
7329
  }
6039
7330
 
6040
- declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object' {
6041
- import type { ParsedMVF } from '@mappedin/mvf';
6042
- import type { RendererCore } from '@mappedin/core-sdk';
6043
- import type { AggregatedStyleMap } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils';
6044
- import type { TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
6045
- export class FloorObject {
6046
- id: string;
6047
- name: string;
6048
- elevation: number;
6049
- containerId: string;
6050
- layers: Map<string, string>;
6051
- constructor(parentId: string, floor: ParsedMVF['map.geojson'][0], renderer: RendererCore, options: TShow3DMapOptions, mvf?: ParsedMVF, styleMap?: AggregatedStyleMap);
6052
- load: () => this;
7331
+ declare module '@mappedin/mappedin-js/mappedin-js/src/search/internal' {
7332
+ import type { SearchResult as MiniSearchResult, Suggestion, MatchInfo } from 'minisearch';
7333
+ import type { EnterpriseLocation, EnterpriseCategory, Places } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7334
+ import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
7335
+ import { z } from 'zod';
7336
+ export class InternalSearch {
7337
+ constructor(mapData: MapData);
7338
+ /**
7339
+ * Populates the search indexes with the map data.
7340
+ * @returns A promise that resolves when the indexes are populated.
7341
+ */
7342
+ populate(): Promise<any[]>;
7343
+ search(term: string, options?: SearchOptions): Promise<SearchResult>;
7344
+ suggest(term: string, options?: SuggestOptions): Promise<Suggestion[]>;
7345
+ }
7346
+ export type SearchResultItem<T extends Places | EnterpriseLocation | EnterpriseCategory> = {
7347
+ type: T['__type'];
7348
+ match: MiniSearchResult['match'];
7349
+ score: number;
7350
+ item: T;
7351
+ };
7352
+ /**
7353
+ * @interface
7354
+ */
7355
+ export type SearchResultEnterpriseCategory = SearchResultItem<EnterpriseCategory>;
7356
+ /**
7357
+ * @interface
7358
+ */
7359
+ export type SearchResultEnterpriseLocations = SearchResultItem<EnterpriseLocation>;
7360
+ /**
7361
+ * @interface
7362
+ */
7363
+ export type SearchResultPlaces = SearchResultItem<Places>;
7364
+ /**
7365
+ * Search results
7366
+ */
7367
+ export type SearchResult = {
7368
+ /**
7369
+ * Places search results
7370
+ */
7371
+ places: SearchResultPlaces[];
7372
+ /**
7373
+ * Enterprise Locations search results
7374
+ */
7375
+ enterpriseLocations?: SearchResultEnterpriseLocations[];
7376
+ /**
7377
+ * Enterprise Categories search results
7378
+ */
7379
+ enterpriseCategories?: SearchResultEnterpriseCategory[];
7380
+ };
7381
+ export function removeAccents(it: string): string;
7382
+ const searchOptionsSchema: z.ZodObject<{
7383
+ /**
7384
+ * Options for searching places.
7385
+ * @property {Object} [fields] - Fields to search in places.
7386
+ * @property {boolean} [name] - Whether to search in the name field of places.
7387
+ * @property {boolean} [description] - Whether to search in the description field of places.
7388
+ * @property {number} [limit] - Maximum number of place results to return.
7389
+ */
7390
+ places: z.ZodOptional<z.ZodObject<{
7391
+ /**
7392
+ * Fields to search in places.
7393
+ * @property {boolean} [name] - Whether to search in the name field of places.
7394
+ * @property {boolean} [description] - Whether to search in the description field of places.
7395
+ */
7396
+ fields: z.ZodOptional<z.ZodObject<{
7397
+ /** Enable searching by place name */
7398
+ name: z.ZodOptional<z.ZodBoolean>;
7399
+ /** Enable searching by place description */
7400
+ description: z.ZodOptional<z.ZodBoolean>;
7401
+ }, "strip", z.ZodTypeAny, {
7402
+ name?: boolean | undefined;
7403
+ description?: boolean | undefined;
7404
+ }, {
7405
+ name?: boolean | undefined;
7406
+ description?: boolean | undefined;
7407
+ }>>;
7408
+ /** Maximum number of place results to return */
7409
+ limit: z.ZodOptional<z.ZodNumber>;
7410
+ }, "strip", z.ZodTypeAny, {
7411
+ limit?: number | undefined;
7412
+ fields?: {
7413
+ name?: boolean | undefined;
7414
+ description?: boolean | undefined;
7415
+ } | undefined;
7416
+ }, {
7417
+ limit?: number | undefined;
7418
+ fields?: {
7419
+ name?: boolean | undefined;
7420
+ description?: boolean | undefined;
7421
+ } | undefined;
7422
+ }>>;
7423
+ /**
7424
+ * Options for searching categories.
7425
+ * @property {Object} [fields] - Fields to search in categories.
7426
+ * @property {boolean} [name] - Whether to search in the name field of categories.
7427
+ * @property {boolean} [description] - Whether to search in the description field of categories.
7428
+ * @property {boolean} ['locations.name'] - Whether to search in the locations' names of categories.
7429
+ * @property {number} [limit] - Maximum number of category results to return.
7430
+ */
7431
+ enterpriseCategories: z.ZodOptional<z.ZodObject<{
7432
+ /**
7433
+ * Fields to search in categories.
7434
+ * @property {boolean} [name] - Whether to search in the name field of categories.
7435
+ * @property {boolean} [description] - Whether to search in the description field of categories.
7436
+ * @property {boolean} ['locations.name'] - Whether to search in the locations' names of categories.
7437
+ */
7438
+ fields: z.ZodOptional<z.ZodObject<{
7439
+ /** Enable searching by category name */
7440
+ name: z.ZodOptional<z.ZodBoolean>;
7441
+ /** Enable searching by category description */
7442
+ description: z.ZodOptional<z.ZodBoolean>;
7443
+ /** Enable searching by names of locations within the category */
7444
+ 'locations.name': z.ZodOptional<z.ZodBoolean>;
7445
+ }, "strip", z.ZodTypeAny, {
7446
+ name?: boolean | undefined;
7447
+ description?: boolean | undefined;
7448
+ 'locations.name'?: boolean | undefined;
7449
+ }, {
7450
+ name?: boolean | undefined;
7451
+ description?: boolean | undefined;
7452
+ 'locations.name'?: boolean | undefined;
7453
+ }>>;
7454
+ /** Maximum number of category results to return */
7455
+ limit: z.ZodOptional<z.ZodNumber>;
7456
+ }, "strip", z.ZodTypeAny, {
7457
+ limit?: number | undefined;
7458
+ fields?: {
7459
+ name?: boolean | undefined;
7460
+ description?: boolean | undefined;
7461
+ 'locations.name'?: boolean | undefined;
7462
+ } | undefined;
7463
+ }, {
7464
+ limit?: number | undefined;
7465
+ fields?: {
7466
+ name?: boolean | undefined;
7467
+ description?: boolean | undefined;
7468
+ 'locations.name'?: boolean | undefined;
7469
+ } | undefined;
7470
+ }>>;
7471
+ /**
7472
+ * Options for searching locations.
7473
+ * @property {Object} [fields] - Fields to search in locations.
7474
+ * @property {boolean} [name] - Whether to search in the name field of locations.
7475
+ * @property {boolean} [tags] - Whether to search in the tags field of locations.
7476
+ * @property {boolean} [description] - Whether to search in the description field of locations.
7477
+ * @property {number} [limit] - Maximum number of location results to return.
7478
+ */
7479
+ enterpriseLocations: z.ZodOptional<z.ZodObject<{
7480
+ /**
7481
+ * Fields to search in locations.
7482
+ * @property {boolean} [name] - Whether to search in the name field of locations.
7483
+ * @property {boolean} [tags] - Whether to search in the tags field of locations.
7484
+ * @property {boolean} [description] - Whether to search in the description field of locations.
7485
+ */
7486
+ fields: z.ZodOptional<z.ZodObject<{
7487
+ /** Enable searching by location name */
7488
+ name: z.ZodOptional<z.ZodBoolean>;
7489
+ /** Enable searching by location tags */
7490
+ tags: z.ZodOptional<z.ZodBoolean>;
7491
+ /** Enable searching by location description */
7492
+ description: z.ZodOptional<z.ZodBoolean>;
7493
+ }, "strip", z.ZodTypeAny, {
7494
+ name?: boolean | undefined;
7495
+ description?: boolean | undefined;
7496
+ tags?: boolean | undefined;
7497
+ }, {
7498
+ name?: boolean | undefined;
7499
+ description?: boolean | undefined;
7500
+ tags?: boolean | undefined;
7501
+ }>>;
7502
+ /** Maximum number of location results to return */
7503
+ limit: z.ZodOptional<z.ZodNumber>;
7504
+ }, "strip", z.ZodTypeAny, {
7505
+ limit?: number | undefined;
7506
+ fields?: {
7507
+ name?: boolean | undefined;
7508
+ description?: boolean | undefined;
7509
+ tags?: boolean | undefined;
7510
+ } | undefined;
7511
+ }, {
7512
+ limit?: number | undefined;
7513
+ fields?: {
7514
+ name?: boolean | undefined;
7515
+ description?: boolean | undefined;
7516
+ tags?: boolean | undefined;
7517
+ } | undefined;
7518
+ }>>;
7519
+ }, "strip", z.ZodTypeAny, {
7520
+ enterpriseLocations?: {
7521
+ limit?: number | undefined;
7522
+ fields?: {
7523
+ name?: boolean | undefined;
7524
+ description?: boolean | undefined;
7525
+ tags?: boolean | undefined;
7526
+ } | undefined;
7527
+ } | undefined;
7528
+ enterpriseCategories?: {
7529
+ limit?: number | undefined;
7530
+ fields?: {
7531
+ name?: boolean | undefined;
7532
+ description?: boolean | undefined;
7533
+ 'locations.name'?: boolean | undefined;
7534
+ } | undefined;
7535
+ } | undefined;
7536
+ places?: {
7537
+ limit?: number | undefined;
7538
+ fields?: {
7539
+ name?: boolean | undefined;
7540
+ description?: boolean | undefined;
7541
+ } | undefined;
7542
+ } | undefined;
7543
+ }, {
7544
+ enterpriseLocations?: {
7545
+ limit?: number | undefined;
7546
+ fields?: {
7547
+ name?: boolean | undefined;
7548
+ description?: boolean | undefined;
7549
+ tags?: boolean | undefined;
7550
+ } | undefined;
7551
+ } | undefined;
7552
+ enterpriseCategories?: {
7553
+ limit?: number | undefined;
7554
+ fields?: {
7555
+ name?: boolean | undefined;
7556
+ description?: boolean | undefined;
7557
+ 'locations.name'?: boolean | undefined;
7558
+ } | undefined;
7559
+ } | undefined;
7560
+ places?: {
7561
+ limit?: number | undefined;
7562
+ fields?: {
7563
+ name?: boolean | undefined;
7564
+ description?: boolean | undefined;
7565
+ } | undefined;
7566
+ } | undefined;
7567
+ }>;
7568
+ const suggestOptionsSchema: z.ZodObject<{
7569
+ /**
7570
+ * Options for searching places.
7571
+ * @property {boolean} [enabled] - Whether to search in places.
7572
+ */
7573
+ places: z.ZodOptional<z.ZodObject<{
7574
+ /** Enable searching by place name */
7575
+ enabled: z.ZodOptional<z.ZodBoolean>;
7576
+ }, "strip", z.ZodTypeAny, {
7577
+ enabled?: boolean | undefined;
7578
+ }, {
7579
+ enabled?: boolean | undefined;
7580
+ }>>;
7581
+ /**
7582
+ * Options for searching locations.
7583
+ * @property {boolean} [enabled] - Whether to search in locations.
7584
+ */
7585
+ enterpriseLocations: z.ZodOptional<z.ZodObject<{
7586
+ /** Enable searching by location name */
7587
+ enabled: z.ZodOptional<z.ZodBoolean>;
7588
+ }, "strip", z.ZodTypeAny, {
7589
+ enabled?: boolean | undefined;
7590
+ }, {
7591
+ enabled?: boolean | undefined;
7592
+ }>>;
7593
+ }, "strip", z.ZodTypeAny, {
7594
+ enterpriseLocations?: {
7595
+ enabled?: boolean | undefined;
7596
+ } | undefined;
7597
+ places?: {
7598
+ enabled?: boolean | undefined;
7599
+ } | undefined;
7600
+ }, {
7601
+ enterpriseLocations?: {
7602
+ enabled?: boolean | undefined;
7603
+ } | undefined;
7604
+ places?: {
7605
+ enabled?: boolean | undefined;
7606
+ } | undefined;
7607
+ }>;
7608
+ export type SearchOptions = z.infer<typeof searchOptionsSchema>;
7609
+ export type SuggestOptions = z.infer<typeof suggestOptionsSchema>;
7610
+ export { Suggestion, MatchInfo };
7611
+ }
7612
+
7613
+ declare module '@mappedin/mappedin-js/mappedin-js/src/search/external' {
7614
+ import type MapData from '@mappedin/mappedin-js/mappedin-js/src/map-data';
7615
+ import type { InternalSearch, SearchOptions, SuggestOptions } from '@mappedin/mappedin-js/mappedin-js/src/search/internal';
7616
+ import type { MapDataInternal } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
7617
+ export class Search {
7618
+ #private;
7619
+ /**
7620
+ * Whether the search is enabled.
7621
+ * @default false
7622
+ */
7623
+ enabled: boolean;
7624
+ constructor(mapData: MapData, mapDataInternal: MapDataInternal, { enabled }?: {
7625
+ enabled?: boolean;
7626
+ });
7627
+ /**
7628
+ * Searches for places, locations, and categories.
7629
+ * @param term - The search term.
7630
+ * @param options - The search options.
7631
+ * @returns The search results.
7632
+ * @example
7633
+ * ```ts
7634
+ * const results = await search.query('Coffee Shop');
7635
+ * console.log(results.locations);
7636
+ * ```
7637
+ */
7638
+ query(term: string, options?: SearchOptions): ReturnType<typeof InternalSearch.prototype.search>;
7639
+ /**
7640
+ * Suggests the names of places, locations, and categories.
7641
+ * @param term - The search term.
7642
+ * @param options - The suggest options.
7643
+ * @returns The search suggestions.
7644
+ * @example
7645
+ * ```ts
7646
+ * const suggestions = await search.suggest('Coffee');
7647
+ * console.log(suggestions);
7648
+ * ```
7649
+ */
7650
+ suggest(term: string, options?: SuggestOptions): Promise<import("minisearch").Suggestion[]>;
7651
+ /**
7652
+ * Enables the search.
7653
+ */
7654
+ enable(): Promise<void>;
7655
+ }
7656
+ export type SearchState = {
7657
+ /**
7658
+ * Whether the search is enabled.
7659
+ */
7660
+ enabled: boolean;
7661
+ };
7662
+ }
7663
+
7664
+ declare module '@mappedin/mappedin-js/mappedin-js/src/analytics/customer' {
7665
+ /**
7666
+ * Valid track-analytics API contexts. These should match the expected values of that endpoint or the requests will fail.
7667
+ * If a set context is not in this list, it will default to the first VALID_CONTEXTS value.
7668
+ */
7669
+ export const VALID_CONTEXTS: readonly ["websdk", "web", "webv2", "kiosk-v2", "mobile", "iossdk", "androidsdk", "reactnativesdk", "gen7", "bespoke"];
7670
+ type ValidContext = (typeof VALID_CONTEXTS)[number];
7671
+ export const DEFAULT_CONTEXT: "websdk";
7672
+ export const ANALYTICS_URL = "https://api-gateway.mappedin.com/track-analytics/a/";
7673
+ export const FOUND_POSITION = "found-position";
7674
+ export const FOUND_FLOOR = "found-floor";
7675
+ type BlueDotEvents = typeof FOUND_FLOOR | typeof FOUND_POSITION;
7676
+ export class AnalyticsInternal {
7677
+ #private;
7678
+ constructor();
7679
+ init(options: AnalyticsUpdateOptions): void;
7680
+ /**
7681
+ * Reset state and options
7682
+ */
7683
+ reset(): void;
7684
+ updateState(update: UpdateStateParam): void;
7685
+ get authReady(): boolean;
7686
+ getState(): AnalyticState;
7687
+ capture<T extends keyof CaptureEventsPayloadMap>(eventName: T, query: CaptureEventsPayloadMap[T]): Promise<Response> | Promise<void>;
7688
+ capture<T extends keyof CaptureEventsPayloadMap | (string & NonNullable<unknown>)>(target: T, query: T extends keyof CaptureEventsPayloadMap ? CaptureEventsPayloadMap[T] : Record<string, any>): Promise<Response> | Promise<void>;
7689
+ /**
7690
+ * @internal
7691
+ */
7692
+ sendGetMapDataEvent(payload: {
7693
+ parseDuration: number;
7694
+ downloadDuration: number;
7695
+ viewId?: string;
7696
+ }): void | Promise<Response> | Promise<void>;
7697
+ sendChangeLanguageEvent(payload: {
7698
+ fromLanguage: string;
7699
+ }): void | Promise<Response> | Promise<void>;
7700
+ sendWatchPositionDenied(): void | Promise<Response> | Promise<void>;
7701
+ /**
7702
+ * @internal
7703
+ */
7704
+ sendMapViewLoadedEvent({ firstRenderDuration, dimension, }: {
7705
+ firstRenderDuration: number;
7706
+ dimension: {
7707
+ height: number;
7708
+ width: number;
7709
+ };
7710
+ }): void | Promise<Response> | Promise<void>;
7711
+ /**
7712
+ * @internal
7713
+ */
7714
+ sendGetDirectionsEvent: (start: string, end: string) => void;
7715
+ sendBlueDotEvents(event: BlueDotEvents): void | Promise<Response> | Promise<void>;
7716
+ }
7717
+ type UpdateStateParam = Partial<Pick<AnalyticState, 'geolocationMode' | 'context' | 'logEvents' | 'userPosition' | 'mapId' | 'sendEvents' | 'logEvents' | 'accessToken' | 'sessionId'>>;
7718
+ type CaptureEventsPayloadMap = {
7719
+ '$select-location': {
7720
+ id: string;
7721
+ };
7722
+ '$select-category': {
7723
+ id: string;
7724
+ };
7725
+ '$query-suggest': {
7726
+ query: string;
7727
+ suggestions?: string[];
7728
+ };
7729
+ '$query-search': {
7730
+ query: string;
7731
+ hits?: string[];
7732
+ };
7733
+ };
7734
+ export const analyticsInternal: AnalyticsInternal;
7735
+ export class Analytics {
7736
+ #private;
7737
+ /**
7738
+ * @internal
7739
+ */
7740
+ constructor(internalAnalytics: AnalyticsInternal);
7741
+ /**
7742
+ * Captures an analytic event with a custom target and query payload.
7743
+ *
7744
+ * @param target - The event name or target can be .
7745
+ * @param query - The payload associated with the event.
7746
+ * @returns A promise that resolves to the server response or void.
7747
+ */
7748
+ capture: typeof AnalyticsInternal.prototype.capture;
7749
+ /**
7750
+ * Updates the analytics state with the provided parameters.
7751
+ * @param update - The state parameters to update.
7752
+ */
7753
+ updateState: (update: TAnalyticsUpdateState) => void;
7754
+ /**
7755
+ * Returns the current analytics state.
7756
+ * @internal
7757
+ * @returns the current analytics state
7758
+ */
7759
+ getState(): {
7760
+ version: string;
7761
+ /** The platform string to be included in analytics. */
7762
+ platformString: string;
7763
+ /** The base URI for the analytics endpoint. */
7764
+ baseUri: string;
7765
+ /** The base URI with mapId appended. */
7766
+ analyticsBaseUrl: string;
7767
+ /** Flag to disable authentication. */
7768
+ noAuth: boolean;
7769
+ /** Flag to enable geolocation mode. */
7770
+ geolocationMode: boolean;
7771
+ /** The device ID to be used for analytics. */
7772
+ deviceId: string;
7773
+ /** The session ID to be used for analytics. */
7774
+ sessionId: string;
7775
+ /** The context in which the analytics are being used. */
7776
+ context: ValidContext;
7777
+ /** The last known user position. */
7778
+ userPosition?: AnalyticsUserPosition;
7779
+ /** The ID of the map to be used for analytics. */
7780
+ mapId?: string;
7781
+ /** Flag to enable logging of events. */
7782
+ logEvents: boolean;
7783
+ /** Flag to enable sending of events. */
7784
+ sendEvents: boolean;
7785
+ } & AnalyticsAuth;
6053
7786
  }
7787
+ type AnalyticsUserPosition = {
7788
+ bluedotTimestamp: number;
7789
+ latitude: number;
7790
+ longitude: number;
7791
+ floorLevel?: number;
7792
+ accuracy: number;
7793
+ };
7794
+ type AnalyticsAuth = {
7795
+ /** The API key for authentication. */
7796
+ key?: string;
7797
+ /** The API secret for authentication. */
7798
+ secret?: string;
7799
+ /** The access token for authentication. */
7800
+ accessToken?: string;
7801
+ };
7802
+ export type AnalyticState = {
7803
+ version: string;
7804
+ /** The platform string to be included in analytics. */
7805
+ platformString: string;
7806
+ /** The base URI for the analytics endpoint. */
7807
+ baseUri: string;
7808
+ /** The base URI with mapId appended. */
7809
+ analyticsBaseUrl: string;
7810
+ /** Flag to disable authentication. */
7811
+ noAuth: boolean;
7812
+ /** Flag to enable geolocation mode. */
7813
+ geolocationMode: boolean;
7814
+ /** The device ID to be used for analytics. */
7815
+ deviceId: string;
7816
+ /** The session ID to be used for analytics. */
7817
+ sessionId: string;
7818
+ /** The context in which the analytics are being used. */
7819
+ context: ValidContext;
7820
+ /** The last known user position. */
7821
+ userPosition?: AnalyticsUserPosition;
7822
+ /** The ID of the map to be used for analytics. */
7823
+ mapId?: string;
7824
+ /** Flag to enable logging of events. */
7825
+ logEvents: boolean;
7826
+ /** Flag to enable sending of events. */
7827
+ sendEvents: boolean;
7828
+ } & AnalyticsAuth;
7829
+ type AnalyticsOptions = Partial<Omit<AnalyticState, 'version' | 'analyticsBaseUrl' | 'geolocationMode' | 'deviceId' | 'userPosition'>>;
7830
+ export type AnalyticsUpdateOptions = Omit<AnalyticsOptions, keyof AnalyticsAuth> & ((Required<Pick<AnalyticsAuth, 'key' | 'secret'>> & Partial<Pick<AnalyticsAuth, 'accessToken'>>) | (Required<Pick<AnalyticsAuth, 'accessToken'>> & Partial<Pick<AnalyticsAuth, 'key' | 'secret'>>));
7831
+ /**
7832
+ * Options for updating the current state of analytics.
7833
+ * @interface
7834
+ */
7835
+ export type TAnalyticsUpdateState = Pick<Partial<AnalyticState>, 'logEvents' | 'sendEvents' | 'baseUri' | 'accessToken'>;
7836
+ export {};
6054
7837
  }
6055
7838
 
6056
7839
  declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-object' {
@@ -6081,17 +7864,18 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/map-data-objects/base-meta
6081
7864
  }
6082
7865
  }
6083
7866
 
6084
- declare module '@mappedin/mappedin-js/geojson/src/entities/three-d' {
7867
+ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry3d' {
6085
7868
  import { Object3D } from 'three';
6086
7869
  import type { InteractionComponent } from '@mappedin/mappedin-js/geojson/src/components/interaction';
6087
7870
  import type { MeshComponent } from '@mappedin/mappedin-js/geojson/src/components/mesh';
6088
7871
  import type { ModelComponent } from '@mappedin/mappedin-js/geojson/src/components/model';
6089
7872
  import type { PathComponent } from '@mappedin/mappedin-js/geojson/src/components/path';
6090
7873
  import type { StyleComponent } from '@mappedin/mappedin-js/geojson/src/components/style';
7874
+ import type { ImageComponent } from '@mappedin/mappedin-js/geojson/src/components/image';
6091
7875
  import type { CustomGeometryComponent } from '@mappedin/mappedin-js/geojson/src/components/custom';
6092
- import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
6093
- import { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/entity-group';
6094
- export enum ThreeDComponents {
7876
+ import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
7877
+ import type { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
7878
+ export enum Geometry3DComponents {
6095
7879
  Mesh = 0,
6096
7880
  Style = 1,
6097
7881
  Interaction = 2
@@ -6099,27 +7883,27 @@ declare module '@mappedin/mappedin-js/geojson/src/entities/three-d' {
6099
7883
  export class Geometry3DObject3D extends Object3D {
6100
7884
  userData: {
6101
7885
  entityId: string;
6102
- type: 'geometry' | 'path' | 'model' | 'custom-geometry';
7886
+ type: 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
6103
7887
  };
6104
7888
  }
6105
- export type MeshComponentTypes = MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent;
7889
+ export type MeshComponentTypes = MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent;
6106
7890
  export class Geometry3D {
6107
7891
  id: string | number;
6108
7892
  components: [MeshComponentTypes, StyleComponent, InteractionComponent?];
6109
- get object3d(): import("../components/mesh").EntityBatchedMesh | Geometry3DObject3D | undefined;
7893
+ get object3d(): Geometry3DObject3D | import("../components/mesh").EntityBatchedMesh | undefined;
6110
7894
  get parent(): GroupContainerObject3D | GeometryGroupObject3D | null;
6111
- get type(): 'geometry' | 'path' | 'model' | 'custom-geometry';
6112
- constructor(meshComponent: MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent, styleComponent: StyleComponent);
7895
+ get type(): 'geometry' | 'path' | 'model' | 'custom-geometry' | 'image';
7896
+ constructor(meshComponent: MeshComponent | PathComponent | ModelComponent | CustomGeometryComponent | ImageComponent, styleComponent: StyleComponent);
6113
7897
  }
6114
7898
  }
6115
7899
 
6116
- declare module '@mappedin/mappedin-js/geojson/src/entities/two-d' {
7900
+ declare module '@mappedin/mappedin-js/geojson/src/entities/geometry2d' {
6117
7901
  import { Object3D, Vector3 } from 'three';
6118
7902
  import type { MarkerComponent } from '@mappedin/mappedin-js/geojson/src/components/marker';
6119
7903
  import type LabelComponent from '@mappedin/mappedin-js/geojson/src/components/label';
6120
- import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
7904
+ import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
6121
7905
  import type { InteractionComponent } from '@mappedin/mappedin-js/geojson/src/components/interaction';
6122
- export enum TWOD_COMPONENTS {
7906
+ export enum Geometry2DComponents {
6123
7907
  UI = 0,
6124
7908
  Interaction = 1
6125
7909
  }
@@ -6165,6 +7949,8 @@ declare module '@mappedin/mappedin-js/geojson/src/components/geometry-group-styl
6165
7949
  opacity: number;
6166
7950
  shading?: Shading;
6167
7951
  outline: boolean;
7952
+ texture?: string;
7953
+ topTexture?: string;
6168
7954
  };
6169
7955
  export class GeometryGroupStyleComponent implements GeometryGroupStyle {
6170
7956
  #private;
@@ -6172,6 +7958,13 @@ declare module '@mappedin/mappedin-js/geojson/src/components/geometry-group-styl
6172
7958
  topColor?: string;
6173
7959
  opacity: number;
6174
7960
  outline: boolean;
7961
+ texture?: string;
7962
+ topTexture?: string;
7963
+ /**
7964
+ * Ideally for handling all style component changes. However, it's only used for handling outline for now.
7965
+ * 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
7966
+ */
7967
+ dirty: boolean;
6175
7968
  get shading(): Required<Shading> | undefined;
6176
7969
  set shading(value: Shading | undefined);
6177
7970
  constructor(style?: Partial<GeometryGroupStyle>);
@@ -6179,11 +7972,148 @@ declare module '@mappedin/mappedin-js/geojson/src/components/geometry-group-styl
6179
7972
  export {};
6180
7973
  }
6181
7974
 
7975
+ declare module '@mappedin/mappedin-js/geojson/src/components/image' {
7976
+ import type { LineSegments, PlaneGeometry, MeshLambertMaterial } from 'three';
7977
+ import { Vector3, Mesh } from 'three';
7978
+ import type { Position } from '@mappedin/mappedin-js/geojson/src/types';
7979
+ import type { Feature, Point } from 'geojson';
7980
+ import { Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
7981
+ import { z } from 'zod';
7982
+ export class EntityMesh extends Mesh {
7983
+ userData: {
7984
+ entityId: string | number;
7985
+ };
7986
+ }
7987
+ export type ImageStyle = {
7988
+ /**
7989
+ * Attempt to keep the image facing the camera as much as possible
7990
+ */
7991
+ flipImageToFaceCamera?: boolean;
7992
+ /**
7993
+ * url of the image
7994
+ */
7995
+ url: string;
7996
+ };
7997
+ export type ImageProperties = {
7998
+ width: number;
7999
+ height: number;
8000
+ rotation?: number;
8001
+ verticalOffset?: number;
8002
+ };
8003
+ export const addImageFeatureStyleSchema: z.ZodObject<{
8004
+ flipImageToFaceCamera: z.ZodOptional<z.ZodBoolean>;
8005
+ url: z.ZodString;
8006
+ }, "strip", z.ZodTypeAny, {
8007
+ url: string;
8008
+ flipImageToFaceCamera?: boolean | undefined;
8009
+ }, {
8010
+ url: string;
8011
+ flipImageToFaceCamera?: boolean | undefined;
8012
+ }>;
8013
+ export const addImageFeatureSchema: z.ZodObject<{
8014
+ type: z.ZodEnum<["Feature"]>;
8015
+ properties: z.ZodObject<{
8016
+ width: z.ZodNumber;
8017
+ height: z.ZodNumber;
8018
+ rotation: z.ZodOptional<z.ZodNumber>;
8019
+ verticalOffset: z.ZodOptional<z.ZodNumber>;
8020
+ }, "strip", z.ZodTypeAny, {
8021
+ height: number;
8022
+ width: number;
8023
+ rotation?: number | undefined;
8024
+ verticalOffset?: number | undefined;
8025
+ }, {
8026
+ height: number;
8027
+ width: number;
8028
+ rotation?: number | undefined;
8029
+ verticalOffset?: number | undefined;
8030
+ }>;
8031
+ geometry: z.ZodObject<{
8032
+ type: z.ZodEnum<["Point"]>;
8033
+ coordinates: z.ZodArray<z.ZodNumber, "many">;
8034
+ }, "strip", z.ZodTypeAny, {
8035
+ type: "Point";
8036
+ coordinates: number[];
8037
+ }, {
8038
+ type: "Point";
8039
+ coordinates: number[];
8040
+ }>;
8041
+ }, "strip", z.ZodTypeAny, {
8042
+ type: "Feature";
8043
+ geometry: {
8044
+ type: "Point";
8045
+ coordinates: number[];
8046
+ };
8047
+ properties: {
8048
+ height: number;
8049
+ width: number;
8050
+ rotation?: number | undefined;
8051
+ verticalOffset?: number | undefined;
8052
+ };
8053
+ }, {
8054
+ type: "Feature";
8055
+ geometry: {
8056
+ type: "Point";
8057
+ coordinates: number[];
8058
+ };
8059
+ properties: {
8060
+ height: number;
8061
+ width: number;
8062
+ rotation?: number | undefined;
8063
+ verticalOffset?: number | undefined;
8064
+ };
8065
+ }>;
8066
+ export function validateImage(id: string | number, feature: Feature<Point, ImageProperties>, style: ImageStyle): void;
8067
+ /**
8068
+ * State representing an Image
8069
+ */
8070
+ export type ImageState = {
8071
+ readonly id: string | number;
8072
+ readonly type: 'image';
8073
+ /**
8074
+ * The position of the image in [lon, lat]
8075
+ */
8076
+ readonly position: Position;
8077
+ /**
8078
+ * The offset of the image in the z direction
8079
+ */
8080
+ readonly verticalOffset: number;
8081
+ /**
8082
+ * Whether the image is visible
8083
+ */
8084
+ visible: boolean;
8085
+ /**
8086
+ * Attempt to keep the image facing the camera as much as possible
8087
+ */
8088
+ flipImageToFaceCamera: boolean;
8089
+ };
8090
+ export class ImageComponent {
8091
+ mesh: Geometry3DObject3D;
8092
+ imageMesh?: EntityMesh;
8093
+ outline?: LineSegments;
8094
+ readonly type = "image";
8095
+ instanceIndex: number;
8096
+ geometry?: PlaneGeometry;
8097
+ material?: MeshLambertMaterial;
8098
+ feature: Feature<Point, ImageProperties>;
8099
+ constructor(feature: Feature<Point, ImageProperties>);
8100
+ get visible(): boolean;
8101
+ set visible(visible: boolean);
8102
+ position: Vector3;
8103
+ }
8104
+ }
8105
+
8106
+ declare module '@mappedin/mappedin-js/geojson/src/entities' {
8107
+ export { updateInteractivity } from '@mappedin/mappedin-js/geojson/src/entities/utils';
8108
+ export { Geometry2D, Geometry2DComponents } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
8109
+ export { Geometry3D, Geometry3DComponents } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
8110
+ }
8111
+
6182
8112
  declare module '@mappedin/mappedin-js/geojson/src/types/options' {
6183
8113
  import type { Position } from '@mappedin/mappedin-js/geojson/src/types/geometry';
6184
8114
  import type { Map as MapLibreMap } from '@mappedin/mappedin-js/packages/outdoor-context-v4';
6185
- import type { WatermarkOptions } from '@mappedin/mappedin-js/geojson/src/systems/watermark/system';
6186
8115
  import type { AttributionControlOptions } from '@mappedin/mappedin-js/geojson/src/systems/html-controls/system';
8116
+ import type { WatermarkOptions } from '@mappedin/mappedin-js/geojson/src';
6187
8117
  export type RendererCoreOptions = Partial<{
6188
8118
  center?: Position;
6189
8119
  zoomLevel?: number;
@@ -6219,15 +8149,28 @@ declare module '@mappedin/mappedin-js/geojson/src/types/constants' {
6219
8149
  declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-optimization/batched-material' {
6220
8150
  import { MeshLambertMaterial, type Color, type Texture, type MeshLambertMaterialParameters } from 'three';
6221
8151
  export class BatchedStandardMaterial extends MeshLambertMaterial {
6222
- constructor(params: MeshLambertMaterialParameters, geometryCount: number);
8152
+ constructor(params: MeshLambertMaterialParameters, geometryCount: number, scaleFactor?: number);
8153
+ /**
8154
+ * These control the repeat factor of the texture in the Y direction.
8155
+ * So when we scale a geometry, it needs to scale the texture as well.
8156
+ * For now this only applies to detached geometries.
8157
+ */
8158
+ get repeatYFactor(): number;
8159
+ set repeatYFactor(value: number);
6223
8160
  get texture(): Texture;
6224
8161
  set texture(texture: Texture);
6225
8162
  get topTexture(): Texture;
6226
8163
  set topTexture(texture: Texture);
6227
8164
  setGradientShading(start: number, end: number, intensity: number): void;
6228
8165
  setColor(batchId: number, color: Color, topColor: Color): void;
8166
+ getColor(batchId: number): {
8167
+ color: Color;
8168
+ topColor: Color;
8169
+ };
6229
8170
  showTextures: (batchId: number) => void;
6230
8171
  hideTextures(batchId: number): void;
8172
+ removeSideTexture(batchId: number): void;
8173
+ removeTopTexture(batchId: number): void;
6231
8174
  dispose(): void;
6232
8175
  }
6233
8176
  }
@@ -6302,6 +8245,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/system' {
6302
8245
  import { PubSub } from '@mappedin/mappedin-js/packages/common/pubsub';
6303
8246
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
6304
8247
  import type { TSerializedCollider, TSerializedColliderResponse } from '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-processor';
8248
+ import type { WatermarkPosition } from '@mappedin/mappedin-js/geojson/src/systems/watermark/system';
6305
8249
  export type TMessageEvent = MessageEvent<{
6306
8250
  msgId: string;
6307
8251
  colliders: TSerializedColliderResponse[];
@@ -6318,6 +8262,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/system' {
6318
8262
  totalHeight: number;
6319
8263
  watermarkWidth: number;
6320
8264
  watermarkHeight: number;
8265
+ watermarkPosition: WatermarkPosition;
6321
8266
  colliders: TSerializedCollider[];
6322
8267
  devicePixelRatio: number;
6323
8268
  };
@@ -6333,7 +8278,8 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/system' {
6333
8278
  totalHeight: number,
6334
8279
  totalWidth: number,
6335
8280
  watermarkWidth: number,
6336
- watermarkHeight: number
8281
+ watermarkHeight: number,
8282
+ watermarkPosition: WatermarkPosition
6337
8283
  ];
6338
8284
  export class CollisionSystem extends PubSub<TCollisionSystemEvent, keyof TCollisionSystemEvent> {
6339
8285
  dirty: boolean;
@@ -6352,8 +8298,8 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/system' {
6352
8298
  currentMsgId: string;
6353
8299
  working: boolean;
6354
8300
  componentArray: (MarkerComponent | LabelComponent)[];
6355
- update: (watermarkWidth: number, watermarkHeight: number) => void;
6356
- resize(watermarkWidth: number, watermarkHeight: number): void;
8301
+ update: (watermarkWidth: number, watermarkHeight: number, watermarkPosition?: WatermarkPosition) => void;
8302
+ resize(watermarkWidth: number, watermarkHeight: number, watermarkPosition: WatermarkPosition): void;
6357
8303
  /**
6358
8304
  * Resolve collisions
6359
8305
  */
@@ -6394,7 +8340,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/zoom-interpolation/zoo
6394
8340
  declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-creation-and-optimization/system' {
6395
8341
  import type { BufferGeometry } from 'three';
6396
8342
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
6397
- import { Geometry3D, Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/three-d';
8343
+ import { Geometry3D, Geometry3DObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
6398
8344
  import type { Feature, LineString, MultiPolygon, Point, Polygon } from 'geojson';
6399
8345
  import type { LineStyle, ModelProperties, ModelStyle, PaintStyle } from '@mappedin/mappedin-js/geojson/src/types';
6400
8346
  import type { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -6490,13 +8436,18 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/2d-draw/system' {
6490
8436
 
6491
8437
  declare module '@mappedin/mappedin-js/geojson/src/systems/draw/system' {
6492
8438
  import { PubSub } from '@packages/internal/common';
8439
+ import { MeshComponent } from '@mappedin/mappedin-js/geojson/src/components/mesh';
8440
+ import { StyleComponent } from '@mappedin/mappedin-js/geojson/src/components/style';
6493
8441
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
8442
+ import { InteractionComponent } from '@mappedin/mappedin-js/geojson/src/components/interaction';
8443
+ import type { GeometryGroupStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/geometry-group-style';
6494
8444
  export class DrawSystem extends PubSub<{
6495
8445
  'texture-loaded': void;
6496
8446
  }> {
6497
8447
  #private;
6498
8448
  state: RendererState;
6499
8449
  constructor(state: RendererState);
8450
+ processTextures(component: MeshComponent, styleComponent: StyleComponent | GeometryGroupStyleComponent, interactionComponent?: InteractionComponent): void;
6500
8451
  update(): void;
6501
8452
  destroy(): void;
6502
8453
  }
@@ -6749,8 +8700,12 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/dom-resize/system' {
6749
8700
  declare module '@mappedin/mappedin-js/geojson/src/systems/pan-bounds/system' {
6750
8701
  import type { CameraSystem } from '@mappedin/mappedin-js/geojson/src/systems/camera';
6751
8702
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
6752
- export class PanBoundsSystem {
8703
+ import { PubSub } from '@packages/internal/common';
8704
+ export class PanBoundsSystem extends PubSub<{
8705
+ update: void;
8706
+ }> {
6753
8707
  dirty: boolean;
8708
+ autoMinZoomLevel: boolean;
6754
8709
  constructor(state: RendererState, cameraSystem: CameraSystem);
6755
8710
  /**
6756
8711
  * Recomputes the pan bounds based on the current 2D and 3D entities in the scene
@@ -6775,11 +8730,13 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/custom-geometry/system
6775
8730
  declare module '@mappedin/mappedin-js/geojson/src/systems/outline-interpolation/system' {
6776
8731
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
6777
8732
  export class OutlineInterpolationSystem {
8733
+ #private;
6778
8734
  /**
6779
8735
  * Set to true when we need to update the outline color of all entities, regardless of zoom level.
6780
8736
  */
6781
8737
  dirty: boolean;
6782
- geometries3DDirty: boolean;
8738
+ get geometries3DDirty(): boolean;
8739
+ set geometries3DDirty(value: boolean);
6783
8740
  constructor(rendererState: RendererState);
6784
8741
  /**
6785
8742
  * Update the outline color of all entities with an outline component.
@@ -6790,6 +8747,21 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/outline-interpolation/
6790
8747
  }
6791
8748
  }
6792
8749
 
8750
+ declare module '@mappedin/mappedin-js/geojson/src/systems/image/system' {
8751
+ import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
8752
+ import { type Texture } from 'three';
8753
+ import type { RendererCore } from '@mappedin/mappedin-js/geojson/src';
8754
+ import { PubSub } from '@packages/internal/common';
8755
+ export const DEFAULT_VERTICAL_OFFSET = 0.01;
8756
+ export class ImageSystem extends PubSub<{
8757
+ 'image-loaded': void;
8758
+ }> {
8759
+ constructor(rendererState: RendererState, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']);
8760
+ imageLoadingCache: Map<string, Promise<Texture>>;
8761
+ update(cameraRotationRadians: number): void;
8762
+ }
8763
+ }
8764
+
6793
8765
  declare module '@mappedin/mappedin-js/geojson/src/systems/geometry-in-focus/system' {
6794
8766
  import { PubSub } from '@packages/internal/common';
6795
8767
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
@@ -6823,6 +8795,58 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/path' {
6823
8795
  export { PathSystem } from '@mappedin/mappedin-js/geojson/src/systems/path/system';
6824
8796
  }
6825
8797
 
8798
+ declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-detachment/system' {
8799
+ import { type Geometry3DTypes, type RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
8800
+ /**
8801
+ * This system is responsible for updating the opacity of the mesh, which results in the mesh
8802
+ * being detached from the parent's optimized geometry group and rendered as a separate mesh.
8803
+ */
8804
+ export class MeshDetachmentSystem {
8805
+ #private;
8806
+ rendererState: RendererState;
8807
+ dirty: boolean;
8808
+ constructor(rendererState: RendererState);
8809
+ updateOne(geometry: Geometry3DTypes | undefined): void;
8810
+ update(): void;
8811
+ }
8812
+ }
8813
+
8814
+ declare module '@mappedin/mappedin-js/geojson/src/systems/mesh-modification/system' {
8815
+ import { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities';
8816
+ import type { GeometryGroupObject3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
8817
+ import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
8818
+ import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
8819
+ /**
8820
+ * Any physical changes to geometry should go in here. This includes height changes, etc.
8821
+ * This is to ensure that physical changes apply before any other systems need to do their work,
8822
+ * such as the outline system.
8823
+ *
8824
+ * TODO: For now, this piggybacks of style.dirty, but we may want to create a flag indicating geometry dirty.
8825
+ */
8826
+ export class MeshModificationSystem {
8827
+ #private;
8828
+ rendererState: RendererState;
8829
+ dirty: boolean;
8830
+ constructor(rendererState: RendererState);
8831
+ updateOne(entity: Geometry3D | GeometryGroupObject3D | GroupContainerObject3D | undefined): void;
8832
+ update(): void;
8833
+ cleanup(): void;
8834
+ }
8835
+ }
8836
+
8837
+ declare module '@mappedin/mappedin-js/geojson/src/systems/pre-render/system' {
8838
+ import type { RendererCore } from '@mappedin/mappedin-js/geojson/src';
8839
+ /**
8840
+ * This system runs any tasks at the very start of the render loop.
8841
+ * This is useful for ensuring that animations are synced with the render loop.
8842
+ */
8843
+ export class PreRenderSystem {
8844
+ #private;
8845
+ constructor(core: RendererCore);
8846
+ update(): void;
8847
+ }
8848
+ }
8849
+
6826
8850
  declare module '@mappedin/mappedin-js/packages/geojson-navigator/src' {
6827
8851
  export { Navigator } from '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator';
6828
8852
  export type { SimplifyDirectionsOptions } from '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator/navigator';
@@ -6889,10 +8913,13 @@ declare module '@mappedin/mappedin-js/geojson/src/utils/fp' {
6889
8913
  export function noop(): void;
6890
8914
  }
6891
8915
 
6892
- declare module '@mappedin/mappedin-js/geojson/src/entities' {
6893
- export { updateInteractivity } from '@mappedin/mappedin-js/geojson/src/entities/utils';
6894
- export { Geometry2D, TWOD_COMPONENTS } from '@mappedin/mappedin-js/geojson/src/entities/two-d';
6895
- export { Geometry3D, ThreeDComponents } from '@mappedin/mappedin-js/geojson/src/entities/three-d';
8916
+ declare module '@mappedin/mappedin-js/geojson/src/utils/tranform-request' {
8917
+ export const transformRequest: (headers: {
8918
+ "x-mappedin-tiles-key": string;
8919
+ }) => (url: string) => {
8920
+ url: string;
8921
+ headers: {};
8922
+ };
6896
8923
  }
6897
8924
 
6898
8925
  declare module '@mappedin/mappedin-js/geojson/src/systems/exporter/exporter' {
@@ -6925,18 +8952,43 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/exporter/exporter' {
6925
8952
  }
6926
8953
  }
6927
8954
 
8955
+ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/floor-object' {
8956
+ import type { ParsedMVF } from '@mappedin/mvf';
8957
+ import type { RendererCore } from '@mappedin/core-sdk';
8958
+ import type { AggregatedStyleMap } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils';
8959
+ import type { TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
8960
+ export class FloorObject {
8961
+ id: string;
8962
+ name: string;
8963
+ elevation: number;
8964
+ containerId: string;
8965
+ layers: Map<string, string>;
8966
+ constructor(parentId: string, floor: ParsedMVF['map.geojson'][0], renderer: RendererCore, options: TShow3DMapOptions, mvf: ParsedMVF, styleMap?: AggregatedStyleMap);
8967
+ load: () => this;
8968
+ }
8969
+ }
8970
+
6928
8971
  declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils' {
6929
- import { Coordinate } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
8972
+ import { Coordinate, type MapObject, type Space } from '@mappedin/mappedin-js/mappedin-js/src/map-data-objects';
6930
8973
  import type { Position, EntranceCollection, LineString, Polygon, Point, SpaceProperties, ObstructionProperties, StyleCollection, PolygonStyle, LineStringStyle, Feature, ObstructionCollection, PointStyle } from '@mappedin/mvf';
6931
- import type { MultiLineString } from 'geojson';
8974
+ import type { WithPolygonImage } from '@packages/internal/mvf-utils';
8975
+ import type { FeatureCollection, MultiLineString } from 'geojson';
6932
8976
  import type { LabelState, MarkerState, GeometryState, CollisionRankingTier, LineStyle, PaintStyle } from '@mappedin/core-sdk';
6933
- import type { TGeometryState, TLabelState, TDirectionInstructionAction, TShow3DMapOptions } from '@mappedin/mappedin-js/mappedin-js/src';
6934
- import type { TMarkerState } from '@mappedin/mappedin-js/mappedin-js/src/types';
8977
+ import { type TGeometryState, type TLabelState, type TDirectionInstructionAction, type TShow3DMapOptions, type Label, type Marker, type Model } from '@mappedin/mappedin-js/mappedin-js/src';
8978
+ import type { TDoorsState, TMarkerState, TWallsState } from '@mappedin/mappedin-js/mappedin-js/src/types';
8979
+ import type { Image } from '@mappedin/mappedin-js/mappedin-js/src/map-view-objects';
8980
+ import type { GeoJsonApi } from '@mappedin/mappedin-js/mappedin-js/src/api-geojson/api';
8981
+ import type TWEEN from '@tweenjs/tween.js';
6935
8982
  export function convertCoordinateToPosition(coord: Coordinate): Position;
6936
8983
  export function convertPositionToCoordinate(coord: Position): Coordinate;
6937
- export const cutEntrancesFromLineStrings: (lineStrings: ObstructionCollection["features"], entranceCollection: EntranceCollection["features"]) => Feature<MultiLineString, any>;
8984
+ export const cutEntrancesFromLineStrings: (lineStrings: ObstructionCollection["features"], entranceCollection: EntranceCollection["features"]) => {
8985
+ entrances: FeatureCollection<LineString, any>;
8986
+ walls: Feature<MultiLineString, any>;
8987
+ };
6938
8988
  export function translateLabelStateToGeojsonCore(state: Partial<TLabelState>, currentState: Partial<LabelState>): Partial<LabelState>;
6939
8989
  export function translateMarkerStateToGeojsonCore(state: Partial<TMarkerState>, currentState: Partial<MarkerState>): Partial<MarkerState>;
8990
+ export function translateDoorsStateToGeojsonCore(state: Partial<TDoorsState>, currentState: Partial<GeometryState>): Partial<GeometryState>;
8991
+ export function translateWallsStateToGeojsonCore(state: Partial<TWallsState>, currentState: Partial<GeometryState>): Partial<GeometryState>;
6940
8992
  export function translateSpaceStateToGeojsonCore(state: Partial<TGeometryState>, currentState: Partial<GeometryState>): Partial<GeometryState>;
6941
8993
  export function differenceBetweenAngles(a: number, b: number): number;
6942
8994
  export function getRelativeBearing(relativeBearingAngle: number, threshold: number): TDirectionInstructionAction['bearing'];
@@ -6951,12 +9003,16 @@ declare module '@mappedin/mappedin-js/mappedin-js/src/api-geojson/utils' {
6951
9003
  export type WithId<T> = T & {
6952
9004
  id?: string;
6953
9005
  };
6954
- export function groupGeometryByStyle(features: Feature<LineString | Polygon | Point, SpaceProperties | ObstructionProperties>[], styleMap: AggregatedStyleMap): Map<WithId<PolygonStyle> | WithId<LineStringStyle> | WithId<PointStyle>, Feature<Point | LineString | Polygon, ObstructionProperties | SpaceProperties>[]>;
9006
+ export function groupGeometryByStyle(features: Feature<LineString | Polygon | Point, SpaceProperties | ObstructionProperties>[], styleMap: AggregatedStyleMap): Map<WithId<PolygonStyle> | WithId<LineStringStyle> | WithId<PointStyle>, Feature<Point | LineString | Polygon, WithPolygonImage<SpaceProperties> | WithPolygonImage<ObstructionProperties>>[]>;
6955
9007
  export function translateToCoreStyle(style: PolygonStyle | LineStringStyle, userOptions?: TShow3DMapOptions): PaintStyle | LineStyle;
9008
+ export const getTargetID: <T extends Space | MapObject | Label | Marker | Model | Image | string>(target: T, api: GeoJsonApi) => string | undefined;
9009
+ export function tweenToPromise(tween: TWEEN.Tween): Promise<void>;
6956
9010
  }
6957
9011
 
6958
9012
  declare module '@mappedin/mappedin-js/geojson/src/components/style' {
6959
- import type { Cap, Join } from '@mappedin/mappedin-js/geojson/src/types';
9013
+ import type { LineStyle } from '@mappedin/mappedin-js/geojson/src/renderer';
9014
+ export const DEFAULT_COLOR = "#ffffff";
9015
+ export const DEFAULT_HEIGHT = 0.1;
6960
9016
  type Style = {
6961
9017
  color: string;
6962
9018
  width: number;
@@ -6964,12 +9020,15 @@ declare module '@mappedin/mappedin-js/geojson/src/components/style' {
6964
9020
  visible: boolean;
6965
9021
  height: number;
6966
9022
  altitude: number;
6967
- join: Join;
6968
- cap: Cap;
9023
+ join: LineStyle['join'];
9024
+ cap: LineStyle['cap'];
6969
9025
  topColor?: string;
6970
9026
  texture?: string;
6971
9027
  topTexture?: string;
6972
9028
  outline: boolean;
9029
+ showImage: boolean;
9030
+ flipImageToFaceCamera: boolean;
9031
+ url?: string;
6973
9032
  };
6974
9033
  export class StyleComponent implements Style {
6975
9034
  initialColor: string;
@@ -6983,15 +9042,53 @@ declare module '@mappedin/mappedin-js/geojson/src/components/style' {
6983
9042
  opacity: number;
6984
9043
  width: number;
6985
9044
  height: number;
9045
+ initialHeight: number;
6986
9046
  altitude: number;
6987
- join: Join;
6988
- cap: Cap;
9047
+ join: LineStyle['join'];
9048
+ cap: LineStyle['cap'];
6989
9049
  outline: boolean;
9050
+ showImage: boolean;
9051
+ flipImageToFaceCamera: boolean;
9052
+ url?: string;
6990
9053
  constructor(style?: Partial<Style>);
6991
9054
  }
6992
9055
  export {};
6993
9056
  }
6994
9057
 
9058
+ declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
9059
+ import type { CollisionRankingTier, GeometryState, LabelState, PathState, RendererCore } from '@mappedin/mappedin-js/geojson/src';
9060
+ import { type MarkerState } from '@mappedin/mappedin-js/geojson/src/components/marker';
9061
+ import type { Geometry3DTypes, Position, RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
9062
+ import { GeometryGroupObject3D, type GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/geometry-group';
9063
+ import { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
9064
+ import { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
9065
+ import { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
9066
+ import type { StyleComponent } from '@mappedin/mappedin-js/geojson/src/components/style';
9067
+ import type { GeometryGroupStyleComponent } from '@mappedin/mappedin-js/geojson/src/components/geometry-group-style';
9068
+ export function updateInteractivity(entity: Geometry3DTypes | Geometry2D, update: boolean | undefined, state: RendererState): boolean;
9069
+ export function updateGroupColor(entity: GeometryGroupObject3D, state: RendererState, update: Partial<Pick<GeometryGroupState, 'color' | 'topColor'>>): boolean | undefined;
9070
+ export function updateGroupShading(entity: GeometryGroupObject3D, update?: GeometryGroupState['shading']): boolean;
9071
+ export function updateImageProps(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Partial<GeometryState>): void;
9072
+ export function updateHeight(entity: Geometry3D, update?: number): boolean;
9073
+ export function updateColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Partial<GeometryState>): void;
9074
+ export function updatePosition(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Position | undefined, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): void;
9075
+ export function updateParent(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: GroupContainerObject3D | undefined): boolean;
9076
+ export function updateEnabled(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: boolean | undefined): void;
9077
+ export function updatePath(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<PathState> | undefined): void;
9078
+ export function updateMarker(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<MarkerState> | undefined, state: RendererState): boolean;
9079
+ export function updateRank(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: CollisionRankingTier | undefined): boolean;
9080
+ export function updateLabel(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<LabelState> | undefined, state: RendererState): void;
9081
+ export function updateHoverColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: string): void;
9082
+ export function updateFlipImageToFaceCamera(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: boolean): void;
9083
+ export function updateVisibility(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: boolean): boolean;
9084
+ export function updateOpacity(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, state: RendererState, update?: number): void;
9085
+ export function updateGroupTexture(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Pick<GeometryGroupStyleComponent, 'texture' | 'topTexture'>): void;
9086
+ export function updateIndividualGeometryTexture(entity: Geometry3D, update?: Pick<StyleComponent, 'texture' | 'topTexture'>): boolean;
9087
+ export function updateIndividualGeometryOpacity(entity: Geometry3D, update?: number): boolean;
9088
+ export function updateAltitude(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: number): boolean;
9089
+ export function updateOutline(entity: Geometry3DTypes, update?: boolean): boolean;
9090
+ }
9091
+
6995
9092
  declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-processor' {
6996
9093
  import { Rectangle } from '@packages/internal/quad-tree';
6997
9094
  export type TSerializedCollider = {
@@ -7007,7 +9104,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-pr
7007
9104
  shouldCollideWithScreenEdges?: boolean;
7008
9105
  };
7009
9106
  export type TSerializedColliderResponse = [number, boolean, Rectangle?];
7010
- export function processColliders(colliders: TSerializedCollider[], totalWidth: any, totalHeight: any, watermarkWidth: any, watermarkHeight: any, msgId?: string): {
9107
+ export function processColliders(colliders: TSerializedCollider[], totalWidth: any, totalHeight: any, watermarkWidth: any, watermarkHeight: any, watermarkPosition: any, msgId?: string): {
7011
9108
  msgId: string;
7012
9109
  colliders: TSerializedColliderResponse[];
7013
9110
  debug: {
@@ -7022,16 +9119,16 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/collisions/collider-pr
7022
9119
  declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/system' {
7023
9120
  import type { PerspectiveCamera, Vector3, Object3D, Mesh } from 'three';
7024
9121
  import { Raycaster } from 'three';
7025
- import type { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/two-d';
9122
+ import type { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/geometry2d';
7026
9123
  import { QuadTree } from '@packages/internal/quad-tree';
7027
- import type { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/three-d';
9124
+ import type { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/geometry3d';
7028
9125
  import { PubSub } from '@mappedin/mappedin-js/packages/common/pubsub';
7029
9126
  import type { EntityMesh } from '@mappedin/mappedin-js/geojson/src/types';
7030
9127
  import { TapsController } from '@mappedin/mappedin-js/geojson/src/systems/interactions/tap-controller';
7031
9128
  import type { RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
7032
9129
  import 'style.scss';
7033
9130
  import type { EntityBatchedMesh } from '@mappedin/mappedin-js/geojson/src/components/mesh';
7034
- import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
9131
+ import type { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/group-container';
7035
9132
  type InteractionPayload = {
7036
9133
  entity2D?: Geometry2D;
7037
9134
  entity3D?: Geometry3D;
@@ -7057,8 +9154,8 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/system' {
7057
9154
  } | undefined;
7058
9155
  };
7059
9156
  export type InteractionRequiredCoreStateProps = {
7060
- twoDEntities: Geometry2D[];
7061
- threeDEntities: Geometry3D[];
9157
+ geometry2DIdsInScene: Set<Geometry2D['id']>;
9158
+ geometry3DIdsInScene: Set<Geometry3D['id']>;
7062
9159
  };
7063
9160
  /**
7064
9161
  * TODO: touch support
@@ -7100,6 +9197,7 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/system' {
7100
9197
  * Get the current cursor type determined by the interaction.
7101
9198
  */
7102
9199
  getCursor(): CursorTypes;
9200
+ resize: () => void;
7103
9201
  }
7104
9202
  export {};
7105
9203
  }
@@ -7130,9 +9228,9 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/camera/system' {
7130
9228
  };
7131
9229
  'pedestal-change': {
7132
9230
  pedestal: number;
7133
- scrolledToTop: boolean;
7134
- scrolledToBottom: boolean;
7135
- scrollPercent: number;
9231
+ scrolledToTop?: boolean;
9232
+ scrolledToBottom?: boolean;
9233
+ scrollPercent?: number;
7136
9234
  };
7137
9235
  };
7138
9236
  type CameraEvents = {
@@ -7240,6 +9338,10 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/camera/system' {
7240
9338
  * @default Infinity
7241
9339
  */
7242
9340
  setMaxZoomLevel(zoomLevel: number): void;
9341
+ /**
9342
+ * The default minimum zoom level of the camera in mercator zoom levels.
9343
+ */
9344
+ get defaultMinZoomLevel(): number;
7243
9345
  /**
7244
9346
  * How far the camera can zoom out away from the ground.
7245
9347
  *
@@ -7301,6 +9403,10 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/camera/system' {
7301
9403
  * 0% == camera is as far down as it will go
7302
9404
  */
7303
9405
  get scrollPercent(): number;
9406
+ /**
9407
+ * Returns current field of view(FOV) in degrees
9408
+ */
9409
+ get fov(): number;
7304
9410
  /**
7305
9411
  * Returns whether the maps are scrolled to bottom
7306
9412
  */
@@ -7706,6 +9812,11 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/camera/constants' {
7706
9812
  export const BLOCK_MERCATOR_ZOOM_LEVEL = 17;
7707
9813
  export const ROOM_MERCATOR_ZOOM_LEVEL = 20;
7708
9814
  export const EVENTS: readonly ["change", "pan-start", "pan-end", "rotate-start", "rotate-end", "zoom-start", "zoom-end", "multi-start", "multi-end", "multi-cancel", "pedestal-start", "pedestal-change", "pedestal-end", "user-pan-start", "user-pedestal-start", "user-rotate-start", "user-dolly-start", "user-zoom-start", "user-tilt-start", "user-pan-end", "user-pedestal-end", "user-rotate-end", "user-dolly-end", "user-zoom-end", "user-tilt-end", "position-updated", "zoom-updated", "tilt-updated", "rotation-updated"];
9815
+ export const DEFAULT_ZOOM_LEVEL = 18;
9816
+ export const DEFAULT_MIN_ZOOM_LEVEL = 12;
9817
+ export const DEFAULT_MAX_ZOOM_LEVEL = 22;
9818
+ export const DEFAULT_PITCH = 0;
9819
+ export const DEFAULT_BEARING = 0;
7709
9820
  }
7710
9821
 
7711
9822
  declare module '@mappedin/mappedin-js/packages/outdoor-context-v4/ui/map' {
@@ -15570,8 +17681,10 @@ declare module '@mappedin/mappedin-js/geojson/src/systems/path/system' {
15570
17681
  export class PathSystem extends PubSub<{
15571
17682
  'animate:path': undefined;
15572
17683
  }> {
17684
+ altitudeDirty: boolean;
15573
17685
  convertTo3DMapPosition: RendererCore['convertTo3DMapPosition'];
15574
- constructor(rendererState: RendererState, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']);
17686
+ getParentContainer: RendererCore['getParentContainer'];
17687
+ constructor(rendererState: RendererState, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition'], getParentContainer: RendererCore['getParentContainer']);
15575
17688
  update(minZoomAltitude: number, maxZoomAltitude: number, currentZoomAltitude: number): void;
15576
17689
  }
15577
17690
  }
@@ -15584,6 +17697,7 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator/n
15584
17697
  import type { Position, Feature, MultiPolygon, Polygon } from 'geojson';
15585
17698
  import type { NodeCollection, NodeFeature } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/node';
15586
17699
  import type { ObstructionCollection } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/obstruction';
17700
+ import type { SpaceCollection } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/space';
15587
17701
  import type { DirectionsCollection } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/directions';
15588
17702
  import type { CoordinateFeature } from '@mappedin/mappedin-js/packages/geojson-navigator/src/types/coordinate';
15589
17703
  /**
@@ -15621,17 +17735,19 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/navigator/n
15621
17735
  *
15622
17736
  * @param {NodeCollection} nodes - Collection of nodes for the navigation graph.
15623
17737
  * @param {ObstructionCollection} [obstructions] - Optional collection of obstructions that could block paths.
17738
+ * @param {SpaceCollection} [spaces] - Optional collection of spaces that could block paths.
15624
17739
  * @param {string} [groupBy] - Optional property name to group nodes and paths for differentiated processing.
15625
17740
  */
15626
- constructor({ nodes, obstructions, groupBy, }: {
17741
+ constructor({ nodes, geojsonCollection, groupBy, }: {
15627
17742
  nodes: NodeCollection;
15628
- obstructions?: ObstructionCollection;
17743
+ geojsonCollection?: ObstructionCollection | SpaceCollection;
15629
17744
  groupBy?: string;
15630
17745
  });
15631
17746
  findNearestNode: (feature: CoordinateFeature) => NodeFeature | null;
15632
17747
  /**
15633
17748
  * Calculates and returns a set of directions from origin nodes to destination nodes, including detailed properties.
15634
17749
  *
17750
+ * @param {DirectionsZone[]} zones - special zones for navigation operations.
15635
17751
  * @param {string[]} originIds - IDs of origin nodes.
15636
17752
  * @param {string[]} destinationNodeIds - IDs of destination nodes.
15637
17753
  * @param {string[]} [excludedNodeIds] - IDs of nodes to exclude from pathfinding.
@@ -15712,32 +17828,15 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/types/node'
15712
17828
  }
15713
17829
 
15714
17830
  declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/types/obstruction' {
15715
- import type { LineString, FeatureCollection, Polygon, Feature } from 'geojson';
15716
- /**
15717
- * Properties specific to obstruction features in a geospatial context.
15718
- * Includes a mandatory unique identifier and allows for any additional custom properties.
15719
- */
15720
- export type ObstructionProperties = {
15721
- /**
15722
- * Unique identifier for the obstruction.
15723
- */
15724
- id: string;
15725
- /**
15726
- * Additional property specific to the navigator based on the 'groupBy' option.
15727
- * */
15728
- [name: string]: any;
15729
- };
15730
- /**
15731
- * A GeoJSON feature collection that groups multiple obstruction features, which can be line strings or polygons.
15732
- * This is typically used to represent physical barriers or areas where access is restricted.
15733
- */
15734
- export type ObstructionCollection = FeatureCollection<LineString | Polygon, ObstructionProperties>;
17831
+ import type { LineString, Polygon, Feature } from 'geojson';
17832
+ import type { ObstructionProperties, ObstructionCollection } from '@mappedin/mvf';
15735
17833
  /**
15736
- * A GeoJSON feature representing an obstruction, which can be either a line string or a polygon.
15737
- * This type is crucial for mapping and managing areas that impede or restrict movement, such as barriers or restricted zones.
15738
- *
15739
- */
17834
+ * A GeoJSON feature representing an obstruction, which can be either a line string or a polygon.
17835
+ * This type is crucial for mapping and managing areas that impede or restrict movement, such as barriers or restricted zones.
17836
+ *
17837
+ */
15740
17838
  export type ObstructionFeature = Feature<LineString | Polygon, ObstructionProperties>;
17839
+ export { ObstructionCollection, ObstructionProperties };
15741
17840
  }
15742
17841
 
15743
17842
  declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/types/directions' {
@@ -15793,32 +17892,6 @@ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/types/coord
15793
17892
  export type CoordinateFeature = Feature<Point, CoordinateProperties>;
15794
17893
  }
15795
17894
 
15796
- declare module '@mappedin/mappedin-js/geojson/src/entities/utils' {
15797
- import type { CollisionRankingTier, GeometryState, LabelState, PathState, RendererCore } from '@mappedin/mappedin-js/geojson/src';
15798
- import type { MarkerState } from '@mappedin/mappedin-js/geojson/src/components/marker';
15799
- import type { Entity3DTypes, Position, RendererState } from '@mappedin/mappedin-js/geojson/src/renderer';
15800
- import { GeometryGroupObject3D, type GeometryGroupState } from '@mappedin/mappedin-js/geojson/src/entities/entity-group';
15801
- import { GroupContainerObject3D } from '@mappedin/mappedin-js/geojson/src/entities/entity-group-container';
15802
- import { Geometry3D } from '@mappedin/mappedin-js/geojson/src/entities/three-d';
15803
- import { Geometry2D } from '@mappedin/mappedin-js/geojson/src/entities/two-d';
15804
- export function updateInteractivity(entity: Entity3DTypes | Geometry2D, update: boolean | undefined, state: RendererState): boolean;
15805
- export function updateGroupColor(entity: GeometryGroupObject3D, state: RendererState, update?: Partial<GeometryGroupState>): boolean;
15806
- export function updateGroupShading(entity: GeometryGroupObject3D, update?: GeometryGroupState['shading']): boolean;
15807
- export function updateColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: Partial<GeometryState>): void;
15808
- export function updatePosition(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Position | undefined, convertTo3DMapPosition: RendererCore['convertTo3DMapPosition']): void;
15809
- export function updateParent(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: GroupContainerObject3D | undefined): boolean;
15810
- export function updateEnabled(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: boolean | undefined): void;
15811
- export function updatePath(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<PathState> | undefined): void;
15812
- export function updateMarker(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<MarkerState> | undefined): boolean;
15813
- export function updateRank(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: CollisionRankingTier | undefined): boolean;
15814
- export function updateLabel(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update: Partial<LabelState> | undefined): void;
15815
- export function updateHoverColor(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: string): void;
15816
- export function updateVisibility(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: boolean): boolean;
15817
- export function updateOpacity(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, state: RendererState, update?: number): void;
15818
- export function updateAltitude(entity: Geometry3D | Geometry2D | GeometryGroupObject3D | GroupContainerObject3D, update?: number): void;
15819
- export function updateOutline(entity: Entity3DTypes, update?: boolean): boolean;
15820
- }
15821
-
15822
17895
  declare module '@mappedin/mappedin-js/geojson/src/systems/interactions/tap-controller' {
15823
17896
  export enum TapType {
15824
17897
  onefinger = 0,
@@ -19398,6 +21471,18 @@ declare module '@mappedin/mappedin-js/packages/outdoor-context-v4/ui/handler/tap
19398
21471
  }
19399
21472
  }
19400
21473
 
21474
+ declare module '@mappedin/mappedin-js/packages/geojson-navigator/src/types/space' {
21475
+ import type { LineString, Polygon, Point, Feature } from 'geojson';
21476
+ import type { SpaceProperties, SpaceCollection } from '@mappedin/mvf';
21477
+ /**
21478
+ * A GeoJSON feature representing a space, which can be either a line string or a polygon.
21479
+ * This type is crucial for mapping and managing areas that impede or restrict movement, such as barriers or restricted zones.
21480
+ *
21481
+ */
21482
+ export type SpaceFeature = Feature<LineString | Polygon | Point, SpaceProperties>;
21483
+ export { SpaceCollection, SpaceProperties };
21484
+ }
21485
+
19401
21486
  declare module '@mappedin/mappedin-js/geojson/src/systems/camera/helpers/input-set' {
19402
21487
  import type { Vector2 } from 'three';
19403
21488
  class InputSet {