@mapvx/web-js 3.5.1 → 4.0.0-dev.1
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.
- package/README.md +6 -1
- package/dist/cjs/index.js +2 -95
- package/dist/cjs/index.js.LICENSE.txt +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/es/controllers/routeController.d.ts.map +1 -1
- package/dist/es/controllers/routeController.js +25 -8
- package/dist/es/controllers/routeController.js.map +1 -1
- package/dist/es/logger/sentry.js +1 -1
- package/dist/es/map/fitCamera.d.ts +7 -5
- package/dist/es/map/fitCamera.d.ts.map +1 -1
- package/dist/es/map/fitCamera.js +1 -1
- package/dist/es/map/fitCamera.js.map +1 -1
- package/dist/es/map/liveMapFitTransform.d.ts +104 -0
- package/dist/es/map/liveMapFitTransform.d.ts.map +1 -0
- package/dist/es/map/liveMapFitTransform.js +185 -0
- package/dist/es/map/liveMapFitTransform.js.map +1 -0
- package/dist/es/map/map.d.ts.map +1 -1
- package/dist/es/map/map.js +15 -7
- package/dist/es/map/map.js.map +1 -1
- package/dist/umd/index.js +1133 -117
- package/dist/umd/index.js.map +1 -1
- package/dist/umd/styles.css +1 -1
- package/dist/umd/styles.css.map +1 -1
- package/package.json +7 -7
- package/dist/cjs/assets/icons.js +0 -85
- package/dist/cjs/assets/icons.js.map +0 -1
- package/dist/cjs/config/draco.js +0 -15
- package/dist/cjs/config/draco.js.map +0 -1
- package/dist/cjs/config/sdkConfig.js +0 -3
- package/dist/cjs/config/sdkConfig.js.map +0 -1
- package/dist/cjs/controllers/markerLayoutController.js +0 -359
- package/dist/cjs/controllers/markerLayoutController.js.map +0 -1
- package/dist/cjs/controllers/routeController.js +0 -1549
- package/dist/cjs/controllers/routeController.js.map +0 -1
- package/dist/cjs/domain/models/_internal.js +0 -14
- package/dist/cjs/domain/models/_internal.js.map +0 -1
- package/dist/cjs/domain/models/_rtl.js +0 -10
- package/dist/cjs/domain/models/_rtl.js.map +0 -1
- package/dist/cjs/domain/models/animation.js +0 -64
- package/dist/cjs/domain/models/animation.js.map +0 -1
- package/dist/cjs/domain/models/banner.js +0 -24
- package/dist/cjs/domain/models/banner.js.map +0 -1
- package/dist/cjs/domain/models/campaign.js +0 -73
- package/dist/cjs/domain/models/campaign.js.map +0 -1
- package/dist/cjs/domain/models/categories.js +0 -37
- package/dist/cjs/domain/models/categories.js.map +0 -1
- package/dist/cjs/domain/models/circle.js +0 -253
- package/dist/cjs/domain/models/circle.js.map +0 -1
- package/dist/cjs/domain/models/cityFilterOption.js +0 -3
- package/dist/cjs/domain/models/cityFilterOption.js.map +0 -1
- package/dist/cjs/domain/models/configuration.js +0 -3
- package/dist/cjs/domain/models/configuration.js.map +0 -1
- package/dist/cjs/domain/models/cssCustomization.js +0 -3
- package/dist/cjs/domain/models/cssCustomization.js.map +0 -1
- package/dist/cjs/domain/models/fitOptions.js +0 -3
- package/dist/cjs/domain/models/fitOptions.js.map +0 -1
- package/dist/cjs/domain/models/innerFloors.js +0 -3
- package/dist/cjs/domain/models/innerFloors.js.map +0 -1
- package/dist/cjs/domain/models/institution.js +0 -45
- package/dist/cjs/domain/models/institution.js.map +0 -1
- package/dist/cjs/domain/models/latLng.js +0 -3
- package/dist/cjs/domain/models/latLng.js.map +0 -1
- package/dist/cjs/domain/models/location.js +0 -3
- package/dist/cjs/domain/models/location.js.map +0 -1
- package/dist/cjs/domain/models/loggeable.js +0 -52
- package/dist/cjs/domain/models/loggeable.js.map +0 -1
- package/dist/cjs/domain/models/mapCamera.js +0 -3
- package/dist/cjs/domain/models/mapCamera.js.map +0 -1
- package/dist/cjs/domain/models/mapConfig.js +0 -37
- package/dist/cjs/domain/models/mapConfig.js.map +0 -1
- package/dist/cjs/domain/models/marker.js +0 -502
- package/dist/cjs/domain/models/marker.js.map +0 -1
- package/dist/cjs/domain/models/multilanguage.js +0 -17
- package/dist/cjs/domain/models/multilanguage.js.map +0 -1
- package/dist/cjs/domain/models/openingHours.js +0 -3
- package/dist/cjs/domain/models/openingHours.js.map +0 -1
- package/dist/cjs/domain/models/place.js +0 -127
- package/dist/cjs/domain/models/place.js.map +0 -1
- package/dist/cjs/domain/models/platform.js +0 -3
- package/dist/cjs/domain/models/platform.js.map +0 -1
- package/dist/cjs/domain/models/popover.js +0 -3
- package/dist/cjs/domain/models/popover.js.map +0 -1
- package/dist/cjs/domain/models/product.js +0 -3
- package/dist/cjs/domain/models/product.js.map +0 -1
- package/dist/cjs/domain/models/property.js +0 -104
- package/dist/cjs/domain/models/property.js.map +0 -1
- package/dist/cjs/domain/models/route.js +0 -166
- package/dist/cjs/domain/models/route.js.map +0 -1
- package/dist/cjs/domain/models/routeConfiguration.js +0 -82
- package/dist/cjs/domain/models/routeConfiguration.js.map +0 -1
- package/dist/cjs/domain/models/routeInstance.js +0 -30
- package/dist/cjs/domain/models/routeInstance.js.map +0 -1
- package/dist/cjs/domain/models/routeStyle.js +0 -3
- package/dist/cjs/domain/models/routeStyle.js.map +0 -1
- package/dist/cjs/domain/models/scene3D.js +0 -3
- package/dist/cjs/domain/models/scene3D.js.map +0 -1
- package/dist/cjs/domain/models/transport.js +0 -22
- package/dist/cjs/domain/models/transport.js.map +0 -1
- package/dist/cjs/domain/ports/ICache.js +0 -3
- package/dist/cjs/domain/ports/ICache.js.map +0 -1
- package/dist/cjs/domain/ports/IHttpClient.js +0 -3
- package/dist/cjs/domain/ports/IHttpClient.js.map +0 -1
- package/dist/cjs/domain/ports/ILogger.js +0 -23
- package/dist/cjs/domain/ports/ILogger.js.map +0 -1
- package/dist/cjs/domain/ports/index.js +0 -10
- package/dist/cjs/domain/ports/index.js.map +0 -1
- package/dist/cjs/infrastructure/cache/CacheManager.js +0 -258
- package/dist/cjs/infrastructure/cache/CacheManager.js.map +0 -1
- package/dist/cjs/infrastructure/cache/LRUCache.js +0 -153
- package/dist/cjs/infrastructure/cache/LRUCache.js.map +0 -1
- package/dist/cjs/infrastructure/cache/PersistentCache.js +0 -168
- package/dist/cjs/infrastructure/cache/PersistentCache.js.map +0 -1
- package/dist/cjs/infrastructure/cache/cacheConfig.js +0 -70
- package/dist/cjs/infrastructure/cache/cacheConfig.js.map +0 -1
- package/dist/cjs/infrastructure/http/FetchHttpClient.js +0 -75
- package/dist/cjs/infrastructure/http/FetchHttpClient.js.map +0 -1
- package/dist/cjs/infrastructure/logging/MVXLogger.js +0 -80
- package/dist/cjs/infrastructure/logging/MVXLogger.js.map +0 -1
- package/dist/cjs/interfaces/cache.js +0 -3
- package/dist/cjs/interfaces/cache.js.map +0 -1
- package/dist/cjs/interfaces/healthResponse.js +0 -3
- package/dist/cjs/interfaces/healthResponse.js.map +0 -1
- package/dist/cjs/interfaces/institutionResponse.js +0 -3
- package/dist/cjs/interfaces/institutionResponse.js.map +0 -1
- package/dist/cjs/interfaces/metadata.js +0 -3
- package/dist/cjs/interfaces/metadata.js.map +0 -1
- package/dist/cjs/interfaces/placeResponse.js +0 -3
- package/dist/cjs/interfaces/placeResponse.js.map +0 -1
- package/dist/cjs/interfaces/routeCacheResponse.js +0 -3
- package/dist/cjs/interfaces/routeCacheResponse.js.map +0 -1
- package/dist/cjs/interfaces/routeResponse.js +0 -3
- package/dist/cjs/interfaces/routeResponse.js.map +0 -1
- package/dist/cjs/interfaces/styleResponse.js +0 -3
- package/dist/cjs/interfaces/styleResponse.js.map +0 -1
- package/dist/cjs/logger/logger.js +0 -78
- package/dist/cjs/logger/logger.js.map +0 -1
- package/dist/cjs/logger/sentry.js +0 -81
- package/dist/cjs/logger/sentry.js.map +0 -1
- package/dist/cjs/map/fitCamera.js +0 -124
- package/dist/cjs/map/fitCamera.js.map +0 -1
- package/dist/cjs/map/map.js +0 -2755
- package/dist/cjs/map/map.js.map +0 -1
- package/dist/cjs/map/mapInteractionOptions.js +0 -73
- package/dist/cjs/map/mapInteractionOptions.js.map +0 -1
- package/dist/cjs/map/scene3DController.js +0 -849
- package/dist/cjs/map/scene3DController.js.map +0 -1
- package/dist/cjs/repository/repository.js +0 -694
- package/dist/cjs/repository/repository.js.map +0 -1
- package/dist/cjs/repository/requester.js +0 -771
- package/dist/cjs/repository/requester.js.map +0 -1
- package/dist/cjs/sdk.js +0 -438
- package/dist/cjs/sdk.js.map +0 -1
- package/dist/cjs/utils/3d.js +0 -245
- package/dist/cjs/utils/3d.js.map +0 -1
- package/dist/cjs/utils/deckLayers.js +0 -153
- package/dist/cjs/utils/deckLayers.js.map +0 -1
- package/dist/cjs/utils/error.js +0 -19
- package/dist/cjs/utils/error.js.map +0 -1
- package/dist/cjs/utils/images.js +0 -25
- package/dist/cjs/utils/images.js.map +0 -1
- package/dist/cjs/utils/loadGlb.js +0 -190
- package/dist/cjs/utils/loadGlb.js.map +0 -1
- package/dist/cjs/utils/mapvxHostname.js +0 -21
- package/dist/cjs/utils/mapvxHostname.js.map +0 -1
- package/dist/cjs/utils/nav-functions.js +0 -150
- package/dist/cjs/utils/nav-functions.js.map +0 -1
- package/dist/cjs/utils/opening-hours-helper.js +0 -914
- package/dist/cjs/utils/opening-hours-helper.js.map +0 -1
- package/dist/cjs/utils/preconnect.js +0 -131
- package/dist/cjs/utils/preconnect.js.map +0 -1
- package/dist/cjs/utils/route-utils.js +0 -57
- package/dist/cjs/utils/route-utils.js.map +0 -1
- package/dist/cjs/utils/semaphore.js +0 -143
- package/dist/cjs/utils/semaphore.js.map +0 -1
- package/dist/cjs/utils/three.js +0 -113
- package/dist/cjs/utils/three.js.map +0 -1
- package/dist/cjs/utils/threeScene.js +0 -126
- package/dist/cjs/utils/threeScene.js.map +0 -1
- package/dist/cjs/utils/update-css.js +0 -76
- package/dist/cjs/utils/update-css.js.map +0 -1
- package/dist/cjs/utils/utils.js +0 -104
- package/dist/cjs/utils/utils.js.map +0 -1
package/dist/cjs/utils/3d.js
DELETED
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hexToRgba = exports.hexToRgb = exports.DEFAULT_SCENE3D_LIGHTS = exports.resolveDeckTileCache = exports.DEFAULT_DECK_TILE_CACHE = exports.lodActionForZoom = exports.resolveModels3DLodThresholds = exports.DEFAULT_LOD_HYSTERESIS = void 0;
|
|
4
|
-
exports.resolveModels3DLights = resolveModels3DLights;
|
|
5
|
-
exports.mergeRotation3D = mergeRotation3D;
|
|
6
|
-
exports.normalizeScale = normalizeScale;
|
|
7
|
-
exports.mergeGlbScale = mergeGlbScale;
|
|
8
|
-
exports.resolveZoomTransparency = resolveZoomTransparency;
|
|
9
|
-
exports.opacityForZoom = opacityForZoom;
|
|
10
|
-
exports.resolveRouteTransparency = resolveRouteTransparency;
|
|
11
|
-
exports.pointInFootprint = pointInFootprint;
|
|
12
|
-
exports.effectiveModelOpacity = effectiveModelOpacity;
|
|
13
|
-
exports.isPlacementVisibleOnFloor = isPlacementVisibleOnFloor;
|
|
14
|
-
exports.computeScenePosition = computeScenePosition;
|
|
15
|
-
/** Default LOD hysteresis (zoom units) when {@link Models3DLodConfig.hysteresis} is unset. */
|
|
16
|
-
exports.DEFAULT_LOD_HYSTERESIS = 0.5;
|
|
17
|
-
/**
|
|
18
|
-
* Computes the unload/reload zoom boundaries from {@link Models3DConfig.lod}, or `null` when LOD is
|
|
19
|
-
* disabled (no `lod`, no models, or a non-finite `minZoom`). Pure — safe to unit-test without WebGL.
|
|
20
|
-
*/
|
|
21
|
-
const resolveModels3DLodThresholds = (models) => {
|
|
22
|
-
const lod = models === null || models === void 0 ? void 0 : models.lod;
|
|
23
|
-
if (!models ||
|
|
24
|
-
models.enabled === false ||
|
|
25
|
-
!lod ||
|
|
26
|
-
typeof lod.minZoom !== "number" ||
|
|
27
|
-
!Number.isFinite(lod.minZoom)) {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
const hysteresis = typeof lod.hysteresis === "number" && Number.isFinite(lod.hysteresis) && lod.hysteresis >= 0
|
|
31
|
-
? lod.hysteresis
|
|
32
|
-
: exports.DEFAULT_LOD_HYSTERESIS;
|
|
33
|
-
return {
|
|
34
|
-
reloadAtOrAbove: lod.minZoom,
|
|
35
|
-
unloadBelow: lod.minZoom - hysteresis,
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
exports.resolveModels3DLodThresholds = resolveModels3DLodThresholds;
|
|
39
|
-
/**
|
|
40
|
-
* Decides what the LOD controller should do at the current zoom given whether the models are
|
|
41
|
-
* currently unloaded. Returns `"unload"` when they are loaded but the camera is below the unload
|
|
42
|
-
* boundary, `"reload"` when they are unloaded but the camera has returned to/above the reload
|
|
43
|
-
* boundary, and `"none"` otherwise (including within the hysteresis band). Pure/testable.
|
|
44
|
-
*/
|
|
45
|
-
const lodActionForZoom = (zoom, thresholds, currentlyUnloaded) => {
|
|
46
|
-
if (!currentlyUnloaded && zoom < thresholds.unloadBelow) {
|
|
47
|
-
return "unload";
|
|
48
|
-
}
|
|
49
|
-
if (currentlyUnloaded && zoom >= thresholds.reloadAtOrAbove) {
|
|
50
|
-
return "reload";
|
|
51
|
-
}
|
|
52
|
-
return "none";
|
|
53
|
-
};
|
|
54
|
-
exports.lodActionForZoom = lodActionForZoom;
|
|
55
|
-
/**
|
|
56
|
-
* Conservative defaults that bound each deck.gl overlay layer's in-memory tile cache. Chosen to
|
|
57
|
-
* favor low RAM: only the visible working set (plus a small margin) stays parsed in memory; the
|
|
58
|
-
* raw tile bytes remain on disk in the Service Worker cache, so an evicted tile is re-parsed
|
|
59
|
-
* rather than re-downloaded. Raise `maxCacheSize` only if profiling shows flashing at the
|
|
60
|
-
* viewport edge while panning.
|
|
61
|
-
* @internal
|
|
62
|
-
*/
|
|
63
|
-
exports.DEFAULT_DECK_TILE_CACHE = {
|
|
64
|
-
// Per layer; with four overlay layers this caps the parsed-tile set at ~4x this number.
|
|
65
|
-
maxCacheSize: 64,
|
|
66
|
-
maxRequests: 6,
|
|
67
|
-
// Drop parent tiles once children cover the viewport — keeps the resident set smallest.
|
|
68
|
-
refinementStrategy: "no-overlap",
|
|
69
|
-
// Byte budget is opt-in (deck.gl only enforces it when a tile's byte size is known).
|
|
70
|
-
maxCacheByteSize: undefined,
|
|
71
|
-
};
|
|
72
|
-
/**
|
|
73
|
-
* Merges an optional {@link DeckTileCacheConfig} over {@link DEFAULT_DECK_TILE_CACHE}, ignoring
|
|
74
|
-
* `undefined`/`null` fields and clamping numeric bounds to at least 1. The result is always
|
|
75
|
-
* bounded — passing `undefined` yields the defaults, never an unlimited cache.
|
|
76
|
-
*/
|
|
77
|
-
const resolveDeckTileCache = (config) => {
|
|
78
|
-
var _a;
|
|
79
|
-
const clampPositive = (value, fallback) => typeof value === "number" && Number.isFinite(value) && value >= 1 ? Math.floor(value) : fallback;
|
|
80
|
-
const maxCacheByteSize = typeof (config === null || config === void 0 ? void 0 : config.maxCacheByteSize) === "number" &&
|
|
81
|
-
Number.isFinite(config.maxCacheByteSize) &&
|
|
82
|
-
config.maxCacheByteSize >= 1
|
|
83
|
-
? Math.floor(config.maxCacheByteSize)
|
|
84
|
-
: exports.DEFAULT_DECK_TILE_CACHE.maxCacheByteSize;
|
|
85
|
-
return {
|
|
86
|
-
maxCacheSize: clampPositive(config === null || config === void 0 ? void 0 : config.maxCacheSize, exports.DEFAULT_DECK_TILE_CACHE.maxCacheSize),
|
|
87
|
-
maxRequests: clampPositive(config === null || config === void 0 ? void 0 : config.maxRequests, exports.DEFAULT_DECK_TILE_CACHE.maxRequests),
|
|
88
|
-
refinementStrategy: (_a = config === null || config === void 0 ? void 0 : config.refinementStrategy) !== null && _a !== void 0 ? _a : exports.DEFAULT_DECK_TILE_CACHE.refinementStrategy,
|
|
89
|
-
maxCacheByteSize,
|
|
90
|
-
};
|
|
91
|
-
};
|
|
92
|
-
exports.resolveDeckTileCache = resolveDeckTileCache;
|
|
93
|
-
/**
|
|
94
|
-
* Default lights matching the legacy escalator scene when {@link Models3DConfig.lights} is unset.
|
|
95
|
-
* @internal
|
|
96
|
-
*/
|
|
97
|
-
exports.DEFAULT_SCENE3D_LIGHTS = [
|
|
98
|
-
{ type: "directional", color: 0xffffff, intensity: 2, position: { x: 50, y: 100, z: 80 } },
|
|
99
|
-
{ type: "directional", color: 0xffffff, intensity: 1.5, position: { x: -50, y: 80, z: -60 } },
|
|
100
|
-
{ type: "ambient", color: 0xffffff, intensity: 1.5 },
|
|
101
|
-
];
|
|
102
|
-
const hexToRgb = (hex) => {
|
|
103
|
-
const matches = hex.match(/\w\w/g);
|
|
104
|
-
if (!matches || matches.length < 3) {
|
|
105
|
-
throw new Error(`Invalid hex color: ${hex}`);
|
|
106
|
-
}
|
|
107
|
-
const r = Number.parseInt(matches[0], 16);
|
|
108
|
-
const g = Number.parseInt(matches[1], 16);
|
|
109
|
-
const b = Number.parseInt(matches[2], 16);
|
|
110
|
-
return [r, g, b];
|
|
111
|
-
};
|
|
112
|
-
exports.hexToRgb = hexToRgb;
|
|
113
|
-
const hexToRgba = (hex) => {
|
|
114
|
-
const matches = hex.match(/\w\w/g);
|
|
115
|
-
if (!matches || matches.length < 3) {
|
|
116
|
-
throw new Error(`Invalid hex color: ${hex}`);
|
|
117
|
-
}
|
|
118
|
-
const r = Number.parseInt(matches[0], 16);
|
|
119
|
-
const g = Number.parseInt(matches[1], 16);
|
|
120
|
-
const b = Number.parseInt(matches[2], 16);
|
|
121
|
-
const a = matches.length >= 4 ? Number.parseInt(matches[3], 16) : 255;
|
|
122
|
-
return [r, g, b, a];
|
|
123
|
-
};
|
|
124
|
-
exports.hexToRgba = hexToRgba;
|
|
125
|
-
/**
|
|
126
|
-
* Resolves lights for the declarative GLB scene: {@link Models3DConfig.lights} when set, otherwise SDK defaults.
|
|
127
|
-
*/
|
|
128
|
-
function resolveModels3DLights(models) {
|
|
129
|
-
if (models.lights && models.lights.length > 0) {
|
|
130
|
-
return [...models.lights];
|
|
131
|
-
}
|
|
132
|
-
return [...exports.DEFAULT_SCENE3D_LIGHTS];
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Merges two partial rotations by adding each axis in degrees.
|
|
136
|
-
*/
|
|
137
|
-
function mergeRotation3D(a, b) {
|
|
138
|
-
var _a, _b, _c, _d, _e, _f;
|
|
139
|
-
return {
|
|
140
|
-
yaw: ((_a = a === null || a === void 0 ? void 0 : a.yaw) !== null && _a !== void 0 ? _a : 0) + ((_b = b === null || b === void 0 ? void 0 : b.yaw) !== null && _b !== void 0 ? _b : 0),
|
|
141
|
-
pitch: ((_c = a === null || a === void 0 ? void 0 : a.pitch) !== null && _c !== void 0 ? _c : 0) + ((_d = b === null || b === void 0 ? void 0 : b.pitch) !== null && _d !== void 0 ? _d : 0),
|
|
142
|
-
roll: ((_e = a === null || a === void 0 ? void 0 : a.roll) !== null && _e !== void 0 ? _e : 0) + ((_f = b === null || b === void 0 ? void 0 : b.roll) !== null && _f !== void 0 ? _f : 0),
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Normalizes a uniform or per-axis scale; undefined uses `fallback` on all axes.
|
|
147
|
-
*/
|
|
148
|
-
function normalizeScale(scale, fallback) {
|
|
149
|
-
if (scale === undefined) {
|
|
150
|
-
return [fallback, fallback, fallback];
|
|
151
|
-
}
|
|
152
|
-
if (typeof scale === "number") {
|
|
153
|
-
return [scale, scale, scale];
|
|
154
|
-
}
|
|
155
|
-
return [scale[0], scale[1], scale[2]];
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Placement scale overrides asset default when provided; otherwise asset (or 1) applies.
|
|
159
|
-
*/
|
|
160
|
-
function mergeGlbScale(assetDefault, placementOverride) {
|
|
161
|
-
const base = normalizeScale(assetDefault, 1);
|
|
162
|
-
if (placementOverride === undefined) {
|
|
163
|
-
return base;
|
|
164
|
-
}
|
|
165
|
-
return normalizeScale(placementOverride, 1);
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Resolves the effective zoom-based transparency for a placement, applying precedence:
|
|
169
|
-
* placement > asset > global. Returns `undefined` when none is configured.
|
|
170
|
-
*/
|
|
171
|
-
function resolveZoomTransparency(models, asset, placement) {
|
|
172
|
-
var _a, _b;
|
|
173
|
-
return (_b = (_a = placement.zoomTransparency) !== null && _a !== void 0 ? _a : asset === null || asset === void 0 ? void 0 : asset.zoomTransparency) !== null && _b !== void 0 ? _b : models.zoomTransparency;
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Opacity for a given zoom under a hard-threshold {@link ZoomTransparencyConfig}.
|
|
177
|
-
* Returns `cfg.opacity` when `zoom >= cfg.zoom`, otherwise `1` (fully opaque).
|
|
178
|
-
* With no config, returns `1`.
|
|
179
|
-
*/
|
|
180
|
-
function opacityForZoom(cfg, zoom) {
|
|
181
|
-
if (!cfg) {
|
|
182
|
-
return 1;
|
|
183
|
-
}
|
|
184
|
-
return zoom >= cfg.zoom ? cfg.opacity : 1;
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Resolves the effective route-based transparency for a placement, applying precedence:
|
|
188
|
-
* placement > asset > global. Returns `undefined` when none is configured, which disables
|
|
189
|
-
* route transparency for that model (a route crossing it leaves its opacity unchanged).
|
|
190
|
-
*/
|
|
191
|
-
function resolveRouteTransparency(models, asset, placement) {
|
|
192
|
-
var _a, _b;
|
|
193
|
-
return (_b = (_a = placement.routeTransparency) !== null && _a !== void 0 ? _a : asset === null || asset === void 0 ? void 0 : asset.routeTransparency) !== null && _b !== void 0 ? _b : models.routeTransparency;
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Whether a point already expressed in the model's local space falls within its x/z footprint.
|
|
197
|
-
* @internal
|
|
198
|
-
*/
|
|
199
|
-
function pointInFootprint(footprint, localX, localZ) {
|
|
200
|
-
return (localX >= footprint.minX &&
|
|
201
|
-
localX <= footprint.maxX &&
|
|
202
|
-
localZ >= footprint.minZ &&
|
|
203
|
-
localZ <= footprint.maxZ);
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Effective opacity for a placed model: the more transparent of its zoom-based value and, when a
|
|
207
|
-
* route currently crosses it, its route-based value. Route transparency only participates when a
|
|
208
|
-
* {@link RouteTransparencyConfig} is configured (`routeCfg` present) and the model is currently
|
|
209
|
-
* crossed by a route (`routeAffected`).
|
|
210
|
-
* @internal
|
|
211
|
-
*/
|
|
212
|
-
function effectiveModelOpacity(zoomCfg, routeCfg, zoom, routeAffected) {
|
|
213
|
-
const zoomOpacity = opacityForZoom(zoomCfg, zoom);
|
|
214
|
-
const routeOpacity = routeAffected && routeCfg ? routeCfg.opacity : 1;
|
|
215
|
-
return Math.min(zoomOpacity, routeOpacity);
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Whether a GLB placement should be visible for the given floor key.
|
|
219
|
-
*/
|
|
220
|
-
function isPlacementVisibleOnFloor(placement, floorKey) {
|
|
221
|
-
if (placement.visibility.mode === "allFloors") {
|
|
222
|
-
return true;
|
|
223
|
-
}
|
|
224
|
-
return placement.visibility.floorKey === floorKey;
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Computes a GLB pivot's scene-space position (in metres) from a placement's Mercator target and a
|
|
228
|
-
* Mercator reference origin, plus the asset-level and placement-level offsets.
|
|
229
|
-
*
|
|
230
|
-
* X/Z come from the Mercator delta divided by the metre scale; Y comes only from the offsets (the
|
|
231
|
-
* model is bottom-aligned separately). All offsets are in map-space metres.
|
|
232
|
-
*/
|
|
233
|
-
function computeScenePosition(target, ref, meterScale, assetOffset, placementOffset) {
|
|
234
|
-
var _a, _b, _c, _d, _e, _f;
|
|
235
|
-
const sx = (target.x - ref.x) / meterScale;
|
|
236
|
-
const sz = (target.y - ref.y) / meterScale;
|
|
237
|
-
const ax = (_a = assetOffset === null || assetOffset === void 0 ? void 0 : assetOffset.x) !== null && _a !== void 0 ? _a : 0;
|
|
238
|
-
const ay = (_b = assetOffset === null || assetOffset === void 0 ? void 0 : assetOffset.y) !== null && _b !== void 0 ? _b : 0;
|
|
239
|
-
const az = (_c = assetOffset === null || assetOffset === void 0 ? void 0 : assetOffset.z) !== null && _c !== void 0 ? _c : 0;
|
|
240
|
-
const px = (_d = placementOffset === null || placementOffset === void 0 ? void 0 : placementOffset.x) !== null && _d !== void 0 ? _d : 0;
|
|
241
|
-
const py = (_e = placementOffset === null || placementOffset === void 0 ? void 0 : placementOffset.y) !== null && _e !== void 0 ? _e : 0;
|
|
242
|
-
const pz = (_f = placementOffset === null || placementOffset === void 0 ? void 0 : placementOffset.z) !== null && _f !== void 0 ? _f : 0;
|
|
243
|
-
return [sx + ax + px, ay + py, sz + az + pz];
|
|
244
|
-
}
|
|
245
|
-
//# sourceMappingURL=3d.js.map
|
package/dist/cjs/utils/3d.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"3d.js","sourceRoot":"","sources":["../../../src/utils/3d.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.extractPolygonRings = extractPolygonRings;
|
|
4
|
-
exports.buildElevatedPaths = buildElevatedPaths;
|
|
5
|
-
exports.buildLabelData = buildLabelData;
|
|
6
|
-
exports.resolvePoiIcon = resolvePoiIcon;
|
|
7
|
-
exports.buildPoiIconData = buildPoiIconData;
|
|
8
|
-
exports.buildStoreLogoData = buildStoreLogoData;
|
|
9
|
-
exports.computeStoreLogoSize = computeStoreLogoSize;
|
|
10
|
-
/**
|
|
11
|
-
* Pure data builders for the deck.gl indoor overlay sublayers.
|
|
12
|
-
*
|
|
13
|
-
* These functions contain the feature-filtering and coordinate/height mapping logic used inside the
|
|
14
|
-
* deck.gl `renderSubLayers` callbacks in {@link InternalMapVXMap}. They are kept free of any deck.gl
|
|
15
|
-
* / WebGL imports so the logic is unit-testable without a GL context.
|
|
16
|
-
*
|
|
17
|
-
* @group Utils
|
|
18
|
-
*/
|
|
19
|
-
/** Extracts polygon coordinate rings from a GeoJSON geometry (Polygon or MultiPolygon). */
|
|
20
|
-
function extractPolygonRings(geom) {
|
|
21
|
-
if (geom.type === "Polygon") {
|
|
22
|
-
return [geom.coordinates];
|
|
23
|
-
}
|
|
24
|
-
if (geom.type === "MultiPolygon") {
|
|
25
|
-
return geom.coordinates;
|
|
26
|
-
}
|
|
27
|
-
return [];
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Builds elevated room-outline paths from indoor "room" features on the given floor.
|
|
31
|
-
* Each ring is lifted to `z` (feature `height` when present, otherwise `defaultHeight`).
|
|
32
|
-
*/
|
|
33
|
-
function buildElevatedPaths(features, floorKey, defaultHeight) {
|
|
34
|
-
var _a;
|
|
35
|
-
const rooms = features.filter((f) => {
|
|
36
|
-
var _a, _b, _c;
|
|
37
|
-
return ((_a = f.properties) === null || _a === void 0 ? void 0 : _a.class) === "room" &&
|
|
38
|
-
((_b = f.properties) === null || _b === void 0 ? void 0 : _b.subclass) !== "empty" &&
|
|
39
|
-
((_c = f.properties) === null || _c === void 0 ? void 0 : _c.floor_key) === floorKey;
|
|
40
|
-
});
|
|
41
|
-
const paths = [];
|
|
42
|
-
for (const f of rooms) {
|
|
43
|
-
const z = ((_a = f.properties) === null || _a === void 0 ? void 0 : _a.height) ? Number(f.properties.height) : defaultHeight;
|
|
44
|
-
for (const rings of extractPolygonRings(f.geometry)) {
|
|
45
|
-
for (const ring of rings) {
|
|
46
|
-
paths.push({ path: ring.map(([lon, lat]) => [lon, lat, z]) });
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return paths;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Builds indoor label text data from `area_name` / `poi` point features on the given floor.
|
|
54
|
-
* A feature is skipped when a matching `logo-{name}` sprite exists (icon takes priority over text).
|
|
55
|
-
*/
|
|
56
|
-
function buildLabelData(features, floorKey, hasImage, defaultHeight) {
|
|
57
|
-
const labelFeatures = features.filter((f) => {
|
|
58
|
-
var _a, _b, _c, _d, _e, _f;
|
|
59
|
-
if (((_a = f.properties) === null || _a === void 0 ? void 0 : _a.layerName) !== "area_name" && ((_b = f.properties) === null || _b === void 0 ? void 0 : _b.layerName) !== "poi")
|
|
60
|
-
return false;
|
|
61
|
-
if (((_c = f.geometry) === null || _c === void 0 ? void 0 : _c.type) !== "Point")
|
|
62
|
-
return false;
|
|
63
|
-
const name = ((_d = f.properties) === null || _d === void 0 ? void 0 : _d["name:latin"]) || ((_e = f.properties) === null || _e === void 0 ? void 0 : _e.name);
|
|
64
|
-
if (!name)
|
|
65
|
-
return false;
|
|
66
|
-
if (((_f = f.properties) === null || _f === void 0 ? void 0 : _f.floor_key) && f.properties.floor_key !== floorKey)
|
|
67
|
-
return false;
|
|
68
|
-
if (hasImage("logo-" + name))
|
|
69
|
-
return false; // icon has priority
|
|
70
|
-
return true;
|
|
71
|
-
});
|
|
72
|
-
return labelFeatures.map((f) => {
|
|
73
|
-
var _a, _b, _c;
|
|
74
|
-
return ({
|
|
75
|
-
position: [
|
|
76
|
-
...f.geometry.coordinates.slice(0, 2),
|
|
77
|
-
((_a = f.properties) === null || _a === void 0 ? void 0 : _a.height) ? Number(f.properties.height) : defaultHeight,
|
|
78
|
-
],
|
|
79
|
-
text: ((_b = f.properties) === null || _b === void 0 ? void 0 : _b["name:latin"]) || ((_c = f.properties) === null || _c === void 0 ? void 0 : _c.name) || "",
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
/** Resolves the POI icon id from a feature's `tags` and `subclass`. */
|
|
84
|
-
function resolvePoiIcon(tags, subclass) {
|
|
85
|
-
if (tags.includes("wheelchair"))
|
|
86
|
-
return "accessible_toilets";
|
|
87
|
-
if (tags.includes("changing_table"))
|
|
88
|
-
return "changing_table";
|
|
89
|
-
return subclass;
|
|
90
|
-
}
|
|
91
|
-
/** Builds POI icon data (elevators / toilets) from point features on the given floor. */
|
|
92
|
-
function buildPoiIconData(features, floorKey, defaultHeight) {
|
|
93
|
-
const poi = features.filter((f) => {
|
|
94
|
-
var _a, _b, _c;
|
|
95
|
-
if (((_a = f.geometry) === null || _a === void 0 ? void 0 : _a.type) !== "Point")
|
|
96
|
-
return false;
|
|
97
|
-
if (((_b = f.properties) === null || _b === void 0 ? void 0 : _b.floor_key) && f.properties.floor_key !== floorKey)
|
|
98
|
-
return false;
|
|
99
|
-
const sub = (_c = f.properties) === null || _c === void 0 ? void 0 : _c.subclass;
|
|
100
|
-
return sub === "elevator" || sub === "toilets";
|
|
101
|
-
});
|
|
102
|
-
return poi.map((f) => {
|
|
103
|
-
var _a, _b, _c;
|
|
104
|
-
return ({
|
|
105
|
-
position: [
|
|
106
|
-
...f.geometry.coordinates.slice(0, 2),
|
|
107
|
-
((_a = f.properties) === null || _a === void 0 ? void 0 : _a.height) ? Number(f.properties.height) : defaultHeight,
|
|
108
|
-
],
|
|
109
|
-
icon: resolvePoiIcon(((_b = f.properties) === null || _b === void 0 ? void 0 : _b.tags) || "", ((_c = f.properties) === null || _c === void 0 ? void 0 : _c.subclass) || ""),
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
/** Builds store-logo icon data from point features that have a matching `logo-{name}` sprite. */
|
|
114
|
-
function buildStoreLogoData(features, floorKey, spriteMapping, defaultHeight) {
|
|
115
|
-
const logos = features.filter((f) => {
|
|
116
|
-
var _a, _b, _c;
|
|
117
|
-
if (((_a = f.geometry) === null || _a === void 0 ? void 0 : _a.type) !== "Point")
|
|
118
|
-
return false;
|
|
119
|
-
if (((_b = f.properties) === null || _b === void 0 ? void 0 : _b.floor_key) && f.properties.floor_key !== floorKey)
|
|
120
|
-
return false;
|
|
121
|
-
const name = (_c = f.properties) === null || _c === void 0 ? void 0 : _c.name;
|
|
122
|
-
if (!name)
|
|
123
|
-
return false;
|
|
124
|
-
return !!spriteMapping["logo-" + name];
|
|
125
|
-
});
|
|
126
|
-
return logos.map((f) => {
|
|
127
|
-
var _a, _b, _c;
|
|
128
|
-
const name = (_a = f.properties) === null || _a === void 0 ? void 0 : _a.name;
|
|
129
|
-
return {
|
|
130
|
-
position: [
|
|
131
|
-
...f.geometry.coordinates.slice(0, 2),
|
|
132
|
-
((_b = f.properties) === null || _b === void 0 ? void 0 : _b.height) ? Number(f.properties.height) : defaultHeight,
|
|
133
|
-
],
|
|
134
|
-
icon: "logo-" + name,
|
|
135
|
-
rotation: ((_c = f.properties) === null || _c === void 0 ? void 0 : _c.rotation_icon) ? Number(f.properties.rotation_icon) : 0,
|
|
136
|
-
};
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Computes the display size for a store-logo icon from its sprite dimensions and an optional
|
|
141
|
-
* per-logo scale factor. Returns a fallback of `10` when the icon is missing from the sprite atlas.
|
|
142
|
-
*/
|
|
143
|
-
function computeStoreLogoSize(mapping, icon, logoScale) {
|
|
144
|
-
const m = mapping[icon];
|
|
145
|
-
if (!m)
|
|
146
|
-
return 10;
|
|
147
|
-
const pr = m.pixelRatio;
|
|
148
|
-
const w = m.width / pr;
|
|
149
|
-
const h = m.height / pr;
|
|
150
|
-
const base = 10 * (h / Math.max(w, h));
|
|
151
|
-
return base * (logoScale[icon] || 1);
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=deckLayers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deckLayers.js","sourceRoot":"","sources":["../../../src/utils/deckLayers.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/utils/error.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.convertToError = convertToError;
|
|
4
|
-
/**
|
|
5
|
-
* Convert an unknown error to an Error object.
|
|
6
|
-
* @group Utils
|
|
7
|
-
* @param error - The unknown error.
|
|
8
|
-
* @returns An Error object.
|
|
9
|
-
*/
|
|
10
|
-
function convertToError(error) {
|
|
11
|
-
if (error instanceof Error) {
|
|
12
|
-
return error;
|
|
13
|
-
}
|
|
14
|
-
else {
|
|
15
|
-
const text = String(error);
|
|
16
|
-
return new Error(text);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=error.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/utils/error.ts"],"names":[],"mappings":";;AAMA,wCAOC;AAbD;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAA;IACd,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAC1B,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;AACH,CAAC"}
|
package/dist/cjs/utils/images.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadImageAsDataUrl = loadImageAsDataUrl;
|
|
4
|
-
/**
|
|
5
|
-
* Load an image as a data URL.
|
|
6
|
-
* @group Utils
|
|
7
|
-
* @param imgUrl - The URL of the image to load.
|
|
8
|
-
* @returns A promise that resolves to the data URL of the image.
|
|
9
|
-
*/
|
|
10
|
-
function loadImageAsDataUrl(imgUrl) {
|
|
11
|
-
return new Promise((resolve, reject) => {
|
|
12
|
-
fetch(imgUrl)
|
|
13
|
-
.then((response) => response.blob())
|
|
14
|
-
.then((blob) => {
|
|
15
|
-
const reader = new FileReader();
|
|
16
|
-
reader.onloadend = function () {
|
|
17
|
-
resolve(reader.result);
|
|
18
|
-
};
|
|
19
|
-
reader.onerror = reject;
|
|
20
|
-
reader.readAsDataURL(blob);
|
|
21
|
-
})
|
|
22
|
-
.catch(reject);
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=images.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"images.js","sourceRoot":"","sources":["../../../src/utils/images.ts"],"names":[],"mappings":";;AAMA,gDAcC;AApBD;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,KAAK,CAAC,MAAM,CAAC;aACV,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aACnC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAA;YAC/B,MAAM,CAAC,SAAS,GAAG;gBACjB,OAAO,CAAC,MAAM,CAAC,MAAgB,CAAC,CAAA;YAClC,CAAC,CAAA;YACD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAA;YACvB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC,CAAC;aACD,KAAK,CAAC,MAAM,CAAC,CAAA;IAClB,CAAC,CAAC,CAAA;AACJ,CAAC"}
|