@twinmatrix/spatialverse-sdk-web 0.0.3 → 0.0.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/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js +2 -2
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js +4 -3
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/3DMap/MainMap.js +202 -198
- package/lib/cjs/meta-atlas-sdk/3DMap/MainMap.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js +3 -3
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js +32 -29
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js +10 -13
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js +55 -68
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js +12 -12
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js +73 -69
- package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/helpers.js +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/helpers.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/local-storage.js +6 -1
- package/lib/cjs/meta-atlas-sdk/utils/local-storage.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/routing-visualizer/index.js +103 -103
- package/lib/cjs/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
- package/lib/cjs/react/MetaAtlasMap.js +4 -4
- package/lib/cjs/react/MetaAtlasMap.js.map +1 -1
- package/lib/cjs/react/hooks/useMapEvents/index.js +6 -3
- package/lib/cjs/react/hooks/useMapEvents/index.js.map +1 -1
- package/lib/cjs/react/hooks/useStampRally/index.js +7 -5
- package/lib/cjs/react/hooks/useStampRally/index.js.map +1 -1
- package/lib/cjs/react/hooks/useStampRally/utils.js +1 -1
- package/lib/cjs/react/hooks/useStampRally/utils.js.map +1 -1
- package/lib/cjs/react/stores/useMapDataStore.js +17 -21
- package/lib/cjs/react/stores/useMapDataStore.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js +2 -2
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js +4 -3
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/MainMap.js +202 -198
- package/lib/esm/meta-atlas-sdk/3DMap/MainMap.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js +3 -3
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js +34 -31
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js +10 -8
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js +55 -68
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js +12 -12
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js +73 -68
- package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/utils/helpers.js +1 -1
- package/lib/esm/meta-atlas-sdk/utils/helpers.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/utils/local-storage.js +6 -1
- package/lib/esm/meta-atlas-sdk/utils/local-storage.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js +103 -101
- package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
- package/lib/esm/react/MetaAtlasMap.js +4 -4
- package/lib/esm/react/MetaAtlasMap.js.map +1 -1
- package/lib/esm/react/hooks/useMapEvents/index.js +6 -3
- package/lib/esm/react/hooks/useMapEvents/index.js.map +1 -1
- package/lib/esm/react/hooks/useStampRally/index.js +7 -5
- package/lib/esm/react/hooks/useStampRally/index.js.map +1 -1
- package/lib/esm/react/hooks/useStampRally/utils.js +1 -1
- package/lib/esm/react/hooks/useStampRally/utils.js.map +1 -1
- package/lib/esm/react/stores/useMapDataStore.js +17 -21
- package/lib/esm/react/stores/useMapDataStore.js.map +1 -1
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.d.ts +30 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.d.ts +5 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.d.ts +21 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.d.ts +27 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.d.ts +18 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.d.ts +37 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.d.ts.map +1 -0
- package/package.json +4 -4
|
@@ -31,12 +31,12 @@ function useStampRally() {
|
|
|
31
31
|
if (map.hasImage(id)) return resolve();
|
|
32
32
|
map.loadImage(url, (error, image) => {
|
|
33
33
|
if (error || !image) {
|
|
34
|
-
console.error(
|
|
34
|
+
console.error("Error loading image '".concat(id, "' from ").concat(url, ":"), error);
|
|
35
35
|
reject(error);
|
|
36
36
|
return;
|
|
37
37
|
}
|
|
38
38
|
map.addImage(id, image);
|
|
39
|
-
console.log(
|
|
39
|
+
console.log("Loaded image: ".concat(id));
|
|
40
40
|
resolve();
|
|
41
41
|
});
|
|
42
42
|
});
|
|
@@ -46,7 +46,7 @@ function useStampRally() {
|
|
|
46
46
|
name,
|
|
47
47
|
url
|
|
48
48
|
} = _ref;
|
|
49
|
-
const imgName = name == 'stamp_locked' ? name :
|
|
49
|
+
const imgName = name == 'stamp_locked' ? name : "stamp-".concat(name);
|
|
50
50
|
return loadImageAsync(map, imgName, url);
|
|
51
51
|
})).then(() => {
|
|
52
52
|
if (map.getSource('Stamp Rally')) return;
|
|
@@ -79,12 +79,13 @@ function useStampRally() {
|
|
|
79
79
|
* @param stamps - Array of stamps.
|
|
80
80
|
*/
|
|
81
81
|
const showStamps = stamps => {
|
|
82
|
+
var _map$getSource;
|
|
82
83
|
if (!map) {
|
|
83
84
|
console.error('Map instance not available for displaying stamps');
|
|
84
85
|
return;
|
|
85
86
|
}
|
|
86
87
|
const pointFeatures = (0, _utils.getStampFeatures)(stamps);
|
|
87
|
-
map.getSource('Stamp Rally')
|
|
88
|
+
(_map$getSource = map.getSource('Stamp Rally')) === null || _map$getSource === void 0 || _map$getSource.setData({
|
|
88
89
|
type: 'FeatureCollection',
|
|
89
90
|
features: pointFeatures
|
|
90
91
|
});
|
|
@@ -94,11 +95,12 @@ function useStampRally() {
|
|
|
94
95
|
* Hide stamp rally from the map.
|
|
95
96
|
*/
|
|
96
97
|
const hideStamps = () => {
|
|
98
|
+
var _map$getSource2;
|
|
97
99
|
if (!map) {
|
|
98
100
|
console.error('Map instance not available for displaying stamps');
|
|
99
101
|
return;
|
|
100
102
|
}
|
|
101
|
-
map.getSource('Stamp Rally')
|
|
103
|
+
(_map$getSource2 = map.getSource('Stamp Rally')) === null || _map$getSource2 === void 0 || _map$getSource2.setData({
|
|
102
104
|
type: 'FeatureCollection',
|
|
103
105
|
features: []
|
|
104
106
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useStampRally","map","useMetaAtlas","servicesReady","useServicesReady","setUpStampRally","logos","Promise","resolve","console","error","loadImageAsync","id","url","reject","hasImage","loadImage","image","addImage","log","all","_ref","name","imgName","then","getSource","addSource","type","data","features","addLayer","source","layout","undefined","catch","showStamps","stamps","pointFeatures","getStampFeatures","setData","hideStamps","isReady"],"sources":["../../../../../src/react/hooks/useStampRally/index.ts"],"sourcesContent":["import { useMetaAtlas } from '../useMetaAtlas';\nimport { useServicesReady } from '../../stores/useMetaAtlasStore';\nimport { Stamp, UseStampRallyReturn } from './types';\nimport { getStampFeatures } from './utils';\n\nexport function useStampRally(): UseStampRallyReturn {\n const { map } = useMetaAtlas()\n \n const servicesReady = useServicesReady();\n\n /**\n * Set up stamp rally source, layer and load the logo images and add them to the map.\n * Remember to also load an image with name stamp_locked which is used to show the icon when stamp has not been unlocked yet.\n * Other images name should correspond with the stamp's exhibitorName.\n * @param logos - Array of image names and url-s to be added.\n * @returns Promise that resolves to a boolean indicating success or error.\n */\n const setUpStampRally = (logos: {name: string, url: string}[]): Promise<boolean> => {\n return new Promise((resolve) => {\n if (!map) {\n console.error(\n 'Map instance not available for loading stamp rally logos'\n );\n return;\n }\n\n const loadImageAsync = (\n map: maplibregl.Map,\n id: string,\n url: string\n ) => {\n return new Promise<void>((resolve, reject) => {\n if (map.hasImage(id)) return resolve();\n\n map.loadImage(url, (error, image) => {\n if (error || !image) {\n console.error(\n `Error loading image '${id}' from ${url}:`,\n error\n );\n reject(error);\n return;\n }\n\n map.addImage(id, image);\n console.log(`Loaded image: ${id}`);\n resolve();\n });\n });\n };\n\n Promise.all(\n logos.map(({ name, url }) => {\n const imgName = name == 'stamp_locked' ? name : `stamp-${name}`;\n return loadImageAsync(map, imgName, url);\n })\n ).then(() => {\n if (map.getSource('Stamp Rally')) return;\n\n map.addSource('Stamp Rally', {\n type: 'geojson',\n data: {\n type: 'FeatureCollection',\n features: [],\n },\n });\n\n map.addLayer(\n {\n id: 'stamps-layer',\n type: 'symbol',\n source: 'Stamp Rally',\n layout: {\n 'icon-image': ['get', 'icon'],\n 'icon-size': 0.05,\n 'icon-allow-overlap': true,\n },\n },\n undefined\n );\n resolve(true);\n }).catch(() => { resolve(false); });\n });\n };\n\n /**\n * Show stamp rally stamps on the map, locked and unlocked respectively.\n * @param stamps - Array of stamps.\n */\n const showStamps = (stamps: Stamp[]) => {\n if (!map) {\n console.error('Map instance not available for displaying stamps');\n return;\n }\n\n const pointFeatures = getStampFeatures(stamps);\n\n (map.getSource('Stamp Rally') as any)?.setData({\n type: 'FeatureCollection',\n features: pointFeatures as any,\n });\n };\n\n /**\n * Hide stamp rally from the map.\n */\n const hideStamps = () => {\n if (!map) {\n console.error('Map instance not available for displaying stamps');\n return;\n }\n \n (map.getSource('Stamp Rally') as any)?.setData({\n type: 'FeatureCollection',\n features: []\n });\n };\n\n return {\n isReady: servicesReady,\n setUpStampRally,\n showStamps,\n hideStamps\n };\n}\n\n"],"mappings":";;;;;;;;;AAKO,SAASA,aAAaA,CAAA,EAAwB;EACnD,MAAM;IAAEC;EAAI,CAAC,GAAG,IAAAC,mBAAY,EAAC,CAAC;EAE9B,MAAMC,aAAa,GAAG,IAAAC,mCAAgB,EAAC,CAAC;;EAExC;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,eAAe,GAAIC,KAAoC,IAAuB;IAClF,OAAO,IAAIC,OAAO,CAAEC,OAAO,IAAK;MAC9B,IAAI,CAACP,GAAG,EAAE;QACRQ,OAAO,CAACC,KAAK,CACX,0DACF,CAAC;QACD;MACF;MAEA,MAAMC,cAAc,GAAGA,CACrBV,GAAmB,EACnBW,EAAU,EACVC,GAAW,KACR;QACH,OAAO,IAAIN,OAAO,CAAO,CAACC,OAAO,EAAEM,MAAM,KAAK;UAC5C,IAAIb,GAAG,CAACc,QAAQ,CAACH,EAAE,CAAC,EAAE,OAAOJ,OAAO,CAAC,CAAC;UAEtCP,GAAG,CAACe,SAAS,CAACH,GAAG,EAAE,CAACH,KAAK,EAAEO,KAAK,KAAK;YACnC,IAAIP,KAAK,IAAI,CAACO,KAAK,EAAE;cACnBR,OAAO,CAACC,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","names":["useStampRally","map","useMetaAtlas","servicesReady","useServicesReady","setUpStampRally","logos","Promise","resolve","console","error","loadImageAsync","id","url","reject","hasImage","loadImage","image","concat","addImage","log","all","_ref","name","imgName","then","getSource","addSource","type","data","features","addLayer","source","layout","undefined","catch","showStamps","stamps","_map$getSource","pointFeatures","getStampFeatures","setData","hideStamps","_map$getSource2","isReady"],"sources":["../../../../../src/react/hooks/useStampRally/index.ts"],"sourcesContent":["import { useMetaAtlas } from '../useMetaAtlas';\nimport { useServicesReady } from '../../stores/useMetaAtlasStore';\nimport { Stamp, UseStampRallyReturn } from './types';\nimport { getStampFeatures } from './utils';\n\nexport function useStampRally(): UseStampRallyReturn {\n const { map } = useMetaAtlas()\n \n const servicesReady = useServicesReady();\n\n /**\n * Set up stamp rally source, layer and load the logo images and add them to the map.\n * Remember to also load an image with name stamp_locked which is used to show the icon when stamp has not been unlocked yet.\n * Other images name should correspond with the stamp's exhibitorName.\n * @param logos - Array of image names and url-s to be added.\n * @returns Promise that resolves to a boolean indicating success or error.\n */\n const setUpStampRally = (logos: {name: string, url: string}[]): Promise<boolean> => {\n return new Promise((resolve) => {\n if (!map) {\n console.error(\n 'Map instance not available for loading stamp rally logos'\n );\n return;\n }\n\n const loadImageAsync = (\n map: maplibregl.Map,\n id: string,\n url: string\n ) => {\n return new Promise<void>((resolve, reject) => {\n if (map.hasImage(id)) return resolve();\n\n map.loadImage(url, (error, image) => {\n if (error || !image) {\n console.error(\n `Error loading image '${id}' from ${url}:`,\n error\n );\n reject(error);\n return;\n }\n\n map.addImage(id, image);\n console.log(`Loaded image: ${id}`);\n resolve();\n });\n });\n };\n\n Promise.all(\n logos.map(({ name, url }) => {\n const imgName = name == 'stamp_locked' ? name : `stamp-${name}`;\n return loadImageAsync(map, imgName, url);\n })\n ).then(() => {\n if (map.getSource('Stamp Rally')) return;\n\n map.addSource('Stamp Rally', {\n type: 'geojson',\n data: {\n type: 'FeatureCollection',\n features: [],\n },\n });\n\n map.addLayer(\n {\n id: 'stamps-layer',\n type: 'symbol',\n source: 'Stamp Rally',\n layout: {\n 'icon-image': ['get', 'icon'],\n 'icon-size': 0.05,\n 'icon-allow-overlap': true,\n },\n },\n undefined\n );\n resolve(true);\n }).catch(() => { resolve(false); });\n });\n };\n\n /**\n * Show stamp rally stamps on the map, locked and unlocked respectively.\n * @param stamps - Array of stamps.\n */\n const showStamps = (stamps: Stamp[]) => {\n if (!map) {\n console.error('Map instance not available for displaying stamps');\n return;\n }\n\n const pointFeatures = getStampFeatures(stamps);\n\n (map.getSource('Stamp Rally') as any)?.setData({\n type: 'FeatureCollection',\n features: pointFeatures as any,\n });\n };\n\n /**\n * Hide stamp rally from the map.\n */\n const hideStamps = () => {\n if (!map) {\n console.error('Map instance not available for displaying stamps');\n return;\n }\n \n (map.getSource('Stamp Rally') as any)?.setData({\n type: 'FeatureCollection',\n features: []\n });\n };\n\n return {\n isReady: servicesReady,\n setUpStampRally,\n showStamps,\n hideStamps\n };\n}\n\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,7 +7,7 @@ exports.getStampFeatures = getStampFeatures;
|
|
|
7
7
|
function getStampFeatures(stamps) {
|
|
8
8
|
return stamps.map(stamp => {
|
|
9
9
|
if (stamp.geojson) {
|
|
10
|
-
const imageName =
|
|
10
|
+
const imageName = "stamp-".concat(stamp.exhibitorName);
|
|
11
11
|
if (stamp.isCollected()) stamp.geojson.properties.icon = imageName;else stamp.geojson.properties.icon = 'stamp_locked';
|
|
12
12
|
}
|
|
13
13
|
return stamp.geojson;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["getStampFeatures","stamps","map","stamp","geojson","imageName","exhibitorName","isCollected","properties","icon"],"sources":["../../../../../src/react/hooks/useStampRally/utils.ts"],"sourcesContent":["import { Stamp } from \"./types\";\n\nexport function getStampFeatures(stamps: Stamp[]) {\n return stamps.map((stamp: Stamp) => {\n if (stamp.geojson) {\n const imageName = `stamp-${stamp.exhibitorName}`;\n if (stamp.isCollected()) stamp.geojson.properties.icon = imageName;\n else stamp.geojson.properties.icon = 'stamp_locked';\n }\n return stamp.geojson;\n });\n}"],"mappings":";;;;;;AAEO,SAASA,gBAAgBA,CAACC,MAAe,EAAE;EAChD,OAAOA,MAAM,CAACC,GAAG,CAAEC,KAAY,IAAK;IAClC,IAAIA,KAAK,CAACC,OAAO,EAAE;MACjB,MAAMC,SAAS,
|
|
1
|
+
{"version":3,"file":"utils.js","names":["getStampFeatures","stamps","map","stamp","geojson","imageName","concat","exhibitorName","isCollected","properties","icon"],"sources":["../../../../../src/react/hooks/useStampRally/utils.ts"],"sourcesContent":["import { Stamp } from \"./types\";\n\nexport function getStampFeatures(stamps: Stamp[]) {\n return stamps.map((stamp: Stamp) => {\n if (stamp.geojson) {\n const imageName = `stamp-${stamp.exhibitorName}`;\n if (stamp.isCollected()) stamp.geojson.properties.icon = imageName;\n else stamp.geojson.properties.icon = 'stamp_locked';\n }\n return stamp.geojson;\n });\n}"],"mappings":";;;;;;AAEO,SAASA,gBAAgBA,CAACC,MAAe,EAAE;EAChD,OAAOA,MAAM,CAACC,GAAG,CAAEC,KAAY,IAAK;IAClC,IAAIA,KAAK,CAACC,OAAO,EAAE;MACjB,MAAMC,SAAS,YAAAC,MAAA,CAAYH,KAAK,CAACI,aAAa,CAAE;MAChD,IAAIJ,KAAK,CAACK,WAAW,CAAC,CAAC,EAAEL,KAAK,CAACC,OAAO,CAACK,UAAU,CAACC,IAAI,GAAGL,SAAS,CAAC,KAC9DF,KAAK,CAACC,OAAO,CAACK,UAAU,CAACC,IAAI,GAAG,cAAc;IACrD;IACA,OAAOP,KAAK,CAACC,OAAO;EACtB,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -5,6 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.useMapDataStore = void 0;
|
|
7
7
|
var _zustand = require("zustand");
|
|
8
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
9
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
10
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
11
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
12
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
13
|
// can add others like assets, events, etc.
|
|
9
14
|
|
|
10
15
|
/**
|
|
@@ -25,45 +30,36 @@ const useMapDataStore = exports.useMapDataStore = (0, _zustand.create)(set => ({
|
|
|
25
30
|
loading: false,
|
|
26
31
|
error: null
|
|
27
32
|
},
|
|
28
|
-
setData: (key, data) => set(state => ({
|
|
29
|
-
|
|
30
|
-
[key]: {
|
|
31
|
-
...state[key],
|
|
33
|
+
setData: (key, data) => set(state => _objectSpread(_objectSpread({}, state), {}, {
|
|
34
|
+
[key]: _objectSpread(_objectSpread({}, state[key]), {}, {
|
|
32
35
|
data
|
|
33
|
-
}
|
|
36
|
+
})
|
|
34
37
|
})),
|
|
35
|
-
setLoading: (key, loading) => set(state => ({
|
|
36
|
-
|
|
37
|
-
[key]: {
|
|
38
|
-
...state[key],
|
|
38
|
+
setLoading: (key, loading) => set(state => _objectSpread(_objectSpread({}, state), {}, {
|
|
39
|
+
[key]: _objectSpread(_objectSpread({}, state[key]), {}, {
|
|
39
40
|
loading
|
|
40
|
-
}
|
|
41
|
+
})
|
|
41
42
|
})),
|
|
42
|
-
setError: (key, error) => set(state => ({
|
|
43
|
-
|
|
44
|
-
[key]: {
|
|
45
|
-
...state[key],
|
|
43
|
+
setError: (key, error) => set(state => _objectSpread(_objectSpread({}, state), {}, {
|
|
44
|
+
[key]: _objectSpread(_objectSpread({}, state[key]), {}, {
|
|
46
45
|
error
|
|
47
|
-
}
|
|
46
|
+
})
|
|
48
47
|
})),
|
|
49
48
|
activeObject: null,
|
|
50
49
|
setActiveObject: f => {
|
|
51
|
-
set(state => ({
|
|
52
|
-
...state,
|
|
50
|
+
set(state => _objectSpread(_objectSpread({}, state), {}, {
|
|
53
51
|
activeObject: f
|
|
54
52
|
}));
|
|
55
53
|
},
|
|
56
54
|
marker: null,
|
|
57
55
|
setMarker: m => {
|
|
58
|
-
set(state => ({
|
|
59
|
-
...state,
|
|
56
|
+
set(state => _objectSpread(_objectSpread({}, state), {}, {
|
|
60
57
|
marker: m
|
|
61
58
|
}));
|
|
62
59
|
},
|
|
63
60
|
popup: null,
|
|
64
61
|
setPopup: p => {
|
|
65
|
-
set(state => ({
|
|
66
|
-
...state,
|
|
62
|
+
set(state => _objectSpread(_objectSpread({}, state), {}, {
|
|
67
63
|
popup: p
|
|
68
64
|
}));
|
|
69
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMapDataStore.js","names":["_zustand","require","useMapDataStore","exports","create","set","booths","data","loading","error","allMetaFeatures","setData","key","state","setLoading","setError","activeObject","setActiveObject","f","marker","setMarker","m","popup","setPopup","p"],"sources":["../../../../src/react/stores/useMapDataStore.ts"],"sourcesContent":["import { create } from 'zustand';\nimport { metaFeature } from '../../meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core';\nimport { Marker, Popup } from 'maplibre-gl';\n\ntype Slices = 'booths' | 'allMetaFeatures'; // can add others like assets, events, etc.\n\n\nexport interface DataSlice<T> {\n data: T | null;\n loading: boolean;\n error: string | null;\n}\n\ninterface MapDataStore {\n booths: DataSlice<metaFeature[]>;\n allMetaFeatures: DataSlice<metaFeature[]>;\n // Add other slices as needed\n\n setData: <S extends Slices>(key: S, data: MapDataStore[S]['data']) => void;\n setLoading: (key: Slices, loading: boolean) => void;\n setError: (key: Slices, error: string | null) => void;\n\n /**\n * The currently active object on the map.\n * Note: activeObject can differ from SDK's lastClickedFeature as activeObject can be updated programmatically\n * (e.g., from search results, navigation, etc.) and may not always reflect the last map click.\n */\n activeObject: metaFeature | null;\n setActiveObject: (f: metaFeature | null) => void;\n\n marker: Marker | null;\n setMarker: (m: Marker | null) => void;\n\n popup: Popup | null;\n setPopup: (m: Popup | null) => void;\n}\n\n\n/**\n * MapData Store - Map Data State Management\n * \n * Zustand store as a global singleton for Map state.\n * Used to access all cached data that need to be used among the components.\n */\n\nexport const useMapDataStore = create<MapDataStore>((set) => ({\n booths: { data: null, loading: false, error: null },\n allMetaFeatures: { data: null, loading: false, error: null },\n\n setData: (key, data) => set((state) => ({ ...state, [key]: { ...state[key], data } })),\n setLoading: (key, loading) => set((state) => ({ ...state, [key]: { ...state[key], loading } })),\n setError: (key, error) => set((state) => ({ ...state, [key]: { ...state[key], error } })),\n\n activeObject: null,\n setActiveObject: (f) => {\n set((state) => ({...state, activeObject: f}))\n },\n\n marker: null,\n setMarker: (m) => {\n set((state) => ({...state, marker: m}))\n },\n\n popup: null,\n setPopup: (p) => {\n set((state) => ({...state, popup: p}))\n }\n}));\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;
|
|
1
|
+
{"version":3,"file":"useMapDataStore.js","names":["_zustand","require","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","useMapDataStore","exports","create","set","booths","data","loading","error","allMetaFeatures","setData","key","state","setLoading","setError","activeObject","setActiveObject","f","marker","setMarker","m","popup","setPopup","p"],"sources":["../../../../src/react/stores/useMapDataStore.ts"],"sourcesContent":["import { create } from 'zustand';\nimport { metaFeature } from '../../meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core';\nimport { Marker, Popup } from 'maplibre-gl';\n\ntype Slices = 'booths' | 'allMetaFeatures'; // can add others like assets, events, etc.\n\n\nexport interface DataSlice<T> {\n data: T | null;\n loading: boolean;\n error: string | null;\n}\n\ninterface MapDataStore {\n booths: DataSlice<metaFeature[]>;\n allMetaFeatures: DataSlice<metaFeature[]>;\n // Add other slices as needed\n\n setData: <S extends Slices>(key: S, data: MapDataStore[S]['data']) => void;\n setLoading: (key: Slices, loading: boolean) => void;\n setError: (key: Slices, error: string | null) => void;\n\n /**\n * The currently active object on the map.\n * Note: activeObject can differ from SDK's lastClickedFeature as activeObject can be updated programmatically\n * (e.g., from search results, navigation, etc.) and may not always reflect the last map click.\n */\n activeObject: metaFeature | null;\n setActiveObject: (f: metaFeature | null) => void;\n\n marker: Marker | null;\n setMarker: (m: Marker | null) => void;\n\n popup: Popup | null;\n setPopup: (m: Popup | null) => void;\n}\n\n\n/**\n * MapData Store - Map Data State Management\n * \n * Zustand store as a global singleton for Map state.\n * Used to access all cached data that need to be used among the components.\n */\n\nexport const useMapDataStore = create<MapDataStore>((set) => ({\n booths: { data: null, loading: false, error: null },\n allMetaFeatures: { data: null, loading: false, error: null },\n\n setData: (key, data) => set((state) => ({ ...state, [key]: { ...state[key], data } })),\n setLoading: (key, loading) => set((state) => ({ ...state, [key]: { ...state[key], loading } })),\n setError: (key, error) => set((state) => ({ ...state, [key]: { ...state[key], error } })),\n\n activeObject: null,\n setActiveObject: (f) => {\n set((state) => ({...state, activeObject: f}))\n },\n\n marker: null,\n setMarker: (m) => {\n set((state) => ({...state, marker: m}))\n },\n\n popup: null,\n setPopup: (p) => {\n set((state) => ({...state, popup: p}))\n }\n}));\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,8 +6,8 @@ class CustomThreeJSWrapper {
|
|
|
6
6
|
constructor(map) {
|
|
7
7
|
this.scene = new Scene();
|
|
8
8
|
this.map = map;
|
|
9
|
-
const c = map
|
|
10
|
-
const gl = c
|
|
9
|
+
const c = map === null || map === void 0 ? void 0 : map.getCanvas();
|
|
10
|
+
const gl = (c === null || c === void 0 ? void 0 : c.getContext('webgl')) || (c === null || c === void 0 ? void 0 : c.getContext('webgl2'));
|
|
11
11
|
if (!gl && !this.isWebglSupported()) {
|
|
12
12
|
console.error(map.getCanvas(), 'WebGL 2 is not supported in this environment');
|
|
13
13
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomThreeJsWrapper.js","names":["ACESFilmicToneMapping","AmbientLight","DirectionalLight","HemisphereLight","Mesh","Object3D","PerspectiveCamera","Scene","WebGLRenderer","Vector2","Vector3","Shape","Path","ExtrudeGeometry","Box3","SRGBColorSpace","constants","CameraSync","projectToWorld","toDecimal","CustomThreeJSWrapper","constructor","map","scene","c","getCanvas","gl","getContext","isWebglSupported","console","error","renderer","alpha","antialias","preserveDrawingBuffer","canvas","context","setPixelRatio","window","devicePixelRatio","setSize","clientWidth","clientHeight","autoClear","toneMapping","outputColorSpace","fov","FOV_DEGREES","h","w","camera","cameraSync","resize","aspect","updateProjectionMatrix","WebGLRenderingContext","document","createElement","getParameter","e","repaint","clear","layerId","arguments","length","undefined","Promise","resolve","reject","objects","children","forEach","object","push","i","obj","layers","remove","clearMeshes","type","log","filter3DObjects","whatTaxonomies","Array","isArray","visible","includes","userData","whatDimension","add","setEnvironment","dirLight","position","set","castShadow","hemiLight","ambientLight","buildPoints","coords","initCoords","points","init","pos","x","y","buildGeometry","shape","settings","geometry","computeBoundingBox","buildShape","holes","extrusion","opt","coordinates","geometryOptions","mesh","materials","centerMesh","bbox","copy","boundingBox","applyMatrix4","matrixWorld","center","getCenter","dummy","localToWorld","diff","clone","sub","translate","dispose","target","material","_isDisposed","removeFromParent","disposeObject","traverse","child","disposeMaterial","disposeGeometry","disposeTexture","requestAnimationFrame","parent","texture","update","updateMatrixWorld","resetState","render"],"sources":["../../../../../src/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.ts"],"sourcesContent":["import { Map } from 'maplibre-gl';\nimport {\n ACESFilmicToneMapping,\n AmbientLight,\n DataTexture,\n DirectionalLight,\n HemisphereLight,\n Mesh,\n Object3D,\n PerspectiveCamera,\n Scene,\n WebGLRenderer,\n Vector2,\n Vector3,\n Shape,\n Path,\n ExtrudeGeometry,\n Box3,\n BoxGeometry,\n MeshBasicMaterial,\n SRGBColorSpace\n} from 'three';\nimport constants from './utility/constants.js';\nimport CameraSync from './utility/CameraSync.js';\nimport { projectToWorld, toDecimal } from './utility/utils.js';\n\nclass CustomThreeJSWrapper {\n map;\n scene;\n camera;\n renderer;\n cameraSync;\n fov;\n\n constructor(map) {\n this.scene = new Scene();\n this.map = map;\n\n const c = map?.getCanvas() as HTMLCanvasElement;\n const gl = c?.getContext('webgl') || c?.getContext('webgl2');\n\n if (!gl && !this.isWebglSupported()) {\n console.error(map.getCanvas(), 'WebGL 2 is not supported in this environment');\n return;\n }\n\n // Initialize the WebGLRenderer without explicitly passing the WebGL 1 context\n this.renderer = new WebGLRenderer({\n alpha: true,\n antialias: true,\n preserveDrawingBuffer: false,\n canvas: map.getCanvas(),\n context: gl\n });\n\n this.renderer.setPixelRatio(window.devicePixelRatio);\n this.renderer.setSize(this.map.getCanvas().clientWidth, this.map.getCanvas().clientHeight);\n this.renderer.autoClear = false;\n this.renderer.toneMapping = ACESFilmicToneMapping;\n this.renderer.outputColorSpace = SRGBColorSpace;\n this.fov = constants.FOV_DEGREES;\n\n const h = this.map.getCanvas().clientHeight;\n const w = this.map.getCanvas().clientWidth;\n\n this.camera = new PerspectiveCamera(this.fov, w / h, 0.1, 1000);\n\n this.cameraSync = new CameraSync(map, this.camera, this.scene);\n }\n\n resize() {\n const w = this.map.getCanvas().clientWidth;\n const h = this.map.getCanvas().clientHeight;\n this.camera.aspect = w / h;\n this.camera.updateProjectionMatrix();\n this.renderer.setSize(w, h);\n }\n\n isWebglSupported() {\n if (window.WebGLRenderingContext) {\n const canvas = document.createElement('canvas');\n try {\n // Note that { failIfMajorPerformanceCaveat: true } can be passed as a second argument\n // to canvas.getContext(), causing the check to fail if hardware rendering is not available. See\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext\n // for more details.\n const context = canvas.getContext('webgl2') || canvas.getContext('webgl');\n if (context && typeof context.getParameter == 'function') {\n return true;\n }\n } catch (e) {\n // WebGL is supported, but disabled\n }\n return false;\n }\n // WebGL not supported\n return false;\n }\n\n repaint() {\n this.map.repaint = true;\n }\n\n async clear(layerId = null) {\n return new Promise((resolve, reject) => {\n const objects = [];\n this.scene.children.forEach(function (object) {\n objects.push(object);\n });\n for (let i = 0; i < objects.length; i++) {\n const obj = objects[i];\n //if layerId, check the layer to remove, otherwise always remove\n if (obj.layers === layerId || !layerId) {\n this.remove(obj);\n }\n }\n\n resolve('clear');\n });\n }\n\n async clearMeshes() {\n return new Promise((resolve, reject) => {\n const objects = [];\n this.scene.children.forEach(function (object) {\n if (object.type === 'Mesh') objects.push(object);\n });\n console.log('Mesh Objects:', objects);\n for (let i = 0; i < objects.length; i++) {\n this.remove(objects[i]);\n }\n\n resolve('clear');\n });\n }\n\n filter3DObjects(whatTaxonomies: string[]) {\n if (!Array.isArray(whatTaxonomies)) return;\n if (whatTaxonomies.length === 0) {\n this.scene.children.forEach(function (object) {\n object.visible = true;\n });\n } else {\n this.scene.children.forEach(function (object) {\n if (object.type === 'Mesh') {\n if (whatTaxonomies.includes(object.userData.whatDimension)) {\n object.visible = false;\n } else {\n object.visible = true;\n }\n }\n });\n }\n }\n\n add(object) {\n this.scene.add(object);\n }\n\n setEnvironment() {\n const dirLight = new DirectionalLight(0xffffff, 2);\n dirLight.position.set(10, 10, 10);\n dirLight.castShadow = true;\n const hemiLight = new HemisphereLight('white', 'white', 1.5);\n const ambientLight = new AmbientLight('white', 1);\n this.scene.add(dirLight);\n this.scene.add(hemiLight);\n this.scene.add(ambientLight);\n }\n\n buildPoints(coords, initCoords) {\n const points = [];\n const init = projectToWorld([initCoords[0][0], initCoords[0][1], 0]);\n for (let i = 0; i < coords.length; i++) {\n const pos = projectToWorld([coords[i][0], coords[i][1], 0]);\n points.push(new Vector2(toDecimal(pos.x - init.x, 9), toDecimal(pos.y - init.y, 9)));\n }\n return points;\n }\n\n buildGeometry(shape, settings) {\n const geometry = new ExtrudeGeometry(shape, settings);\n geometry.computeBoundingBox();\n return geometry;\n }\n\n buildShape(coords: any) {\n if (coords[0] instanceof (Vector2 || Vector3)) return new Shape(coords);\n let shape = new Shape();\n for (let i = 0; i < coords.length; i++) {\n if (i === 0) {\n shape = new Shape(this.buildPoints(coords[0], coords[0]));\n } else {\n shape.holes.push(new Path(this.buildPoints(coords[i], coords[0])));\n }\n }\n return shape;\n }\n\n extrusion(opt: any) {\n const shape = this.buildShape(opt.coordinates);\n const geometry = this.buildGeometry(shape, opt.geometryOptions);\n const mesh = new Mesh(geometry, opt.materials);\n\n if (!opt.visible) mesh.visible = false;\n\n return mesh;\n }\n\n centerMesh(mesh) {\n // Compute the bounding box\n const bbox = new Box3();\n mesh.geometry.computeBoundingBox();\n bbox.copy(mesh.geometry.boundingBox).applyMatrix4(mesh.matrixWorld);\n\n // Get the center of the bounding box\n let center = new Vector3();\n bbox.getCenter(center);\n\n // Create a dummy object\n const dummy = new Object3D();\n\n // Attach mesh to dummy\n dummy.add(mesh);\n\n center = mesh.localToWorld(center);\n // const geometry = new BoxGeometry( 0.25, 0.25, 0.25 );\n // const material = new MeshBasicMaterial( {color: 0xff0000} );\n // const cube = new Mesh( geometry, material );\n // cube.position.set(center.x, center.y, center.z);\n // this.add( cube );\n // // Move the mesh within the dummy\n const diff = mesh.position.clone().sub(center);\n mesh.geometry.translate(diff.x, diff.y, 0);\n\n return dummy; // Return the new parent object\n }\n\n dispose(target) {\n if (target instanceof Mesh) {\n // If the target is a Mesh\n // Dispose materials and geometry of the mesh\n if (target.material) {\n if (typeof target.material.dispose === 'function' && !target.material._isDisposed) {\n target.material.dispose();\n target.material._isDisposed = true;\n }\n target.material = null;\n }\n if (target.geometry) {\n if (typeof target.geometry.dispose === 'function' && !target.geometry._isDisposed) {\n target.geometry.dispose();\n target.geometry._isDisposed = true;\n }\n target.geometry = null;\n }\n } else if (target instanceof Object3D) {\n // If the target is an Object3D\n target.removeFromParent();\n this.disposeObject(target);\n }\n }\n\n disposeObject(object) {\n object.traverse(child => {\n if (child instanceof Mesh && child.material) {\n if (Array.isArray(child.material)) {\n child.material.forEach(material => {\n this.disposeMaterial(material);\n });\n } else {\n this.disposeMaterial(child.material);\n }\n }\n if (child instanceof Mesh && child.geometry) {\n this.disposeGeometry(child.geometry);\n }\n if (child instanceof Mesh && child.material && child.material.map) {\n this.disposeTexture(child.material.map);\n }\n requestAnimationFrame(() => (child.children.length = 0));\n });\n\n if (object.parent) {\n object.parent.remove(object);\n }\n }\n\n disposeMaterial(material) {\n if (material.dispose) {\n material.dispose();\n }\n }\n\n // to dispose of a texture\n disposeTexture(texture) {\n if (texture.dispose) {\n texture.dispose();\n }\n }\n\n // to dispose of a geometry\n disposeGeometry(geometry) {\n if (geometry.dispose) {\n geometry.dispose();\n }\n }\n\n remove(object) {\n this.scene.remove(object);\n object = null;\n }\n\n update() {\n if (this.map.repaint) this.map.repaint = false;\n this.scene.updateMatrixWorld(true);\n\n // Render the scene and repaint the map\n this.renderer.resetState(); //update threejs r126\n this.renderer.render(this.scene, this.camera);\n }\n}\n\nexport default CustomThreeJSWrapper;\n"],"mappings":"AACA,SACEA,qBAAqB,EACrBC,YAAY,EAEZC,gBAAgB,EAChBC,eAAe,EACfC,IAAI,EACJC,QAAQ,EACRC,iBAAiB,EACjBC,KAAK,EACLC,aAAa,EACbC,OAAO,EACPC,OAAO,EACPC,KAAK,EACLC,IAAI,EACJC,eAAe,EACfC,IAAI,EAGJC,cAAc,QACT,OAAO;AACd,OAAOC,SAAS,MAAM,wBAAwB;AAC9C,OAAOC,UAAU,MAAM,yBAAyB;AAChD,SAASC,cAAc,EAAEC,SAAS,QAAQ,oBAAoB;AAE9D,MAAMC,oBAAoB,CAAC;EAQzBC,WAAWA,CAACC,GAAG,EAAE;IACf,IAAI,CAACC,KAAK,GAAG,IAAIhB,KAAK,CAAC,CAAC;IACxB,IAAI,CAACe,GAAG,GAAGA,GAAG;IAEd,MAAME,CAAC,GAAGF,GAAG,EAAEG,SAAS,CAAC,CAAsB;IAC/C,MAAMC,EAAE,GAAGF,CAAC,EAAEG,UAAU,CAAC,OAAO,CAAC,IAAIH,CAAC,EAAEG,UAAU,CAAC,QAAQ,CAAC;IAE5D,IAAI,CAACD,EAAE,IAAI,CAAC,IAAI,CAACE,gBAAgB,CAAC,CAAC,EAAE;MACnCC,OAAO,CAACC,KAAK,CAACR,GAAG,CAACG,SAAS,CAAC,CAAC,EAAE,8CAA8C,CAAC;MAC9E;IACF;;IAEA;IACA,IAAI,CAACM,QAAQ,GAAG,IAAIvB,aAAa,CAAC;MAChCwB,KAAK,EAAE,IAAI;MACXC,SAAS,EAAE,IAAI;MACfC,qBAAqB,EAAE,KAAK;MAC5BC,MAAM,EAAEb,GAAG,CAACG,SAAS,CAAC,CAAC;MACvBW,OAAO,EAAEV;IACX,CAAC,CAAC;IAEF,IAAI,CAACK,QAAQ,CAACM,aAAa,CAACC,MAAM,CAACC,gBAAgB,CAAC;IACpD,IAAI,CAACR,QAAQ,CAACS,OAAO,CAAC,IAAI,CAAClB,GAAG,CAACG,SAAS,CAAC,CAAC,CAACgB,WAAW,EAAE,IAAI,CAACnB,GAAG,CAACG,SAAS,CAAC,CAAC,CAACiB,YAAY,CAAC;IAC1F,IAAI,CAACX,QAAQ,CAACY,SAAS,GAAG,KAAK;IAC/B,IAAI,CAACZ,QAAQ,CAACa,WAAW,GAAG5C,qBAAqB;IACjD,IAAI,CAAC+B,QAAQ,CAACc,gBAAgB,GAAG9B,cAAc;IAC/C,IAAI,CAAC+B,GAAG,GAAG9B,SAAS,CAAC+B,WAAW;IAEhC,MAAMC,CAAC,GAAG,IAAI,CAAC1B,GAAG,CAACG,SAAS,CAAC,CAAC,CAACiB,YAAY;IAC3C,MAAMO,CAAC,GAAG,IAAI,CAAC3B,GAAG,CAACG,SAAS,CAAC,CAAC,CAACgB,WAAW;IAE1C,IAAI,CAACS,MAAM,GAAG,IAAI5C,iBAAiB,CAAC,IAAI,CAACwC,GAAG,EAAEG,CAAC,GAAGD,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC;IAE/D,IAAI,CAACG,UAAU,GAAG,IAAIlC,UAAU,CAACK,GAAG,EAAE,IAAI,CAAC4B,MAAM,EAAE,IAAI,CAAC3B,KAAK,CAAC;EAChE;EAEA6B,MAAMA,CAAA,EAAG;IACP,MAAMH,CAAC,GAAG,IAAI,CAAC3B,GAAG,CAACG,SAAS,CAAC,CAAC,CAACgB,WAAW;IAC1C,MAAMO,CAAC,GAAG,IAAI,CAAC1B,GAAG,CAACG,SAAS,CAAC,CAAC,CAACiB,YAAY;IAC3C,IAAI,CAACQ,MAAM,CAACG,MAAM,GAAGJ,CAAC,GAAGD,CAAC;IAC1B,IAAI,CAACE,MAAM,CAACI,sBAAsB,CAAC,CAAC;IACpC,IAAI,CAACvB,QAAQ,CAACS,OAAO,CAACS,CAAC,EAAED,CAAC,CAAC;EAC7B;EAEApB,gBAAgBA,CAAA,EAAG;IACjB,IAAIU,MAAM,CAACiB,qBAAqB,EAAE;MAChC,MAAMpB,MAAM,GAAGqB,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC;MAC/C,IAAI;QACF;QACA;QACA;QACA;QACA,MAAMrB,OAAO,GAAGD,MAAM,CAACR,UAAU,CAAC,QAAQ,CAAC,IAAIQ,MAAM,CAACR,UAAU,CAAC,OAAO,CAAC;QACzE,IAAIS,OAAO,IAAI,OAAOA,OAAO,CAACsB,YAAY,IAAI,UAAU,EAAE;UACxD,OAAO,IAAI;QACb;MACF,CAAC,CAAC,OAAOC,CAAC,EAAE;QACV;MAAA;MAEF,OAAO,KAAK;IACd;IACA;IACA,OAAO,KAAK;EACd;EAEAC,OAAOA,CAAA,EAAG;IACR,IAAI,CAACtC,GAAG,CAACsC,OAAO,GAAG,IAAI;EACzB;EAEA,MAAMC,KAAKA,CAAA,EAAiB;IAAA,IAAhBC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;IACxB,OAAO,IAAIG,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtC,MAAMC,OAAO,GAAG,EAAE;MAClB,IAAI,CAAC9C,KAAK,CAAC+C,QAAQ,CAACC,OAAO,CAAC,UAAUC,MAAM,EAAE;QAC5CH,OAAO,CAACI,IAAI,CAACD,MAAM,CAAC;MACtB,CAAC,CAAC;MACF,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,OAAO,CAACL,MAAM,EAAEU,CAAC,EAAE,EAAE;QACvC,MAAMC,GAAG,GAAGN,OAAO,CAACK,CAAC,CAAC;QACtB;QACA,IAAIC,GAAG,CAACC,MAAM,KAAKd,OAAO,IAAI,CAACA,OAAO,EAAE;UACtC,IAAI,CAACe,MAAM,CAACF,GAAG,CAAC;QAClB;MACF;MAEAR,OAAO,CAAC,OAAO,CAAC;IAClB,CAAC,CAAC;EACJ;EAEA,MAAMW,WAAWA,CAAA,EAAG;IAClB,OAAO,IAAIZ,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtC,MAAMC,OAAO,GAAG,EAAE;MAClB,IAAI,CAAC9C,KAAK,CAAC+C,QAAQ,CAACC,OAAO,CAAC,UAAUC,MAAM,EAAE;QAC5C,IAAIA,MAAM,CAACO,IAAI,KAAK,MAAM,EAAEV,OAAO,CAACI,IAAI,CAACD,MAAM,CAAC;MAClD,CAAC,CAAC;MACF3C,OAAO,CAACmD,GAAG,CAAC,eAAe,EAAEX,OAAO,CAAC;MACrC,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,OAAO,CAACL,MAAM,EAAEU,CAAC,EAAE,EAAE;QACvC,IAAI,CAACG,MAAM,CAACR,OAAO,CAACK,CAAC,CAAC,CAAC;MACzB;MAEAP,OAAO,CAAC,OAAO,CAAC;IAClB,CAAC,CAAC;EACJ;EAEAc,eAAeA,CAACC,cAAwB,EAAE;IACxC,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,cAAc,CAAC,EAAE;IACpC,IAAIA,cAAc,CAAClB,MAAM,KAAK,CAAC,EAAE;MAC/B,IAAI,CAACzC,KAAK,CAAC+C,QAAQ,CAACC,OAAO,CAAC,UAAUC,MAAM,EAAE;QAC5CA,MAAM,CAACa,OAAO,GAAG,IAAI;MACvB,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,IAAI,CAAC9D,KAAK,CAAC+C,QAAQ,CAACC,OAAO,CAAC,UAAUC,MAAM,EAAE;QAC5C,IAAIA,MAAM,CAACO,IAAI,KAAK,MAAM,EAAE;UAC1B,IAAIG,cAAc,CAACI,QAAQ,CAACd,MAAM,CAACe,QAAQ,CAACC,aAAa,CAAC,EAAE;YAC1DhB,MAAM,CAACa,OAAO,GAAG,KAAK;UACxB,CAAC,MAAM;YACLb,MAAM,CAACa,OAAO,GAAG,IAAI;UACvB;QACF;MACF,CAAC,CAAC;IACJ;EACF;EAEAI,GAAGA,CAACjB,MAAM,EAAE;IACV,IAAI,CAACjD,KAAK,CAACkE,GAAG,CAACjB,MAAM,CAAC;EACxB;EAEAkB,cAAcA,CAAA,EAAG;IACf,MAAMC,QAAQ,GAAG,IAAIzF,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClDyF,QAAQ,CAACC,QAAQ,CAACC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACjCF,QAAQ,CAACG,UAAU,GAAG,IAAI;IAC1B,MAAMC,SAAS,GAAG,IAAI5F,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC;IAC5D,MAAM6F,YAAY,GAAG,IAAI/F,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;IACjD,IAAI,CAACsB,KAAK,CAACkE,GAAG,CAACE,QAAQ,CAAC;IACxB,IAAI,CAACpE,KAAK,CAACkE,GAAG,CAACM,SAAS,CAAC;IACzB,IAAI,CAACxE,KAAK,CAACkE,GAAG,CAACO,YAAY,CAAC;EAC9B;EAEAC,WAAWA,CAACC,MAAM,EAAEC,UAAU,EAAE;IAC9B,MAAMC,MAAM,GAAG,EAAE;IACjB,MAAMC,IAAI,GAAGnF,cAAc,CAAC,CAACiF,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpE,KAAK,IAAIzB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwB,MAAM,CAAClC,MAAM,EAAEU,CAAC,EAAE,EAAE;MACtC,MAAM4B,GAAG,GAAGpF,cAAc,CAAC,CAACgF,MAAM,CAACxB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEwB,MAAM,CAACxB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;MAC3D0B,MAAM,CAAC3B,IAAI,CAAC,IAAIhE,OAAO,CAACU,SAAS,CAACmF,GAAG,CAACC,CAAC,GAAGF,IAAI,CAACE,CAAC,EAAE,CAAC,CAAC,EAAEpF,SAAS,CAACmF,GAAG,CAACE,CAAC,GAAGH,IAAI,CAACG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF;IACA,OAAOJ,MAAM;EACf;EAEAK,aAAaA,CAACC,KAAK,EAAEC,QAAQ,EAAE;IAC7B,MAAMC,QAAQ,GAAG,IAAI/F,eAAe,CAAC6F,KAAK,EAAEC,QAAQ,CAAC;IACrDC,QAAQ,CAACC,kBAAkB,CAAC,CAAC;IAC7B,OAAOD,QAAQ;EACjB;EAEAE,UAAUA,CAACZ,MAAW,EAAE;IACtB,IAAIA,MAAM,CAAC,CAAC,CAAC,aAAazF,OAAO,IAAIC,OAAO,CAAC,EAAE,OAAO,IAAIC,KAAK,CAACuF,MAAM,CAAC;IACvE,IAAIQ,KAAK,GAAG,IAAI/F,KAAK,CAAC,CAAC;IACvB,KAAK,IAAI+D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwB,MAAM,CAAClC,MAAM,EAAEU,CAAC,EAAE,EAAE;MACtC,IAAIA,CAAC,KAAK,CAAC,EAAE;QACXgC,KAAK,GAAG,IAAI/F,KAAK,CAAC,IAAI,CAACsF,WAAW,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3D,CAAC,MAAM;QACLQ,KAAK,CAACK,KAAK,CAACtC,IAAI,CAAC,IAAI7D,IAAI,CAAC,IAAI,CAACqF,WAAW,CAACC,MAAM,CAACxB,CAAC,CAAC,EAAEwB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACpE;IACF;IACA,OAAOQ,KAAK;EACd;EAEAM,SAASA,CAACC,GAAQ,EAAE;IAClB,MAAMP,KAAK,GAAG,IAAI,CAACI,UAAU,CAACG,GAAG,CAACC,WAAW,CAAC;IAC9C,MAAMN,QAAQ,GAAG,IAAI,CAACH,aAAa,CAACC,KAAK,EAAEO,GAAG,CAACE,eAAe,CAAC;IAC/D,MAAMC,IAAI,GAAG,IAAIhH,IAAI,CAACwG,QAAQ,EAAEK,GAAG,CAACI,SAAS,CAAC;IAE9C,IAAI,CAACJ,GAAG,CAAC5B,OAAO,EAAE+B,IAAI,CAAC/B,OAAO,GAAG,KAAK;IAEtC,OAAO+B,IAAI;EACb;EAEAE,UAAUA,CAACF,IAAI,EAAE;IACf;IACA,MAAMG,IAAI,GAAG,IAAIzG,IAAI,CAAC,CAAC;IACvBsG,IAAI,CAACR,QAAQ,CAACC,kBAAkB,CAAC,CAAC;IAClCU,IAAI,CAACC,IAAI,CAACJ,IAAI,CAACR,QAAQ,CAACa,WAAW,CAAC,CAACC,YAAY,CAACN,IAAI,CAACO,WAAW,CAAC;;IAEnE;IACA,IAAIC,MAAM,GAAG,IAAIlH,OAAO,CAAC,CAAC;IAC1B6G,IAAI,CAACM,SAAS,CAACD,MAAM,CAAC;;IAEtB;IACA,MAAME,KAAK,GAAG,IAAIzH,QAAQ,CAAC,CAAC;;IAE5B;IACAyH,KAAK,CAACrC,GAAG,CAAC2B,IAAI,CAAC;IAEfQ,MAAM,GAAGR,IAAI,CAACW,YAAY,CAACH,MAAM,CAAC;IAClC;IACA;IACA;IACA;IACA;IACA;IACA,MAAMI,IAAI,GAAGZ,IAAI,CAACxB,QAAQ,CAACqC,KAAK,CAAC,CAAC,CAACC,GAAG,CAACN,MAAM,CAAC;IAC9CR,IAAI,CAACR,QAAQ,CAACuB,SAAS,CAACH,IAAI,CAACzB,CAAC,EAAEyB,IAAI,CAACxB,CAAC,EAAE,CAAC,CAAC;IAE1C,OAAOsB,KAAK,CAAC,CAAC;EAChB;EAEAM,OAAOA,CAACC,MAAM,EAAE;IACd,IAAIA,MAAM,YAAYjI,IAAI,EAAE;MAC1B;MACA;MACA,IAAIiI,MAAM,CAACC,QAAQ,EAAE;QACnB,IAAI,OAAOD,MAAM,CAACC,QAAQ,CAACF,OAAO,KAAK,UAAU,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACC,WAAW,EAAE;UACjFF,MAAM,CAACC,QAAQ,CAACF,OAAO,CAAC,CAAC;UACzBC,MAAM,CAACC,QAAQ,CAACC,WAAW,GAAG,IAAI;QACpC;QACAF,MAAM,CAACC,QAAQ,GAAG,IAAI;MACxB;MACA,IAAID,MAAM,CAACzB,QAAQ,EAAE;QACnB,IAAI,OAAOyB,MAAM,CAACzB,QAAQ,CAACwB,OAAO,KAAK,UAAU,IAAI,CAACC,MAAM,CAACzB,QAAQ,CAAC2B,WAAW,EAAE;UACjFF,MAAM,CAACzB,QAAQ,CAACwB,OAAO,CAAC,CAAC;UACzBC,MAAM,CAACzB,QAAQ,CAAC2B,WAAW,GAAG,IAAI;QACpC;QACAF,MAAM,CAACzB,QAAQ,GAAG,IAAI;MACxB;IACF,CAAC,MAAM,IAAIyB,MAAM,YAAYhI,QAAQ,EAAE;MACrC;MACAgI,MAAM,CAACG,gBAAgB,CAAC,CAAC;MACzB,IAAI,CAACC,aAAa,CAACJ,MAAM,CAAC;IAC5B;EACF;EAEAI,aAAaA,CAACjE,MAAM,EAAE;IACpBA,MAAM,CAACkE,QAAQ,CAACC,KAAK,IAAI;MACvB,IAAIA,KAAK,YAAYvI,IAAI,IAAIuI,KAAK,CAACL,QAAQ,EAAE;QAC3C,IAAInD,KAAK,CAACC,OAAO,CAACuD,KAAK,CAACL,QAAQ,CAAC,EAAE;UACjCK,KAAK,CAACL,QAAQ,CAAC/D,OAAO,CAAC+D,QAAQ,IAAI;YACjC,IAAI,CAACM,eAAe,CAACN,QAAQ,CAAC;UAChC,CAAC,CAAC;QACJ,CAAC,MAAM;UACL,IAAI,CAACM,eAAe,CAACD,KAAK,CAACL,QAAQ,CAAC;QACtC;MACF;MACA,IAAIK,KAAK,YAAYvI,IAAI,IAAIuI,KAAK,CAAC/B,QAAQ,EAAE;QAC3C,IAAI,CAACiC,eAAe,CAACF,KAAK,CAAC/B,QAAQ,CAAC;MACtC;MACA,IAAI+B,KAAK,YAAYvI,IAAI,IAAIuI,KAAK,CAACL,QAAQ,IAAIK,KAAK,CAACL,QAAQ,CAAChH,GAAG,EAAE;QACjE,IAAI,CAACwH,cAAc,CAACH,KAAK,CAACL,QAAQ,CAAChH,GAAG,CAAC;MACzC;MACAyH,qBAAqB,CAAC,MAAOJ,KAAK,CAACrE,QAAQ,CAACN,MAAM,GAAG,CAAE,CAAC;IAC1D,CAAC,CAAC;IAEF,IAAIQ,MAAM,CAACwE,MAAM,EAAE;MACjBxE,MAAM,CAACwE,MAAM,CAACnE,MAAM,CAACL,MAAM,CAAC;IAC9B;EACF;EAEAoE,eAAeA,CAACN,QAAQ,EAAE;IACxB,IAAIA,QAAQ,CAACF,OAAO,EAAE;MACpBE,QAAQ,CAACF,OAAO,CAAC,CAAC;IACpB;EACF;;EAEA;EACAU,cAAcA,CAACG,OAAO,EAAE;IACtB,IAAIA,OAAO,CAACb,OAAO,EAAE;MACnBa,OAAO,CAACb,OAAO,CAAC,CAAC;IACnB;EACF;;EAEA;EACAS,eAAeA,CAACjC,QAAQ,EAAE;IACxB,IAAIA,QAAQ,CAACwB,OAAO,EAAE;MACpBxB,QAAQ,CAACwB,OAAO,CAAC,CAAC;IACpB;EACF;EAEAvD,MAAMA,CAACL,MAAM,EAAE;IACb,IAAI,CAACjD,KAAK,CAACsD,MAAM,CAACL,MAAM,CAAC;IACzBA,MAAM,GAAG,IAAI;EACf;EAEA0E,MAAMA,CAAA,EAAG;IACP,IAAI,IAAI,CAAC5H,GAAG,CAACsC,OAAO,EAAE,IAAI,CAACtC,GAAG,CAACsC,OAAO,GAAG,KAAK;IAC9C,IAAI,CAACrC,KAAK,CAAC4H,iBAAiB,CAAC,IAAI,CAAC;;IAElC;IACA,IAAI,CAACpH,QAAQ,CAACqH,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAACrH,QAAQ,CAACsH,MAAM,CAAC,IAAI,CAAC9H,KAAK,EAAE,IAAI,CAAC2B,MAAM,CAAC;EAC/C;AACF;AAEA,eAAe9B,oBAAoB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CustomThreeJsWrapper.js","names":["ACESFilmicToneMapping","AmbientLight","DirectionalLight","HemisphereLight","Mesh","Object3D","PerspectiveCamera","Scene","WebGLRenderer","Vector2","Vector3","Shape","Path","ExtrudeGeometry","Box3","SRGBColorSpace","constants","CameraSync","projectToWorld","toDecimal","CustomThreeJSWrapper","constructor","map","scene","c","getCanvas","gl","getContext","isWebglSupported","console","error","renderer","alpha","antialias","preserveDrawingBuffer","canvas","context","setPixelRatio","window","devicePixelRatio","setSize","clientWidth","clientHeight","autoClear","toneMapping","outputColorSpace","fov","FOV_DEGREES","h","w","camera","cameraSync","resize","aspect","updateProjectionMatrix","WebGLRenderingContext","document","createElement","getParameter","e","repaint","clear","layerId","arguments","length","undefined","Promise","resolve","reject","objects","children","forEach","object","push","i","obj","layers","remove","clearMeshes","type","log","filter3DObjects","whatTaxonomies","Array","isArray","visible","includes","userData","whatDimension","add","setEnvironment","dirLight","position","set","castShadow","hemiLight","ambientLight","buildPoints","coords","initCoords","points","init","pos","x","y","buildGeometry","shape","settings","geometry","computeBoundingBox","buildShape","holes","extrusion","opt","coordinates","geometryOptions","mesh","materials","centerMesh","bbox","copy","boundingBox","applyMatrix4","matrixWorld","center","getCenter","dummy","localToWorld","diff","clone","sub","translate","dispose","target","material","_isDisposed","removeFromParent","disposeObject","traverse","child","disposeMaterial","disposeGeometry","disposeTexture","requestAnimationFrame","parent","texture","update","updateMatrixWorld","resetState","render"],"sources":["../../../../../src/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.ts"],"sourcesContent":["import { Map } from 'maplibre-gl';\nimport {\n ACESFilmicToneMapping,\n AmbientLight,\n DataTexture,\n DirectionalLight,\n HemisphereLight,\n Mesh,\n Object3D,\n PerspectiveCamera,\n Scene,\n WebGLRenderer,\n Vector2,\n Vector3,\n Shape,\n Path,\n ExtrudeGeometry,\n Box3,\n BoxGeometry,\n MeshBasicMaterial,\n SRGBColorSpace\n} from 'three';\nimport constants from './utility/constants.js';\nimport CameraSync from './utility/CameraSync.js';\nimport { projectToWorld, toDecimal } from './utility/utils.js';\n\nclass CustomThreeJSWrapper {\n map;\n scene;\n camera;\n renderer;\n cameraSync;\n fov;\n\n constructor(map) {\n this.scene = new Scene();\n this.map = map;\n\n const c = map?.getCanvas() as HTMLCanvasElement;\n const gl = c?.getContext('webgl') || c?.getContext('webgl2');\n\n if (!gl && !this.isWebglSupported()) {\n console.error(map.getCanvas(), 'WebGL 2 is not supported in this environment');\n return;\n }\n\n // Initialize the WebGLRenderer without explicitly passing the WebGL 1 context\n this.renderer = new WebGLRenderer({\n alpha: true,\n antialias: true,\n preserveDrawingBuffer: false,\n canvas: map.getCanvas(),\n context: gl\n });\n\n this.renderer.setPixelRatio(window.devicePixelRatio);\n this.renderer.setSize(this.map.getCanvas().clientWidth, this.map.getCanvas().clientHeight);\n this.renderer.autoClear = false;\n this.renderer.toneMapping = ACESFilmicToneMapping;\n this.renderer.outputColorSpace = SRGBColorSpace;\n this.fov = constants.FOV_DEGREES;\n\n const h = this.map.getCanvas().clientHeight;\n const w = this.map.getCanvas().clientWidth;\n\n this.camera = new PerspectiveCamera(this.fov, w / h, 0.1, 1000);\n\n this.cameraSync = new CameraSync(map, this.camera, this.scene);\n }\n\n resize() {\n const w = this.map.getCanvas().clientWidth;\n const h = this.map.getCanvas().clientHeight;\n this.camera.aspect = w / h;\n this.camera.updateProjectionMatrix();\n this.renderer.setSize(w, h);\n }\n\n isWebglSupported() {\n if (window.WebGLRenderingContext) {\n const canvas = document.createElement('canvas');\n try {\n // Note that { failIfMajorPerformanceCaveat: true } can be passed as a second argument\n // to canvas.getContext(), causing the check to fail if hardware rendering is not available. See\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext\n // for more details.\n const context = canvas.getContext('webgl2') || canvas.getContext('webgl');\n if (context && typeof context.getParameter == 'function') {\n return true;\n }\n } catch (e) {\n // WebGL is supported, but disabled\n }\n return false;\n }\n // WebGL not supported\n return false;\n }\n\n repaint() {\n this.map.repaint = true;\n }\n\n async clear(layerId = null) {\n return new Promise((resolve, reject) => {\n const objects = [];\n this.scene.children.forEach(function (object) {\n objects.push(object);\n });\n for (let i = 0; i < objects.length; i++) {\n const obj = objects[i];\n //if layerId, check the layer to remove, otherwise always remove\n if (obj.layers === layerId || !layerId) {\n this.remove(obj);\n }\n }\n\n resolve('clear');\n });\n }\n\n async clearMeshes() {\n return new Promise((resolve, reject) => {\n const objects = [];\n this.scene.children.forEach(function (object) {\n if (object.type === 'Mesh') objects.push(object);\n });\n console.log('Mesh Objects:', objects);\n for (let i = 0; i < objects.length; i++) {\n this.remove(objects[i]);\n }\n\n resolve('clear');\n });\n }\n\n filter3DObjects(whatTaxonomies: string[]) {\n if (!Array.isArray(whatTaxonomies)) return;\n if (whatTaxonomies.length === 0) {\n this.scene.children.forEach(function (object) {\n object.visible = true;\n });\n } else {\n this.scene.children.forEach(function (object) {\n if (object.type === 'Mesh') {\n if (whatTaxonomies.includes(object.userData.whatDimension)) {\n object.visible = false;\n } else {\n object.visible = true;\n }\n }\n });\n }\n }\n\n add(object) {\n this.scene.add(object);\n }\n\n setEnvironment() {\n const dirLight = new DirectionalLight(0xffffff, 2);\n dirLight.position.set(10, 10, 10);\n dirLight.castShadow = true;\n const hemiLight = new HemisphereLight('white', 'white', 1.5);\n const ambientLight = new AmbientLight('white', 1);\n this.scene.add(dirLight);\n this.scene.add(hemiLight);\n this.scene.add(ambientLight);\n }\n\n buildPoints(coords, initCoords) {\n const points = [];\n const init = projectToWorld([initCoords[0][0], initCoords[0][1], 0]);\n for (let i = 0; i < coords.length; i++) {\n const pos = projectToWorld([coords[i][0], coords[i][1], 0]);\n points.push(new Vector2(toDecimal(pos.x - init.x, 9), toDecimal(pos.y - init.y, 9)));\n }\n return points;\n }\n\n buildGeometry(shape, settings) {\n const geometry = new ExtrudeGeometry(shape, settings);\n geometry.computeBoundingBox();\n return geometry;\n }\n\n buildShape(coords: any) {\n if (coords[0] instanceof (Vector2 || Vector3)) return new Shape(coords);\n let shape = new Shape();\n for (let i = 0; i < coords.length; i++) {\n if (i === 0) {\n shape = new Shape(this.buildPoints(coords[0], coords[0]));\n } else {\n shape.holes.push(new Path(this.buildPoints(coords[i], coords[0])));\n }\n }\n return shape;\n }\n\n extrusion(opt: any) {\n const shape = this.buildShape(opt.coordinates);\n const geometry = this.buildGeometry(shape, opt.geometryOptions);\n const mesh = new Mesh(geometry, opt.materials);\n\n if (!opt.visible) mesh.visible = false;\n\n return mesh;\n }\n\n centerMesh(mesh) {\n // Compute the bounding box\n const bbox = new Box3();\n mesh.geometry.computeBoundingBox();\n bbox.copy(mesh.geometry.boundingBox).applyMatrix4(mesh.matrixWorld);\n\n // Get the center of the bounding box\n let center = new Vector3();\n bbox.getCenter(center);\n\n // Create a dummy object\n const dummy = new Object3D();\n\n // Attach mesh to dummy\n dummy.add(mesh);\n\n center = mesh.localToWorld(center);\n // const geometry = new BoxGeometry( 0.25, 0.25, 0.25 );\n // const material = new MeshBasicMaterial( {color: 0xff0000} );\n // const cube = new Mesh( geometry, material );\n // cube.position.set(center.x, center.y, center.z);\n // this.add( cube );\n // // Move the mesh within the dummy\n const diff = mesh.position.clone().sub(center);\n mesh.geometry.translate(diff.x, diff.y, 0);\n\n return dummy; // Return the new parent object\n }\n\n dispose(target) {\n if (target instanceof Mesh) {\n // If the target is a Mesh\n // Dispose materials and geometry of the mesh\n if (target.material) {\n if (typeof target.material.dispose === 'function' && !target.material._isDisposed) {\n target.material.dispose();\n target.material._isDisposed = true;\n }\n target.material = null;\n }\n if (target.geometry) {\n if (typeof target.geometry.dispose === 'function' && !target.geometry._isDisposed) {\n target.geometry.dispose();\n target.geometry._isDisposed = true;\n }\n target.geometry = null;\n }\n } else if (target instanceof Object3D) {\n // If the target is an Object3D\n target.removeFromParent();\n this.disposeObject(target);\n }\n }\n\n disposeObject(object) {\n object.traverse(child => {\n if (child instanceof Mesh && child.material) {\n if (Array.isArray(child.material)) {\n child.material.forEach(material => {\n this.disposeMaterial(material);\n });\n } else {\n this.disposeMaterial(child.material);\n }\n }\n if (child instanceof Mesh && child.geometry) {\n this.disposeGeometry(child.geometry);\n }\n if (child instanceof Mesh && child.material && child.material.map) {\n this.disposeTexture(child.material.map);\n }\n requestAnimationFrame(() => (child.children.length = 0));\n });\n\n if (object.parent) {\n object.parent.remove(object);\n }\n }\n\n disposeMaterial(material) {\n if (material.dispose) {\n material.dispose();\n }\n }\n\n // to dispose of a texture\n disposeTexture(texture) {\n if (texture.dispose) {\n texture.dispose();\n }\n }\n\n // to dispose of a geometry\n disposeGeometry(geometry) {\n if (geometry.dispose) {\n geometry.dispose();\n }\n }\n\n remove(object) {\n this.scene.remove(object);\n object = null;\n }\n\n update() {\n if (this.map.repaint) this.map.repaint = false;\n this.scene.updateMatrixWorld(true);\n\n // Render the scene and repaint the map\n this.renderer.resetState(); //update threejs r126\n this.renderer.render(this.scene, this.camera);\n }\n}\n\nexport default CustomThreeJSWrapper;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -44,6 +44,7 @@ export function addModelsToMap(wrapper, map, models, modelMap, onModelsLoaded) {
|
|
|
44
44
|
return new Promise((modelResolve, modelReject) => {
|
|
45
45
|
const loader = new GLTFLoader();
|
|
46
46
|
loader.load(modelUrl, gltf => {
|
|
47
|
+
var _modelMap$get$visible, _modelMap$get;
|
|
47
48
|
const model = gltf.scene;
|
|
48
49
|
model.traverse(child => {
|
|
49
50
|
if (child instanceof THREE.Mesh) {
|
|
@@ -63,12 +64,12 @@ export function addModelsToMap(wrapper, map, models, modelMap, onModelsLoaded) {
|
|
|
63
64
|
model.up.set(0, 0, 1);
|
|
64
65
|
model.rotation.set(rotation[0], rotation[1], rotation[2]);
|
|
65
66
|
model.scale.set(scale[0], scale[1], scale[2]);
|
|
66
|
-
model.visible = modelMap.get(id)
|
|
67
|
+
model.visible = (_modelMap$get$visible = (_modelMap$get = modelMap.get(id)) === null || _modelMap$get === void 0 ? void 0 : _modelMap$get.visible) !== null && _modelMap$get$visible !== void 0 ? _modelMap$get$visible : true;
|
|
67
68
|
wrapper.add(model);
|
|
68
69
|
modelMap.set(id, model);
|
|
69
70
|
modelResolve(modelMap);
|
|
70
71
|
}, undefined, error => {
|
|
71
|
-
console.error(
|
|
72
|
+
console.error("Error loading model ".concat(id, ":"), error);
|
|
72
73
|
modelReject(error);
|
|
73
74
|
});
|
|
74
75
|
});
|
|
@@ -110,7 +111,7 @@ export function toggleModelVisibility(modelMap, modelId, isVisible) {
|
|
|
110
111
|
}
|
|
111
112
|
});
|
|
112
113
|
} else if (child.isMesh) {
|
|
113
|
-
console.error(
|
|
114
|
+
console.error("GSAP Animation already running for child id ".concat(id, "!"));
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
117
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["THREE","Euler","Vector3","constants","gsap","GLTFLoader","projectToWorld","coords","projected","MERCATOR_A","DEG2RAD","PROJECTION_WORLD_SIZE","Math","log","tan","PI","push","pixelsPerMeter","projectedUnitsPerMeter","result","latitude","abs","WORLD_SIZE","cos","EARTH_CIRCUMFERENCE","unprojectFromWorld","worldUnits","unprojected","x","atan","exp","y","height","z","toDecimal","n","d","Number","toFixed","addModelsToMap","wrapper","map","models","modelMap","onModelsLoaded","Promise","resolve","reject","modelLoadPromises","_ref","id","modelUrl","rotation","scale","instanced","modelResolve","modelReject","loader","load","gltf","model","scene","traverse","child","Mesh","Array","isArray","material","forEach","mat","side","DoubleSide","needsUpdate","worldPosition","position","set","up","visible","get","add","undefined","error","console","addLayer","type","renderingMode","onAdd","all","then","res","catch","render","toggleModelVisibility","modelId","isVisible","isAnimating","isMesh","transparent","to","opacity","duration","ease","onComplete","bearingToRotation","bearing","threeRotation","rotationToBearing","quaternion","euler","setFromQuaternion","objectDirectionToBearing","object","forward","getWorldDirection","atan2"],"sources":["../../../../../../src/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.ts"],"sourcesContent":["import * as THREE from 'three';\nimport {Quaternion, Euler, Vector3, InstancedMesh, Object3D} from 'three';\nimport constants from './constants';\nimport { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';\nimport { LngLatLike } from 'maplibre-gl';\nimport { Position } from 'geojson';\nimport gsap from 'gsap';\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';\nimport { AmbientLight, DirectionalLight } from 'three';\nimport CustomThreeJSWrapper from '../CustomThreeJsWrapper.js';\n\nexport function projectToWorld(coords: Position) {\n var projected = [\n -constants.MERCATOR_A *\n constants.DEG2RAD *\n coords[0] *\n constants.PROJECTION_WORLD_SIZE,\n -constants.MERCATOR_A *\n Math.log(Math.tan(Math.PI * 0.25 + 0.5 * constants.DEG2RAD * coords[1])) *\n constants.PROJECTION_WORLD_SIZE,\n ];\n\n if (!coords[2]) projected.push(0);\n else {\n var pixelsPerMeter = projectedUnitsPerMeter(coords[1]);\n projected.push(coords[2] * pixelsPerMeter);\n }\n\n var result = new Vector3(projected[0], projected[1], projected[2]);\n\n return result;\n}\n\nfunction projectedUnitsPerMeter(latitude: number) {\n return Math.abs(\n constants.WORLD_SIZE /\n Math.cos(constants.DEG2RAD * latitude) /\n constants.EARTH_CIRCUMFERENCE\n );\n}\n\nexport function unprojectFromWorld(worldUnits: Vector3) {\n var unprojected = [\n -worldUnits.x /\n (constants.MERCATOR_A *\n constants.DEG2RAD *\n constants.PROJECTION_WORLD_SIZE),\n (2 *\n (Math.atan(\n Math.exp(\n worldUnits.y /\n (constants.PROJECTION_WORLD_SIZE * -constants.MERCATOR_A)\n )\n ) -\n Math.PI / 4)) /\n constants.DEG2RAD,\n ];\n\n var pixelsPerMeter = projectedUnitsPerMeter(unprojected[1]);\n\n // z dimension\n var height = worldUnits.z || 0;\n unprojected.push(height / pixelsPerMeter);\n\n return unprojected as LngLatLike;\n}\n\nexport function toDecimal (n, d) {\n return Number(n.toFixed(d));\n}\n\n// RF: TO BE REMOVED. ModelLoader component can be used to load 3D models.\nexport function addModelsToMap(wrapper, map, models, modelMap, onModelsLoaded) {\n return new Promise((resolve, reject) => {\n try {\n const modelLoadPromises = models.map(({ id, modelUrl, coords, rotation, scale, instanced }) => {\n return new Promise((modelResolve, modelReject) => {\n const loader = new GLTFLoader();\n loader.load(\n modelUrl,\n (gltf) => {\n const model = gltf.scene;\n model.traverse((child) => {\n if (child instanceof THREE.Mesh) {\n if (Array.isArray(child.material)) {\n child.material.forEach((mat) => {\n mat.side = THREE.DoubleSide;\n mat.needsUpdate = true;\n });\n } else {\n child.material.side = THREE.DoubleSide;\n child.material.needsUpdate = true;\n }\n }\n });\n \n const worldPosition = projectToWorld(coords);\n model.position.set(worldPosition.x, worldPosition.y, 0);\n model.up.set(0, 0, 1);\n model.rotation.set(rotation[0], rotation[1], rotation[2]);\n model.scale.set(scale[0], scale[1], scale[2]);\n model.visible = modelMap.get(id)?.visible ?? true;\n wrapper.add(model);\n modelMap.set(id, model);\n modelResolve(modelMap);\n },\n undefined,\n (error) => {\n console.error(`Error loading model ${id}:`, error);\n modelReject(error);\n }\n );\n });\n });\n\n map.addLayer({\n id: '3d-model-layer2',\n type: 'custom',\n renderingMode: '3d',\n onAdd: () => Promise.all(modelLoadPromises).then((res)=>{\n resolve(res);\n onModelsLoaded(true);\n }).catch(reject),\n render: () => {},\n });\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport function toggleModelVisibility(modelMap, modelId, isVisible) {\n const model = modelMap.get(modelId);\n if (!model) return;\n console.log('toggleModelVisibility_model', model);\n const isAnimating = {}; // Object to track animations\n model.traverse((child) => {\n if (child.isMesh) {\n const id = child.id; // Use unique child.id as the key\n child.material.transparent = true;\n if (!isAnimating[id]) {\n isAnimating[id] = true; // Set animation flag\n gsap.to(child.material, {\n opacity: isVisible ? 1 : 0,\n duration: 0.5, // Smooth fade animation\n ease: 'power2.inOut',\n onComplete: () => {\n isAnimating[id] = false; // Reset animation flag\n model.visible = isVisible;\n },\n });\n } else if (child.isMesh) {\n console.error(`GSAP Animation already running for child id ${id}!`);\n }\n }\n });\n if (isVisible) {\n model.visible = true;\n }\n}\n\nexport function bearingToRotation(bearing: number) {\n // Mapbox bearing is clockwise from north, Three.js rotation is counterclockwise from east\n const threeRotation = -((bearing - 90) * Math.PI / 180);\n return threeRotation;\n}\n\nexport function rotationToBearing(quaternion: Quaternion) {\n const euler = new Euler().setFromQuaternion(quaternion);\n // Convert from radians to degrees and adjust coordinate systems\n const bearing = (360 - (euler.y * 180 / Math.PI - 90)) % 360;\n return bearing;\n}\n\nexport function objectDirectionToBearing(object) {\n const forward = new Vector3();\n object.getWorldDirection(forward);\n\n // Project onto the map's X-Z plane (ignore Y)\n const bearing = Math.atan2(forward.x, forward.z) * (180 / Math.PI);\n \n return bearing;\n}"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"utils.js","names":["THREE","Euler","Vector3","constants","gsap","GLTFLoader","projectToWorld","coords","projected","MERCATOR_A","DEG2RAD","PROJECTION_WORLD_SIZE","Math","log","tan","PI","push","pixelsPerMeter","projectedUnitsPerMeter","result","latitude","abs","WORLD_SIZE","cos","EARTH_CIRCUMFERENCE","unprojectFromWorld","worldUnits","unprojected","x","atan","exp","y","height","z","toDecimal","n","d","Number","toFixed","addModelsToMap","wrapper","map","models","modelMap","onModelsLoaded","Promise","resolve","reject","modelLoadPromises","_ref","id","modelUrl","rotation","scale","instanced","modelResolve","modelReject","loader","load","gltf","_modelMap$get$visible","_modelMap$get","model","scene","traverse","child","Mesh","Array","isArray","material","forEach","mat","side","DoubleSide","needsUpdate","worldPosition","position","set","up","visible","get","add","undefined","error","console","concat","addLayer","type","renderingMode","onAdd","all","then","res","catch","render","toggleModelVisibility","modelId","isVisible","isAnimating","isMesh","transparent","to","opacity","duration","ease","onComplete","bearingToRotation","bearing","threeRotation","rotationToBearing","quaternion","euler","setFromQuaternion","objectDirectionToBearing","object","forward","getWorldDirection","atan2"],"sources":["../../../../../../src/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.ts"],"sourcesContent":["import * as THREE from 'three';\nimport {Quaternion, Euler, Vector3, InstancedMesh, Object3D} from 'three';\nimport constants from './constants';\nimport { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';\nimport { LngLatLike } from 'maplibre-gl';\nimport { Position } from 'geojson';\nimport gsap from 'gsap';\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';\nimport { AmbientLight, DirectionalLight } from 'three';\nimport CustomThreeJSWrapper from '../CustomThreeJsWrapper.js';\n\nexport function projectToWorld(coords: Position) {\n var projected = [\n -constants.MERCATOR_A *\n constants.DEG2RAD *\n coords[0] *\n constants.PROJECTION_WORLD_SIZE,\n -constants.MERCATOR_A *\n Math.log(Math.tan(Math.PI * 0.25 + 0.5 * constants.DEG2RAD * coords[1])) *\n constants.PROJECTION_WORLD_SIZE,\n ];\n\n if (!coords[2]) projected.push(0);\n else {\n var pixelsPerMeter = projectedUnitsPerMeter(coords[1]);\n projected.push(coords[2] * pixelsPerMeter);\n }\n\n var result = new Vector3(projected[0], projected[1], projected[2]);\n\n return result;\n}\n\nfunction projectedUnitsPerMeter(latitude: number) {\n return Math.abs(\n constants.WORLD_SIZE /\n Math.cos(constants.DEG2RAD * latitude) /\n constants.EARTH_CIRCUMFERENCE\n );\n}\n\nexport function unprojectFromWorld(worldUnits: Vector3) {\n var unprojected = [\n -worldUnits.x /\n (constants.MERCATOR_A *\n constants.DEG2RAD *\n constants.PROJECTION_WORLD_SIZE),\n (2 *\n (Math.atan(\n Math.exp(\n worldUnits.y /\n (constants.PROJECTION_WORLD_SIZE * -constants.MERCATOR_A)\n )\n ) -\n Math.PI / 4)) /\n constants.DEG2RAD,\n ];\n\n var pixelsPerMeter = projectedUnitsPerMeter(unprojected[1]);\n\n // z dimension\n var height = worldUnits.z || 0;\n unprojected.push(height / pixelsPerMeter);\n\n return unprojected as LngLatLike;\n}\n\nexport function toDecimal (n, d) {\n return Number(n.toFixed(d));\n}\n\n// RF: TO BE REMOVED. ModelLoader component can be used to load 3D models.\nexport function addModelsToMap(wrapper, map, models, modelMap, onModelsLoaded) {\n return new Promise((resolve, reject) => {\n try {\n const modelLoadPromises = models.map(({ id, modelUrl, coords, rotation, scale, instanced }) => {\n return new Promise((modelResolve, modelReject) => {\n const loader = new GLTFLoader();\n loader.load(\n modelUrl,\n (gltf) => {\n const model = gltf.scene;\n model.traverse((child) => {\n if (child instanceof THREE.Mesh) {\n if (Array.isArray(child.material)) {\n child.material.forEach((mat) => {\n mat.side = THREE.DoubleSide;\n mat.needsUpdate = true;\n });\n } else {\n child.material.side = THREE.DoubleSide;\n child.material.needsUpdate = true;\n }\n }\n });\n \n const worldPosition = projectToWorld(coords);\n model.position.set(worldPosition.x, worldPosition.y, 0);\n model.up.set(0, 0, 1);\n model.rotation.set(rotation[0], rotation[1], rotation[2]);\n model.scale.set(scale[0], scale[1], scale[2]);\n model.visible = modelMap.get(id)?.visible ?? true;\n wrapper.add(model);\n modelMap.set(id, model);\n modelResolve(modelMap);\n },\n undefined,\n (error) => {\n console.error(`Error loading model ${id}:`, error);\n modelReject(error);\n }\n );\n });\n });\n\n map.addLayer({\n id: '3d-model-layer2',\n type: 'custom',\n renderingMode: '3d',\n onAdd: () => Promise.all(modelLoadPromises).then((res)=>{\n resolve(res);\n onModelsLoaded(true);\n }).catch(reject),\n render: () => {},\n });\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport function toggleModelVisibility(modelMap, modelId, isVisible) {\n const model = modelMap.get(modelId);\n if (!model) return;\n console.log('toggleModelVisibility_model', model);\n const isAnimating = {}; // Object to track animations\n model.traverse((child) => {\n if (child.isMesh) {\n const id = child.id; // Use unique child.id as the key\n child.material.transparent = true;\n if (!isAnimating[id]) {\n isAnimating[id] = true; // Set animation flag\n gsap.to(child.material, {\n opacity: isVisible ? 1 : 0,\n duration: 0.5, // Smooth fade animation\n ease: 'power2.inOut',\n onComplete: () => {\n isAnimating[id] = false; // Reset animation flag\n model.visible = isVisible;\n },\n });\n } else if (child.isMesh) {\n console.error(`GSAP Animation already running for child id ${id}!`);\n }\n }\n });\n if (isVisible) {\n model.visible = true;\n }\n}\n\nexport function bearingToRotation(bearing: number) {\n // Mapbox bearing is clockwise from north, Three.js rotation is counterclockwise from east\n const threeRotation = -((bearing - 90) * Math.PI / 180);\n return threeRotation;\n}\n\nexport function rotationToBearing(quaternion: Quaternion) {\n const euler = new Euler().setFromQuaternion(quaternion);\n // Convert from radians to degrees and adjust coordinate systems\n const bearing = (360 - (euler.y * 180 / Math.PI - 90)) % 360;\n return bearing;\n}\n\nexport function objectDirectionToBearing(object) {\n const forward = new Vector3();\n object.getWorldDirection(forward);\n\n // Project onto the map's X-Z plane (ignore Y)\n const bearing = Math.atan2(forward.x, forward.z) * (180 / Math.PI);\n \n return bearing;\n}"],"mappings":"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","ignoreList":[]}
|