From fe7c1fe8031c65dd708c6db6c5ee8b376089caea Mon Sep 17 00:00:00 2001 From: Ruben Thoms Date: Tue, 15 Oct 2024 16:47:12 +0200 Subject: [PATCH] wip --- .../primary/routers/surface/converters.py | 20 + .../primary/primary/routers/surface/router.py | 20 +- .../primary/routers/surface/schemas.py | 17 +- .../primary/routers/well/converters.py | 7 +- .../primary/primary/routers/well/router.py | 40 +- .../primary/primary/routers/well/schemas.py | 4 +- .../services/smda_access/smda_access.py | 3 +- .../primary/services/smda_access/types.py | 3 +- frontend/package-lock.json | 1799 +++++++++-------- frontend/package.json | 2 +- frontend/src/api/index.ts | 1 + frontend/src/api/models/StratigraphicUnit.ts | 19 + frontend/src/api/models/WellboreHeader.ts | 1 + frontend/src/api/services/SurfaceService.ts | 21 + frontend/src/api/services/WellService.ts | 24 + frontend/src/framework/WorkbenchServices.ts | 4 +- .../modules/2DViewer/layers/DeltaSurface.ts | 46 +- .../components/DeltaSurfaceComponent.tsx | 12 +- .../layers/components/LayerComponent.tsx | 13 +- .../components/SettingsGroupComponent.tsx | 12 +- .../layers/delegates/LayerDelegate.ts | 27 + .../delegates/PublishSubscribeDelegate.ts | 6 +- .../DrilledWellborePicksLayer.ts | 24 +- .../modules/2DViewer/settings/settings.tsx | 2 +- .../view/components/ReadoutWrapper.tsx | 3 +- .../customDeckGlLayers/AdvancedWellsLayer.ts | 4 +- .../customDeckGlLayers/WellborePicksLayer.ts | 7 +- .../2DViewer/view/utils/layerFactory.ts | 32 +- .../2DViewer/view/utils/makeViewsAndLayers.ts | 2 +- frontend/src/modules/2DViewer/view/view.tsx | 2 +- .../view/components/HoverUpdateWrapper.tsx | 2 +- .../components/SubsurfaceViewerWrapper.tsx | 4 +- .../src/modules/3DViewer/view/utils/layers.ts | 2 +- frontend/src/modules/3DViewer/view/view.tsx | 2 +- .../src/modules/Intersection/interfaces.ts | 11 +- .../Intersection/settings/atoms/baseAtoms.ts | 2 - .../settings/atoms/derivedAtoms.ts | 13 - .../layerSettings/wellpicksLayer.tsx | 30 + .../utils/layers/WellpicksLayer.ts | 60 +- .../Intersection/view/atoms/baseAtoms.ts | 1 + .../view/atoms/interfaceEffects.ts | 5 + .../Intersection/view/atoms/queryAtoms.ts | 8 +- .../src/modules/Intersection/view/view.tsx | 17 +- 43 files changed, 1363 insertions(+), 971 deletions(-) create mode 100644 frontend/src/api/models/StratigraphicUnit.ts diff --git a/backend_py/primary/primary/routers/surface/converters.py b/backend_py/primary/primary/routers/surface/converters.py index 6580fad97..c10e4c80b 100644 --- a/backend_py/primary/primary/routers/surface/converters.py +++ b/backend_py/primary/primary/routers/surface/converters.py @@ -11,6 +11,7 @@ from primary.services.utils.surface_intersect_with_polyline import XtgeoSurfaceIntersectionResult from primary.services.utils.surface_to_float32 import surface_to_float32_numpy_array from primary.services.utils.surface_to_png import surface_to_png_bytes_optimized +from primary.services.smda_access import StratigraphicUnit from . import schemas @@ -174,3 +175,22 @@ def to_api_surface_intersection( z_points=xtgeo_surface_intersection.zval, cum_lengths=xtgeo_surface_intersection.distance, ) + + +def to_api_stratigraphic_unit( + stratigraphic_unit: StratigraphicUnit, +) -> schemas.StratigraphicUnit: + return schemas.StratigraphicUnit( + identifier=stratigraphic_unit.identifier, + top=stratigraphic_unit.top, + base=stratigraphic_unit.base, + stratUnitLevel=stratigraphic_unit.strat_unit_level, + stratUnitType=stratigraphic_unit.strat_unit_type, + topAge=stratigraphic_unit.top_age, + baseAge=stratigraphic_unit.base_age, + stratUnitParent=stratigraphic_unit.strat_unit_parent, + colorR=stratigraphic_unit.color_r, + colorG=stratigraphic_unit.color_g, + colorB=stratigraphic_unit.color_b, + lithologyType=stratigraphic_unit.lithology_type, + ) diff --git a/backend_py/primary/primary/routers/surface/router.py b/backend_py/primary/primary/routers/surface/router.py index ed10cf203..4127d212d 100644 --- a/backend_py/primary/primary/routers/surface/router.py +++ b/backend_py/primary/primary/routers/surface/router.py @@ -295,6 +295,24 @@ async def get_misfit_surface_data( raise HTTPException(status.HTTP_501_NOT_IMPLEMENTED) +@router.get("/stratigraphic_units") +async def get_stratigraphic_units( + # fmt:off + response: Response, + authenticated_user: Annotated[AuthenticatedUser, Depends(AuthHelper.get_authenticated_user)], + case_uuid: Annotated[str, Query(description="Sumo case uuid")], + # fmt:on +) -> list[schemas.StratigraphicUnit]: + perf_metrics = ResponsePerfMetrics(response) + + strat_units = await _get_stratigraphic_units_for_case_async(authenticated_user, case_uuid) + api_strat_units = [converters.to_api_stratigraphic_unit(strat_unit) for strat_unit in strat_units] + + LOGGER.info(f"Got stratigraphic units in: {perf_metrics.to_string()}") + + return api_strat_units + + async def _get_stratigraphic_units_for_case_async( authenticated_user: AuthenticatedUser, case_uuid: str ) -> list[StratigraphicUnit]: @@ -309,7 +327,7 @@ async def _get_stratigraphic_units_for_case_async( if strat_column_identifier == "DROGON_HAS_NO_STRATCOLUMN": smda_access = DrogonSmdaAccess() else: - smda_access = SmdaAccess(authenticated_user.get_smda_access_token(),field_identifier=field_identifiers[0]) + smda_access = SmdaAccess(authenticated_user.get_smda_access_token(), field_identifier=field_identifiers[0]) strat_units = await smda_access.get_stratigraphic_units(strat_column_identifier) perf_metrics.record_lap("get-strat-units") diff --git a/backend_py/primary/primary/routers/surface/schemas.py b/backend_py/primary/primary/routers/surface/schemas.py index 3c5e8be4e..783406940 100644 --- a/backend_py/primary/primary/routers/surface/schemas.py +++ b/backend_py/primary/primary/routers/surface/schemas.py @@ -1,5 +1,5 @@ from enum import Enum -from typing import List, Literal +from typing import List, Literal, Optional from pydantic import BaseModel, ConfigDict from webviz_pkg.core_utils.b64 import B64FloatArray @@ -164,3 +164,18 @@ class SurfaceRealizationSampleValues(BaseModel): class PointSetXY(BaseModel): x_points: list[float] y_points: list[float] + + +class StratigraphicUnit(BaseModel): + identifier: str + top: str + base: str + stratUnitLevel: int + stratUnitType: str + topAge: int | float + baseAge: int | float + stratUnitParent: str | None + colorR: int + colorG: int + colorB: int + lithologyType: int | float | str = "unknown" diff --git a/backend_py/primary/primary/routers/well/converters.py b/backend_py/primary/primary/routers/well/converters.py index d7f27a7b7..baa9fbda1 100644 --- a/backend_py/primary/primary/routers/well/converters.py +++ b/backend_py/primary/primary/routers/well/converters.py @@ -58,9 +58,12 @@ def convert_wellbore_header_to_schema( wellNorthing=drilled_wellbore_header.well_northing, depthReferencePoint=drilled_wellbore_header.depth_reference_point, depthReferenceElevation=drilled_wellbore_header.depth_reference_elevation, - wellborePurpose=drilled_wellbore_header.wellbore_purpose if drilled_wellbore_header.wellbore_purpose else "", # TODO: Handle None + wellborePurpose=( + drilled_wellbore_header.wellbore_purpose if drilled_wellbore_header.wellbore_purpose else "" + ), # TODO: Handle None wellboreStatus=drilled_wellbore_header.wellbore_status if drilled_wellbore_header.wellbore_status else "", - ) + slotIdentifier=drilled_wellbore_header.slot_identifier if drilled_wellbore_header.slot_identifier else "", + ) def convert_well_trajectory_to_schema( diff --git a/backend_py/primary/primary/routers/well/router.py b/backend_py/primary/primary/routers/well/router.py index 0572d468e..2ab5baa46 100644 --- a/backend_py/primary/primary/routers/well/router.py +++ b/backend_py/primary/primary/routers/well/router.py @@ -31,7 +31,7 @@ async def get_drilled_wellbore_headers( # Handle DROGON well_access = DrogonSmdaAccess() else: - well_access = SmdaAccess(authenticated_user.get_smda_access_token(),field_identifier=field_identifier) + well_access = SmdaAccess(authenticated_user.get_smda_access_token(), field_identifier=field_identifier) wellbore_headers = await well_access.get_wellbore_headers() @@ -54,15 +54,14 @@ async def get_well_trajectories( else: well_access = SmdaAccess(authenticated_user.get_smda_access_token(), field_identifier=field_identifier) - wellbore_trajectories = await well_access.get_wellbore_trajectories( - wellbore_uuids=wellbore_uuids - ) + wellbore_trajectories = await well_access.get_wellbore_trajectories(wellbore_uuids=wellbore_uuids) return [ converters.convert_well_trajectory_to_schema(wellbore_trajectory) for wellbore_trajectory in wellbore_trajectories ] + @router.get("/wellbore_pick_identifiers/") async def get_wellbore_pick_identifiers( # fmt:off @@ -76,15 +75,16 @@ async def get_wellbore_pick_identifiers( if field_identifier == "DROGON": # Handle DROGON well_access = DrogonSmdaAccess() - + else: well_access = SmdaAccess(authenticated_user.get_smda_access_token(), field_identifier=field_identifier) wellbore_picks = await well_access.get_wellbore_pick_identifiers_in_stratigraphic_column( - strat_column_identifier=strat_column_identifier + strat_column_identifier=strat_column_identifier ) return [wellbore_pick.name for wellbore_pick in wellbore_picks] + @router.get("/wellbore_picks_for_pick_identifier/") async def get_wellbore_picks_for_pick_identifier( # fmt:off @@ -98,15 +98,35 @@ async def get_wellbore_picks_for_pick_identifier( if field_identifier == "DROGON": # Handle DROGON well_access = DrogonSmdaAccess() - + else: well_access = SmdaAccess(authenticated_user.get_smda_access_token(), field_identifier=field_identifier) - wellbore_picks = await well_access.get_wellbore_picks_for_pick_identifier( - pick_identifier=pick_identifier - ) + wellbore_picks = await well_access.get_wellbore_picks_for_pick_identifier(pick_identifier=pick_identifier) return [converters.convert_wellbore_pick_to_schema(wellbore_pick) for wellbore_pick in wellbore_picks] + +@router.get("/wellbore_picks_for_wellbore/") +async def get_wellbore_picks_for_wellbore( + # fmt:off + authenticated_user: AuthenticatedUser = Depends(AuthHelper.get_authenticated_user), + field_identifier: str = Query(description="Official field identifier"), + wellbore_uuid: str = Query(description="Wellbore uuid") + # fmt:on +) -> List[schemas.WellborePick]: + """Get wellbore picks for field and pick identifier""" + well_access: Union[SmdaAccess, DrogonSmdaAccess] + if field_identifier == "DROGON": + # Handle DROGON + well_access = DrogonSmdaAccess() + + else: + well_access = SmdaAccess(authenticated_user.get_smda_access_token(), field_identifier=field_identifier) + + wellbore_picks = await well_access.get_wellbore_picks_for_wellbore(wellbore_uuid=wellbore_uuid) + return [converters.convert_wellbore_pick_to_schema(wellbore_pick) for wellbore_pick in wellbore_picks] + + @router.get("/wellbore_completions/") async def get_wellbore_completions( # fmt:off diff --git a/backend_py/primary/primary/routers/well/schemas.py b/backend_py/primary/primary/routers/well/schemas.py index fad558217..8fb10c98f 100644 --- a/backend_py/primary/primary/routers/well/schemas.py +++ b/backend_py/primary/primary/routers/well/schemas.py @@ -34,6 +34,8 @@ class WellboreHeader(BaseModel): depthReferenceElevation: float wellborePurpose: str wellboreStatus: str + slotIdentifier: str + class WellboreTrajectory(BaseModel): wellboreUuid: str @@ -58,7 +60,7 @@ class WellborePick(BaseModel): md: float mdMsl: float uniqueWellboreIdentifier: str - wellboreUuid:str + wellboreUuid: str pickIdentifier: str confidence: Optional[str] = None depthReferencePoint: str diff --git a/backend_py/primary/primary/services/smda_access/smda_access.py b/backend_py/primary/primary/services/smda_access/smda_access.py index 221c44512..d9e75cd30 100644 --- a/backend_py/primary/primary/services/smda_access/smda_access.py +++ b/backend_py/primary/primary/services/smda_access/smda_access.py @@ -75,7 +75,7 @@ async def get_wellbore_headers(self) -> List[WellboreHeader]: if not survey_header_results: raise NoDataError(f"No wellbore headers found for {self._field_identifier=}.", Service.SMDA) - projection = ["unique_wellbore_identifier", "wellbore_purpose", "wellbore_status"] + projection = ["unique_wellbore_identifier", "wellbore_purpose", "wellbore_status", "slot_identifier"] params = { "_projection": ",".join(projection), "_sort": "unique_wellbore_identifier", @@ -89,6 +89,7 @@ async def get_wellbore_headers(self) -> List[WellboreHeader]: if survey_header["unique_wellbore_identifier"] == wellbore_header["unique_wellbore_identifier"]: survey_header["wellbore_purpose"] = wellbore_header.get("wellbore_purpose") survey_header["wellbore_status"] = wellbore_header.get("wellbore_status") + survey_header["slot_identifier"] = wellbore_header.get("slot_identifier") break return [WellboreHeader(**result) for result in survey_header_results] diff --git a/backend_py/primary/primary/services/smda_access/types.py b/backend_py/primary/primary/services/smda_access/types.py index fa2406e9e..eff556881 100644 --- a/backend_py/primary/primary/services/smda_access/types.py +++ b/backend_py/primary/primary/services/smda_access/types.py @@ -17,7 +17,7 @@ class WellborePick(BaseModel): md: float md_msl: float unique_wellbore_identifier: str - wellbore_uuid:str + wellbore_uuid: str pick_identifier: str confidence: Optional[str] = None depth_reference_point: str @@ -44,6 +44,7 @@ class WellboreHeader(BaseModel): depth_reference_elevation: float wellbore_purpose: str | None wellbore_status: str | None + slot_identifier: str | None class StratigraphicUnit(BaseModel): diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 35804b4bd..d02dbe989 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -19,7 +19,7 @@ "@tanstack/react-query-devtools": "^5.4.2", "@types/geojson": "^7946.0.14", "@webviz/group-tree-plot": "^1.1.14", - "@webviz/subsurface-viewer": "^0.25.2", + "@webviz/subsurface-viewer": "^1.1.1", "@webviz/well-completions-plot": "^1.4.1", "animate.css": "^4.1.1", "axios": "^1.6.5", @@ -476,176 +476,238 @@ "findup": "bin/findup.js" } }, - "node_modules/@danmarshall/deckgl-typings": { - "version": "4.9.12", - "resolved": "https://registry.npmjs.org/@danmarshall/deckgl-typings/-/deckgl-typings-4.9.12.tgz", - "integrity": "sha512-hRXXDepfieobs+YFcjhoSXS97boSqgMAlWKREGwxBbqO/mE2seNJgQHPedsR+DeGJiK3hJsQmykt8TO51shJ4g==", - "hasInstallScript": true, + "node_modules/@deck.gl-community/editable-layers": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@deck.gl-community/editable-layers/-/editable-layers-9.0.3.tgz", + "integrity": "sha512-Jlcs1DBC9CADuQjPYjvpA/gVnuo8u9xCKRKbPYgzqu1jIGJ0+T84yqBfppnqYgbdf93u/9nse/lJ+rQefH/Y9Q==", + "dependencies": { + "@turf/along": "^6.5.0", + "@turf/area": "^6.5.0", + "@turf/bbox": "^6.5.0", + "@turf/bbox-polygon": "^6.5.0", + "@turf/bearing": "^6.5.0", + "@turf/boolean-point-in-polygon": "^6.5.0", + "@turf/buffer": "^6.5.0", + "@turf/center": "^6.5.0", + "@turf/centroid": "^6.5.0", + "@turf/circle": "^6.5.0", + "@turf/clone": "^6.5.0", + "@turf/destination": "^6.5.0", + "@turf/difference": "^6.5.0", + "@turf/distance": "^6.5.0", + "@turf/ellipse": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/intersect": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/line-intersect": "^6.5.0", + "@turf/meta": "^6.5.0", + "@turf/midpoint": "^6.5.0", + "@turf/nearest-point-on-line": "^6.5.0", + "@turf/point-to-line-distance": "^6.5.0", + "@turf/polygon-to-line": "^6.5.0", + "@turf/rewind": "^6.5.0", + "@turf/transform-rotate": "^6.5.0", + "@turf/transform-scale": "^6.5.0", + "@turf/transform-translate": "^6.5.0", + "@turf/union": "^6.5.0", + "@types/geojson": "^7946.0.14", + "cubic-hermite-spline": "^1.0.1", + "eventemitter3": "^5.0.0", + "lodash.throttle": "^4.1.1", + "uuid": "9.0.0", + "viewport-mercator-project": ">=6.2.3" + }, + "peerDependencies": { + "@deck.gl-community/layers": "^9.0.0", + "@deck.gl/core": "^9.0.12", + "@deck.gl/extensions": "^9.0.12", + "@deck.gl/geo-layers": "^9.0.12", + "@deck.gl/layers": "^9.0.12", + "@deck.gl/mesh-layers": ">=9.0.6", + "@luma.gl/constants": ">=9.0.12", + "@luma.gl/core": ">=9.0.12", + "@luma.gl/engine": ">=9.0.12", + "@math.gl/core": ">=4.0.1" + } + }, + "node_modules/@deck.gl-community/editable-layers/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "node_modules/@deck.gl-community/layers": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@deck.gl-community/layers/-/layers-9.0.3.tgz", + "integrity": "sha512-AwrlB1qcuTa2mO3KDeye4asVJAdy1oCL/8Y5VsvgVtki3S2N/GR3ymVlIQ0xtO+ioWp7ROgCnqqcDGHRlpzkag==", + "peer": true, "dependencies": { - "@types/hammerjs": "^2.0.36", - "@types/react": "*", - "indefinitely-typed": "^1.1.0" + "@deck.gl/core": "^9.0.12", + "@deck.gl/extensions": "^9.0.12", + "@deck.gl/geo-layers": "^9.0.12", + "@deck.gl/layers": "^9.0.12", + "@deck.gl/mesh-layers": "^9.0.12", + "@deck.gl/react": "^9.0.12", + "@loaders.gl/core": "^4.2.0", + "@loaders.gl/i3s": "^4.2.0", + "@loaders.gl/loader-utils": "^4.2.0", + "@loaders.gl/schema": "^4.2.0", + "@loaders.gl/tiles": "^4.2.0", + "@luma.gl/constants": "^9.0.11", + "@luma.gl/core": "^9.0.11", + "@luma.gl/engine": "^9.0.11", + "@math.gl/core": "^4.0.0" } }, "node_modules/@deck.gl/aggregation-layers": { - "version": "8.9.35", - "resolved": "https://registry.npmjs.org/@deck.gl/aggregation-layers/-/aggregation-layers-8.9.35.tgz", - "integrity": "sha512-OjJhHt/ZXLIP3cs8yD2xwa9KACBOjfvJpdMkly704y6SuM0k+qSj81VwkpdOA54DCvAhQQTAYCJ4rvnwmtcPQQ==", - "dependencies": { - "@babel/runtime": "^7.0.0", - "@luma.gl/constants": "^8.5.21", - "@luma.gl/shadertools": "^8.5.21", - "@math.gl/web-mercator": "^3.6.2", + "version": "9.0.33", + "resolved": "https://registry.npmjs.org/@deck.gl/aggregation-layers/-/aggregation-layers-9.0.33.tgz", + "integrity": "sha512-h0YCvdY4nZctkW1/1zFuwyL3o3o1HwZamRRdImpi74ug0GiLayt0kc4jLBbId4Tlxm5q/N2lggrZkFa9TPytWA==", + "dependencies": { + "@luma.gl/constants": "~9.0.27", + "@luma.gl/shadertools": "~9.0.27", + "@math.gl/web-mercator": "^4.0.0", "d3-hexbin": "^0.2.1" }, "peerDependencies": { - "@deck.gl/core": "^8.0.0", - "@deck.gl/layers": "^8.0.0", - "@luma.gl/core": "^8.0.0" + "@deck.gl/core": "^9.0.0", + "@deck.gl/layers": "^9.0.0", + "@luma.gl/core": "~9.0.0", + "@luma.gl/engine": "~9.0.0" } }, "node_modules/@deck.gl/core": { - "version": "8.9.35", - "resolved": "https://registry.npmjs.org/@deck.gl/core/-/core-8.9.35.tgz", - "integrity": "sha512-xOASWScUCB5fpfuSjPaJrwas8pCJpbKXNIfwQElhvnfP3Yk8GGkAcRbPgiPNCfpkbEno7eDpAWJt6+6UJsSp9g==", - "dependencies": { - "@babel/runtime": "^7.0.0", - "@loaders.gl/core": "^3.4.13", - "@loaders.gl/images": "^3.4.13", - "@luma.gl/constants": "^8.5.21", - "@luma.gl/core": "^8.5.21", - "@luma.gl/webgl": "^8.5.21", - "@math.gl/core": "^3.6.2", - "@math.gl/sun": "^3.6.2", - "@math.gl/web-mercator": "^3.6.2", - "@probe.gl/env": "^3.5.0", - "@probe.gl/log": "^3.5.0", - "@probe.gl/stats": "^3.5.0", + "version": "9.0.33", + "resolved": "https://registry.npmjs.org/@deck.gl/core/-/core-9.0.33.tgz", + "integrity": "sha512-KTfanNfb0b/JKV6BFSzQ8uMC07Yy5zvzLnnfHLV4l4ostHdEaPHdBEr5IDhsSRMBgcYSfsML3NpTFncVom+IyA==", + "dependencies": { + "@loaders.gl/core": "^4.2.0", + "@loaders.gl/images": "^4.2.0", + "@luma.gl/constants": "~9.0.27", + "@luma.gl/core": "~9.0.27", + "@luma.gl/engine": "~9.0.27", + "@luma.gl/shadertools": "~9.0.27", + "@luma.gl/webgl": "~9.0.27", + "@math.gl/core": "^4.0.0", + "@math.gl/sun": "^4.0.0", + "@math.gl/web-mercator": "^4.0.0", + "@probe.gl/env": "^4.0.9", + "@probe.gl/log": "^4.0.9", + "@probe.gl/stats": "^4.0.9", + "@types/offscreencanvas": "^2019.6.4", "gl-matrix": "^3.0.0", - "math.gl": "^3.6.2", "mjolnir.js": "^2.7.0" } }, "node_modules/@deck.gl/extensions": { - "version": "8.9.35", - "resolved": "https://registry.npmjs.org/@deck.gl/extensions/-/extensions-8.9.35.tgz", - "integrity": "sha512-qMZzeQpvtcw4zbh4HJJIF8Q73/u0Unwwe8aSC2r+apjuyUVPQInwlCil++LznBY3JA37M7SvW2TSK6IgCuaSyA==", + "version": "9.0.33", + "resolved": "https://registry.npmjs.org/@deck.gl/extensions/-/extensions-9.0.33.tgz", + "integrity": "sha512-rxfz3/I4mf0WKW6EvntMmsn9F7rkkWYUweadUZSw12FQ50fm8GVDJ7k/2Mkzn1WJEocJW2Pv5mBRqsSWtUdyQQ==", "dependencies": { - "@babel/runtime": "^7.0.0", - "@luma.gl/shadertools": "^8.5.21" + "@luma.gl/constants": "~9.0.27", + "@luma.gl/shadertools": "~9.0.27", + "@math.gl/core": "^4.0.0" }, "peerDependencies": { - "@deck.gl/core": "^8.0.0", - "@luma.gl/constants": "^8.0.0", - "@luma.gl/core": "^8.0.0", - "@math.gl/core": "^3.6.2", - "@math.gl/web-mercator": "^3.6.2", - "gl-matrix": "^3.0.0" + "@deck.gl/core": "^9.0.0", + "@luma.gl/core": "~9.0.0", + "@luma.gl/engine": "~9.0.0" } }, "node_modules/@deck.gl/geo-layers": { - "version": "8.9.35", - "resolved": "https://registry.npmjs.org/@deck.gl/geo-layers/-/geo-layers-8.9.35.tgz", - "integrity": "sha512-7sczznSjC7GjpDxuXPvPN7/WbVgSYHnFNNyWr8hMGm/WlUMK4z9QpZo6UFvrHL5rQ5Uudd4vD56xB1fs3b2lMA==", - "dependencies": { - "@babel/runtime": "^7.0.0", - "@loaders.gl/3d-tiles": "^3.4.13", - "@loaders.gl/gis": "^3.4.13", - "@loaders.gl/loader-utils": "^3.4.13", - "@loaders.gl/mvt": "^3.4.13", - "@loaders.gl/schema": "^3.4.13", - "@loaders.gl/terrain": "^3.4.13", - "@loaders.gl/tiles": "^3.4.13", - "@loaders.gl/wms": "^3.4.13", - "@luma.gl/constants": "^8.5.21", - "@luma.gl/experimental": "^8.5.21", - "@math.gl/core": "^3.6.2", - "@math.gl/culling": "^3.6.2", - "@math.gl/web-mercator": "^3.6.2", + "version": "9.0.33", + "resolved": "https://registry.npmjs.org/@deck.gl/geo-layers/-/geo-layers-9.0.33.tgz", + "integrity": "sha512-OmKfeliZclDIi24EfX/1geNR4gADKzRrF7M10oesREvTygkHdUxzeyEPpWqp0XS38qn80qfd3zttUN63+Vc0Bg==", + "dependencies": { + "@loaders.gl/3d-tiles": "^4.2.0", + "@loaders.gl/gis": "^4.2.0", + "@loaders.gl/loader-utils": "^4.2.0", + "@loaders.gl/mvt": "^4.2.0", + "@loaders.gl/schema": "^4.2.0", + "@loaders.gl/terrain": "^4.2.0", + "@loaders.gl/tiles": "^4.2.0", + "@loaders.gl/wms": "^4.2.0", + "@luma.gl/gltf": "~9.0.27", + "@luma.gl/shadertools": "~9.0.27", + "@math.gl/core": "^4.0.0", + "@math.gl/culling": "^4.0.0", + "@math.gl/web-mercator": "^4.0.0", "@types/geojson": "^7946.0.8", - "h3-js": "^3.7.0", + "h3-js": "^4.1.0", "long": "^3.2.0" }, "peerDependencies": { - "@deck.gl/core": "^8.0.0", - "@deck.gl/extensions": "^8.0.0", - "@deck.gl/layers": "^8.0.0", - "@deck.gl/mesh-layers": "^8.0.0", - "@loaders.gl/core": "^3.4.13", - "@luma.gl/core": "^8.0.0" + "@deck.gl/core": "^9.0.0", + "@deck.gl/extensions": "^9.0.0", + "@deck.gl/layers": "^9.0.0", + "@deck.gl/mesh-layers": "^9.0.0", + "@loaders.gl/core": "^4.2.0", + "@luma.gl/core": "~9.0.0", + "@luma.gl/engine": "~9.0.0" } }, "node_modules/@deck.gl/json": { - "version": "8.9.35", - "resolved": "https://registry.npmjs.org/@deck.gl/json/-/json-8.9.35.tgz", - "integrity": "sha512-0mp4ckb1n0kRGPPFqtx6Q13uGNRBYGrpYN/NuibQZSW1EMNqmxTqSJekoqzXrlI1W6u35Tu9E5+DHpw9WJiJkg==", + "version": "9.0.33", + "resolved": "https://registry.npmjs.org/@deck.gl/json/-/json-9.0.33.tgz", + "integrity": "sha512-ZxIxWyVYyh1RJcZ1UwA1jH/cqv+KcSL39nJ6r24z9twuIgtWO3ezeEtHTwT/mnQGMfdHWcFwMTaDXUG8pOO2Iw==", "dependencies": { - "@babel/runtime": "^7.0.0", - "d3-dsv": "^1.0.8", - "expression-eval": "^2.0.0" + "jsep": "^0.3.0" }, "peerDependencies": { - "@deck.gl/core": "^8.0.0" + "@deck.gl/core": "^9.0.0" } }, "node_modules/@deck.gl/layers": { - "version": "8.9.35", - "resolved": "https://registry.npmjs.org/@deck.gl/layers/-/layers-8.9.35.tgz", - "integrity": "sha512-4amaGO+tGvaCNi2KZ90twmajGh5xUAaQzBIyh42dnM10GRj/62sOIYD9uT032oV/KpjKY+TfOstx5ooXBGKDjg==", - "dependencies": { - "@babel/runtime": "^7.0.0", - "@loaders.gl/images": "^3.4.13", - "@loaders.gl/schema": "^3.4.13", - "@luma.gl/constants": "^8.5.21", + "version": "9.0.33", + "resolved": "https://registry.npmjs.org/@deck.gl/layers/-/layers-9.0.33.tgz", + "integrity": "sha512-PBtxOuSq5QmlQ1N27FUIC3sC5iLFqAsdyEXUkjzWMPdLGjeow5xx32j3E0iag//ShgW4jiffS1dqgYywbjwYhg==", + "dependencies": { + "@loaders.gl/images": "^4.2.0", + "@loaders.gl/schema": "^4.2.0", "@mapbox/tiny-sdf": "^2.0.5", - "@math.gl/core": "^3.6.2", - "@math.gl/polygon": "^3.6.2", - "@math.gl/web-mercator": "^3.6.2", + "@math.gl/core": "^4.0.0", + "@math.gl/polygon": "^4.0.0", + "@math.gl/web-mercator": "^4.0.0", "earcut": "^2.2.4" }, "peerDependencies": { - "@deck.gl/core": "^8.0.0", - "@loaders.gl/core": "^3.4.13", - "@luma.gl/core": "^8.0.0" + "@deck.gl/core": "^9.0.0", + "@loaders.gl/core": "^4.2.0", + "@luma.gl/core": "~9.0.0", + "@luma.gl/engine": "~9.0.0" } }, "node_modules/@deck.gl/mesh-layers": { - "version": "8.9.35", - "resolved": "https://registry.npmjs.org/@deck.gl/mesh-layers/-/mesh-layers-8.9.35.tgz", - "integrity": "sha512-0l7+zi/6bkYVz7zZ0J4+WLoxOh+hFMPUQKCujTOcqYWbvJ2fEQze0Z1ZHCAG0RQOFJITEMamDigo9dN2BMxPBA==", + "version": "9.0.33", + "resolved": "https://registry.npmjs.org/@deck.gl/mesh-layers/-/mesh-layers-9.0.33.tgz", + "integrity": "sha512-iN57iZ4Vq+/8polkVuJ7PsIOUpJbUVrRYywTGQgm8PaJ4WrN3wigo0fcrKfDzts7O2fluh37qg8aGNRBLuqMFQ==", "dependencies": { - "@babel/runtime": "^7.0.0", - "@loaders.gl/gltf": "^3.4.13", - "@luma.gl/constants": "^8.5.21", - "@luma.gl/experimental": "^8.5.21", - "@luma.gl/shadertools": "^8.5.21" + "@loaders.gl/gltf": "^4.2.0", + "@luma.gl/gltf": "~9.0.27", + "@luma.gl/shadertools": "~9.0.27" }, "peerDependencies": { - "@deck.gl/core": "^8.0.0", - "@luma.gl/core": "^8.0.0" + "@deck.gl/core": "^9.0.0", + "@luma.gl/core": "~9.0.0", + "@luma.gl/engine": "~9.0.0" } }, "node_modules/@deck.gl/react": { - "version": "8.9.35", - "resolved": "https://registry.npmjs.org/@deck.gl/react/-/react-8.9.35.tgz", - "integrity": "sha512-eDwYCeBBzHXIpgZbAxcAEnpjnAoMiWcec8rMgYot7VOB+RnBTPYUaO3GPPImlk1uiezNGQel0YK4OLI1f6cDHg==", - "dependencies": { - "@babel/runtime": "^7.0.0" - }, + "version": "9.0.33", + "resolved": "https://registry.npmjs.org/@deck.gl/react/-/react-9.0.33.tgz", + "integrity": "sha512-ka9QAfv3GxqQJtXjyGcIjMFR8d24dEaaQ53qSjjWgb8gLjb+RQSKZ7YB18VMX1g3iq7xyDRJ3LobcRA14m0SEA==", "peerDependencies": { - "@deck.gl/core": "^8.0.0", - "@types/react": ">= 16.3", - "react": ">=16.3", - "react-dom": ">=16.3" + "@deck.gl/core": "^9.0.0", + "react": ">=16.3.0", + "react-dom": ">=16.3.0" } }, "node_modules/@emerson-eps/color-tables": { - "version": "0.4.80", - "resolved": "https://registry.npmjs.org/@emerson-eps/color-tables/-/color-tables-0.4.80.tgz", - "integrity": "sha512-2G0u+ZOREJA4g1Tmj9FQYCUDZdC6FP2740ps47jyq9r4a9aYQn8dGOipmtjkwQcV3LANk4G6xDEL4nJbILfWWg==", + "version": "0.4.85", + "resolved": "https://registry.npmjs.org/@emerson-eps/color-tables/-/color-tables-0.4.85.tgz", + "integrity": "sha512-tR6574hmxSkdsEeepd11hf2DQ3zvLMQPh4pRkTkbQdbaGWa9f66Infpyc6rICaN/aZe9aZ9V5yteCLYDnvdqkw==", "dependencies": { "@emotion/react": "^11.11.4", - "@emotion/styled": "^11.10.0", + "@emotion/styled": "^11.11.5", "d3": "^7.8.4", "d3-color": "^3.0.1", "d3-interpolate": "^3.0.1", @@ -661,15 +723,15 @@ } }, "node_modules/@emotion/babel-plugin": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", + "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/serialize": "^1.1.2", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.2.0", "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", @@ -678,6 +740,11 @@ "stylis": "4.2.0" } }, + "node_modules/@emotion/babel-plugin/node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" + }, "node_modules/@emotion/cache": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", @@ -691,9 +758,9 @@ } }, "node_modules/@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" }, "node_modules/@emotion/is-prop-valid": { "version": "1.2.2", @@ -732,33 +799,43 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", - "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.2.tgz", + "integrity": "sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==", "dependencies": { - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/unitless": "^0.8.1", - "@emotion/utils": "^1.2.1", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.1", "csstype": "^3.0.2" } }, + "node_modules/@emotion/serialize/node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" + }, + "node_modules/@emotion/serialize/node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" + }, "node_modules/@emotion/sheet": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" }, "node_modules/@emotion/styled": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", - "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", + "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/is-prop-valid": "^1.2.1", - "@emotion/serialize": "^1.1.2", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1" + "@emotion/babel-plugin": "^11.12.0", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0" }, "peerDependencies": { "@emotion/react": "^11.0.0-rc.0", @@ -770,23 +847,37 @@ } } }, + "node_modules/@emotion/styled/node_modules/@emotion/is-prop-valid": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", + "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/styled/node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" + }, "node_modules/@emotion/unitless": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "peer": true }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", + "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", "peerDependencies": { "react": ">=16.8.0" } }, "node_modules/@emotion/utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.1.tgz", + "integrity": "sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==" }, "node_modules/@emotion/weak-memoize": { "version": "0.3.1", @@ -1674,21 +1765,27 @@ "dev": true }, "node_modules/@loaders.gl/3d-tiles": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/3d-tiles/-/3d-tiles-3.4.15.tgz", - "integrity": "sha512-JR67bEfLrD7Lzb6pWyEIRg2L6W3n6y43DKcWofRLpwPqLA7qHuY7SlO7E72Lz7Tniye8VhawqY1wO8gCx8T72Q==", - "dependencies": { - "@loaders.gl/draco": "3.4.15", - "@loaders.gl/gltf": "3.4.15", - "@loaders.gl/loader-utils": "3.4.15", - "@loaders.gl/math": "3.4.15", - "@loaders.gl/tiles": "3.4.15", - "@math.gl/core": "^3.5.1", - "@math.gl/geospatial": "^3.5.1", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/3d-tiles/-/3d-tiles-4.2.5.tgz", + "integrity": "sha512-X5BEuReV2i/HQbhV47UMqRD25Bf6EmlNICB5U5bsvxJL5GgBzS9XmuiHCSkhzr9128bfilwkVYclRvdhbLrlTw==", + "dependencies": { + "@loaders.gl/compression": "4.2.5", + "@loaders.gl/crypto": "4.2.5", + "@loaders.gl/draco": "4.2.5", + "@loaders.gl/gltf": "4.2.5", + "@loaders.gl/images": "4.2.5", + "@loaders.gl/loader-utils": "4.2.5", + "@loaders.gl/math": "4.2.5", + "@loaders.gl/tiles": "4.2.5", + "@loaders.gl/zip": "4.2.5", + "@math.gl/core": "^4.0.1", + "@math.gl/culling": "^4.0.1", + "@math.gl/geospatial": "^4.0.1", + "@probe.gl/log": "^4.0.4", "long": "^5.2.1" }, "peerDependencies": { - "@loaders.gl/core": "^3.4.0" + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@loaders.gl/3d-tiles/node_modules/long": { @@ -1696,260 +1793,405 @@ "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, + "node_modules/@loaders.gl/compression": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/compression/-/compression-4.2.5.tgz", + "integrity": "sha512-6uDGTA+gBejLxOj70Taj80oDyTzk1tqFgYTex37A4gckV0A/HGN9tBYuUxyKXB8jhXtlsVOfD27ZvXeVAUpEYQ==", + "dependencies": { + "@loaders.gl/loader-utils": "4.2.5", + "@loaders.gl/worker-utils": "4.2.5", + "@types/brotli": "^1.3.0", + "@types/pako": "^1.0.1", + "fflate": "0.7.4", + "lzo-wasm": "^0.0.4", + "pako": "1.0.11", + "snappyjs": "^0.6.1" + }, + "optionalDependencies": { + "brotli": "^1.3.2", + "lz4js": "^0.2.0", + "zstd-codec": "^0.1" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" + } + }, "node_modules/@loaders.gl/core": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/core/-/core-3.4.15.tgz", - "integrity": "sha512-rPOOTuusWlRRNMWg7hymZBoFmPCXWThsA5ZYRfqqXnsgVeQIi8hzcAhJ7zDUIFAd/OSR8ravtqb0SH+3k6MOFQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/core/-/core-4.2.5.tgz", + "integrity": "sha512-cN0QzNvdTU0Xy8sSUoUXzPkeIQ31tLHYTxoOrVwR33dndYu8OKeDlhLWTc87PF2oXSGegdNZD453Vm+Q/UZHPA==", + "dependencies": { + "@loaders.gl/loader-utils": "4.2.5", + "@loaders.gl/schema": "4.2.5", + "@loaders.gl/worker-utils": "4.2.5", + "@probe.gl/log": "^4.0.2" + } + }, + "node_modules/@loaders.gl/crypto": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/crypto/-/crypto-4.2.5.tgz", + "integrity": "sha512-ylu0IwJMSuEUfpVB3bFSKSMfamMOFcCgAtwwbXdmRgG9vY2MFHTNe8XgaMQXEvgdSpAsPJ6DDAhE7EMsWEueoA==", "dependencies": { - "@babel/runtime": "^7.3.1", - "@loaders.gl/loader-utils": "3.4.15", - "@loaders.gl/worker-utils": "3.4.15", - "@probe.gl/log": "^3.5.0" + "@loaders.gl/loader-utils": "4.2.5", + "@loaders.gl/worker-utils": "4.2.5", + "@types/crypto-js": "^4.0.2" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@loaders.gl/draco": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/draco/-/draco-3.4.15.tgz", - "integrity": "sha512-SStmyP0ZnS4JbWZb2NhrfiHW65uy3pVTTzQDTgXfkR5cD9oDAEu4nCaHbQ8x38/m39FHliCPgS9b1xWvLKQo8w==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/draco/-/draco-4.2.5.tgz", + "integrity": "sha512-d0i+e162uxXZXNvPfzq+r1Oczo2lDFNvGxrnI7hg5cGDSb395K7RkNgKkTno2X42izqAsrrjXm0H0d4kpe9bng==", "dependencies": { - "@babel/runtime": "^7.3.1", - "@loaders.gl/loader-utils": "3.4.15", - "@loaders.gl/schema": "3.4.15", - "@loaders.gl/worker-utils": "3.4.15", - "draco3d": "1.5.5" + "@loaders.gl/loader-utils": "4.2.5", + "@loaders.gl/schema": "4.2.5", + "@loaders.gl/worker-utils": "4.2.5", + "draco3d": "1.5.7" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@loaders.gl/gis": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/gis/-/gis-3.4.15.tgz", - "integrity": "sha512-h+LJI35P6ze8DFPSUylTKuml0l4HIfHMczML6u+ZXG6E2w5tbdM3Eh5AzHjXGQPuwUnaYPn3Mq/2t2N1rz98pg==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/gis/-/gis-4.2.5.tgz", + "integrity": "sha512-ydRC6oEQZkxjlqec5jI3MP04Upnz4jS97q7UH4m/p3+EBb/Lp+TlC9iulLWh+ZyN4LjXRv6Rp3eQ1UpPvzXrEg==", "dependencies": { - "@loaders.gl/loader-utils": "3.4.15", - "@loaders.gl/schema": "3.4.15", + "@loaders.gl/loader-utils": "4.2.5", + "@loaders.gl/schema": "4.2.5", "@mapbox/vector-tile": "^1.3.1", - "@math.gl/polygon": "^3.5.1", + "@math.gl/polygon": "^4.0.0", "pbf": "^3.2.1" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@loaders.gl/gltf": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/gltf/-/gltf-3.4.15.tgz", - "integrity": "sha512-Y6kMNPLiHQPr6aWQw/4BMTxgPHWx3fcib4LPpZCbhyfM8PRn6pOqATVngUXdoOf5XY0QtdKVld6N1kxlr4pJtw==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/gltf/-/gltf-4.2.5.tgz", + "integrity": "sha512-QmWs4G11S1/hQ07hJYeDjRJOaHVE6SbCKZpawczfjMam2WVe9P1ibeafPjR5BpaAYh5OVgVEELtGgvn00UfAeQ==", "dependencies": { - "@loaders.gl/draco": "3.4.15", - "@loaders.gl/images": "3.4.15", - "@loaders.gl/loader-utils": "3.4.15", - "@loaders.gl/textures": "3.4.15", - "@math.gl/core": "^3.5.1" + "@loaders.gl/draco": "4.2.5", + "@loaders.gl/images": "4.2.5", + "@loaders.gl/loader-utils": "4.2.5", + "@loaders.gl/schema": "4.2.5", + "@loaders.gl/textures": "4.2.5", + "@math.gl/core": "^4.0.0" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" + } + }, + "node_modules/@loaders.gl/i3s": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/i3s/-/i3s-4.2.5.tgz", + "integrity": "sha512-qEiFqf3zchvZ8pbMpKDnMhnSf9InVggXY/8e9QiLPRKS3tFf6JKvVfqYK4nGkGw2/OApe119+EVhehOyPBBZww==", + "peer": true, + "dependencies": { + "@loaders.gl/compression": "4.2.5", + "@loaders.gl/crypto": "4.2.5", + "@loaders.gl/draco": "4.2.5", + "@loaders.gl/images": "4.2.5", + "@loaders.gl/loader-utils": "4.2.5", + "@loaders.gl/math": "4.2.5", + "@loaders.gl/schema": "4.2.5", + "@loaders.gl/textures": "4.2.5", + "@loaders.gl/tiles": "4.2.5", + "@loaders.gl/zip": "4.2.5", + "@math.gl/core": "^4.0.0", + "@math.gl/culling": "^4.0.0", + "@math.gl/geospatial": "^4.0.0" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@loaders.gl/images": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/images/-/images-3.4.15.tgz", - "integrity": "sha512-QpjYhEetHabY/z9mWZYJXZZp4XJAxa38f9Ii/DjPlnJErepzY5GLBUTDHMu4oZ6n99gGImtuGFicDnFV6mb60g==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/images/-/images-4.2.5.tgz", + "integrity": "sha512-N4FakP5WT8KuSDnl3jBYHOgILV6LEDamdZaGTIzzlYfHWZoyKjc+3vTz5G5ZBxcURp2oiwAlWSbs3V4eINEVAQ==", "dependencies": { - "@loaders.gl/loader-utils": "3.4.15" + "@loaders.gl/loader-utils": "4.2.5" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@loaders.gl/loader-utils": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/loader-utils/-/loader-utils-3.4.15.tgz", - "integrity": "sha512-uUx6tCaky6QgCRkqCNuuXiUfpTzKV+ZlJOf6C9bKp62lpvFOv9AwqoXmL23j8nfsENdlzsX3vPhc3en6QQyksA==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/loader-utils/-/loader-utils-4.2.5.tgz", + "integrity": "sha512-OxvDeaqNbj/XGSfBgUE9SFxX94v9pDlPy6yg2SoOKX5HxF51jLd4+7tYayy8Kg95Xog9hy0AOR65mjwPcYBvOA==", "dependencies": { - "@babel/runtime": "^7.3.1", - "@loaders.gl/worker-utils": "3.4.15", - "@probe.gl/stats": "^3.5.0" + "@loaders.gl/schema": "4.2.5", + "@loaders.gl/worker-utils": "4.2.5", + "@probe.gl/stats": "^4.0.2" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@loaders.gl/math": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/math/-/math-3.4.15.tgz", - "integrity": "sha512-zTN8BUU/1fcppyVc8WzvdZcCyNGVYmNinxcn/A+a7mi1ug4OBGwEsZOj09Wjg0/s52c/cAL3h9ylPIZdjntscQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/math/-/math-4.2.5.tgz", + "integrity": "sha512-5XXjAhsuZogJGXtJ8zx+7VAhB6BaTIZFYAT+e6S0ZXjFAkDUBYYX2xyzyOGAjEbzbNTlMMhbTVK50VaTgHhXDQ==", "dependencies": { - "@loaders.gl/images": "3.4.15", - "@loaders.gl/loader-utils": "3.4.15", - "@math.gl/core": "^3.5.1" + "@loaders.gl/images": "4.2.5", + "@loaders.gl/loader-utils": "4.2.5", + "@math.gl/core": "^4.0.0" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@loaders.gl/mvt": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/mvt/-/mvt-3.4.15.tgz", - "integrity": "sha512-Q8e1ZyfNkJtPF/C4WSZ2qhWDEbzOvquP7OyG1NzQ2cp8R6eUfbexu48IgcnL/oAu8VPql3zIxQ+bQUyDReyN5g==", - "dependencies": { - "@loaders.gl/gis": "3.4.15", - "@loaders.gl/loader-utils": "3.4.15", - "@loaders.gl/schema": "3.4.15", - "@math.gl/polygon": "^3.5.1", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/mvt/-/mvt-4.2.5.tgz", + "integrity": "sha512-fqcUd2y7F580gYBNkyKGN7aDsyrJ8jL5vHUDUQxwjsNFiA3+8j/VnFJJxqSzXvBmxdz5sg5UF6Fr5lHKSCyeLA==", + "dependencies": { + "@loaders.gl/gis": "4.2.5", + "@loaders.gl/images": "4.2.5", + "@loaders.gl/loader-utils": "4.2.5", + "@loaders.gl/schema": "4.2.5", + "@math.gl/polygon": "^4.0.0", "pbf": "^3.2.1" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@loaders.gl/schema": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/schema/-/schema-3.4.15.tgz", - "integrity": "sha512-8oRtstz0IsqES7eZd2jQbmCnmExCMtL8T6jWd1+BfmnuyZnQ0B6TNccy++NHtffHdYuzEoQgSELwcdmhSApYew==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/schema/-/schema-4.2.5.tgz", + "integrity": "sha512-HzDUMApIGx/261gKIEO0Rz/5pmtUwEz27EgfAn0SRb4PCyxTBFlvS/w1DYO909AuxNtSVokUv3aml91Stb9XTA==", "dependencies": { "@types/geojson": "^7946.0.7" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@loaders.gl/terrain": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/terrain/-/terrain-3.4.15.tgz", - "integrity": "sha512-ouv41J84uOnLEtXLM+iPEPFfeq7aRgIOls6esdvhBx2/dXJRNkt8Mx0wShXAi8VNHz77D+gZFrKARa7wqjmftg==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "@loaders.gl/images": "3.4.15", - "@loaders.gl/loader-utils": "3.4.15", - "@loaders.gl/schema": "3.4.15", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/terrain/-/terrain-4.2.5.tgz", + "integrity": "sha512-jdX+M/+Fs1J9gxXlUVQ0YxlTpn2PDQ9xV1UbQiDL2iZKSi0kx7ToKBgy5CxTSwOB0tyeIo7B0bmyTo8t8Isptg==", + "dependencies": { + "@loaders.gl/images": "4.2.5", + "@loaders.gl/loader-utils": "4.2.5", + "@loaders.gl/schema": "4.2.5", "@mapbox/martini": "^0.2.0" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@loaders.gl/textures": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/textures/-/textures-3.4.15.tgz", - "integrity": "sha512-QHnmxBYtLvTdG1uMz2KWcxVY8KPb1+XyPJUoZV9GMcQkulz+CwFB8BaX8nROfMDz9KKYoPfksCzjig0LZ0WBJQ==", - "dependencies": { - "@loaders.gl/images": "3.4.15", - "@loaders.gl/loader-utils": "3.4.15", - "@loaders.gl/schema": "3.4.15", - "@loaders.gl/worker-utils": "3.4.15", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/textures/-/textures-4.2.5.tgz", + "integrity": "sha512-hhDhotF9BEskwabdeELKdGIpkYyhwHhJELUFcU0DPQL7LrJare83/4tdeyyp48sbt+e5HQcdKVotFFa0cfA7Tw==", + "dependencies": { + "@loaders.gl/images": "4.2.5", + "@loaders.gl/loader-utils": "4.2.5", + "@loaders.gl/schema": "4.2.5", + "@loaders.gl/worker-utils": "4.2.5", + "@math.gl/types": "^4.0.1", "ktx-parse": "^0.0.4", "texture-compressor": "^1.0.2" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@loaders.gl/tiles": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/tiles/-/tiles-3.4.15.tgz", - "integrity": "sha512-o85aRSXq+YeVSK2ndW9aBwTMi5FhEsQ7k18J4DG+T5Oc+zz3tKui5X1SuBDiKbQN+kYtFpj0oYO1QG3ndNI6jg==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/tiles/-/tiles-4.2.5.tgz", + "integrity": "sha512-AyQnpI1/N8KI9xVw1LeBXLDNgdBowxOh7GJYmoG6wSzDUSxJLZ/bJLAWC2v9ovN5fz2gaW2cH3SLg5jXLn0rZg==", "dependencies": { - "@loaders.gl/loader-utils": "3.4.15", - "@loaders.gl/math": "3.4.15", - "@math.gl/core": "^3.5.1", - "@math.gl/culling": "^3.5.1", - "@math.gl/geospatial": "^3.5.1", - "@math.gl/web-mercator": "^3.5.1", - "@probe.gl/stats": "^3.5.0" + "@loaders.gl/loader-utils": "4.2.5", + "@loaders.gl/math": "4.2.5", + "@math.gl/core": "^4.0.0", + "@math.gl/culling": "^4.0.0", + "@math.gl/geospatial": "^4.0.0", + "@math.gl/web-mercator": "^4.0.0", + "@probe.gl/stats": "^4.0.2" }, "peerDependencies": { - "@loaders.gl/core": "^3.4.0" + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@loaders.gl/wms": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/wms/-/wms-3.4.15.tgz", - "integrity": "sha512-zY++Oxx+cNGF9ptuSTFxCmEnpRbR5VZYjvyLraylaRbuynZv+JiWrehymFzEfq3hJcQ/cGvIjaG6rSVtPuqCIA==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "@loaders.gl/images": "3.4.15", - "@loaders.gl/loader-utils": "3.4.15", - "@loaders.gl/schema": "3.4.15", - "@loaders.gl/xml": "3.4.15", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/wms/-/wms-4.2.5.tgz", + "integrity": "sha512-6/dZnOSQaVy94JSoFB15jRMo41x2E29QX58bBqR6juInYviYWUaGTa4BCj+s+M3hP0/CzkklK2zrPOX7E0xhGw==", + "dependencies": { + "@loaders.gl/images": "4.2.5", + "@loaders.gl/loader-utils": "4.2.5", + "@loaders.gl/schema": "4.2.5", + "@loaders.gl/xml": "4.2.5", "@turf/rewind": "^5.1.5", - "deep-strict-equal": "^0.2.0", - "lerc": "^4.0.1" + "deep-strict-equal": "^0.2.0" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" } }, - "node_modules/@loaders.gl/worker-utils": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/worker-utils/-/worker-utils-3.4.15.tgz", - "integrity": "sha512-zUUepOYRYmcYIcr/c4Mchox9h5fBFNkD81rsGnLlZyq19QvyHzN+93SVxrLc078gw93t2RKrVcOOZY13zT3t1w==", + "node_modules/@loaders.gl/wms/node_modules/@turf/boolean-clockwise": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-5.1.5.tgz", + "integrity": "sha512-FqbmEEOJ4rU4/2t7FKx0HUWmjFEVqR+NJrFP7ymGSjja2SQ7Q91nnBihGuT+yuHHl6ElMjQ3ttsB/eTmyCycxA==", + "dependencies": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "node_modules/@loaders.gl/wms/node_modules/@turf/clone": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-5.1.5.tgz", + "integrity": "sha512-//pITsQ8xUdcQ9pVb4JqXiSqG4dos5Q9N4sYFoWghX21tfOV2dhc5TGqYOhnHrQS7RiKQL1vQ48kIK34gQ5oRg==", + "dependencies": { + "@turf/helpers": "^5.1.5" + } + }, + "node_modules/@loaders.gl/wms/node_modules/@turf/helpers": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz", + "integrity": "sha512-/lF+JR+qNDHZ8bF9d+Cp58nxtZWJ3sqFe6n3u3Vpj+/0cqkjk4nXKYBSY0azm+GIYB5mWKxUXvuP/m0ZnKj1bw==" + }, + "node_modules/@loaders.gl/wms/node_modules/@turf/invariant": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz", + "integrity": "sha512-28RCBGvCYsajVkw2EydpzLdcYyhSA77LovuOvgCJplJWaNVyJYH6BOR3HR9w50MEkPqb/Vc/jdo6I6ermlRtQA==", "dependencies": { - "@babel/runtime": "^7.3.1" + "@turf/helpers": "^5.1.5" + } + }, + "node_modules/@loaders.gl/wms/node_modules/@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha512-ZjQ3Ii62X9FjnK4hhdsbT+64AYRpaI8XMBMcyftEOGSmPMUVnkbvuv3C9geuElAXfQU7Zk1oWGOcrGOD9zr78Q==", + "dependencies": { + "@turf/helpers": "^5.1.5" + } + }, + "node_modules/@loaders.gl/wms/node_modules/@turf/rewind": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-5.1.5.tgz", + "integrity": "sha512-Gdem7JXNu+G4hMllQHXRFRihJl3+pNl7qY+l4qhQFxq+hiU1cQoVFnyoleIqWKIrdK/i2YubaSwc3SCM7N5mMw==", + "dependencies": { + "@turf/boolean-clockwise": "^5.1.5", + "@turf/clone": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "node_modules/@loaders.gl/worker-utils": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/worker-utils/-/worker-utils-4.2.5.tgz", + "integrity": "sha512-C8yrik+mIwd5WrnbOMQ7gIBFCTk78pm9+x7OgH6PmaRlkss1S5exvIyQ4CCjlWPp27MCygy9iLvzImP9kbELKg==", + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@loaders.gl/xml": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@loaders.gl/xml/-/xml-3.4.15.tgz", - "integrity": "sha512-iMWHaDzYSe8JoS8W5k9IbxQ6S3VHPr7M+UBejIVeYGCp1jzWF0ri498olwJWWDRvg4kqAWolrkj8Pcgkg8Jf8A==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/xml/-/xml-4.2.5.tgz", + "integrity": "sha512-2ga1ye7T5ET1IPNErYXgI8QQ5Prz3MlnClgOXBYLGDfp1LLb4HepGtNnlD+Robx5cq98ux6DdFWEXXs+wxaY8Q==", "dependencies": { - "@babel/runtime": "^7.3.1", - "@loaders.gl/loader-utils": "3.4.15", - "@loaders.gl/schema": "3.4.15", + "@loaders.gl/loader-utils": "4.2.5", + "@loaders.gl/schema": "4.2.5", "fast-xml-parser": "^4.2.5" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" + } + }, + "node_modules/@loaders.gl/zip": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@loaders.gl/zip/-/zip-4.2.5.tgz", + "integrity": "sha512-XF+5/v5xFh+a1w9Zp8pJYC0QvRk6V2IPgUs/yFiliqKvLTNLAWDBuvKiUfLYz9QROXjqD/XRkSiMRIUGwa0UOA==", + "dependencies": { + "@loaders.gl/compression": "4.2.5", + "@loaders.gl/crypto": "4.2.5", + "@loaders.gl/loader-utils": "4.2.5", + "jszip": "^3.1.5", + "md5": "^2.3.0" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.0.0" } }, "node_modules/@luma.gl/constants": { - "version": "8.5.21", - "resolved": "https://registry.npmjs.org/@luma.gl/constants/-/constants-8.5.21.tgz", - "integrity": "sha512-aJxayGxTT+IRd1vfpcgD/cKSCiVJjBNiuiChS96VulrmCvkzUOLvYXr42y5qKB4RyR7vOIda5uQprNzoHrhQAA==" + "version": "9.0.27", + "resolved": "https://registry.npmjs.org/@luma.gl/constants/-/constants-9.0.27.tgz", + "integrity": "sha512-NBkMim3u0xt4UDe4e69L6E/pq5XNxfX60GrggJDzfilVRfIbx5XwKhBXTyNjjtNEk4oc6uYLHWd/05jGRHcfLg==" }, "node_modules/@luma.gl/core": { - "version": "8.5.21", - "resolved": "https://registry.npmjs.org/@luma.gl/core/-/core-8.5.21.tgz", - "integrity": "sha512-11jQJQEMoR/IN2oIsd4zFxiQJk6FE+xgVIMUcsCTBuzafTtQZ8Po9df8mt+MVewpDyBlTVs6g8nxHRH4np1ukA==", - "dependencies": { - "@babel/runtime": "^7.0.0", - "@luma.gl/constants": "8.5.21", - "@luma.gl/engine": "8.5.21", - "@luma.gl/gltools": "8.5.21", - "@luma.gl/shadertools": "8.5.21", - "@luma.gl/webgl": "8.5.21" + "version": "9.0.27", + "resolved": "https://registry.npmjs.org/@luma.gl/core/-/core-9.0.27.tgz", + "integrity": "sha512-7OXM8ZknTuqt10nL8XHg3YzaHESzU2pSh+6BknLJbLM+UjNWOkDHArF6pRYu96Om0QsnOMK/RXKqXBr+Ni0gvw==", + "dependencies": { + "@math.gl/types": "^4.0.0", + "@probe.gl/env": "^4.0.2", + "@probe.gl/log": "^4.0.2", + "@probe.gl/stats": "^4.0.2", + "@types/offscreencanvas": "^2019.6.4" } }, "node_modules/@luma.gl/engine": { - "version": "8.5.21", - "resolved": "https://registry.npmjs.org/@luma.gl/engine/-/engine-8.5.21.tgz", - "integrity": "sha512-IG3WQSKXFNUEs8QG7ZjHtGiOtsakUu+BAxtJ6997A6/F06yynZ44tPe5NU70jG9Yfu3kV0LykPZg7hO3vXZDiA==", - "dependencies": { - "@babel/runtime": "^7.0.0", - "@luma.gl/constants": "8.5.21", - "@luma.gl/gltools": "8.5.21", - "@luma.gl/shadertools": "8.5.21", - "@luma.gl/webgl": "8.5.21", - "@math.gl/core": "^3.5.0", - "@probe.gl/env": "^3.5.0", - "@probe.gl/stats": "^3.5.0", - "@types/offscreencanvas": "^2019.7.0" - } - }, - "node_modules/@luma.gl/experimental": { - "version": "8.5.21", - "resolved": "https://registry.npmjs.org/@luma.gl/experimental/-/experimental-8.5.21.tgz", - "integrity": "sha512-uFKPChGofyihOKxtqJy78QCQCDFnuMTK4QHrUX/qiTnvFSO8BgtTUevKvWGN9lBvq+uDD0lSieeF9yBzhQfAzw==", + "version": "9.0.27", + "resolved": "https://registry.npmjs.org/@luma.gl/engine/-/engine-9.0.27.tgz", + "integrity": "sha512-O4e7RbIjBJX5WLs8HJLjpccYEkcans4pz8+TI8Y7BO7gDq9ZbEASbVd5CT53jFLfTjnRuqAOpElfaXwQ/B7oWg==", "dependencies": { - "@luma.gl/constants": "8.5.21", - "@math.gl/core": "^3.5.0", - "earcut": "^2.0.6" + "@luma.gl/shadertools": "9.0.27", + "@math.gl/core": "^4.0.0", + "@probe.gl/log": "^4.0.2", + "@probe.gl/stats": "^4.0.2" }, "peerDependencies": { - "@loaders.gl/gltf": "^3.0.0", - "@loaders.gl/images": "^3.0.0", - "@luma.gl/engine": "^8.4.0", - "@luma.gl/gltools": "^8.4.0", - "@luma.gl/shadertools": "^8.4.0", - "@luma.gl/webgl": "^8.4.0" + "@luma.gl/core": "^9.0.0" } }, - "node_modules/@luma.gl/gltools": { - "version": "8.5.21", - "resolved": "https://registry.npmjs.org/@luma.gl/gltools/-/gltools-8.5.21.tgz", - "integrity": "sha512-6qZ0LaT2Mxa4AJT5F44TFoaziokYiHUwO45vnM/NYUOIu9xevcmS6VtToawytMEACGL6PDeDyVqP3Y80SDzq5g==", + "node_modules/@luma.gl/gltf": { + "version": "9.0.27", + "resolved": "https://registry.npmjs.org/@luma.gl/gltf/-/gltf-9.0.27.tgz", + "integrity": "sha512-AeYdX25G35KKGnGVzIkrKl8ni9SWVo0VP/9lfMyEom3syIBYlWtkPLwJ2Gm6SU4ZZfcpWK/17UgK2r2TSWFIJw==", "dependencies": { - "@babel/runtime": "^7.0.0", - "@luma.gl/constants": "8.5.21", - "@probe.gl/env": "^3.5.0", - "@probe.gl/log": "^3.5.0", - "@types/offscreencanvas": "^2019.7.0" + "@loaders.gl/textures": "^4.2.0", + "@luma.gl/shadertools": "9.0.27", + "@math.gl/core": "^4.0.0" + }, + "peerDependencies": { + "@loaders.gl/core": "^4.2.0", + "@luma.gl/core": "^9.0.0", + "@luma.gl/engine": "^9.0.0" } }, "node_modules/@luma.gl/shadertools": { - "version": "8.5.21", - "resolved": "https://registry.npmjs.org/@luma.gl/shadertools/-/shadertools-8.5.21.tgz", - "integrity": "sha512-WQah7yFDJ8cNCLPYpIm3r0wSlXLvjoA279fcknmATvvkW3/i8PcCJ/nYEBJO3hHEwwMQxD16+YZu/uwGiifLMg==", + "version": "9.0.27", + "resolved": "https://registry.npmjs.org/@luma.gl/shadertools/-/shadertools-9.0.27.tgz", + "integrity": "sha512-JcOuYH2Fh4uljinXKbR04en1dqEthlJNdqV5efQ0fE9NetJul7Pkq+N1v/Oo8/vmJn9ZqEC49dgZHwtbzY8UnQ==", "dependencies": { - "@babel/runtime": "^7.0.0", - "@math.gl/core": "^3.5.0" + "@math.gl/core": "^4.0.0", + "@math.gl/types": "^4.0.0", + "wgsl_reflect": "^1.0.1" + }, + "peerDependencies": { + "@luma.gl/core": "^9.0.0" } }, "node_modules/@luma.gl/webgl": { - "version": "8.5.21", - "resolved": "https://registry.npmjs.org/@luma.gl/webgl/-/webgl-8.5.21.tgz", - "integrity": "sha512-ZVLO4W5UuaOlzZIwmFWhnmZ1gYoU97a+heMqxLrSSmCUAsSu3ZETUex9gOmzdM1WWxcdWaa3M68rvKCNEgwz0Q==", + "version": "9.0.27", + "resolved": "https://registry.npmjs.org/@luma.gl/webgl/-/webgl-9.0.27.tgz", + "integrity": "sha512-GOzOiDfTFgT4If1XSeCqXswKrgXVwTyuf/1W21Vv7fs5inub5p3LISmZglrt/RcdaGyXQQ5zEqf/+x67dGTeYw==", "dependencies": { - "@babel/runtime": "^7.0.0", - "@luma.gl/constants": "8.5.21", - "@luma.gl/gltools": "8.5.21", - "@probe.gl/env": "^3.5.0", - "@probe.gl/stats": "^3.5.0" + "@luma.gl/constants": "9.0.27", + "@probe.gl/env": "^4.0.2" + }, + "peerDependencies": { + "@luma.gl/core": "^9.0.0" } }, "node_modules/@mapbox/geojson-rewind": { @@ -2028,63 +2270,55 @@ } }, "node_modules/@math.gl/core": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@math.gl/core/-/core-3.6.3.tgz", - "integrity": "sha512-jBABmDkj5uuuE0dTDmwwss7Cup5ZwQ6Qb7h1pgvtkEutTrhkcv8SuItQNXmF45494yIHeoGue08NlyeY6wxq2A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@math.gl/core/-/core-4.1.0.tgz", + "integrity": "sha512-FrdHBCVG3QdrworwrUSzXIaK+/9OCRLscxI2OUy6sLOHyHgBMyfnEGs99/m3KNvs+95BsnQLWklVfpKfQzfwKA==", "dependencies": { - "@babel/runtime": "^7.12.0", - "@math.gl/types": "3.6.3", - "gl-matrix": "^3.4.0" + "@math.gl/types": "4.1.0" } }, "node_modules/@math.gl/culling": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@math.gl/culling/-/culling-3.6.3.tgz", - "integrity": "sha512-3UERXHbaPlM6pnTk2MI7LeQ5CoelDZzDzghTTcv+HdQCZsT/EOEuEdYimETHtSxiyiOmsX2Un65UBLYT/rbKZg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@math.gl/culling/-/culling-4.1.0.tgz", + "integrity": "sha512-jFmjFEACnP9kVl8qhZxFNhCyd47qPfSVmSvvjR0/dIL6R9oD5zhR1ub2gN16eKDO/UM7JF9OHKU3EBIfeR7gtg==", "dependencies": { - "@babel/runtime": "^7.12.0", - "@math.gl/core": "3.6.3", - "gl-matrix": "^3.4.0" + "@math.gl/core": "4.1.0", + "@math.gl/types": "4.1.0" } }, "node_modules/@math.gl/geospatial": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@math.gl/geospatial/-/geospatial-3.6.3.tgz", - "integrity": "sha512-6xf657lJnaecSarSzn02t0cnsCSkWb+39m4+im96v20dZTrLCWZ2glDQVzfuL91meDnDXjH4oyvynp12Mj5MFg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@math.gl/geospatial/-/geospatial-4.1.0.tgz", + "integrity": "sha512-BzsUhpVvnmleyYF6qdqJIip6FtIzJmnWuPTGhlBuPzh7VBHLonCFSPtQpbkRuoyAlbSyaGXcVt6p6lm9eK2vtg==", "dependencies": { - "@babel/runtime": "^7.12.0", - "@math.gl/core": "3.6.3", - "gl-matrix": "^3.4.0" + "@math.gl/core": "4.1.0", + "@math.gl/types": "4.1.0" } }, "node_modules/@math.gl/polygon": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@math.gl/polygon/-/polygon-3.6.3.tgz", - "integrity": "sha512-FivQ1ZnYcAss1wVifOkHP/ZnlfQy1IL/769uzNtiHxwUbW0kZG3yyOZ9I7fwyzR5Hvqt3ErJKHjSYZr0uVlz5g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@math.gl/polygon/-/polygon-4.1.0.tgz", + "integrity": "sha512-YA/9PzaCRHbIP5/0E9uTYrqe+jsYTQoqoDWhf6/b0Ixz8bPZBaGDEafLg3z7ffBomZLacUty9U3TlPjqMtzPjA==", "dependencies": { - "@math.gl/core": "3.6.3" + "@math.gl/core": "4.1.0" } }, "node_modules/@math.gl/sun": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@math.gl/sun/-/sun-3.6.3.tgz", - "integrity": "sha512-mrx6CGYYeTNSQttvcw0KVUy+35YDmnjMqpO/o0t06Vcghrt0HNruB/ScRgUSbJrgkbOg1Vcqm23HBd++clzQzw==", - "dependencies": { - "@babel/runtime": "^7.12.0" - } + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@math.gl/sun/-/sun-4.1.0.tgz", + "integrity": "sha512-i3q6OCBLSZ5wgZVhXg+X7gsjY/TUtuFW/2KBiq/U1ypLso3S4sEykoU/MGjxUv1xiiGtr+v8TeMbO1OBIh/HmA==" }, "node_modules/@math.gl/types": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@math.gl/types/-/types-3.6.3.tgz", - "integrity": "sha512-3uWLVXHY3jQxsXCr/UCNPSc2BG0hNUljhmOBt9l+lNFDp7zHgm0cK2Tw4kj2XfkJy4TgwZTBGwRDQgWEbLbdTA==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@math.gl/types/-/types-4.1.0.tgz", + "integrity": "sha512-clYZdHcmRvMzVK5fjeDkQlHUzXQSNdZ7s4xOqC3nJPgz4C/TZkUecTo9YS4PruZqtDda/ag4erndP0MIn40dGA==" }, "node_modules/@math.gl/web-mercator": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.6.3.tgz", - "integrity": "sha512-UVrkSOs02YLehKaehrxhAejYMurehIHPfFQvPFZmdJHglHOU4V2cCUApTVEwOksvCp161ypEqVp+9H6mGhTTcw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-4.1.0.tgz", + "integrity": "sha512-HZo3vO5GCMkXJThxRJ5/QYUYRr3XumfT8CzNNCwoJfinxy5NtKUd7dusNTXn7yJ40UoB8FMIwkVwNlqaiRZZAw==", "dependencies": { - "@babel/runtime": "^7.12.0", - "gl-matrix": "^3.4.0" + "@math.gl/core": "4.1.0" } }, "node_modules/@mui/base": { @@ -2334,87 +2568,6 @@ "react": "^17.0.0 || ^18.0.0" } }, - "node_modules/@nebula.gl/edit-modes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@nebula.gl/edit-modes/-/edit-modes-1.0.4.tgz", - "integrity": "sha512-x0t73q2wmiVLK15+0DnkpsO7e7L69dZ/3xISEZlo/2pEJc0op2UCJ7BynRyuZq6Bb8ZvwJCVjyspaUGYQqabNg==", - "dependencies": { - "@turf/along": ">=6.3.0", - "@turf/area": ">=4.0.0", - "@turf/bbox": ">=4.0.0", - "@turf/bbox-polygon": ">=4.0.0", - "@turf/bearing": ">=4.0.0", - "@turf/boolean-point-in-polygon": ">=4.0.0", - "@turf/buffer": ">=4.0.0", - "@turf/center": ">=4.0.0", - "@turf/centroid": ">=4.0.0", - "@turf/circle": ">=4.0.0", - "@turf/destination": ">=4.0.0", - "@turf/difference": ">=4.0.0", - "@turf/distance": ">=4.0.0", - "@turf/ellipse": ">=4.0.0", - "@turf/helpers": ">=4.0.0", - "@turf/intersect": ">=4.0.0", - "@turf/line-intersect": ">=4.0.0", - "@turf/midpoint": ">=4.0.0", - "@turf/nearest-point-on-line": ">=4.0.0", - "@turf/point-to-line-distance": ">=4.0.0", - "@turf/polygon-to-line": ">=4.0.0", - "@turf/rewind": ">=4.0.0", - "@turf/transform-rotate": ">=4.0.0", - "@turf/transform-scale": ">=4.0.0", - "@turf/transform-translate": ">=4.0.0", - "@turf/union": ">=4.0.0", - "geojson": "0.5.0", - "lodash.throttle": "^4.1.1", - "viewport-mercator-project": ">=6.0.0" - } - }, - "node_modules/@nebula.gl/layers": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@nebula.gl/layers/-/layers-1.0.4.tgz", - "integrity": "sha512-jwBGvQK7iIdq05DWl5q7vOIhpU+rVFhR+y30G1P5toz/SD9z3Qadfm2SYDgIcX36Ez45mJMKVllY7hLEG1tSRA==", - "dependencies": { - "@danmarshall/deckgl-typings": "4.9.12", - "@nebula.gl/edit-modes": "1.0.4", - "@turf/bbox": ">=4.0.0", - "@turf/bbox-polygon": ">=4.0.0", - "@turf/bearing": ">=4.0.0", - "@turf/boolean-point-in-polygon": ">=4.0.0", - "@turf/buffer": ">=4.0.0", - "@turf/center": ">=4.0.0", - "@turf/centroid": ">=4.0.0", - "@turf/circle": ">=4.0.0", - "@turf/destination": ">=4.0.0", - "@turf/difference": ">=4.0.0", - "@turf/distance": ">=4.0.0", - "@turf/ellipse": ">=4.0.0", - "@turf/helpers": ">=4.0.0", - "@turf/intersect": ">=4.0.0", - "@turf/line-intersect": ">=4.0.0", - "@turf/nearest-point-on-line": ">=4.0.0", - "@turf/point-to-line-distance": ">=4.0.0", - "@turf/polygon-to-line": ">=4.0.0", - "@turf/transform-rotate": ">=4.0.0", - "@turf/transform-scale": ">=4.0.0", - "@turf/transform-translate": ">=4.0.0", - "@turf/union": ">=4.0.0", - "cubic-hermite-spline": "^1.0.1", - "geojson-types": "^2.0.1", - "global": ">=4.3.0", - "h3-js": "^3.6.4", - "viewport-mercator-project": ">=6.0.0" - }, - "peerDependencies": { - "@deck.gl/core": "^8.6.0", - "@deck.gl/extensions": "^8.6.0", - "@deck.gl/geo-layers": "^8.6.0", - "@deck.gl/layers": "^8.6.0", - "@deck.gl/mesh-layers": "^8.6.0", - "@luma.gl/constants": "^8.5.10", - "@luma.gl/core": "^8.5.10" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3412,29 +3565,22 @@ } }, "node_modules/@probe.gl/env": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@probe.gl/env/-/env-3.6.0.tgz", - "integrity": "sha512-4tTZYUg/8BICC3Yyb9rOeoKeijKbZHRXBEKObrfPmX4sQmYB15ZOUpoVBhAyJkOYVAM8EkPci6Uw5dLCwx2BEQ==", - "dependencies": { - "@babel/runtime": "^7.0.0" - } + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@probe.gl/env/-/env-4.0.9.tgz", + "integrity": "sha512-AOmVMD0/j78mX+k4+qX7ZhE0sY9H+EaJgIO6trik0BwV6VcrwxTGCGFAeuRsIGhETDnye06tkLXccYatYxAYwQ==" }, "node_modules/@probe.gl/log": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@probe.gl/log/-/log-3.6.0.tgz", - "integrity": "sha512-hjpyenpEvOdowgZ1qMeCJxfRD4JkKdlXz0RC14m42Un62NtOT+GpWyKA4LssT0+xyLULCByRAtG2fzZorpIAcA==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@probe.gl/log/-/log-4.0.9.tgz", + "integrity": "sha512-ebuZaodSRE9aC+3bVC7cKRHT8garXeT1jTbj1R5tQRqQYc9iGeT3iemVOHx5bN9Q6gAs/0j54iPI+1DvWMAW4A==", "dependencies": { - "@babel/runtime": "^7.0.0", - "@probe.gl/env": "3.6.0" + "@probe.gl/env": "4.0.9" } }, "node_modules/@probe.gl/stats": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-3.6.0.tgz", - "integrity": "sha512-JdALQXB44OP4kUBN/UrQgzbJe4qokbVF4Y8lkIA8iVCFnjVowWIgkD/z/0QO65yELT54tTrtepw1jScjKB+rhQ==", - "dependencies": { - "@babel/runtime": "^7.0.0" - } + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-4.0.9.tgz", + "integrity": "sha512-Q9Xt/sJUQaMsbjRKjOscv2t7wXIymTrOEJ4a3da4FTCn7bkKvcdxdyFAQySCrtPxE+YZ5I5lXpWPgv9BwmpE1g==" }, "node_modules/@react-aria/breadcrumbs": { "version": "3.5.16", @@ -4797,29 +4943,6 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, - "node_modules/@reduxjs/toolkit": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz", - "integrity": "sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ==", - "dependencies": { - "immer": "^9.0.21", - "redux": "^4.2.1", - "redux-thunk": "^2.4.2", - "reselect": "^4.1.8" - }, - "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18", - "react-redux": "^7.2.1 || ^8.0.2" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-redux": { - "optional": true - } - } - }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.2.tgz", @@ -5231,25 +5354,15 @@ } }, "node_modules/@turf/boolean-clockwise": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-5.1.5.tgz", - "integrity": "sha512-FqbmEEOJ4rU4/2t7FKx0HUWmjFEVqR+NJrFP7ymGSjja2SQ7Q91nnBihGuT+yuHHl6ElMjQ3ttsB/eTmyCycxA==", - "dependencies": { - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5" - } - }, - "node_modules/@turf/boolean-clockwise/node_modules/@turf/helpers": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz", - "integrity": "sha512-/lF+JR+qNDHZ8bF9d+Cp58nxtZWJ3sqFe6n3u3Vpj+/0cqkjk4nXKYBSY0azm+GIYB5mWKxUXvuP/m0ZnKj1bw==" - }, - "node_modules/@turf/boolean-clockwise/node_modules/@turf/invariant": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz", - "integrity": "sha512-28RCBGvCYsajVkw2EydpzLdcYyhSA77LovuOvgCJplJWaNVyJYH6BOR3HR9w50MEkPqb/Vc/jdo6I6ermlRtQA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-6.5.0.tgz", + "integrity": "sha512-45+C7LC5RMbRWrxh3Z0Eihsc8db1VGBO5d9BLTOAwU4jR6SgsunTfRWR16X7JUwIDYlCVEmnjcXJNi/kIU3VIw==", "dependencies": { - "@turf/helpers": "^5.1.5" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, "node_modules/@turf/boolean-point-in-polygon": { @@ -5318,12 +5431,39 @@ } }, "node_modules/@turf/clean-coords": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-6.5.0.tgz", - "integrity": "sha512-EMX7gyZz0WTH/ET7xV8MyrExywfm9qUi0/MY89yNffzGIEHuFfqwhcCqZ8O00rZIPZHUTxpmsxQSTfzJJA1CPw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-7.1.0.tgz", + "integrity": "sha512-q1U8UbRVL5cRdwOlNjD8mad8pWjFGe0s4ihg1pSiVNq7i47WASJ3k20yZiUFvuAkyNjV0rZ/A7Jd7WzjcierFg==", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clean-coords/node_modules/@turf/helpers": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.1.0.tgz", + "integrity": "sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==", + "dependencies": { + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clean-coords/node_modules/@turf/invariant": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.1.0.tgz", + "integrity": "sha512-OCLNqkItBYIP1nE9lJGuIUatWGtQ4rhBKAyTfFu0z8npVzGEYzvguEeof8/6LkKmTTEHW53tCjoEhSSzdRh08Q==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" }, "funding": { "url": "https://opencollective.com/turf" @@ -5535,46 +5675,20 @@ "funding": { "url": "https://opencollective.com/turf" } - }, - "node_modules/@turf/rewind": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-5.1.5.tgz", - "integrity": "sha512-Gdem7JXNu+G4hMllQHXRFRihJl3+pNl7qY+l4qhQFxq+hiU1cQoVFnyoleIqWKIrdK/i2YubaSwc3SCM7N5mMw==", - "dependencies": { - "@turf/boolean-clockwise": "^5.1.5", - "@turf/clone": "^5.1.5", - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5", - "@turf/meta": "^5.1.5" - } - }, - "node_modules/@turf/rewind/node_modules/@turf/clone": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-5.1.5.tgz", - "integrity": "sha512-//pITsQ8xUdcQ9pVb4JqXiSqG4dos5Q9N4sYFoWghX21tfOV2dhc5TGqYOhnHrQS7RiKQL1vQ48kIK34gQ5oRg==", - "dependencies": { - "@turf/helpers": "^5.1.5" - } - }, - "node_modules/@turf/rewind/node_modules/@turf/helpers": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz", - "integrity": "sha512-/lF+JR+qNDHZ8bF9d+Cp58nxtZWJ3sqFe6n3u3Vpj+/0cqkjk4nXKYBSY0azm+GIYB5mWKxUXvuP/m0ZnKj1bw==" - }, - "node_modules/@turf/rewind/node_modules/@turf/invariant": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz", - "integrity": "sha512-28RCBGvCYsajVkw2EydpzLdcYyhSA77LovuOvgCJplJWaNVyJYH6BOR3HR9w50MEkPqb/Vc/jdo6I6ermlRtQA==", - "dependencies": { - "@turf/helpers": "^5.1.5" - } - }, - "node_modules/@turf/rewind/node_modules/@turf/meta": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", - "integrity": "sha512-ZjQ3Ii62X9FjnK4hhdsbT+64AYRpaI8XMBMcyftEOGSmPMUVnkbvuv3C9geuElAXfQU7Zk1oWGOcrGOD9zr78Q==", + }, + "node_modules/@turf/rewind": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-6.5.0.tgz", + "integrity": "sha512-IoUAMcHWotBWYwSYuYypw/LlqZmO+wcBpn8ysrBNbazkFNkLf3btSDZMkKJO/bvOzl55imr/Xj4fi3DdsLsbzQ==", "dependencies": { - "@turf/helpers": "^5.1.5" + "@turf/boolean-clockwise": "^6.5.0", + "@turf/clone": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/meta": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, "node_modules/@turf/rhumb-bearing": { @@ -5614,14 +5728,53 @@ } }, "node_modules/@turf/simplify": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/simplify/-/simplify-6.5.0.tgz", - "integrity": "sha512-USas3QqffPHUY184dwQdP8qsvcVH/PWBYdXY5am7YTBACaQOMAlf6AKJs9FT8jiO6fQpxfgxuEtwmox+pBtlOg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/simplify/-/simplify-7.1.0.tgz", + "integrity": "sha512-JypymaoiSiFzGHwEoUkK0OPW1KQSnH3hEsEW3UIRS+apzltJ4HdFovYjsfqQgGZJZ+NJ9+dv7h8pgGLYuqcBUQ==", + "dependencies": { + "@turf/clean-coords": "^7.1.0", + "@turf/clone": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/simplify/node_modules/@turf/clone": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-7.1.0.tgz", + "integrity": "sha512-5R9qeWvL7FDdBIbEemd0eCzOStr09oburDvJ1hRiPCFX6rPgzcZBQ0gDmZzoF4AFcNLb5IwknbLZjVLaUGWtFA==", "dependencies": { - "@turf/clean-coords": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/simplify/node_modules/@turf/helpers": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.1.0.tgz", + "integrity": "sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==", + "dependencies": { + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/simplify/node_modules/@turf/meta": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.1.0.tgz", + "integrity": "sha512-ZgGpWWiKz797Fe8lfRj7HKCkGR+nSJ/5aKXMyofCvLSc2PuYJs/qyyifDPWjASQQCzseJ7AlF2Pc/XQ/3XkkuA==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10" }, "funding": { "url": "https://opencollective.com/turf" @@ -5734,6 +5887,19 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/brotli": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/brotli/-/brotli-1.3.4.tgz", + "integrity": "sha512-cKYjgaS2DMdCKF7R0F5cgx1nfBYObN2ihIuPGQ4/dlIY6RpV7OWNwe9L8V4tTVKL2eZqOkNM9FM/rgTvLf4oXw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/crypto-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.2.tgz", + "integrity": "sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==" + }, "node_modules/@types/css-font-loading-module": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.7.tgz", @@ -5762,18 +5928,9 @@ "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" }, "node_modules/@types/hammerjs": { - "version": "2.0.41", - "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", - "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==" - }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", + "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==" }, "node_modules/@types/json-schema": { "version": "7.0.15", @@ -5814,14 +5971,18 @@ "node_modules/@types/node": { "version": "18.17.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.1.tgz", - "integrity": "sha512-xlR1jahfizdplZYRU59JlUx9uzF1ARa8jbhM11ccpCJya8kvos5jwdm2ZAgxSCwOl0fq21svP18EVwPBXMQudw==", - "dev": true + "integrity": "sha512-xlR1jahfizdplZYRU59JlUx9uzF1ARa8jbhM11ccpCJya8kvos5jwdm2ZAgxSCwOl0fq21svP18EVwPBXMQudw==" }, "node_modules/@types/offscreencanvas": { "version": "2019.7.0", "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz", "integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==" }, + "node_modules/@types/pako": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.7.tgz", + "integrity": "sha512-YBtzT2ztNF6R/9+UXj2wTGFnC9NklAnASt3sC0h2m1bbH7G6FyBIkt4AN8ThZpNfxUo1b2iMVO0UawiJymEt8A==" + }, "node_modules/@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -5852,7 +6013,7 @@ "version": "18.2.7", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", - "devOptional": true, + "dev": true, "dependencies": { "@types/react": "*" } @@ -5901,11 +6062,6 @@ "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==", "peer": true }, - "node_modules/@types/use-sync-external-store": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", - "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" - }, "node_modules/@types/uuid": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", @@ -6434,43 +6590,52 @@ } }, "node_modules/@webviz/subsurface-viewer": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@webviz/subsurface-viewer/-/subsurface-viewer-0.25.2.tgz", - "integrity": "sha512-N9t9XbQEYM7BR1FplD/LWHBQc+r3i9kHrSO5AfroOcBy/BLWJchLU6ShwJcw0YWrplaBr3frbidXVSpOw5ZIDw==", - "dependencies": { - "@deck.gl/aggregation-layers": "^8.9.35", - "@deck.gl/core": "^8.9.35", - "@deck.gl/extensions": "^8.9.35", - "@deck.gl/geo-layers": "^8.9.35", - "@deck.gl/json": "^8.9.35", - "@deck.gl/layers": "^8.9.35", - "@deck.gl/mesh-layers": "^8.9.35", - "@deck.gl/react": "^8.9.35", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webviz/subsurface-viewer/-/subsurface-viewer-1.1.1.tgz", + "integrity": "sha512-+a9JFyCX3bUJpGceDgSFPNIMKyvTNhZ4OZi17gi0zAPZMacY5/0ZDnJNWpW9/DbBM26F5aKEg5XU7ALK/MbCrQ==", + "dependencies": { + "@deck.gl-community/editable-layers": "^9.0.3", + "@deck.gl/aggregation-layers": "^9.0.33", + "@deck.gl/core": "^9.0.33", + "@deck.gl/extensions": "^9.0.33", + "@deck.gl/geo-layers": "^9.0.33", + "@deck.gl/json": "^9.0.33", + "@deck.gl/layers": "^9.0.33", + "@deck.gl/mesh-layers": "^9.0.33", + "@deck.gl/react": "^9.0.33", "@emerson-eps/color-tables": "^0.4.71", "@equinor/eds-core-react": "^0.36.0", "@equinor/eds-icons": "^0.21.0", - "@nebula.gl/layers": "^1.0.4", - "@reduxjs/toolkit": "^1.7.2", - "@turf/simplify": "^6.5.0", + "@turf/simplify": "^7.1.0", "@vivaxy/png": "^1.3.0", "@webviz/wsc-common": "*", - "ajv": "^8.12.0", + "ajv": "^8.16.0", "convert-units": "^2.3.4", "d3": "^7.8.2", "d3-color": "^3.1.0", "d3-format": "^3.1.0", "gl-matrix": "^3.4.3", "lodash": "^4.17.21", - "mathjs": "^12.4.1", + "math.gl": "^4.0.1", + "mathjs": "^13.2.0", "merge-refs": "^1.2.2", - "react-redux": "^8.1.1", - "workerpool": "^9.1.1" + "workerpool": "^9.1.3" }, "peerDependencies": { "@mui/material": "^5.11", "@mui/system": "^5.11", + "@reduxjs/toolkit": "^1.7.2 || ^2", "react": "^17 || ^18", - "react-dom": "^17 || ^18" + "react-dom": "^17 || ^18", + "react-redux": "^8.1.1 || ^9" + }, + "peerDependenciesMeta": { + "@reduxjs/toolkit": { + "optional": true + }, + "react-redux": { + "optional": true + } } }, "node_modules/@webviz/subsurface-viewer/node_modules/@equinor/eds-core-react": { @@ -6539,21 +6704,6 @@ "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/@webviz/subsurface-viewer/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/@webviz/subsurface-viewer/node_modules/d3-format": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", @@ -6599,11 +6749,12 @@ } }, "node_modules/@webviz/wsc-common": { - "version": "0.0.1-alpha.1", - "resolved": "https://registry.npmjs.org/@webviz/wsc-common/-/wsc-common-0.0.1-alpha.1.tgz", - "integrity": "sha512-e+FHXcc6CZ2d7uzkd7YpoGgtGIP8EGpEPamK+cbx6INY5ue4XOQflvPzPQyAH96pMruTuJhtR0NrRiDRiD+W5w==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@webviz/wsc-common/-/wsc-common-1.0.6.tgz", + "integrity": "sha512-SLi3hjWkzuwMntXTDgLvtmY+UkJJ6GQkQcvWek3hltBz46/X7Px/aoy3iid4qTqje9hwZvqEFOHrw+4wzL5bYg==", "dependencies": { - "ajv": "^7.2.1" + "@deck.gl/core": "^9.0.33", + "ajv": "^8.12.0" } }, "node_modules/abs-svg-path": { @@ -6661,14 +6812,14 @@ } }, "node_modules/ajv": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.4.tgz", - "integrity": "sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -7006,6 +7157,26 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -7065,6 +7236,15 @@ "node": ">=8" } }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "optional": true, + "dependencies": { + "base64-js": "^1.1.2" + } + }, "node_modules/browserslist": { "version": "4.22.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", @@ -7226,6 +7406,14 @@ "node": ">=0.8.0" } }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "engines": { + "node": "*" + } + }, "node_modules/check-error": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", @@ -7392,15 +7580,15 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/complex.js": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", - "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.3.0.tgz", + "integrity": "sha512-wWHzifVdUPbPBhh+ObvpVGIzrAQjTvmnnEJKBfLW5YbyAB6OXQ0r+Q92fByMIrSSlxUuCujqxriJSR6R/kVxPA==", "engines": { "node": "*" }, "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" + "type": "github", + "url": "https://github.com/sponsors/rawify" } }, "node_modules/compute-scroll-into-view": { @@ -7458,8 +7646,7 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "peer": true + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cosmiconfig": { "version": "7.1.0", @@ -7496,6 +7683,14 @@ "node": ">= 8" } }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "engines": { + "node": "*" + } + }, "node_modules/css-color-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", @@ -8361,11 +8556,6 @@ "csstype": "^3.0.2" } }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, "node_modules/downshift": { "version": "9.0.8", "resolved": "https://registry.npmjs.org/downshift/-/downshift-9.0.8.tgz", @@ -8382,9 +8572,9 @@ } }, "node_modules/draco3d": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.5.5.tgz", - "integrity": "sha512-JVuNV0EJzD3LBYhGyIXJLeBID/EVtmFO1ZNhAYflTgiMiAJlbhXQmRRda/azjc8MRVMHh0gqGhiqHUo5dIXM8Q==" + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.5.7.tgz", + "integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==" }, "node_modules/draw-svg-path": { "version": "1.0.0", @@ -9363,15 +9553,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expression-eval": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/expression-eval/-/expression-eval-2.1.0.tgz", - "integrity": "sha512-FUJO/Akvl/JOWkvlqZaqbkhsEWlCJWDeZG4tzX96UH68D9FeRgYgtb55C2qtqbORC0Q6x5419EDjWu4IT9kQfg==", - "deprecated": "The expression-eval npm package is no longer maintained. The package was originally published as part of a now-completed personal project, and I do not have incentives to continue maintenance.", - "dependencies": { - "jsep": "^0.3.0" - } - }, "node_modules/ext": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", @@ -9471,10 +9652,15 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, + "node_modules/fast-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", + "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==" + }, "node_modules/fast-xml-parser": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz", - "integrity": "sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz", + "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==", "funding": [ { "type": "github", @@ -9501,6 +9687,11 @@ "reusify": "^1.0.4" } }, + "node_modules/fflate": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.7.4.tgz", + "integrity": "sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==" + }, "node_modules/figures": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", @@ -9678,9 +9869,9 @@ } }, "node_modules/fraction.js": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.4.tgz", - "integrity": "sha512-pwiTgt0Q7t+GHZA4yaLjObx4vXmmdcS0iSJ19o8d/goUGgItX9UZWKWNnLHehxviD8wU2IWRsnR8cD5+yOJP2Q==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "engines": { "node": "*" }, @@ -9699,19 +9890,6 @@ "readable-stream": "^2.0.0" } }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -9798,11 +9976,6 @@ "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" }, - "node_modules/geojson-types": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/geojson-types/-/geojson-types-2.0.1.tgz", - "integrity": "sha512-lF593HhpxQx8PjW7E7R/XsMKk01KbBRMciqg+NR7pkaaIPefS1NZDUep+w1L1QusXKcWDgZzvvgI4s7kDOe3aA==" - }, "node_modules/geojson-vt": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz", @@ -9975,15 +10148,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, "node_modules/global-dirs": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", @@ -10275,9 +10439,9 @@ "peer": true }, "node_modules/h3-js": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/h3-js/-/h3-js-3.7.2.tgz", - "integrity": "sha512-LPjlHSwB9zQZrMqKloCZmmmt3yZzIK7nqPcXqwU93zT3TtYG6jP4tZBzAPouxut7lLjdFbMQ75wRBiKfpsnY7w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/h3-js/-/h3-js-4.1.0.tgz", + "integrity": "sha512-LQhmMl1dRQQjMXPzJc7MpZ/CqPOWWuAvVEoVJM9n/s7vHypj+c3Pd5rLQCkAsOgAoAYKbNCsYFE++LF7MvSfCQ==", "engines": { "node": ">=4", "npm": ">=3", @@ -10501,14 +10665,10 @@ "node": ">=6.9.0" } }, - "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, "node_modules/immutable": { "version": "4.3.1", @@ -10540,18 +10700,6 @@ "node": ">=0.8.19" } }, - "node_modules/indefinitely-typed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/indefinitely-typed/-/indefinitely-typed-1.1.0.tgz", - "integrity": "sha512-giaI0hCj+wWZIZZLsmWHI+LrM4Hwc+rEZ/VrgCafKePcnE42fLnQTFt4xspqLin8fCjI5WnQr2fep/0EFqjaxw==", - "dependencies": { - "fs-extra": "^7.0.0", - "minimist": "^1.2.5" - }, - "bin": { - "indefinitely-typed": "bin/cli2.js" - } - }, "node_modules/indent-string": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", @@ -10695,6 +10843,11 @@ "integrity": "sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ==", "peer": true }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -11250,14 +11403,6 @@ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -11273,6 +11418,17 @@ "node": ">=4.0" } }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, "node_modules/kdbush": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", @@ -11293,11 +11449,6 @@ "resolved": "https://registry.npmjs.org/ktx-parse/-/ktx-parse-0.0.4.tgz", "integrity": "sha512-LY3nrmfXl+wZZdPxgJ3ZmLvG+wkOZZP3/dr4RbQj1Pk3Qwz44esOOSFFVQJcNWpXAtiNIC66WgXufX/SYgYz6A==" }, - "node_modules/lerc": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lerc/-/lerc-4.0.4.tgz", - "integrity": "sha512-nHZH+ffiGPkgKUQtiZrljGUGV2GddvPcVTV5E345ZFncbKz+/rBIjDPrSxkiqW0EAtg1Jw7qAgRdaCwV+95Fow==" - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -11311,6 +11462,14 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", @@ -11585,6 +11744,17 @@ "yallist": "^3.0.2" } }, + "node_modules/lz4js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/lz4js/-/lz4js-0.2.0.tgz", + "integrity": "sha512-gY2Ia9Lm7Ep8qMiuGRhvUq0Q7qUereeldZPP1PMEJxPtEWHJLqw9pgX68oHajBH0nzJK4MaZEA/YNV3jT8u8Bg==", + "optional": true + }, + "node_modules/lzo-wasm": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/lzo-wasm/-/lzo-wasm-0.0.4.tgz", + "integrity": "sha512-VKlnoJRFrB8SdJhlVKvW5vI1gGwcZ+mvChEXcSX6r2xDNc/Q2FD9esfBmGCuPZdrJ1feO+YcVFd2PTk0c137Gw==" + }, "node_modules/magic-string": { "version": "0.30.5", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", @@ -11729,27 +11899,27 @@ } }, "node_modules/math.gl": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/math.gl/-/math.gl-3.6.3.tgz", - "integrity": "sha512-Yq9CyECvSDox9+5ETi2+x1bGTY5WvGUGL3rJfC4KPoCZAM51MGfrCm6rIn4yOJUVfMPs2a5RwMD+yGS/n1g3gg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/math.gl/-/math.gl-4.1.0.tgz", + "integrity": "sha512-FtvCJuuAlvn4358e2SkepTv2gnV7VTvu0y/hwkkjS/urDk+nY9x/4Tsn19LmaJl1wqKaqn+QFZhbnjAsuMOkWA==", "dependencies": { - "@math.gl/core": "3.6.3" + "@math.gl/core": "4.1.0" } }, "node_modules/mathjs": { - "version": "12.4.1", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-12.4.1.tgz", - "integrity": "sha512-welnW3khgwYjPYvECFHO+xkCxAx9IKIIPDDWPi8B5rKAvmgoEHnQX9slEmHKZTNaJiE+OS4qrJJcB4sfDn/4sw==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-13.2.0.tgz", + "integrity": "sha512-P5PZoiUX2Tkghkv3tsSqlK0B9My/ErKapv1j6wdxd0MOrYQ30cnGE4LH/kzYB2gA5rN46Njqc4cFgJjaxgijoQ==", "dependencies": { - "@babel/runtime": "^7.24.0", + "@babel/runtime": "^7.25.6", "complex.js": "^2.1.1", "decimal.js": "^10.4.3", "escape-latex": "^1.2.0", - "fraction.js": "4.3.4", + "fraction.js": "^4.3.7", "javascript-natural-sort": "^0.7.1", "seedrandom": "^3.0.5", "tiny-emitter": "^2.1.0", - "typed-function": "^4.1.1" + "typed-function": "^4.2.1" }, "bin": { "mathjs": "bin/cli.js" @@ -11758,15 +11928,25 @@ "node": ">= 18" } }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, "node_modules/merge-refs": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.2.2.tgz", - "integrity": "sha512-RwcT7GsQR3KbuLw1rRuodq4Nt547BKEBkliZ0qqsrpyNne9bGTFtsFIsIpx82huWhcl3kOlOlH4H0xkPk/DqVw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.3.0.tgz", + "integrity": "sha512-nqXPXbso+1dcKDpPCXvwZyJILz+vSLqGGOnDrYHQYE+B8n9JTCekVLC65AfCpR4ggVyA/45Y0iR9LDyS2iI+zA==", "funding": { "url": "https://github.com/wojtekmaj/merge-refs?sponsor=1" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -11833,14 +12013,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dependencies": { - "dom-walk": "^0.1.0" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -11871,9 +12043,9 @@ } }, "node_modules/mjolnir.js": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/mjolnir.js/-/mjolnir.js-2.7.1.tgz", - "integrity": "sha512-72BeUWgTv2cj5aZQKpwL8caNUFhXZ9bDm1hxpNj70XJQ62IBnTZmtv/WPxJvtaVNhzNo+D2U8O6ryNI0zImYcw==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/mjolnir.js/-/mjolnir.js-2.7.3.tgz", + "integrity": "sha512-Z5z/+FzZqOSO3juSVKV3zcm4R2eAlWwlKMcqHmyFEJAaLILNcDKnIbnb4/kbcGyIuhtdWrzu8WOIR7uM6I34aw==", "dependencies": { "@types/hammerjs": "^2.0.41", "hammerjs": "^2.0.8" @@ -12794,10 +12966,11 @@ "peer": true }, "node_modules/polygon-clipping": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.3.tgz", - "integrity": "sha512-ho0Xx5DLkgxRx/+n4O74XyJ67DcyN3Tu9bGYKsnTukGAW6ssnuak6Mwcyb1wHy9MZc9xsUWqIoiazkZB5weECg==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.7.tgz", + "integrity": "sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==", "dependencies": { + "robust-predicates": "^3.0.2", "splaytree": "^3.1.0" } }, @@ -13018,19 +13191,10 @@ "stream-parser": "~0.3.1" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "peer": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/prompts": { "version": "2.4.2", @@ -13074,6 +13238,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, "engines": { "node": ">=6" } @@ -13239,44 +13404,6 @@ "react": ">0.13.0" } }, - "node_modules/react-redux": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.2.tgz", - "integrity": "sha512-xJKYI189VwfsFc4CJvHqHlDrzyFTY/3vZACbE+rr/zQ34Xx1wQfB4OTOSeOSNrF6BDVe8OOdxIrAnMGXA3ggfw==", - "dependencies": { - "@babel/runtime": "^7.12.1", - "@types/hoist-non-react-statics": "^3.3.1", - "@types/use-sync-external-store": "^0.0.3", - "hoist-non-react-statics": "^3.3.2", - "react-is": "^18.0.0", - "use-sync-external-store": "^1.0.0" - }, - "peerDependencies": { - "@types/react": "^16.8 || ^17.0 || ^18.0", - "@types/react-dom": "^16.8 || ^17.0 || ^18.0", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0", - "react-native": ">=0.59", - "redux": "^4 || ^5.0.0-beta.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - }, - "redux": { - "optional": true - } - } - }, "node_modules/react-refresh": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", @@ -13348,7 +13475,6 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "peer": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -13362,14 +13488,12 @@ "node_modules/readable-stream/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "peer": true + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "peer": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/readdirp": { "version": "3.6.0", @@ -13395,22 +13519,6 @@ "node": ">= 10.13.0" } }, - "node_modules/redux": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", - "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", - "dependencies": { - "@babel/runtime": "^7.9.2" - } - }, - "node_modules/redux-thunk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", - "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", - "peerDependencies": { - "redux": "^4" - } - }, "node_modules/regenerator-runtime": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", @@ -13531,11 +13639,6 @@ "node": ">=0.10.0" } }, - "node_modules/reselect": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", - "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" - }, "node_modules/resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", @@ -13837,6 +13940,11 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "node_modules/shallow-copy": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", @@ -13927,6 +14035,11 @@ "node": ">=8" } }, + "node_modules/snappyjs": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/snappyjs/-/snappyjs-0.6.1.tgz", + "integrity": "sha512-YIK6I2lsH072UE0aOFxxY1dPDCS43I5ktqHpeAsuLNYWkE5pGxRGWfDM4/vSUfNzXjC1Ivzt3qx31PCLmc9yqg==" + }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -14017,7 +14130,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "peer": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -14025,8 +14137,7 @@ "node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "peer": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/string-split-by": { "version": "1.0.0", @@ -14927,11 +15038,11 @@ } }, "node_modules/typed-function": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.1.1.tgz", - "integrity": "sha512-Pq1DVubcvibmm8bYcMowjVnnMwPVMeh0DIdA8ad8NZY2sJgapANJmiigSUwlt+EgXxpfIv8MWrQXTIzkfYZLYQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.2.1.tgz", + "integrity": "sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA==", "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/typedarray": { @@ -14997,14 +15108,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/unquote": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", @@ -15051,6 +15154,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -15069,14 +15173,6 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -15094,10 +15190,20 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/viewport-mercator-project/-/viewport-mercator-project-7.0.4.tgz", "integrity": "sha512-0jzpL6pIMocCKWg1C3mqi/N4UPgZC3FzwghEm1H+XsUo8hNZAyJc3QR7YqC816ibOR8aWT5pCsV+gCu8/BMJgg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dependencies": { "@math.gl/web-mercator": "^3.5.5" } }, + "node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.6.3.tgz", + "integrity": "sha512-UVrkSOs02YLehKaehrxhAejYMurehIHPfFQvPFZmdJHglHOU4V2cCUApTVEwOksvCp161ypEqVp+9H6mGhTTcw==", + "dependencies": { + "@babel/runtime": "^7.12.0", + "gl-matrix": "^3.4.0" + } + }, "node_modules/vite": { "version": "5.0.12", "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", @@ -15610,6 +15716,11 @@ "get-canvas-context": "^1.0.1" } }, + "node_modules/wgsl_reflect": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/wgsl_reflect/-/wgsl_reflect-1.0.14.tgz", + "integrity": "sha512-VYY1+5pNm3GE2I4ADNnlNBFTiLOsh3Cq/eeiwfMhjMzUwnlJOqJrzKUd/3owxL69txUfvgcQaB8M6ElVaBaAOA==" + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -15697,9 +15808,9 @@ "dev": true }, "node_modules/workerpool": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.1.1.tgz", - "integrity": "sha512-EFoFTSEo9m4V4wNrwzVRjxnf/E/oBpOzcI/R5CIugJhl9RsCiq525rszo4AtqcjQQoqFdu2E3H82AnbtpaQHvg==" + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.2.0.tgz", + "integrity": "sha512-PKZqBOCo6CYkVOwAxWxQaSF2Fvb5Iv2fCeTP7buyWI2GiynWr46NcXSgK/idoV6e60dgCBfgYc+Un3HMvmqP8w==" }, "node_modules/world-calendars": { "version": "1.0.3", @@ -15876,6 +15987,12 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zstd-codec": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/zstd-codec/-/zstd-codec-0.1.5.tgz", + "integrity": "sha512-v3fyjpK8S/dpY/X5WxqTK3IoCnp/ZOLxn144GZVlNUjtwAchzrVo03h+oMATFhCIiJ5KTr4V3vDQQYz4RU684g==", + "optional": true } } } diff --git a/frontend/package.json b/frontend/package.json index d31c8eb9c..44ca228dc 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -30,7 +30,7 @@ "@tanstack/react-query-devtools": "^5.4.2", "@types/geojson": "^7946.0.14", "@webviz/group-tree-plot": "^1.1.14", - "@webviz/subsurface-viewer": "^0.25.2", + "@webviz/subsurface-viewer": "^1.1.1", "@webviz/well-completions-plot": "^1.4.1", "animate.css": "^4.1.1", "axios": "^1.6.5", diff --git a/frontend/src/api/index.ts b/frontend/src/api/index.ts index e22824052..ee02b092e 100644 --- a/frontend/src/api/index.ts +++ b/frontend/src/api/index.ts @@ -76,6 +76,7 @@ export type { SeismicFencePolyline as SeismicFencePolyline_api } from './models/ export { SensitivityType as SensitivityType_api } from './models/SensitivityType'; export { StatisticFunction as StatisticFunction_api } from './models/StatisticFunction'; export type { StatisticValueObject as StatisticValueObject_api } from './models/StatisticValueObject'; +export type { StratigraphicUnit as StratigraphicUnit_api } from './models/StratigraphicUnit'; export type { SummaryVectorDateObservation as SummaryVectorDateObservation_api } from './models/SummaryVectorDateObservation'; export type { SummaryVectorObservations as SummaryVectorObservations_api } from './models/SummaryVectorObservations'; export { SurfaceAttributeType as SurfaceAttributeType_api } from './models/SurfaceAttributeType'; diff --git a/frontend/src/api/models/StratigraphicUnit.ts b/frontend/src/api/models/StratigraphicUnit.ts new file mode 100644 index 000000000..bb879bac0 --- /dev/null +++ b/frontend/src/api/models/StratigraphicUnit.ts @@ -0,0 +1,19 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +export type StratigraphicUnit = { + identifier: string; + top: string; + base: string; + stratUnitLevel: number; + stratUnitType: string; + topAge: number; + baseAge: number; + stratUnitParent: (string | null); + colorR: number; + colorG: number; + colorB: number; + lithologyType: (number | string); +}; + diff --git a/frontend/src/api/models/WellboreHeader.ts b/frontend/src/api/models/WellboreHeader.ts index 61c60bdc4..7da248cf6 100644 --- a/frontend/src/api/models/WellboreHeader.ts +++ b/frontend/src/api/models/WellboreHeader.ts @@ -13,5 +13,6 @@ export type WellboreHeader = { depthReferenceElevation: number; wellborePurpose: string; wellboreStatus: string; + slotIdentifier: string; }; diff --git a/frontend/src/api/services/SurfaceService.ts b/frontend/src/api/services/SurfaceService.ts index 5dd76c84f..b4e01dbb7 100644 --- a/frontend/src/api/services/SurfaceService.ts +++ b/frontend/src/api/services/SurfaceService.ts @@ -4,6 +4,7 @@ /* eslint-disable */ import type { Body_post_get_surface_intersection } from '../models/Body_post_get_surface_intersection'; import type { Body_post_sample_surface_in_points } from '../models/Body_post_sample_surface_in_points'; +import type { StratigraphicUnit } from '../models/StratigraphicUnit'; import type { SurfaceDataFloat } from '../models/SurfaceDataFloat'; import type { SurfaceDataPng } from '../models/SurfaceDataPng'; import type { SurfaceIntersectionData } from '../models/SurfaceIntersectionData'; @@ -249,4 +250,24 @@ export class SurfaceService { }, }); } + /** + * Get Stratigraphic Units + * @param caseUuid Sumo case uuid + * @returns StratigraphicUnit Successful Response + * @throws ApiError + */ + public getStratigraphicUnits( + caseUuid: string, + ): CancelablePromise> { + return this.httpRequest.request({ + method: 'GET', + url: '/surface/stratigraphic_units', + query: { + 'case_uuid': caseUuid, + }, + errors: { + 422: `Validation Error`, + }, + }); + } } diff --git a/frontend/src/api/services/WellService.ts b/frontend/src/api/services/WellService.ts index ad5e7f596..e79a6a572 100644 --- a/frontend/src/api/services/WellService.ts +++ b/frontend/src/api/services/WellService.ts @@ -107,6 +107,30 @@ export class WellService { }, }); } + /** + * Get Wellbore Picks For Wellbore + * Get wellbore picks for field and pick identifier + * @param fieldIdentifier Official field identifier + * @param wellboreUuid Wellbore uuid + * @returns WellborePick Successful Response + * @throws ApiError + */ + public getWellborePicksForWellbore( + fieldIdentifier: string, + wellboreUuid: string, + ): CancelablePromise> { + return this.httpRequest.request({ + method: 'GET', + url: '/well/wellbore_picks_for_wellbore/', + query: { + 'field_identifier': fieldIdentifier, + 'wellbore_uuid': wellboreUuid, + }, + errors: { + 422: `Validation Error`, + }, + }); + } /** * Get Wellbore Completions * Get well bore completions for a single well bore diff --git a/frontend/src/framework/WorkbenchServices.ts b/frontend/src/framework/WorkbenchServices.ts index d8055623b..2757fc3c2 100644 --- a/frontend/src/framework/WorkbenchServices.ts +++ b/frontend/src/framework/WorkbenchServices.ts @@ -1,5 +1,7 @@ import React from "react"; +import { Point2D, Point3D } from "@webviz/subsurface-viewer"; + import { isEqual } from "lodash"; import { EnsembleIdent } from "./EnsembleIdent"; @@ -27,7 +29,7 @@ export type GlobalTopicDefinitions = { "global.syncValue.timeSeries": { vectorName: string }; "global.syncValue.surface": { name: string; attribute: string }; "global.syncValue.cameraPositionMap": { - target: number[]; + target: Point2D | Point3D | undefined; zoom: number; rotationX: number; rotationOrbit: number; diff --git a/frontend/src/modules/2DViewer/layers/DeltaSurface.ts b/frontend/src/modules/2DViewer/layers/DeltaSurface.ts index bbe230145..8dce597d5 100644 --- a/frontend/src/modules/2DViewer/layers/DeltaSurface.ts +++ b/frontend/src/modules/2DViewer/layers/DeltaSurface.ts @@ -1,17 +1,59 @@ -import { GroupDelegate } from "./delegates/GroupDelegate"; +import { GroupDelegate, GroupDelegateTopic } from "./delegates/GroupDelegate"; import { ItemDelegate } from "./delegates/ItemDelegate"; -import { Group } from "./interfaces"; +import { LayerDelegate } from "./delegates/LayerDelegate"; +import { SettingsContextDelegateTopic } from "./delegates/SettingsContextDelegate"; +import { Group, instanceofLayer } from "./interfaces"; export class DeltaSurface implements Group { private _itemDelegate: ItemDelegate; private _groupDelegate: GroupDelegate; + private _unsubscribeFuncs: (() => void)[] = []; + private _childrenLayerDelegateSet: Set> = new Set(); constructor(name: string) { this._groupDelegate = new GroupDelegate(this); + this._groupDelegate.getPublishSubscribeHandler().subscribe(GroupDelegateTopic.CHILDREN, () => { + this.handleChildrenChange(); + }); this._groupDelegate.setColor("rgb(220, 210, 180)"); this._itemDelegate = new ItemDelegate(name); } + private handleChildrenChange(): void { + for (const unsubscribeFunc of this._unsubscribeFuncs) { + unsubscribeFunc(); + } + + for (const layerDelegate of this._childrenLayerDelegateSet) { + layerDelegate.setIsSubordinated(false); + } + + this._unsubscribeFuncs = []; + this._childrenLayerDelegateSet.clear(); + + for (const child of this._groupDelegate.getChildren()) { + if (instanceofLayer(child)) { + child.getLayerDelegate().setIsSubordinated(true); + const layerDelegate = child.getLayerDelegate(); + this._childrenLayerDelegateSet.add(layerDelegate); + this._unsubscribeFuncs.push( + layerDelegate + .getSettingsContext() + .getDelegate() + .getPublishSubscribeHandler() + .subscribe(SettingsContextDelegateTopic.SETTINGS_CHANGED, () => { + this.handleSettingsChange(); + }) + ); + } + } + } + + private handleSettingsChange(): void { + console.debug("Settings changed - would refetch data"); + // Fetch data + } + getItemDelegate(): ItemDelegate { return this._itemDelegate; } diff --git a/frontend/src/modules/2DViewer/layers/components/DeltaSurfaceComponent.tsx b/frontend/src/modules/2DViewer/layers/components/DeltaSurfaceComponent.tsx index d010dbf0d..0dfa0eb61 100644 --- a/frontend/src/modules/2DViewer/layers/components/DeltaSurfaceComponent.tsx +++ b/frontend/src/modules/2DViewer/layers/components/DeltaSurfaceComponent.tsx @@ -37,10 +37,16 @@ export function DeltaSurfaceComponent(props: DeltaSurfaceComponentProps): React. props.actions && props.deltaSurface.getGroupDelegate().findChildren((item) => instanceofLayer(item)).length < 2 ) { - adornment.push(); + adornment.push( + + ); } - adornment.push(); - adornment.push(); + adornment.push(); + adornment.push(); return adornment; } diff --git a/frontend/src/modules/2DViewer/layers/components/LayerComponent.tsx b/frontend/src/modules/2DViewer/layers/components/LayerComponent.tsx index 02dc6c919..59e50a2ec 100644 --- a/frontend/src/modules/2DViewer/layers/components/LayerComponent.tsx +++ b/frontend/src/modules/2DViewer/layers/components/LayerComponent.tsx @@ -5,7 +5,7 @@ import { CircularProgress } from "@lib/components/CircularProgress"; import { DenseIconButton } from "@lib/components/DenseIconButton"; import { SortableListItem } from "@lib/components/SortableList"; import { resolveClassNames } from "@lib/utils/resolveClassNames"; -import { CheckCircle, Error, ExpandLess, ExpandMore } from "@mui/icons-material"; +import { CheckCircle, Difference, Error, ExpandLess, ExpandMore } from "@mui/icons-material"; import { EditName } from "./EditName"; import { RemoveButton } from "./RemoveButton"; @@ -85,8 +85,19 @@ type EndActionProps = { function EndActions(props: EndActionProps): React.ReactNode { const status = usePublishSubscribeTopicValue(props.layer.getLayerDelegate(), LayerDelegateTopic.STATUS); + const isSubordinated = usePublishSubscribeTopicValue( + props.layer.getLayerDelegate(), + LayerDelegateTopic.SUBORDINATED + ); function makeStatus(): React.ReactNode { + if (isSubordinated) { + return ( +
+ +
+ ); + } if (status === LayerStatus.LOADING) { return (
diff --git a/frontend/src/modules/2DViewer/layers/components/SettingsGroupComponent.tsx b/frontend/src/modules/2DViewer/layers/components/SettingsGroupComponent.tsx index e7a4cff4b..f58669faf 100644 --- a/frontend/src/modules/2DViewer/layers/components/SettingsGroupComponent.tsx +++ b/frontend/src/modules/2DViewer/layers/components/SettingsGroupComponent.tsx @@ -32,10 +32,16 @@ export function SettingsGroupComponent(props: SettingsGroupComponentProps): Reac function makeEndAdornment() { const adornment: React.ReactNode[] = []; if (props.actions) { - adornment.push(); + adornment.push( + + ); } - adornment.push(); - adornment.push(); + adornment.push(); + adornment.push(); return adornment; } diff --git a/frontend/src/modules/2DViewer/layers/delegates/LayerDelegate.ts b/frontend/src/modules/2DViewer/layers/delegates/LayerDelegate.ts index 31abd97d4..486dae995 100644 --- a/frontend/src/modules/2DViewer/layers/delegates/LayerDelegate.ts +++ b/frontend/src/modules/2DViewer/layers/delegates/LayerDelegate.ts @@ -13,6 +13,7 @@ import { BoundingBox, Layer, LayerStatus, Settings, SettingsContext } from "../i export enum LayerDelegateTopic { STATUS = "STATUS", DATA = "DATA", + SUBORDINATED = "SUBORDINATED", } export enum LayerColoringType { @@ -24,6 +25,7 @@ export enum LayerColoringType { export type LayerDelegatePayloads = { [LayerDelegateTopic.STATUS]: LayerStatus; [LayerDelegateTopic.DATA]: TData; + [LayerDelegateTopic.SUBORDINATED]: boolean; }; export class LayerDelegate implements PublishSubscribe> @@ -41,6 +43,7 @@ export class LayerDelegate private _boundingBox: BoundingBox | null = null; private _valueRange: [number, number] | null = null; private _coloringType: LayerColoringType; + private _isSubordinated: boolean = false; constructor( owner: Layer, @@ -93,6 +96,15 @@ export class LayerDelegate return this._coloringType; } + getIsSubordinated(): boolean { + return this._isSubordinated; + } + + setIsSubordinated(isSubordinated: boolean): void { + this._isSubordinated = isSubordinated; + this._publishSubscribeHandler.notifySubscribers(LayerDelegateTopic.SUBORDINATED); + } + private invalidateBoundingBox(): void { this._boundingBox = null; } @@ -106,6 +118,10 @@ export class LayerDelegate } setLayerManager(layerManager: LayerManager | null): void { + if (this._layerManager === layerManager) { + return; + } + this._layerManager = layerManager; this._settingsContext.getDelegate().setLayerManager(layerManager); @@ -124,6 +140,10 @@ export class LayerDelegate this._unsubscribeFuncs.push(unsubscribeFunc1); this._unsubscribeFuncs.push(unsubscribeFunc2); + + if (this._settingsContext.areCurrentSettingsValid()) { + this.maybeRefetchData(); + } } else { this._unsubscribeFuncs.forEach((unsubscribeFunc) => { unsubscribeFunc(); @@ -166,6 +186,9 @@ export class LayerDelegate if (topic === LayerDelegateTopic.DATA) { return this._data; } + if (topic === LayerDelegateTopic.SUBORDINATED) { + return this._isSubordinated; + } }; return snapshotGetter; @@ -243,6 +266,10 @@ export class LayerDelegate return; } + if (this._isSubordinated) { + return; + } + this.setStatus(LayerStatus.LOADING); this.invalidateBoundingBox(); this.invalidateValueRange(); diff --git a/frontend/src/modules/2DViewer/layers/delegates/PublishSubscribeDelegate.ts b/frontend/src/modules/2DViewer/layers/delegates/PublishSubscribeDelegate.ts index 05a64048a..fba808553 100644 --- a/frontend/src/modules/2DViewer/layers/delegates/PublishSubscribeDelegate.ts +++ b/frontend/src/modules/2DViewer/layers/delegates/PublishSubscribeDelegate.ts @@ -10,10 +10,14 @@ export interface PublishSubscribe { private _subscribers = new Map void>>(); - subscribe(topic: TTopic, subscriber: () => void): void { + subscribe(topic: TTopic, subscriber: () => void): () => void { const subscribers = this._subscribers.get(topic) ?? new Set(); subscribers.add(subscriber); this._subscribers.set(topic, subscribers); + + return () => { + subscribers.delete(subscriber); + }; } notifySubscribers(topic: TTopic): void { diff --git a/frontend/src/modules/2DViewer/layers/implementations/layers/DrilledWellborePicksLayer/DrilledWellborePicksLayer.ts b/frontend/src/modules/2DViewer/layers/implementations/layers/DrilledWellborePicksLayer/DrilledWellborePicksLayer.ts index 053349ea2..ae2f77a47 100644 --- a/frontend/src/modules/2DViewer/layers/implementations/layers/DrilledWellborePicksLayer/DrilledWellborePicksLayer.ts +++ b/frontend/src/modules/2DViewer/layers/implementations/layers/DrilledWellborePicksLayer/DrilledWellborePicksLayer.ts @@ -86,16 +86,20 @@ export class DrilledWellborePicksLayer implements Layer - apiService.well.getWellborePicksForPickIdentifier(fieldIdentifier ?? "", selectedPickIdentifier ?? ""), - staleTime: STALE_TIME, - gcTime: CACHE_TIME, - }); - // .then((response: WellborePick_api[]) => { - // return response.filter((trajectory) => selectedWellboreUuids.includes(trajectory.wellboreUuid)); - // }); + const promise = queryClient + .fetchQuery({ + queryKey, + queryFn: () => + apiService.well.getWellborePicksForPickIdentifier( + fieldIdentifier ?? "", + selectedPickIdentifier ?? "" + ), + staleTime: STALE_TIME, + gcTime: CACHE_TIME, + }) + .then((response: WellborePick_api[]) => { + return response.filter((trajectory) => selectedWellboreUuids.includes(trajectory.wellboreUuid)); + }); return promise; } diff --git a/frontend/src/modules/2DViewer/settings/settings.tsx b/frontend/src/modules/2DViewer/settings/settings.tsx index e12095a07..3b4c3d358 100644 --- a/frontend/src/modules/2DViewer/settings/settings.tsx +++ b/frontend/src/modules/2DViewer/settings/settings.tsx @@ -253,8 +253,8 @@ export function Settings(props: ModuleSettingsProps): React.ReactNode {
Layers
- {layerManager && } + {layerManager && }
{props.viewportAnnotations} diff --git a/frontend/src/modules/2DViewer/view/customDeckGlLayers/AdvancedWellsLayer.ts b/frontend/src/modules/2DViewer/view/customDeckGlLayers/AdvancedWellsLayer.ts index 027c1a60b..0a3c95fdc 100644 --- a/frontend/src/modules/2DViewer/view/customDeckGlLayers/AdvancedWellsLayer.ts +++ b/frontend/src/modules/2DViewer/view/customDeckGlLayers/AdvancedWellsLayer.ts @@ -1,5 +1,5 @@ -import { FilterContext, Layer, LayersList } from "@deck.gl/core/typed"; -import { GeoJsonLayer } from "@deck.gl/layers/typed"; +import { FilterContext, Layer, LayersList } from "@deck.gl/core"; +import { GeoJsonLayer } from "@deck.gl/layers"; import { WellsLayer } from "@webviz/subsurface-viewer/dist/layers"; export class AdvancedWellsLayer extends WellsLayer { diff --git a/frontend/src/modules/2DViewer/view/customDeckGlLayers/WellborePicksLayer.ts b/frontend/src/modules/2DViewer/view/customDeckGlLayers/WellborePicksLayer.ts index f91430d73..95ba5ba93 100644 --- a/frontend/src/modules/2DViewer/view/customDeckGlLayers/WellborePicksLayer.ts +++ b/frontend/src/modules/2DViewer/view/customDeckGlLayers/WellborePicksLayer.ts @@ -1,6 +1,6 @@ -import { CompositeLayer, FilterContext } from "@deck.gl/core/typed"; -import { CollisionFilterExtension } from "@deck.gl/extensions/typed"; -import { GeoJsonLayer, TextLayer } from "@deck.gl/layers/typed"; +import { CompositeLayer, FilterContext } from "@deck.gl/core"; +import { CollisionFilterExtension } from "@deck.gl/extensions"; +import { GeoJsonLayer, TextLayer } from "@deck.gl/layers"; import type { Feature, FeatureCollection } from "geojson"; @@ -10,6 +10,7 @@ export type WellBorePickLayerData = { wellBoreUwi: string; tvdMsl: number; md: number; + slotName: string; }; type TextLayerData = { diff --git a/frontend/src/modules/2DViewer/view/utils/layerFactory.ts b/frontend/src/modules/2DViewer/view/utils/layerFactory.ts index 193467a8a..0a63871d7 100644 --- a/frontend/src/modules/2DViewer/view/utils/layerFactory.ts +++ b/frontend/src/modules/2DViewer/view/utils/layerFactory.ts @@ -1,6 +1,6 @@ import { PolygonData_api, SurfaceDef_api, WellborePick_api, WellboreTrajectory_api } from "@api"; -import { Layer } from "@deck.gl/core/typed"; -import { GeoJsonLayer } from "@deck.gl/layers/typed"; +import { Layer } from "@deck.gl/core"; +import { GeoJsonLayer } from "@deck.gl/layers"; import { defaultColorPalettes } from "@framework/utils/colorPalettes"; import { ColorScaleGradientType, ColorScaleType } from "@lib/utils/ColorScale"; import { Vec2, rotatePoint2Around } from "@lib/utils/vec2"; @@ -10,7 +10,7 @@ import { ColorScaleWithName } from "@modules/_shared/utils/ColorScaleWithName"; import { ColormapLayer, Grid3DLayer, MapLayer, WellsLayer } from "@webviz/subsurface-viewer/dist/layers"; import { Rgb, parse } from "culori"; -import { Feature } from "geojson"; +import { Feature, FeatureCollection, GeoJsonProperties, Geometry } from "geojson"; import { SurfaceDataPng } from "src/api/models/SurfaceDataPng"; import { DrilledWellTrajectoriesLayer } from "../../layers/implementations/layers/DrilledWellTrajectoriesLayer/DrilledWellTrajectoriesLayer"; @@ -93,6 +93,7 @@ function createWellPicksLayer(wellPicksDataApi: WellborePick_api[], id: string): tvdMsl: wellPick.tvdMsl, md: wellPick.md, pickable: true, + slotName: "", }; }); return new WellborePicksLayer({ @@ -133,7 +134,6 @@ function createMapImageLayer( ): ColormapLayer { return new ColormapLayer({ id: id, - // @ts-expect-error - wrong typescript definition of AspenTech - ColormapLayer should extend ExtendedLayer in addition to BitmapLayer name: name, image: `data:image/png;base64,${layerData.png_image_base64}`, bounds: _calcBoundsForRotationAroundUpperLeftCorner(layerData.surface_def), @@ -144,7 +144,7 @@ function createMapImageLayer( : [layerData.value_min, layerData.value_max], colorMapName: "Physics", parameters: { - depthTest: false, + depthWriteEnabled: false, }, colorMapFunction: makeColorMapFunction(colorScale), }); @@ -168,12 +168,11 @@ function _calcBoundsForRotationAroundUpperLeftCorner(surfDef: SurfaceDef_api): [ } function createPolygonsLayer(polygonsData: PolygonData_api[], id: string): GeoJsonLayer { - const features: Record[] = polygonsData.map((polygon) => { + const features: Feature[] = polygonsData.map((polygon) => { return polygonsToGeojson(polygon); }); - const data: Record = { + const data: FeatureCollection = { type: "FeatureCollection", - unit: "m", features: features, }; return new GeoJsonLayer({ @@ -189,8 +188,8 @@ function createPolygonsLayer(polygonsData: PolygonData_api[], id: string): GeoJs pickable: true, }); } -function polygonsToGeojson(polygons: PolygonData_api): Record { - const data: Record = { +function polygonsToGeojson(polygons: PolygonData_api): Feature { + const data: Feature = { type: "Feature", geometry: { type: "Polygon", @@ -348,18 +347,7 @@ function makeColorMapFunction( } return (value: number) => { - let nonNormalizedValue = value * (colorScale.getMax() - colorScale.getMin()) + colorScale.getMin(); - if (colorScale.getGradientType() === ColorScaleGradientType.Diverging) { - if (nonNormalizedValue < colorScale.getDivMidPoint()) { - nonNormalizedValue = value * (colorScale.getDivMidPoint() - colorScale.getMin()) + colorScale.getMin(); - } - if (nonNormalizedValue >= colorScale.getDivMidPoint()) { - nonNormalizedValue = - 1 - - (nonNormalizedValue - colorScale.getDivMidPoint()) / - (colorScale.getMax() - colorScale.getDivMidPoint()); - } - } + const nonNormalizedValue = value * (colorScale.getMax() - colorScale.getMin()) + colorScale.getMin(); const interpolatedColor = colorScale.getColorForValue(nonNormalizedValue); const color = parse(interpolatedColor) as Rgb; if (color === undefined) { diff --git a/frontend/src/modules/2DViewer/view/utils/makeViewsAndLayers.ts b/frontend/src/modules/2DViewer/view/utils/makeViewsAndLayers.ts index 0d0438094..97b92d35e 100644 --- a/frontend/src/modules/2DViewer/view/utils/makeViewsAndLayers.ts +++ b/frontend/src/modules/2DViewer/view/utils/makeViewsAndLayers.ts @@ -1,4 +1,4 @@ -import { Layer as DeckGlLayer } from "@deck.gl/core/typed"; +import { Layer as DeckGlLayer } from "@deck.gl/core"; import { defaultContinuousSequentialColorPalettes } from "@framework/utils/colorPalettes"; import { ColorScaleGradientType, ColorScaleType } from "@lib/utils/ColorScale"; import { ColorScale } from "@modules/2DViewer/layers/ColorScale"; diff --git a/frontend/src/modules/2DViewer/view/view.tsx b/frontend/src/modules/2DViewer/view/view.tsx index fba9ea56a..5478a10e6 100644 --- a/frontend/src/modules/2DViewer/view/view.tsx +++ b/frontend/src/modules/2DViewer/view/view.tsx @@ -1,6 +1,6 @@ import React from "react"; -import { View as DeckGlView } from "@deck.gl/core/typed"; +import { View as DeckGlView } from "@deck.gl/core"; import { ModuleViewProps } from "@framework/Module"; import { useViewStatusWriter } from "@framework/StatusWriter"; import { PendingWrapper } from "@lib/components/PendingWrapper"; diff --git a/frontend/src/modules/3DViewer/view/components/HoverUpdateWrapper.tsx b/frontend/src/modules/3DViewer/view/components/HoverUpdateWrapper.tsx index 381799b0a..17e2b3464 100644 --- a/frontend/src/modules/3DViewer/view/components/HoverUpdateWrapper.tsx +++ b/frontend/src/modules/3DViewer/view/components/HoverUpdateWrapper.tsx @@ -1,6 +1,6 @@ import React from "react"; -import { GeoJsonLayer } from "@deck.gl/layers/typed"; +import { GeoJsonLayer } from "@deck.gl/layers"; import { IntersectionReferenceSystem } from "@equinor/esv-intersection"; import { ViewContext } from "@framework/ModuleContext"; import { GlobalTopicDefinitions, WorkbenchServices, useSubscribedValue } from "@framework/WorkbenchServices"; diff --git a/frontend/src/modules/3DViewer/view/components/SubsurfaceViewerWrapper.tsx b/frontend/src/modules/3DViewer/view/components/SubsurfaceViewerWrapper.tsx index 7418e760e..9e6bfe555 100644 --- a/frontend/src/modules/3DViewer/view/components/SubsurfaceViewerWrapper.tsx +++ b/frontend/src/modules/3DViewer/view/components/SubsurfaceViewerWrapper.tsx @@ -1,7 +1,7 @@ import React from "react"; -import { Layer, PickingInfo } from "@deck.gl/core/typed"; -import { ColumnLayer, SolidPolygonLayer } from "@deck.gl/layers/typed"; +import { Layer, PickingInfo } from "@deck.gl/core"; +import { ColumnLayer, SolidPolygonLayer } from "@deck.gl/layers"; import { IntersectionPolyline, IntersectionPolylineWithoutId } from "@framework/userCreatedItems/IntersectionPolylines"; import { Button } from "@lib/components/Button"; import { HoldPressedIntervalCallbackButton } from "@lib/components/HoldPressedIntervalCallbackButton/holdPressedIntervalCallbackButton"; diff --git a/frontend/src/modules/3DViewer/view/utils/layers.ts b/frontend/src/modules/3DViewer/view/utils/layers.ts index 7e4b51058..7316d3043 100644 --- a/frontend/src/modules/3DViewer/view/utils/layers.ts +++ b/frontend/src/modules/3DViewer/view/utils/layers.ts @@ -1,5 +1,5 @@ import { BoundingBox3d_api, WellboreTrajectory_api } from "@api"; -import { Layer } from "@deck.gl/core/typed"; +import { Layer } from "@deck.gl/core"; import { ColorScale } from "@lib/utils/ColorScale"; import { TGrid3DColoringMode } from "@webviz/subsurface-viewer"; import { AxesLayer, Grid3DLayer, WellsLayer } from "@webviz/subsurface-viewer/dist/layers"; diff --git a/frontend/src/modules/3DViewer/view/view.tsx b/frontend/src/modules/3DViewer/view/view.tsx index 248d16b71..89feb978d 100644 --- a/frontend/src/modules/3DViewer/view/view.tsx +++ b/frontend/src/modules/3DViewer/view/view.tsx @@ -1,6 +1,6 @@ import React from "react"; -import { Layer } from "@deck.gl/core/typed"; +import { Layer } from "@deck.gl/core"; import { IntersectionReferenceSystem } from "@equinor/esv-intersection"; import { ModuleViewProps } from "@framework/Module"; import { useViewStatusWriter } from "@framework/StatusWriter"; diff --git a/frontend/src/modules/Intersection/interfaces.ts b/frontend/src/modules/Intersection/interfaces.ts index ccac90da8..b9e976793 100644 --- a/frontend/src/modules/Intersection/interfaces.ts +++ b/frontend/src/modules/Intersection/interfaces.ts @@ -1,4 +1,3 @@ -import { EnsembleIdent } from "@framework/EnsembleIdent"; import { InterfaceInitialization } from "@framework/UniDirectionalModuleComponentsInterface"; import { IntersectionType } from "@framework/types/intersection"; import { ColorScale } from "@lib/utils/ColorScale"; @@ -15,13 +14,14 @@ import { import { layerManagerAtom, selectedCustomIntersectionPolylineIdAtom, - selectedEnsembleIdentAtom, + selectedFieldIdentifierAtom, selectedWellboreAtom, } from "./settings/atoms/derivedAtoms"; import { WellboreHeader } from "./typesAndEnums"; import { LayerManager } from "./utils/layers/LayerManager"; export type SettingsToViewInterface = { + fieldIdentifier: string | null; showGridlines: boolean; gridLayer: number; zFactor: number; @@ -29,7 +29,6 @@ export type SettingsToViewInterface = { intersectionType: IntersectionType; seismicColorScale: ColorScale | null; showSeismic: boolean; - ensembleIdent: EnsembleIdent | null; selectedCustomIntersectionPolylineId: string | null; layerManager: LayerManager; wellboreHeader: WellboreHeader | null; @@ -40,6 +39,9 @@ export type Interfaces = { }; export const settingsToViewInterfaceInitialization: InterfaceInitialization = { + fieldIdentifier: (get) => { + return get(selectedFieldIdentifierAtom); + }, showGridlines: (get) => { return get(showGridlinesAtom); }, @@ -61,9 +63,6 @@ export const settingsToViewInterfaceInitialization: InterfaceInitialization { return get(showSeismicAtom); }, - ensembleIdent: (get) => { - return get(selectedEnsembleIdentAtom); - }, selectedCustomIntersectionPolylineId: (get) => { return get(selectedCustomIntersectionPolylineIdAtom); }, diff --git a/frontend/src/modules/Intersection/settings/atoms/baseAtoms.ts b/frontend/src/modules/Intersection/settings/atoms/baseAtoms.ts index 8a8ebb463..fcac52061 100644 --- a/frontend/src/modules/Intersection/settings/atoms/baseAtoms.ts +++ b/frontend/src/modules/Intersection/settings/atoms/baseAtoms.ts @@ -1,4 +1,3 @@ -import { EnsembleIdent } from "@framework/EnsembleIdent"; import { IntersectionType } from "@framework/types/intersection"; import { ColorScale } from "@lib/utils/ColorScale"; @@ -18,6 +17,5 @@ export const seismicColorScaleAtom = atom(null); export const showSeismicAtom = atom(false); export const userSelectedFieldIdentifierAtom = atom(null); -export const userSelectedEnsembleIdentAtom = atom(null); export const userSelectedWellboreUuidAtom = atom(null); export const userSelectedCustomIntersectionPolylineIdAtom = atom(null); diff --git a/frontend/src/modules/Intersection/settings/atoms/derivedAtoms.ts b/frontend/src/modules/Intersection/settings/atoms/derivedAtoms.ts index 0432d8f8b..da6749716 100644 --- a/frontend/src/modules/Intersection/settings/atoms/derivedAtoms.ts +++ b/frontend/src/modules/Intersection/settings/atoms/derivedAtoms.ts @@ -1,4 +1,3 @@ -import { EnsembleIdent } from "@framework/EnsembleIdent"; import { EnsembleSet } from "@framework/EnsembleSet"; import { EnsembleSetAtom } from "@framework/GlobalAtoms"; import { IntersectionPolylinesAtom } from "@framework/userCreatedItems/IntersectionPolylines"; @@ -9,7 +8,6 @@ import { queryClientAtom } from "jotai-tanstack-query"; import { userSelectedCustomIntersectionPolylineIdAtom, - userSelectedEnsembleIdentAtom, userSelectedFieldIdentifierAtom, userSelectedWellboreUuidAtom, } from "./baseAtoms"; @@ -60,17 +58,6 @@ export const selectedCustomIntersectionPolylineIdAtom = atom((get) => { return userSelectedCustomIntersectionPolylineId; }); -export const selectedEnsembleIdentAtom = atom((get) => { - const ensembleSet = get(EnsembleSetAtom); - const userSelectedEnsembleIdent = get(userSelectedEnsembleIdentAtom); - - if (userSelectedEnsembleIdent === null || !ensembleSet.hasEnsemble(userSelectedEnsembleIdent)) { - return ensembleSet.getEnsembleArr()[0]?.getIdent() || null; - } - - return userSelectedEnsembleIdent; -}); - export const selectedWellboreAtom = atom((get) => { const userSelectedWellboreUuid = get(userSelectedWellboreUuidAtom); const wellboreHeaders = get(drilledWellboreHeadersQueryAtom); diff --git a/frontend/src/modules/Intersection/settings/components/layerSettings/wellpicksLayer.tsx b/frontend/src/modules/Intersection/settings/components/layerSettings/wellpicksLayer.tsx index f33b4c373..d497a147d 100644 --- a/frontend/src/modules/Intersection/settings/components/layerSettings/wellpicksLayer.tsx +++ b/frontend/src/modules/Intersection/settings/components/layerSettings/wellpicksLayer.tsx @@ -1,14 +1,20 @@ import React from "react"; +import { EnsembleIdent } from "@framework/EnsembleIdent"; import { EnsembleSet } from "@framework/EnsembleSet"; import { WorkbenchSession } from "@framework/WorkbenchSession"; import { WorkbenchSettings } from "@framework/WorkbenchSettings"; +import { EnsembleDropdown } from "@framework/components/EnsembleDropdown"; import { PendingWrapper } from "@lib/components/PendingWrapper"; import { Select, SelectOption } from "@lib/components/Select"; import { Switch } from "@lib/components/Switch"; import { LayerStatus, useLayerSettings, useLayerStatus } from "@modules/Intersection/utils/layers/BaseLayer"; import { WellpicksLayer, WellpicksLayerSettings } from "@modules/Intersection/utils/layers/WellpicksLayer"; +import { isEqual } from "lodash"; + +import { fixupSetting } from "./utils"; + export type WellpicksLayerSettingsComponentProps = { layer: WellpicksLayer; ensembleSet: EnsembleSet; @@ -22,6 +28,15 @@ export function WellpicksLayerSettingsComponent(props: WellpicksLayerSettingsCom const status = useLayerStatus(props.layer); + const fixupEnsembleIdent = fixupSetting( + "ensembleIdent", + props.ensembleSet.getEnsembleArr().map((el) => el.getIdent()), + newSettings + ); + if (!isEqual(fixupEnsembleIdent, newSettings.ensembleIdent)) { + setNewSettings((prev) => ({ ...prev, ensembleIdent: fixupEnsembleIdent })); + } + React.useEffect( function propagateSettingsChange() { props.layer.maybeUpdateSettings(newSettings); @@ -30,6 +45,10 @@ export function WellpicksLayerSettingsComponent(props: WellpicksLayerSettingsCom [newSettings, props.layer] ); + function handleEnsembleChange(ensembleIdent: EnsembleIdent | null) { + setNewSettings((prev) => ({ ...prev, ensembleIdent })); + } + function handleToggleFilterPicks(e: React.ChangeEvent) { const checked = e.target.checked; setNewSettings((prev) => ({ ...prev, filterPicks: checked })); @@ -63,6 +82,17 @@ export function WellpicksLayerSettingsComponent(props: WellpicksLayerSettingsCom return (
+
+
Stratigraphic column source
+
+ +
+
Filter picks
diff --git a/frontend/src/modules/Intersection/utils/layers/WellpicksLayer.ts b/frontend/src/modules/Intersection/utils/layers/WellpicksLayer.ts index bcfd76d4a..2ca0eaec8 100644 --- a/frontend/src/modules/Intersection/utils/layers/WellpicksLayer.ts +++ b/frontend/src/modules/Intersection/utils/layers/WellpicksLayer.ts @@ -12,6 +12,7 @@ const CACHE_TIME = 60 * 1000; export type WellpicksLayerSettings = { wellboreUuid: string | null; + fieldIdentifier: string | null; ensembleIdent: EnsembleIdent | null; filterPicks: boolean; selectedUnitPicks: string[]; @@ -23,6 +24,7 @@ export type WellPicksLayerData = ReturnType; export class WellpicksLayer extends BaseLayer { constructor(name: string) { const defaultSettings = { + fieldIdentifier: null, ensembleIdent: null, wellboreUuid: null, filterPicks: false, @@ -33,7 +35,11 @@ export class WellpicksLayer extends BaseLayer { - // const queryKey = [ - // "getWellborePicksAndStratigraphicUnits", - // this._settings.ensembleIdent?.getCaseUuid(), - // this._settings.wellboreUuid, - // ]; - // this.registerQueryKey(queryKey); - - // return queryClient - // .fetchQuery({ - // queryKey, - // queryFn: () => - // apiService.well.getWellborePicksAndStratigraphicUnits( - // this._settings.ensembleIdent?.getCaseUuid() ?? "", - // this._settings.wellboreUuid ?? "" - // ), - // staleTime: STALE_TIME, - // gcTime: CACHE_TIME, - // }) - // .then((data) => transformFormationData(data.wellbore_picks, data.stratigraphic_units as any)); - // } + protected async fetchData(queryClient: QueryClient): Promise { + const queryKey = [ + "getWellborePicksAndStratigraphicUnits", + this._settings.fieldIdentifier, + this._settings.wellboreUuid, + ]; + this.registerQueryKey(queryKey); + + const wellborePicksPromise = queryClient.fetchQuery({ + queryKey, + queryFn: () => + apiService.well.getWellborePicksForWellbore( + this._settings.fieldIdentifier ?? "", + this._settings.wellboreUuid ?? "" + ), + staleTime: STALE_TIME, + gcTime: CACHE_TIME, + }); + + const stratigraphicUnitsPromise = queryClient.fetchQuery({ + queryKey: ["getStratigraphicUnits", this._settings.ensembleIdent?.getCaseUuid()], + queryFn: () => apiService.surface.getStratigraphicUnits(this._settings.ensembleIdent?.getCaseUuid() ?? ""), + staleTime: STALE_TIME, + gcTime: CACHE_TIME, + }); + + return Promise.all([wellborePicksPromise, stratigraphicUnitsPromise]).then( + ([wellborePicks, stratigraphicUnits]) => transformFormationData(wellborePicks, stratigraphicUnits as any) + ); + } } export function isWellpicksLayer(layer: BaseLayer): layer is WellpicksLayer { diff --git a/frontend/src/modules/Intersection/view/atoms/baseAtoms.ts b/frontend/src/modules/Intersection/view/atoms/baseAtoms.ts index 0e9b3f426..b381e1a67 100644 --- a/frontend/src/modules/Intersection/view/atoms/baseAtoms.ts +++ b/frontend/src/modules/Intersection/view/atoms/baseAtoms.ts @@ -3,6 +3,7 @@ import { WellboreHeader } from "@modules/Intersection/typesAndEnums"; import { atom } from "jotai"; +export const selectedFieldIdentifierAtom = atom(null); export const selectedCustomIntersectionPolylineIdAtom = atom(null); export const intersectionTypeAtom = atom(IntersectionType.WELLBORE); export const wellboreHeaderAtom = atom(null); diff --git a/frontend/src/modules/Intersection/view/atoms/interfaceEffects.ts b/frontend/src/modules/Intersection/view/atoms/interfaceEffects.ts index 575de6efa..e3e49572a 100644 --- a/frontend/src/modules/Intersection/view/atoms/interfaceEffects.ts +++ b/frontend/src/modules/Intersection/view/atoms/interfaceEffects.ts @@ -5,10 +5,15 @@ import { intersectionExtensionLengthAtom, intersectionTypeAtom, selectedCustomIntersectionPolylineIdAtom, + selectedFieldIdentifierAtom, wellboreHeaderAtom, } from "./baseAtoms"; export const settingsToViewInterfaceEffects: InterfaceEffects = [ + (getInterfaceValue, setAtomValue) => { + const fieldIdentifier = getInterfaceValue("fieldIdentifier"); + setAtomValue(selectedFieldIdentifierAtom, fieldIdentifier); + }, (getInterfaceValue, setAtomValue) => { const selectedCustomIntersectionPolylineId = getInterfaceValue("selectedCustomIntersectionPolylineId"); setAtomValue(selectedCustomIntersectionPolylineIdAtom, selectedCustomIntersectionPolylineId); diff --git a/frontend/src/modules/Intersection/view/atoms/queryAtoms.ts b/frontend/src/modules/Intersection/view/atoms/queryAtoms.ts index c0945d217..29d0beb6b 100644 --- a/frontend/src/modules/Intersection/view/atoms/queryAtoms.ts +++ b/frontend/src/modules/Intersection/view/atoms/queryAtoms.ts @@ -3,20 +3,22 @@ import { apiService } from "@framework/ApiService"; import { atomWithQuery } from "jotai-tanstack-query"; -import { wellboreHeaderAtom } from "./baseAtoms"; +import { selectedFieldIdentifierAtom, wellboreHeaderAtom } from "./baseAtoms"; const STALE_TIME = 60 * 1000; const CACHE_TIME = 60 * 1000; export const wellboreTrajectoryQueryAtom = atomWithQuery((get) => { const wellbore = get(wellboreHeaderAtom); + const fieldIdentifier = get(selectedFieldIdentifierAtom); return { queryKey: ["getWellboreTrajectory", wellbore?.uuid ?? ""], - queryFn: () => apiService.well.getWellTrajectories("", wellbore?.uuid ? [wellbore.uuid] : []), + queryFn: () => + apiService.well.getWellTrajectories(fieldIdentifier ?? "", wellbore?.uuid ? [wellbore.uuid] : []), staleTime: STALE_TIME, gcTime: CACHE_TIME, select: (data: WellboreTrajectory_api[]) => data[0], - enabled: wellbore?.uuid ? true : false, + enabled: Boolean(wellbore?.uuid) && Boolean(fieldIdentifier), }; }); diff --git a/frontend/src/modules/Intersection/view/view.tsx b/frontend/src/modules/Intersection/view/view.tsx index 86161141d..24217cf33 100644 --- a/frontend/src/modules/Intersection/view/view.tsx +++ b/frontend/src/modules/Intersection/view/view.tsx @@ -27,7 +27,7 @@ export function View(props: ModuleViewProps): React.ReactNode { const statusWriter = useViewStatusWriter(props.viewContext); const ensembleSet = useEnsembleSet(props.workbenchSession); - const ensembleIdent = props.viewContext.useSettingsToViewInterfaceValue("ensembleIdent"); + const fieldIdentifier = props.viewContext.useSettingsToViewInterfaceValue("fieldIdentifier"); const intersectionReferenceSystem = useAtomValue(intersectionReferenceSystemAtom); const wellboreHeader = props.viewContext.useSettingsToViewInterfaceValue("wellboreHeader"); const wellboreTrajectoryQuery = useAtomValue(wellboreTrajectoryQueryAtom); @@ -72,30 +72,29 @@ export function View(props: ModuleViewProps): React.ReactNode { for (const layer of layers) { if (isWellpicksLayer(layer)) { layer.maybeUpdateSettings({ - ensembleIdent, + fieldIdentifier, wellboreUuid: intersectionType === IntersectionType.WELLBORE ? wellbore?.uuid : null, }); layer.maybeRefetchData(); } } }, - [layers, wellbore, ensembleIdent, intersectionType] + [layers, wellbore, fieldIdentifier, intersectionType] ); React.useEffect( function handleTitleChange() { - let ensembleName = ""; - if (ensembleIdent) { - const ensemble = ensembleSet.findEnsemble(ensembleIdent); - ensembleName = ensemble?.getDisplayName() ?? ""; + let fieldName = ""; + if (fieldIdentifier) { + fieldName = fieldIdentifier; } props.viewContext.setInstanceTitle( `${wellboreHeader?.identifier ?? "Intersection"} - (${ensembleName})` + (${fieldName})` ); }, - [ensembleSet, ensembleIdent, wellboreHeader?.identifier, props.viewContext] + [ensembleSet, fieldIdentifier, wellboreHeader?.identifier, props.viewContext] ); // Status messages