@mapvx/web-js 1.8.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/cjs/config/draco.js +15 -0
  2. package/dist/cjs/config/draco.js.map +1 -0
  3. package/dist/cjs/domain/models/mapConfig.js.map +1 -1
  4. package/dist/cjs/domain/models/scene3D.js +3 -0
  5. package/dist/cjs/domain/models/scene3D.js.map +1 -0
  6. package/dist/cjs/index.js +3 -3
  7. package/dist/cjs/index.js.map +1 -1
  8. package/dist/cjs/infrastructure/logging/{CountlyLogger.js → MVXLogger.js} +15 -13
  9. package/dist/cjs/infrastructure/logging/MVXLogger.js.map +1 -0
  10. package/dist/cjs/logger/logger.js +30 -54
  11. package/dist/cjs/logger/logger.js.map +1 -1
  12. package/dist/cjs/logger/sentry.js +76 -0
  13. package/dist/cjs/logger/sentry.js.map +1 -0
  14. package/dist/cjs/map/map.js +40 -9
  15. package/dist/cjs/map/map.js.map +1 -1
  16. package/dist/cjs/map/scene3DController.js +443 -0
  17. package/dist/cjs/map/scene3DController.js.map +1 -0
  18. package/dist/cjs/utils/3d.js +133 -0
  19. package/dist/cjs/utils/3d.js.map +1 -0
  20. package/dist/cjs/utils/deckLayers.js +153 -0
  21. package/dist/cjs/utils/deckLayers.js.map +1 -0
  22. package/dist/cjs/utils/loadGlb.js +45 -0
  23. package/dist/cjs/utils/loadGlb.js.map +1 -0
  24. package/dist/cjs/utils/three.js +75 -0
  25. package/dist/cjs/utils/three.js.map +1 -0
  26. package/dist/cjs/utils/threeScene.js +45 -0
  27. package/dist/cjs/utils/threeScene.js.map +1 -0
  28. package/dist/es/config/draco.d.ts +12 -0
  29. package/dist/es/config/draco.d.ts.map +1 -0
  30. package/dist/es/config/draco.js +12 -0
  31. package/dist/es/config/draco.js.map +1 -0
  32. package/dist/es/domain/models/loggeable.d.ts +1 -1
  33. package/dist/es/domain/models/loggeable.d.ts.map +1 -1
  34. package/dist/es/domain/models/mapConfig.d.ts +23 -0
  35. package/dist/es/domain/models/mapConfig.d.ts.map +1 -1
  36. package/dist/es/domain/models/mapConfig.js.map +1 -1
  37. package/dist/es/domain/models/scene3D.d.ts +308 -0
  38. package/dist/es/domain/models/scene3D.d.ts.map +1 -0
  39. package/dist/es/domain/models/scene3D.js +2 -0
  40. package/dist/es/domain/models/scene3D.js.map +1 -0
  41. package/dist/es/domain/ports/ILogger.d.ts +2 -2
  42. package/dist/es/index.d.ts +2 -1
  43. package/dist/es/index.d.ts.map +1 -1
  44. package/dist/es/index.js +1 -1
  45. package/dist/es/index.js.map +1 -1
  46. package/dist/es/infrastructure/logging/{CountlyLogger.d.ts → MVXLogger.d.ts} +13 -11
  47. package/dist/es/infrastructure/logging/MVXLogger.d.ts.map +1 -0
  48. package/dist/es/infrastructure/logging/{CountlyLogger.js → MVXLogger.js} +13 -11
  49. package/dist/es/infrastructure/logging/MVXLogger.js.map +1 -0
  50. package/dist/es/logger/logger.d.ts +2 -3
  51. package/dist/es/logger/logger.d.ts.map +1 -1
  52. package/dist/es/logger/logger.js +30 -51
  53. package/dist/es/logger/logger.js.map +1 -1
  54. package/dist/es/logger/sentry.d.ts +26 -0
  55. package/dist/es/logger/sentry.d.ts.map +1 -0
  56. package/dist/es/logger/sentry.js +72 -0
  57. package/dist/es/logger/sentry.js.map +1 -0
  58. package/dist/es/map/map.d.ts +12 -0
  59. package/dist/es/map/map.d.ts.map +1 -1
  60. package/dist/es/map/map.js +40 -9
  61. package/dist/es/map/map.js.map +1 -1
  62. package/dist/es/map/scene3DController.d.ts +74 -0
  63. package/dist/es/map/scene3DController.d.ts.map +1 -0
  64. package/dist/es/map/scene3DController.js +439 -0
  65. package/dist/es/map/scene3DController.js.map +1 -0
  66. package/dist/es/utils/3d.d.ts +54 -0
  67. package/dist/es/utils/3d.d.ts.map +1 -0
  68. package/dist/es/utils/3d.js +120 -0
  69. package/dist/es/utils/3d.js.map +1 -0
  70. package/dist/es/utils/deckLayers.d.ts +51 -0
  71. package/dist/es/utils/deckLayers.d.ts.map +1 -0
  72. package/dist/es/utils/deckLayers.js +144 -0
  73. package/dist/es/utils/deckLayers.js.map +1 -0
  74. package/dist/es/utils/loadGlb.d.ts +11 -0
  75. package/dist/es/utils/loadGlb.d.ts.map +1 -0
  76. package/dist/es/utils/loadGlb.js +42 -0
  77. package/dist/es/utils/loadGlb.js.map +1 -0
  78. package/dist/es/utils/three.d.ts +51 -0
  79. package/dist/es/utils/three.d.ts.map +1 -0
  80. package/dist/es/utils/three.js +38 -0
  81. package/dist/es/utils/three.js.map +1 -0
  82. package/dist/es/utils/threeScene.d.ts +24 -0
  83. package/dist/es/utils/threeScene.d.ts.map +1 -0
  84. package/dist/es/utils/threeScene.js +41 -0
  85. package/dist/es/utils/threeScene.js.map +1 -0
  86. package/dist/umd/index.js +17848 -12587
  87. package/dist/umd/index.js.map +1 -1
  88. package/package.json +15 -5
  89. package/dist/cjs/infrastructure/logging/CountlyLogger.js.map +0 -1
  90. package/dist/cjs/logger/rollbar.js +0 -37
  91. package/dist/cjs/logger/rollbar.js.map +0 -1
  92. package/dist/es/infrastructure/logging/CountlyLogger.d.ts.map +0 -1
  93. package/dist/es/infrastructure/logging/CountlyLogger.js.map +0 -1
  94. package/dist/es/logger/rollbar.d.ts +0 -4
  95. package/dist/es/logger/rollbar.d.ts.map +0 -1
  96. package/dist/es/logger/rollbar.js +0 -33
  97. package/dist/es/logger/rollbar.js.map +0 -1
@@ -0,0 +1,153 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deckLayers.js","sourceRoot":"","sources":["../../../src/utils/deckLayers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadGlbRoot = loadGlbRoot;
4
+ const draco_1 = require("../config/draco");
5
+ const three_1 = require("./three");
6
+ /**
7
+ * Lazily-initialized, cached GLTF loader configured with Draco + KTX2 support.
8
+ *
9
+ * The loaders (and their WebGLRenderer for KTX2 support detection) are heavy and pull in Three.js,
10
+ * so they are created on first use inside the dynamic-import boundary rather than at module load.
11
+ */
12
+ let gltfLoaderPromise;
13
+ function getGltfLoader() {
14
+ gltfLoaderPromise !== null && gltfLoaderPromise !== void 0 ? gltfLoaderPromise : (gltfLoaderPromise = (0, three_1.loadThree)().then((mod) => {
15
+ const dracoLoader = new mod.DRACOLoader();
16
+ dracoLoader.setDecoderPath(draco_1.DEFAULT_DRACO_DECODER_PATH);
17
+ const gltfLoader = new mod.GLTFLoader();
18
+ gltfLoader.setDRACOLoader(dracoLoader);
19
+ const ktx2Loader = new mod.KTX2Loader();
20
+ ktx2Loader.setTranscoderPath(draco_1.DEFAULT_KTX2_TRANSCODER_PATH);
21
+ gltfLoader.setKTX2Loader(ktx2Loader);
22
+ ktx2Loader.detectSupport(new mod.THREE.WebGLRenderer({ antialias: true }));
23
+ return gltfLoader;
24
+ }));
25
+ return gltfLoaderPromise;
26
+ }
27
+ /**
28
+ * Loads a GLB/GLTF from URL and returns the root scene group.
29
+ * Central entry point so the loader implementation can be swapped later (e.g. Draco, KTX2, custom fetch).
30
+ *
31
+ * @param url - GLB URL
32
+ * @returns Root `THREE.Group` from the loaded glTF scene
33
+ * @group Utils
34
+ */
35
+ async function loadGlbRoot(url) {
36
+ const gltfLoader = await getGltfLoader();
37
+ return new Promise((resolve, reject) => {
38
+ gltfLoader.load(url, (gltf) => {
39
+ resolve(gltf.scene);
40
+ }, undefined, (error) => {
41
+ reject(error instanceof Error ? error : new Error(String(error)));
42
+ });
43
+ });
44
+ }
45
+ //# sourceMappingURL=loadGlb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadGlb.js","sourceRoot":"","sources":["../../../src/utils/loadGlb.ts"],"names":[],"mappings":";;AAyCA,kCAcC;AArDD,2CAA0F;AAC1F,mCAAmC;AAEnC;;;;;GAKG;AACH,IAAI,iBAES,CAAA;AAEb,SAAS,aAAa;IACpB,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,IAAjB,iBAAiB,GAAK,IAAA,iBAAS,GAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAA;QACzC,WAAW,CAAC,cAAc,CAAC,kCAA0B,CAAC,CAAA;QAEtD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,CAAA;QACvC,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAEtC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,CAAA;QACvC,UAAU,CAAC,iBAAiB,CAAC,oCAA4B,CAAC,CAAA;QAC1D,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QACpC,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QAE1E,OAAO,UAAU,CAAA;IACnB,CAAC,CAAC,EAAA;IACF,OAAO,iBAAiB,CAAA;AAC1B,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,WAAW,CAAC,GAAW;IAC3C,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAA;IACxC,OAAO,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClD,UAAU,CAAC,IAAI,CACb,GAAG,EACH,CAAC,IAAU,EAAE,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrB,CAAC,EACD,SAAS,EACT,CAAC,KAAc,EAAE,EAAE;YACjB,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACnE,CAAC,CACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadThree = loadThree;
37
+ exports.loadDeck = loadDeck;
38
+ let threePromise;
39
+ let deckPromise;
40
+ /**
41
+ * Dynamically imports Three.js and the GLTF/DRACO/KTX2 loaders once and caches the result.
42
+ * Subsequent calls return the same promise, so a single Three.js instance is shared.
43
+ */
44
+ function loadThree() {
45
+ threePromise !== null && threePromise !== void 0 ? threePromise : (threePromise = Promise.all([
46
+ Promise.resolve().then(() => __importStar(require("three"))),
47
+ Promise.resolve().then(() => __importStar(require("three/addons/loaders/GLTFLoader.js"))),
48
+ Promise.resolve().then(() => __importStar(require("three/addons/loaders/DRACOLoader.js"))),
49
+ Promise.resolve().then(() => __importStar(require("three/addons/loaders/KTX2Loader.js"))),
50
+ ]).then(([three, gltf, draco, ktx2]) => ({
51
+ THREE: three,
52
+ GLTFLoader: gltf.GLTFLoader,
53
+ DRACOLoader: draco.DRACOLoader,
54
+ KTX2Loader: ktx2.KTX2Loader,
55
+ })));
56
+ return threePromise;
57
+ }
58
+ /**
59
+ * Dynamically imports the deck.gl overlay and layer classes once and caches the result.
60
+ */
61
+ function loadDeck() {
62
+ deckPromise !== null && deckPromise !== void 0 ? deckPromise : (deckPromise = Promise.all([
63
+ Promise.resolve().then(() => __importStar(require("@deck.gl/mapbox"))),
64
+ Promise.resolve().then(() => __importStar(require("@deck.gl/geo-layers"))),
65
+ Promise.resolve().then(() => __importStar(require("@deck.gl/layers"))),
66
+ ]).then(([mapbox, geoLayers, layers]) => ({
67
+ MapboxOverlay: mapbox.MapboxOverlay,
68
+ MVTLayer: geoLayers.MVTLayer,
69
+ IconLayer: layers.IconLayer,
70
+ PathLayer: layers.PathLayer,
71
+ TextLayer: layers.TextLayer,
72
+ })));
73
+ return deckPromise;
74
+ }
75
+ //# sourceMappingURL=three.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"three.js","sourceRoot":"","sources":["../../../src/utils/three.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA,8BAaC;AAKD,4BAaC;AAtCD,IAAI,YAA8C,CAAA;AAClD,IAAI,WAA4C,CAAA;AAEhD;;;GAGG;AACH,SAAgB,SAAS;IACvB,YAAY,aAAZ,YAAY,cAAZ,YAAY,IAAZ,YAAY,GAAK,OAAO,CAAC,GAAG,CAAC;0DACpB,OAAO;0DACP,oCAAoC;0DACpC,qCAAqC;0DACrC,oCAAoC;KAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACvC,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC,EAAA;IACH,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ;IACtB,WAAW,aAAX,WAAW,cAAX,WAAW,IAAX,WAAW,GAAK,OAAO,CAAC,GAAG,CAAC;0DACnB,iBAAiB;0DACjB,qBAAqB;0DACrB,iBAAiB;KACzB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC,EAAA;IACH,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeGlbBottomAnchor = computeGlbBottomAnchor;
4
+ exports.addScene3DLights = addScene3DLights;
5
+ /**
6
+ * Pure Three.js scene helpers. They receive the resolved Three.js module (from {@link loadThree})
7
+ * as their first argument instead of importing it, so they add nothing to the base bundle and can be
8
+ * unit-tested by passing a real Three.js instance (Three.js core math/scene classes need no WebGL).
9
+ *
10
+ * @group Utils
11
+ */
12
+ /**
13
+ * Computes the anchor point used for bottom-aligned GLB placement: XZ from the bounding-box center,
14
+ * Y from the bounding-box minimum.
15
+ *
16
+ * @param three - The resolved Three.js module (from `loadThree()`).
17
+ */
18
+ function computeGlbBottomAnchor(three, root) {
19
+ const box = new three.Box3().setFromObject(root);
20
+ const center = box.getCenter(new three.Vector3());
21
+ center.y = box.min.y;
22
+ return center;
23
+ }
24
+ /**
25
+ * Instantiates Three.js lights from declarative config and adds them to the scene.
26
+ *
27
+ * @param three - The resolved Three.js module (from `loadThree()`).
28
+ * @returns Number of light objects added (used to keep lights when clearing meshes).
29
+ */
30
+ function addScene3DLights(three, scene, lights) {
31
+ let count = 0;
32
+ for (const light of lights) {
33
+ if (light.type === "ambient") {
34
+ scene.add(new three.AmbientLight(light.color, light.intensity));
35
+ count++;
36
+ continue;
37
+ }
38
+ const directional = new three.DirectionalLight(light.color, light.intensity);
39
+ directional.position.set(light.position.x, light.position.y, light.position.z);
40
+ scene.add(directional);
41
+ count++;
42
+ }
43
+ return count;
44
+ }
45
+ //# sourceMappingURL=threeScene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threeScene.js","sourceRoot":"","sources":["../../../src/utils/threeScene.ts"],"names":[],"mappings":";;AAiBA,wDAQC;AAQD,4CAkBC;AAhDD;;;;;;GAMG;AAEH;;;;;GAKG;AACH,SAAgB,sBAAsB,CACpC,KAA6B,EAC7B,IAAoB;IAEpB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IACjD,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IACpB,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAC9B,KAA6B,EAC7B,KAAkB,EAClB,MAAqC;IAErC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;YAC/D,KAAK,EAAE,CAAA;YACP,SAAQ;QACV,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;QAC5E,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC9E,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACtB,KAAK,EAAE,CAAA;IACT,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Base URL for Three.js Draco decoders (glTF build from `three/examples/jsm/libs/draco/gltf`).
3
+ * Trailing slash is required by {@link https://threejs.org/docs/#examples/en/loaders/DRACOLoader | DRACOLoader}.
4
+ *
5
+ * Hosted files: `draco_wasm_wrapper.js`, `draco_decoder.wasm` (and optionally `draco_decoder.js`).
6
+ * The bucket must allow CORS for application origins that load 3D maps.
7
+ *
8
+ * @group Configuration
9
+ */
10
+ export declare const DEFAULT_DRACO_DECODER_PATH = "https://mapvx-glb-assets.s3.us-east-1.amazonaws.com/decoders/draco/";
11
+ export declare const DEFAULT_KTX2_TRANSCODER_PATH = "https://mapvx-glb-assets.s3.us-east-1.amazonaws.com/decoders/transcoder/";
12
+ //# sourceMappingURL=draco.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draco.d.ts","sourceRoot":"","sources":["../../../src/config/draco.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,wEACgC,CAAA;AAEvE,eAAO,MAAM,4BAA4B,6EACmC,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Base URL for Three.js Draco decoders (glTF build from `three/examples/jsm/libs/draco/gltf`).
3
+ * Trailing slash is required by {@link https://threejs.org/docs/#examples/en/loaders/DRACOLoader | DRACOLoader}.
4
+ *
5
+ * Hosted files: `draco_wasm_wrapper.js`, `draco_decoder.wasm` (and optionally `draco_decoder.js`).
6
+ * The bucket must allow CORS for application origins that load 3D maps.
7
+ *
8
+ * @group Configuration
9
+ */
10
+ export const DEFAULT_DRACO_DECODER_PATH = "https://mapvx-glb-assets.s3.us-east-1.amazonaws.com/decoders/draco/";
11
+ export const DEFAULT_KTX2_TRANSCODER_PATH = "https://mapvx-glb-assets.s3.us-east-1.amazonaws.com/decoders/transcoder/";
12
+ //# sourceMappingURL=draco.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draco.js","sourceRoot":"","sources":["../../../src/config/draco.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GACrC,qEAAqE,CAAA;AAEvE,MAAM,CAAC,MAAM,4BAA4B,GACvC,0EAA0E,CAAA"}
@@ -1,4 +1,4 @@
1
- import { type LogArgument } from "rollbar";
1
+ import { type LogArgument } from "../../logger/sentry";
2
2
  /**
3
3
  * Represents the abstract class for the loggeable.
4
4
  * @hidden
@@ -1 +1 @@
1
- {"version":3,"file":"loggeable.d.ts","sourceRoot":"","sources":["../../../../src/domain/models/loggeable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAA;AAI1C;;;GAGG;AACH,8BAAsB,SAAS;IAC7B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;;IAM/B;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CACpC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,IAAI;IAI3F;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI;IAKhE;;;;OAIG;IACH,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI;IAKlE,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI;IAIhD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE;CAGtC"}
1
+ {"version":3,"file":"loggeable.d.ts","sourceRoot":"","sources":["../../../../src/domain/models/loggeable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAItD;;;GAGG;AACH,8BAAsB,SAAS;IAC7B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;;IAM/B;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CACpC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,IAAI;IAI3F;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI;IAKhE;;;;OAIG;IACH,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI;IAKlE,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI;IAIhD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE;CAGtC"}
@@ -1,5 +1,6 @@
1
1
  import type { MapVxRequestContext } from "../../config/sdkConfig";
2
2
  import type { LatLng } from "./latLng";
3
+ import type { Scene3DConfig } from "./scene3D";
3
4
  /**
4
5
  * Configuration options for map tile caching.
5
6
  * Allows controlling how map tiles are cached in memory and persisted via service worker.
@@ -349,5 +350,27 @@ export interface MapConfig {
349
350
  * @see {@link MapTileCacheConfig} for available options
350
351
  */
351
352
  tileCache?: MapTileCacheConfig;
353
+ /**
354
+ * Mode of the map.
355
+ * Controls the mode of the map.
356
+ *
357
+ * This is currently a experimental feature.
358
+ *
359
+ * Don't use it unless you know what you are doing.
360
+ *
361
+ * When set to `"3D"`, deck.gl / GLB scene features run only if {@link MapConfig.scene3D} is not
362
+ * explicitly disabled (`scene3D.enabled !== false`). Omitting `scene3D` keeps previous behavior.
363
+ *
364
+ * @default "2D"
365
+ */
366
+ mode?: "2D" | "3D";
367
+ /**
368
+ * Optional 3D scene configuration: GLB models and deck.gl overlay styling.
369
+ * When {@link MapConfig.mode} is `"3D"`, set `enabled: false` to turn off 3D scene features
370
+ * (overlay, escalator layer, etc.) while keeping other map behavior.
371
+ *
372
+ * @see {@link Scene3DConfig}
373
+ */
374
+ scene3D?: Scene3DConfig;
352
375
  }
353
376
  //# sourceMappingURL=mapConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapConfig.d.ts","sourceRoot":"","sources":["../../../../src/domain/models/mapConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapConfig.d.ts","sourceRoot":"","sources":["../../../../src/domain/models/mapConfig.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mapConfig.js","sourceRoot":"","sources":["../../../../src/domain/models/mapConfig.ts"],"names":[],"mappings":"AAqEA;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAiC;IACrE,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,GAAG;IACb,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;IACpC,sBAAsB,EAAE,IAAI;IAC5B,oBAAoB,EAAE,KAAK;IAC3B,wBAAwB,EAAE,CAAC;CAC5B,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAO,CAAA"}
1
+ {"version":3,"file":"mapConfig.js","sourceRoot":"","sources":["../../../../src/domain/models/mapConfig.ts"],"names":[],"mappings":"AAsEA;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAiC;IACrE,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,GAAG;IACb,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;IACpC,sBAAsB,EAAE,IAAI;IAC5B,oBAAoB,EAAE,KAAK;IAC3B,wBAAwB,EAAE,CAAC;CAC5B,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAO,CAAA"}