@mapvx/web-js 3.5.0-dev.2 → 3.5.0-dev.4
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/dist/cjs/controllers/routeController.js +396 -106
- package/dist/cjs/controllers/routeController.js.map +1 -1
- package/dist/cjs/domain/models/routeInstance.js +1 -0
- package/dist/cjs/domain/models/routeInstance.js.map +1 -1
- package/dist/cjs/logger/sentry.js +1 -1
- package/dist/cjs/map/map.js +250 -24
- package/dist/cjs/map/map.js.map +1 -1
- package/dist/cjs/map/mapInteractionOptions.js +18 -0
- package/dist/cjs/map/mapInteractionOptions.js.map +1 -1
- package/dist/cjs/utils/loadGlb.js +55 -20
- package/dist/cjs/utils/loadGlb.js.map +1 -1
- package/dist/cjs/utils/three.js +70 -34
- package/dist/cjs/utils/three.js.map +1 -1
- package/dist/es/controllers/routeController.d.ts +91 -13
- package/dist/es/controllers/routeController.d.ts.map +1 -1
- package/dist/es/controllers/routeController.js +396 -106
- package/dist/es/controllers/routeController.js.map +1 -1
- package/dist/es/domain/models/mapConfig.d.ts +76 -0
- package/dist/es/domain/models/mapConfig.d.ts.map +1 -1
- package/dist/es/domain/models/routeInstance.d.ts +70 -1
- package/dist/es/domain/models/routeInstance.d.ts.map +1 -1
- package/dist/es/domain/models/routeInstance.js +1 -0
- package/dist/es/domain/models/routeInstance.js.map +1 -1
- package/dist/es/logger/sentry.js +1 -1
- package/dist/es/map/map.d.ts +76 -0
- package/dist/es/map/map.d.ts.map +1 -1
- package/dist/es/map/map.js +250 -24
- package/dist/es/map/map.js.map +1 -1
- package/dist/es/map/mapInteractionOptions.d.ts +5 -1
- package/dist/es/map/mapInteractionOptions.d.ts.map +1 -1
- package/dist/es/map/mapInteractionOptions.js +18 -0
- package/dist/es/map/mapInteractionOptions.js.map +1 -1
- package/dist/es/utils/loadGlb.d.ts +41 -0
- package/dist/es/utils/loadGlb.d.ts.map +1 -1
- package/dist/es/utils/loadGlb.js +55 -21
- package/dist/es/utils/loadGlb.js.map +1 -1
- package/dist/es/utils/three.d.ts +37 -8
- package/dist/es/utils/three.d.ts.map +1 -1
- package/dist/es/utils/three.js +68 -32
- package/dist/es/utils/three.js.map +1 -1
- package/dist/umd/index.js +1012 -257
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cjs/utils/three.js
CHANGED
|
@@ -33,45 +33,81 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.loadThree =
|
|
37
|
-
exports.
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
exports.loadDeck = exports.loadMeshoptDecoder = exports.loadThree = void 0;
|
|
37
|
+
exports.memoizeImport = memoizeImport;
|
|
38
|
+
/**
|
|
39
|
+
* Memoizes a dynamic-import chain, caching only a FULFILLED result.
|
|
40
|
+
*
|
|
41
|
+
* A plain `cached ??= import(...)` also memoizes a *rejection*, so one transient chunk-fetch
|
|
42
|
+
* failure (a dropped connection, a cache-busted deploy mid-session) permanently disables the
|
|
43
|
+
* feature for the rest of the page's life: every retry receives the same rejected promise and
|
|
44
|
+
* fails identically. The 3D scene retries on its own — `reloadScene3DModelsForLod` reloads GLB
|
|
45
|
+
* templates on every zoom-in past the LOD threshold — so a sticky rejection turns a blip into
|
|
46
|
+
* models that never come back until the user reloads.
|
|
47
|
+
*
|
|
48
|
+
* Concurrent callers still share one in-flight import (that is the point of the cache); only the
|
|
49
|
+
* rejected promise is evicted, and the error is re-thrown so every current caller still sees it.
|
|
50
|
+
*
|
|
51
|
+
* Exported only so the eviction behaviour can be tested directly — the loaders below wrap real
|
|
52
|
+
* dynamic `import()` calls, which a unit test cannot fail on demand.
|
|
53
|
+
*
|
|
54
|
+
* @param load Builds the import promise. Called again on the first retry after a failure.
|
|
55
|
+
* @returns An accessor that imports at most once per successful load.
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
58
|
+
function memoizeImport(load) {
|
|
59
|
+
let cached;
|
|
60
|
+
return () => {
|
|
61
|
+
cached !== null && cached !== void 0 ? cached : (cached = load().catch((error) => {
|
|
62
|
+
// Evict BEFORE re-throwing so the next call starts a fresh import. Safe to assign here:
|
|
63
|
+
// a promise never settles synchronously, so `cached` is already assigned by now.
|
|
64
|
+
cached = undefined;
|
|
65
|
+
throw error;
|
|
66
|
+
}));
|
|
67
|
+
return cached;
|
|
68
|
+
};
|
|
69
|
+
}
|
|
40
70
|
/**
|
|
41
71
|
* Dynamically imports Three.js and the GLTF/DRACO/KTX2 loaders once and caches the result.
|
|
42
72
|
* Subsequent calls return the same promise, so a single Three.js instance is shared.
|
|
73
|
+
* A failed import is not cached — see {@link memoizeImport}.
|
|
43
74
|
*/
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
75
|
+
exports.loadThree = memoizeImport(() => Promise.all([
|
|
76
|
+
Promise.resolve().then(() => __importStar(require("three"))),
|
|
77
|
+
Promise.resolve().then(() => __importStar(require("three/addons/loaders/GLTFLoader.js"))),
|
|
78
|
+
Promise.resolve().then(() => __importStar(require("three/addons/loaders/DRACOLoader.js"))),
|
|
79
|
+
Promise.resolve().then(() => __importStar(require("three/addons/loaders/KTX2Loader.js"))),
|
|
80
|
+
]).then(([three, gltf, draco, ktx2]) => ({
|
|
81
|
+
THREE: three,
|
|
82
|
+
GLTFLoader: gltf.GLTFLoader,
|
|
83
|
+
DRACOLoader: draco.DRACOLoader,
|
|
84
|
+
KTX2Loader: ktx2.KTX2Loader,
|
|
85
|
+
})));
|
|
86
|
+
/**
|
|
87
|
+
* Dynamically imports the singleton meshopt decoder once and caches the result.
|
|
88
|
+
*
|
|
89
|
+
* Deliberately NOT part of {@link loadThree}'s import chain: only GLBs compressed with
|
|
90
|
+
* `EXT_meshopt_compression` need it, so keeping it out of the eager `Promise.all` keeps the
|
|
91
|
+
* decoder module (and its WASM instantiation) off the critical path of the first 3D frame.
|
|
92
|
+
* It is fetched on the first meshopt buffer decode instead — see the lazy wrapper in
|
|
93
|
+
* `loadGlb.ts`. That moves the fetch inside `parse()`, competing with hundreds of MB of GLB
|
|
94
|
+
* downloads, so not caching a failed import (see {@link memoizeImport}) matters more here than
|
|
95
|
+
* for the eager loaders.
|
|
96
|
+
*/
|
|
97
|
+
exports.loadMeshoptDecoder = memoizeImport(() => Promise.resolve().then(() => __importStar(require("three/addons/libs/meshopt_decoder.module.js"))).then((meshopt) => meshopt.MeshoptDecoder));
|
|
60
98
|
/**
|
|
61
99
|
* Dynamically imports the deck.gl overlay and layer classes once and caches the result.
|
|
100
|
+
* A failed import is not cached — see {@link memoizeImport}.
|
|
62
101
|
*/
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
})));
|
|
75
|
-
return deckPromise;
|
|
76
|
-
}
|
|
102
|
+
exports.loadDeck = memoizeImport(() => Promise.all([
|
|
103
|
+
Promise.resolve().then(() => __importStar(require("@deck.gl/mapbox"))),
|
|
104
|
+
Promise.resolve().then(() => __importStar(require("@deck.gl/geo-layers"))),
|
|
105
|
+
Promise.resolve().then(() => __importStar(require("@deck.gl/layers"))),
|
|
106
|
+
]).then(([mapbox, geoLayers, layers]) => ({
|
|
107
|
+
MapboxOverlay: mapbox.MapboxOverlay,
|
|
108
|
+
MVTLayer: geoLayers.MVTLayer,
|
|
109
|
+
IconLayer: layers.IconLayer,
|
|
110
|
+
PathLayer: layers.PathLayer,
|
|
111
|
+
TextLayer: layers.TextLayer,
|
|
112
|
+
})));
|
|
77
113
|
//# sourceMappingURL=three.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"three.js","sourceRoot":"","sources":["../../../src/utils/three.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"three.js","sourceRoot":"","sources":["../../../src/utils/three.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,sCAWC;AA/BD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,aAAa,CAAI,IAAsB;IACrD,IAAI,MAA8B,CAAA;IAClC,OAAO,GAAG,EAAE;QACV,MAAM,aAAN,MAAM,cAAN,MAAM,IAAN,MAAM,GAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACzC,wFAAwF;YACxF,iFAAiF;YACjF,MAAM,GAAG,SAAS,CAAA;YAClB,MAAM,KAAK,CAAA;QACb,CAAC,CAAC,EAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AAED;;;;GAIG;AACU,QAAA,SAAS,GAA+B,aAAa,CAAC,GAAG,EAAE,CACtE,OAAO,CAAC,GAAG,CAAC;sDACH,OAAO;sDACP,oCAAoC;sDACpC,qCAAqC;sDACrC,oCAAoC;CAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACvC,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,IAAI,CAAC,UAAU;IAC3B,WAAW,EAAE,KAAK,CAAC,WAAW;IAC9B,UAAU,EAAE,IAAI,CAAC,UAAU;CAC5B,CAAC,CAAC,CACJ,CAAA;AAED;;;;;;;;;;GAUG;AACU,QAAA,kBAAkB,GAAyC,aAAa,CAAC,GAAG,EAAE,CACzF,kDAAO,6CAA6C,IAAE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAChG,CAAA;AAED;;;GAGG;AACU,QAAA,QAAQ,GAA8B,aAAa,CAAC,GAAG,EAAE,CACpE,OAAO,CAAC,GAAG,CAAC;sDACH,iBAAiB;sDACjB,qBAAqB;sDACrB,iBAAiB;CACzB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,QAAQ,EAAE,SAAS,CAAC,QAAQ;IAC5B,SAAS,EAAE,MAAM,CAAC,SAAS;IAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;IAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;CAC5B,CAAC,CAAC,CACJ,CAAA"}
|
|
@@ -24,9 +24,10 @@ export declare class RouteController {
|
|
|
24
24
|
* Add MapLibre sources and layers for a single route instance.
|
|
25
25
|
*
|
|
26
26
|
* All three sources set `lineMetrics`: maplibre computes `line-progress` only
|
|
27
|
-
* when a source asks it to
|
|
28
|
-
*
|
|
29
|
-
*
|
|
27
|
+
* when a source asks it to. The CURRENT layer needs it to reveal the step
|
|
28
|
+
* line as the marker advances, and `preparePaintForLayer` emits a
|
|
29
|
+
* `line-progress` gradient for a GradientStyle on any of the three — without
|
|
30
|
+
* it, a consumer setting a gradient route style silently got no gradient.
|
|
30
31
|
*/
|
|
31
32
|
private addSourcesAndLayersForRoute;
|
|
32
33
|
/**
|
|
@@ -38,6 +39,15 @@ export declare class RouteController {
|
|
|
38
39
|
* Should be called when the map style is reloaded.
|
|
39
40
|
*/
|
|
40
41
|
addSourcesAndLayers(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Re-apply the paint a style reload dropped.
|
|
44
|
+
*
|
|
45
|
+
* {@link addSourcesAndLayersForRoute} re-adds the layers with no paint at all, so
|
|
46
|
+
* without this the route keeps its geometry but loses its colors — and the CURRENT
|
|
47
|
+
* layer loses its `line-gradient`, which is the only thing hiding the part of the
|
|
48
|
+
* step the marker has not reached yet: the whole step would be drawn at once.
|
|
49
|
+
*/
|
|
50
|
+
private restoreLayerPaint;
|
|
41
51
|
/**
|
|
42
52
|
* Recompute the GLB route-transparency collision path from all active routes and push it to the
|
|
43
53
|
* map. Every polyline point of every step is tagged with the floor its segment is drawn on (same
|
|
@@ -67,8 +77,72 @@ export declare class RouteController {
|
|
|
67
77
|
*/
|
|
68
78
|
private projectPointToSegment;
|
|
69
79
|
private setSourceData;
|
|
70
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Upload the whole polyline of `step` as the CURRENT feature and reset its
|
|
82
|
+
* reveal to zero. The line is then drawn progressively by moving a
|
|
83
|
+
* `line-progress` cut-off (see {@link applyReveal}) instead of re-uploading a
|
|
84
|
+
* growing geometry every frame: a paint change is applied synchronously, while
|
|
85
|
+
* a `setData` goes through the worker and lands several frames after the DOM
|
|
86
|
+
* marker already moved — on a slow device the marker visibly ran ahead of
|
|
87
|
+
* its line.
|
|
88
|
+
*/
|
|
89
|
+
private loadStepGeometry;
|
|
90
|
+
/**
|
|
91
|
+
* Fraction of the step line up to `coordinatesIndex` plus `extraMeters` along
|
|
92
|
+
* the following segment.
|
|
93
|
+
*/
|
|
94
|
+
private fractionAlongStep;
|
|
95
|
+
/**
|
|
96
|
+
* Show the first `fraction` of the CURRENT step line: a `line-gradient` step on
|
|
97
|
+
* `line-progress` that turns transparent past the cut-off. MapLibre treats it
|
|
98
|
+
* as a plain paint update (a 256px ramp re-rendered on the next draw), so the
|
|
99
|
+
* line head and the marker move in the same frame.
|
|
100
|
+
*
|
|
101
|
+
* The paint is set with `validate: false`: this runs on every animation frame and
|
|
102
|
+
* the expression is built here, not taken from a consumer, so re-parsing and
|
|
103
|
+
* re-validating it 60 times a second is pure overhead on a totem-class device.
|
|
104
|
+
*/
|
|
105
|
+
private applyReveal;
|
|
106
|
+
/**
|
|
107
|
+
* The `line-gradient` that shows the first `fraction` of the step line and
|
|
108
|
+
* nothing after it.
|
|
109
|
+
*
|
|
110
|
+
* Deliberately built on `interpolate` rather than the `step` this reads like.
|
|
111
|
+
* `LineStyleLayer._handleSpecialPaintPropertyUpdate` sets `stepInterpolant`
|
|
112
|
+
* for any `step` root, and `stepInterpolant` swaps the gradient ramp from a
|
|
113
|
+
* fixed 256 texels to
|
|
114
|
+
* `clamp(nextPowerOfTwo(lineLength * 1024 * potentialOverzoom), 256, maxTextureSize)`
|
|
115
|
+
* — 4096 to 16384 in practice. Every `setPaintProperty` here bumps
|
|
116
|
+
* `gradientVersion`, so that ramp would be re-rendered and re-uploaded once
|
|
117
|
+
* per visible tile per frame, which is the opposite of what this reveal is
|
|
118
|
+
* for. An `interpolate` root keeps the ramp at 256 texels; the cost is a
|
|
119
|
+
* one-texel soft edge at the cut-off instead of a hard one.
|
|
120
|
+
*/
|
|
121
|
+
private revealGradient;
|
|
122
|
+
/**
|
|
123
|
+
* Whether the route's three sources have finished uploading their latest
|
|
124
|
+
* data, i.e. what is on screen matches what was last set. Maps without
|
|
125
|
+
* `isSourceLoaded` (test doubles) count as ready.
|
|
126
|
+
*/
|
|
127
|
+
private stepSourcesReady;
|
|
128
|
+
/** Whether `sourceId` is currently on the map (false while a style swap is in flight). */
|
|
129
|
+
private hasSource;
|
|
130
|
+
/**
|
|
131
|
+
* Apply a floor switch that was deferred until the next step's line was
|
|
132
|
+
* uploaded, then put the marker where that step starts. Floor, line and
|
|
133
|
+
* marker change in the same frame.
|
|
134
|
+
*/
|
|
135
|
+
private applyPendingFloor;
|
|
71
136
|
private setLayerPaint;
|
|
137
|
+
/**
|
|
138
|
+
* Set the paint the step line is drawn with, resolving its color once.
|
|
139
|
+
*
|
|
140
|
+
* See {@link RouteInstance.currentLineColor}: resolving a gradient allocates
|
|
141
|
+
* and can throw, and the reveal would otherwise redo it on every frame.
|
|
142
|
+
*/
|
|
143
|
+
private setCurrentDrawConfig;
|
|
144
|
+
/** The color of a route line: a solid color or a `line-progress` gradient ramp. */
|
|
145
|
+
private lineColorExpression;
|
|
72
146
|
private preparePaintForLayer;
|
|
73
147
|
/**
|
|
74
148
|
* Update the filter of the layer referenced with a ID.
|
|
@@ -112,6 +186,19 @@ export declare class RouteController {
|
|
|
112
186
|
* @param animationConfig The animation configuration for the route.
|
|
113
187
|
*/
|
|
114
188
|
startAnimating(route: MVXRoute, drawConfig: InternalAnimationDrawingConfig, animationConfig: InternalAnimationConfig): void;
|
|
189
|
+
/**
|
|
190
|
+
* Tear one route instance down.
|
|
191
|
+
*
|
|
192
|
+
* `applyPendingFloorChange` decides what happens to a floor switch this
|
|
193
|
+
* instance had decided on but not yet shown. Removing a single route mid-walk
|
|
194
|
+
* applies it: the consumer may be removing the route from the step callback,
|
|
195
|
+
* and dropping the switch would leave the map on the floor the route has
|
|
196
|
+
* already left. Clearing every route does not — a floor switch is a visible
|
|
197
|
+
* camera and filter change plus an `onFloorChange` to the consumer, and
|
|
198
|
+
* `removeAllRoutes` is what teardown calls, where moving the map is
|
|
199
|
+
* a side effect nobody asked for and a consumer that re-enters from
|
|
200
|
+
* `onFloorChange` re-enters teardown.
|
|
201
|
+
*/
|
|
115
202
|
private clearRouteInstance;
|
|
116
203
|
/**
|
|
117
204
|
* Remove a route from the map.
|
|
@@ -173,15 +260,6 @@ export declare class RouteController {
|
|
|
173
260
|
centerOnCurrentStep(routeId?: string): void;
|
|
174
261
|
private prepareForNextStep;
|
|
175
262
|
private animateStep;
|
|
176
|
-
/**
|
|
177
|
-
* Pushes the in-progress segment's geometry to its map source.
|
|
178
|
-
*
|
|
179
|
-
* Called once per frame rather than once per vertex crossed: `setData`
|
|
180
|
-
* rebuilds the whole geojson-vt index and reloads every in-view tile, so its
|
|
181
|
-
* cost is a large fixed one per call and is worth paying only once, with the
|
|
182
|
-
* frame's final geometry.
|
|
183
|
-
*/
|
|
184
|
-
private flushCurrentSourceData;
|
|
185
263
|
private setMarkerLngLat;
|
|
186
264
|
private setMarkerRotation;
|
|
187
265
|
setMarkerFloor(floorId?: string, routeId?: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeController.d.ts","sourceRoot":"","sources":["../../../src/controllers/routeController.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EACpC,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,KAAK,QAAQ,EAAqB,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,qCAAqC,CAAA;
|
|
1
|
+
{"version":3,"file":"routeController.d.ts","sourceRoot":"","sources":["../../../src/controllers/routeController.ts"],"names":[],"mappings":"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"}
|