jupytergis-lab 0.4.5__py3-none-any.whl → 0.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. jupytergis_lab/_version.py +1 -1
  2. jupytergis_lab/notebook/explore.py +4 -4
  3. jupytergis_lab/notebook/gis_document.py +1 -1
  4. {jupytergis_lab-0.4.5.data → jupytergis_lab-0.5.0.data}/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/package.json +4 -4
  5. jupytergis_lab-0.5.0.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/432.c9ac1551a28b0189d4b3.js +1 -0
  6. jupytergis_lab-0.5.0.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/484.1e1e78276dfe49d0de97.js +1 -0
  7. jupytergis_lab-0.4.5.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/remoteEntry.4b4db2d5f1ccde6ba0de.js → jupytergis_lab-0.5.0.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/remoteEntry.5cdf3f10821b0262016a.js +1 -1
  8. {jupytergis_lab-0.4.5.data → jupytergis_lab-0.5.0.data}/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/third-party-licenses.json +1 -1
  9. {jupytergis_lab-0.4.5.dist-info → jupytergis_lab-0.5.0.dist-info}/METADATA +1 -1
  10. jupytergis_lab-0.5.0.dist-info/RECORD +21 -0
  11. jupytergis_lab/notebook/objects/__init__.py +0 -22
  12. jupytergis_lab/notebook/objects/_schema/__init__.py +0 -3
  13. jupytergis_lab/notebook/objects/_schema/export/__init__.py +0 -3
  14. jupytergis_lab/notebook/objects/_schema/export/exportGeojson.py +0 -18
  15. jupytergis_lab/notebook/objects/_schema/export/exportGeotiff.py +0 -28
  16. jupytergis_lab/notebook/objects/_schema/geojson.py +0 -502
  17. jupytergis_lab/notebook/objects/_schema/geojsonsource.py +0 -20
  18. jupytergis_lab/notebook/objects/_schema/processing/__init__.py +0 -3
  19. jupytergis_lab/notebook/objects/_schema/processing/buffer.py +0 -23
  20. jupytergis_lab/notebook/objects/_schema/processing/dissolve.py +0 -24
  21. jupytergis_lab/notebook/objects/_schema/project/__init__.py +0 -3
  22. jupytergis_lab/notebook/objects/_schema/project/jgis.py +0 -135
  23. jupytergis_lab/notebook/objects/_schema/project/layers/__init__.py +0 -3
  24. jupytergis_lab/notebook/objects/_schema/project/layers/heatmapLayer.py +0 -30
  25. jupytergis_lab/notebook/objects/_schema/project/layers/hillshadeLayer.py +0 -19
  26. jupytergis_lab/notebook/objects/_schema/project/layers/imageLayer.py +0 -19
  27. jupytergis_lab/notebook/objects/_schema/project/layers/rasterlayer.py +0 -19
  28. jupytergis_lab/notebook/objects/_schema/project/layers/vectorTileLayer.py +0 -30
  29. jupytergis_lab/notebook/objects/_schema/project/layers/vectorlayer.py +0 -64
  30. jupytergis_lab/notebook/objects/_schema/project/layers/webGlLayer.py +0 -57
  31. jupytergis_lab/notebook/objects/_schema/project/sources/__init__.py +0 -3
  32. jupytergis_lab/notebook/objects/_schema/project/sources/geoTiffSource.py +0 -27
  33. jupytergis_lab/notebook/objects/_schema/project/sources/imageSource.py +0 -29
  34. jupytergis_lab/notebook/objects/_schema/project/sources/rasterDemSource.py +0 -23
  35. jupytergis_lab/notebook/objects/_schema/project/sources/rastersource.py +0 -36
  36. jupytergis_lab/notebook/objects/_schema/project/sources/shapefileSource.py +0 -31
  37. jupytergis_lab/notebook/objects/_schema/project/sources/vectortilesource.py +0 -27
  38. jupytergis_lab/notebook/objects/_schema/project/sources/videoSource.py +0 -30
  39. jupytergis_lab-0.4.5.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/432.bb0ae93e813eefae7236.js +0 -1
  40. jupytergis_lab-0.4.5.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/484.8ba570bf2020ec490e49.js +0 -1
  41. jupytergis_lab-0.4.5.dist-info/RECORD +0 -49
  42. {jupytergis_lab-0.4.5.data → jupytergis_lab-0.5.0.data}/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/install.json +0 -0
  43. {jupytergis_lab-0.4.5.data → jupytergis_lab-0.5.0.data}/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/234.c2d7ed33ae9ca2244b0d.js +0 -0
  44. {jupytergis_lab-0.4.5.data → jupytergis_lab-0.5.0.data}/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/style.js +0 -0
  45. {jupytergis_lab-0.4.5.dist-info → jupytergis_lab-0.5.0.dist-info}/WHEEL +0 -0
  46. {jupytergis_lab-0.4.5.dist-info → jupytergis_lab-0.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,30 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: project/layers/heatmapLayer.json
3
- # timestamp: 2025-04-25T14:14:35+00:00
4
-
5
- from __future__ import annotations
6
-
7
- from typing import List, Optional
8
-
9
- from pydantic import BaseModel, ConfigDict, Field, confloat
10
-
11
-
12
- class SymbologyState(BaseModel):
13
- renderType: str
14
- colorRamp: Optional[str] = 'cool'
15
-
16
-
17
- class IHeatmapLayer(BaseModel):
18
- model_config = ConfigDict(
19
- extra='forbid',
20
- )
21
- source: str = Field(..., description='The id of the source')
22
- opacity: Optional[confloat(ge=0.0, le=1.0, multiple_of=0.1)] = Field(
23
- 1, description='The opacity of the source'
24
- )
25
- radius: float = Field(..., description='Radius size in pixels')
26
- blur: float = Field(..., description='Blur size in pixels')
27
- color: Optional[List[str]] = ['#00f', '#0ff', '#0f0', '#ff0', '#f00']
28
- symbologyState: Optional[SymbologyState] = Field(
29
- None, description='The state of the symbology panel options'
30
- )
@@ -1,19 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: project/layers/hillshadeLayer.json
3
- # timestamp: 2025-04-25T14:14:35+00:00
4
-
5
- from __future__ import annotations
6
-
7
- from typing import Optional
8
-
9
- from pydantic import BaseModel, ConfigDict, Field
10
-
11
-
12
- class IHillshadeLayer(BaseModel):
13
- model_config = ConfigDict(
14
- extra='forbid',
15
- )
16
- source: str = Field(..., description='The id of the source')
17
- shadowColor: Optional[str] = Field(
18
- '#473B24', description='The color of the the shadows'
19
- )
@@ -1,19 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: project/layers/imageLayer.json
3
- # timestamp: 2025-04-25T14:14:35+00:00
4
-
5
- from __future__ import annotations
6
-
7
- from typing import Optional
8
-
9
- from pydantic import BaseModel, ConfigDict, Field, confloat
10
-
11
-
12
- class IImageLayer(BaseModel):
13
- model_config = ConfigDict(
14
- extra='forbid',
15
- )
16
- source: str = Field(..., description='The id of the source')
17
- opacity: Optional[confloat(ge=0.0, le=1.0, multiple_of=0.1)] = Field(
18
- 1, description='The opacity of the source'
19
- )
@@ -1,19 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: project/layers/rasterlayer.json
3
- # timestamp: 2025-04-25T14:14:35+00:00
4
-
5
- from __future__ import annotations
6
-
7
- from typing import Optional
8
-
9
- from pydantic import BaseModel, ConfigDict, Field, confloat
10
-
11
-
12
- class IRasterLayer(BaseModel):
13
- model_config = ConfigDict(
14
- extra='forbid',
15
- )
16
- source: str = Field(..., description='The id of the source')
17
- opacity: Optional[confloat(ge=0.0, le=1.0, multiple_of=0.1)] = Field(
18
- 1, description='The opacity of the source'
19
- )
@@ -1,30 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: project/layers/vectorTileLayer.json
3
- # timestamp: 2025-04-25T14:14:35+00:00
4
-
5
- from __future__ import annotations
6
-
7
- from enum import Enum
8
- from typing import Any, Dict, Optional
9
-
10
- from pydantic import BaseModel, ConfigDict, Field, confloat
11
-
12
-
13
- class Type(Enum):
14
- circle = 'circle'
15
- fill = 'fill'
16
- line = 'line'
17
-
18
-
19
- class IVectorTileLayer(BaseModel):
20
- model_config = ConfigDict(
21
- extra='forbid',
22
- )
23
- source: str = Field(..., description='The id of the source')
24
- type: Type = Field(..., description='The type of vector layer')
25
- color: Optional[Dict[str, Any]] = Field(
26
- None, description='The color of the the object'
27
- )
28
- opacity: Optional[confloat(ge=0.0, le=1.0, multiple_of=0.1)] = Field(
29
- 1, description='The opacity of the the object'
30
- )
@@ -1,64 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: project/layers/vectorlayer.json
3
- # timestamp: 2025-04-25T14:14:35+00:00
4
-
5
- from __future__ import annotations
6
-
7
- from enum import Enum
8
- from typing import Any, Dict, Optional
9
-
10
- from pydantic import BaseModel, ConfigDict, Field, confloat
11
-
12
-
13
- class Type(Enum):
14
- circle = 'circle'
15
- fill = 'fill'
16
- line = 'line'
17
-
18
-
19
- class RenderType(Enum):
20
- Single_Symbol = 'Single Symbol'
21
- Graduated = 'Graduated'
22
- Categorized = 'Categorized'
23
-
24
-
25
- class Method(Enum):
26
- color = 'color'
27
- radius = 'radius'
28
-
29
-
30
- class Mode(Enum):
31
- quantile = 'quantile'
32
- equal_interval = 'equal interval'
33
- jenks = 'jenks'
34
- pretty = 'pretty'
35
- logarithmic = 'logarithmic'
36
-
37
-
38
- class SymbologyState(BaseModel):
39
- model_config = ConfigDict(
40
- extra='forbid',
41
- )
42
- renderType: RenderType
43
- value: Optional[str] = None
44
- method: Optional[Method] = None
45
- colorRamp: Optional[str] = 'cool'
46
- nClasses: Optional[str] = '9'
47
- mode: Optional[Mode] = 'equal interval'
48
-
49
-
50
- class IVectorLayer(BaseModel):
51
- model_config = ConfigDict(
52
- extra='forbid',
53
- )
54
- source: str = Field(..., description='The id of the source')
55
- type: Type = Field(..., description='The type of vector layer')
56
- color: Optional[Dict[str, Any]] = Field(
57
- None, description='The color of the the object'
58
- )
59
- opacity: Optional[confloat(ge=0.0, le=1.0, multiple_of=0.1)] = Field(
60
- 1, description='The opacity of the the object'
61
- )
62
- symbologyState: Optional[SymbologyState] = Field(
63
- None, description='The state of the symbology panel options'
64
- )
@@ -1,57 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: project/layers/webGlLayer.json
3
- # timestamp: 2025-04-25T14:14:35+00:00
4
-
5
- from __future__ import annotations
6
-
7
- from enum import Enum
8
- from typing import List, Optional, Union
9
-
10
- from pydantic import BaseModel, ConfigDict, Field, confloat
11
-
12
-
13
- class Interpolation(Enum):
14
- discrete = 'discrete'
15
- linear = 'linear'
16
- exact = 'exact'
17
-
18
-
19
- class Mode(Enum):
20
- continuous = 'continuous'
21
- equal_interval = 'equal interval'
22
- quantile = 'quantile'
23
-
24
-
25
- class SymbologyState(BaseModel):
26
- model_config = ConfigDict(
27
- extra='forbid',
28
- )
29
- renderType: str
30
- band: Optional[float] = None
31
- redBand: Optional[float] = None
32
- greenBand: Optional[float] = None
33
- blueBand: Optional[float] = None
34
- interpolation: Optional[Interpolation] = None
35
- colorRamp: Optional[str] = 'cool'
36
- nClasses: Optional[str] = '9'
37
- mode: Optional[Mode] = 'equal interval'
38
-
39
-
40
- class IWebGlLayer(BaseModel):
41
- model_config = ConfigDict(
42
- extra='forbid',
43
- )
44
- source: str = Field(..., description='The id of the source')
45
- opacity: Optional[confloat(ge=0.0, le=1.0, multiple_of=0.1)] = Field(
46
- 1, description='The opacity of the source'
47
- )
48
- color: Optional[
49
- Union[
50
- str,
51
- float,
52
- List[Union[str, float, List[Union[float, str, List[Union[float, str]]]]]],
53
- ]
54
- ] = Field(None, description='The color of the the object')
55
- symbologyState: Optional[SymbologyState] = Field(
56
- None, description='The state of the symbology panel options'
57
- )
@@ -1,3 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: schema
3
- # timestamp: 2025-04-25T14:14:35+00:00
@@ -1,27 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: project/sources/geoTiffSource.json
3
- # timestamp: 2025-04-25T14:14:35+00:00
4
-
5
- from __future__ import annotations
6
-
7
- from typing import List, Optional
8
-
9
- from pydantic import BaseModel, ConfigDict, Field
10
-
11
-
12
- class Url(BaseModel):
13
- url: Optional[str] = None
14
- min: Optional[float] = None
15
- max: Optional[float] = None
16
-
17
-
18
- class IGeoTiffSource(BaseModel):
19
- model_config = ConfigDict(
20
- extra='forbid',
21
- )
22
- urls: List[Url] = Field(..., description='URLs', min_length=1)
23
- normalize: Optional[bool] = True
24
- wrapX: Optional[bool] = False
25
- interpolate: Optional[bool] = Field(
26
- False, description='Interpolate between grid cells when overzooming?'
27
- )
@@ -1,29 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: project/sources/imageSource.json
3
- # timestamp: 2025-04-25T14:14:35+00:00
4
-
5
- from __future__ import annotations
6
-
7
- from typing import List, Optional
8
-
9
- from pydantic import BaseModel, ConfigDict, Field, RootModel
10
-
11
-
12
- class Coordinate(RootModel[List[float]]):
13
- root: List[float]
14
-
15
-
16
- class IImageSource(BaseModel):
17
- model_config = ConfigDict(
18
- extra='forbid',
19
- )
20
- path: str = Field(..., description='Path that points to an image')
21
- coordinates: List[Coordinate] = Field(
22
- ...,
23
- description='Corners of image specified in longitude, latitude pairs',
24
- max_length=4,
25
- min_length=4,
26
- )
27
- interpolate: Optional[bool] = Field(
28
- False, description='Interpolate between grid cells when overzooming?'
29
- )
@@ -1,23 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: project/sources/rasterDemSource.json
3
- # timestamp: 2025-04-25T14:14:35+00:00
4
-
5
- from __future__ import annotations
6
-
7
- from typing import Dict, Optional
8
-
9
- from pydantic import BaseModel, ConfigDict, Field
10
-
11
-
12
- class IRasterDemSource(BaseModel):
13
- model_config = ConfigDict(
14
- extra='forbid',
15
- )
16
- url: str = Field(..., description='The url to the tile provider')
17
- attribution: Optional[str] = Field(
18
- None, description='The attribution for the raster-dem source'
19
- )
20
- urlParameters: Optional[Dict[str, str]] = None
21
- interpolate: Optional[bool] = Field(
22
- False, description='Interpolate between grid cells when overzooming?'
23
- )
@@ -1,36 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: project/sources/rastersource.json
3
- # timestamp: 2025-04-25T14:14:35+00:00
4
-
5
- from __future__ import annotations
6
-
7
- from typing import Dict, List, Optional
8
-
9
- from pydantic import BaseModel, ConfigDict, Field, confloat
10
-
11
-
12
- class IRasterSource(BaseModel):
13
- model_config = ConfigDict(
14
- extra='forbid',
15
- )
16
- url: str = Field(..., description='The url to the tile provider')
17
- minZoom: confloat(ge=0.0, le=24.0) = Field(
18
- ..., description='The minimum zoom level for the raster source'
19
- )
20
- maxZoom: confloat(ge=0.0, le=24.0) = Field(
21
- ..., description='The maximum zoom level for the raster source'
22
- )
23
- attribution: Optional[str] = Field(
24
- '', description='The attribution for the raster source'
25
- )
26
- htmlAttribution: Optional[str] = Field(
27
- '', description='The html attribution for the raster source'
28
- )
29
- provider: Optional[str] = Field('', description='The map provider')
30
- bounds: Optional[List[List[float]]] = Field(
31
- [], description='The bounds of the source'
32
- )
33
- urlParameters: Optional[Dict[str, str]] = {}
34
- interpolate: Optional[bool] = Field(
35
- False, description='Interpolate between grid cells when overzooming?'
36
- )
@@ -1,31 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: project/sources/shapefileSource.json
3
- # timestamp: 2025-04-25T14:14:35+00:00
4
-
5
- from __future__ import annotations
6
-
7
- from typing import Dict, Optional
8
-
9
- from pydantic import BaseModel, ConfigDict, Field
10
-
11
-
12
- class IShapefileSource(BaseModel):
13
- model_config = ConfigDict(
14
- extra='forbid',
15
- )
16
- path: str = Field(
17
- ..., description='The path to the shapefile (.shp, .zip, or folder URL).'
18
- )
19
- attribution: Optional[str] = Field(
20
- '', description='The attribution for the shapefile source.'
21
- )
22
- projection: Optional[str] = Field(
23
- 'WGS84', description='The projection information for the shapefile (optional).'
24
- )
25
- encoding: Optional[str] = Field(
26
- 'UTF-8', description="The encoding used for the shapefile's DBF (optional)."
27
- )
28
- additionalFiles: Optional[Dict[str, str]] = Field(
29
- {},
30
- description='Additional files associated with the shapefile (e.g., .dbf, .prj, .cpg).',
31
- )
@@ -1,27 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: project/sources/vectortilesource.json
3
- # timestamp: 2025-04-25T14:14:35+00:00
4
-
5
- from __future__ import annotations
6
-
7
- from typing import Dict, Optional
8
-
9
- from pydantic import BaseModel, ConfigDict, Field, confloat
10
-
11
-
12
- class IVectorTileSource(BaseModel):
13
- model_config = ConfigDict(
14
- extra='forbid',
15
- )
16
- url: str = Field(..., description='The url to the tile provider')
17
- minZoom: confloat(ge=0.0, le=24.0) = Field(
18
- ..., description='The minimum zoom level for the vector source'
19
- )
20
- maxZoom: confloat(ge=0.0, le=24.0) = Field(
21
- ..., description='The maximum zoom level for the vector source'
22
- )
23
- attribution: Optional[str] = Field(
24
- None, description='The attribution for the vector source'
25
- )
26
- provider: Optional[str] = Field(None, description='The map provider')
27
- urlParameters: Optional[Dict[str, str]] = None
@@ -1,30 +0,0 @@
1
- # generated by datamodel-codegen:
2
- # filename: project/sources/videoSource.json
3
- # timestamp: 2025-04-25T14:14:35+00:00
4
-
5
- from __future__ import annotations
6
-
7
- from typing import List
8
-
9
- from pydantic import BaseModel, ConfigDict, Field, RootModel
10
-
11
-
12
- class Coordinate(RootModel[List[float]]):
13
- root: List[float]
14
-
15
-
16
- class IVideoSource(BaseModel):
17
- model_config = ConfigDict(
18
- extra='forbid',
19
- )
20
- urls: List[str] = Field(
21
- ...,
22
- description='URLs to video content in order of preferred format',
23
- min_length=1,
24
- )
25
- coordinates: List[Coordinate] = Field(
26
- ...,
27
- description='Corners of video specified in longitude, latitude pairs',
28
- max_length=4,
29
- min_length=4,
30
- )
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_jupytergis_jupytergis_lab=self.webpackChunk_jupytergis_jupytergis_lab||[]).push([[432],{4:(n,o,e)=>{e.d(o,{A:()=>l});var r=e(758),t=e.n(r),i=e(935),a=e.n(i)()(t());a.push([n.id,':root,\n:host {\n --ol-background-color: white;\n --ol-accent-background-color: #F5F5F5;\n --ol-subtle-background-color: rgba(128, 128, 128, 0.25);\n --ol-partial-background-color: rgba(255, 255, 255, 0.75);\n --ol-foreground-color: #333333;\n --ol-subtle-foreground-color: #666666;\n --ol-brand-color: #00AAFF;\n}\n\n.ol-box {\n box-sizing: border-box;\n border-radius: 2px;\n border: 1.5px solid var(--ol-background-color);\n background-color: var(--ol-partial-background-color);\n}\n\n.ol-mouse-position {\n top: 8px;\n right: 8px;\n position: absolute;\n}\n\n.ol-scale-line {\n background: var(--ol-partial-background-color);\n border-radius: 4px;\n bottom: 8px;\n left: 8px;\n padding: 2px;\n position: absolute;\n}\n\n.ol-scale-line-inner {\n border: 1px solid var(--ol-subtle-foreground-color);\n border-top: none;\n color: var(--ol-foreground-color);\n font-size: 10px;\n text-align: center;\n margin: 1px;\n will-change: contents, width;\n transition: all 0.25s;\n}\n\n.ol-scale-bar {\n position: absolute;\n bottom: 8px;\n left: 8px;\n}\n\n.ol-scale-bar-inner {\n display: flex;\n}\n\n.ol-scale-step-marker {\n width: 1px;\n height: 15px;\n background-color: var(--ol-foreground-color);\n float: right;\n z-index: 10;\n}\n\n.ol-scale-step-text {\n position: absolute;\n bottom: -5px;\n font-size: 10px;\n z-index: 11;\n color: var(--ol-foreground-color);\n text-shadow: -1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);\n}\n\n.ol-scale-text {\n position: absolute;\n font-size: 12px;\n text-align: center;\n bottom: 25px;\n color: var(--ol-foreground-color);\n text-shadow: -1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);\n}\n\n.ol-scale-singlebar {\n position: relative;\n height: 10px;\n z-index: 9;\n box-sizing: border-box;\n border: 1px solid var(--ol-foreground-color);\n}\n\n.ol-scale-singlebar-even {\n background-color: var(--ol-subtle-foreground-color);\n}\n\n.ol-scale-singlebar-odd {\n background-color: var(--ol-background-color);\n}\n\n.ol-unsupported {\n display: none;\n}\n\n.ol-viewport,\n.ol-unselectable {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n.ol-viewport canvas {\n all: unset;\n overflow: hidden;\n}\n\n.ol-viewport {\n touch-action: pan-x pan-y;\n}\n\n.ol-selectable {\n -webkit-touch-callout: default;\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n}\n\n.ol-grabbing {\n cursor: -webkit-grabbing;\n cursor: -moz-grabbing;\n cursor: grabbing;\n}\n\n.ol-grab {\n cursor: move;\n cursor: -webkit-grab;\n cursor: -moz-grab;\n cursor: grab;\n}\n\n.ol-control {\n position: absolute;\n background-color: var(--ol-subtle-background-color);\n border-radius: 4px;\n}\n\n.ol-zoom {\n top: .5em;\n left: .5em;\n}\n\n.ol-rotate {\n top: .5em;\n right: .5em;\n transition: opacity .25s linear, visibility 0s linear;\n}\n\n.ol-rotate.ol-hidden {\n opacity: 0;\n visibility: hidden;\n transition: opacity .25s linear, visibility 0s linear .25s;\n}\n\n.ol-zoom-extent {\n top: 4.643em;\n left: .5em;\n}\n\n.ol-full-screen {\n right: .5em;\n top: .5em;\n}\n\n.ol-control button {\n display: block;\n margin: 1px;\n padding: 0;\n color: var(--ol-subtle-foreground-color);\n font-weight: bold;\n text-decoration: none;\n font-size: inherit;\n text-align: center;\n height: 1.375em;\n width: 1.375em;\n line-height: .4em;\n background-color: var(--ol-background-color);\n border: none;\n border-radius: 2px;\n}\n\n.ol-control button::-moz-focus-inner {\n border: none;\n padding: 0;\n}\n\n.ol-zoom-extent button {\n line-height: 1.4em;\n}\n\n.ol-compass {\n display: block;\n font-weight: normal;\n will-change: transform;\n}\n\n.ol-touch .ol-control button {\n font-size: 1.5em;\n}\n\n.ol-touch .ol-zoom-extent {\n top: 5.5em;\n}\n\n.ol-control button:hover,\n.ol-control button:focus {\n text-decoration: none;\n outline: 1px solid var(--ol-subtle-foreground-color);\n color: var(--ol-foreground-color);\n}\n\n.ol-zoom .ol-zoom-in {\n border-radius: 2px 2px 0 0;\n}\n\n.ol-zoom .ol-zoom-out {\n border-radius: 0 0 2px 2px;\n}\n\n.ol-attribution {\n text-align: right;\n bottom: .5em;\n right: .5em;\n max-width: calc(100% - 1.3em);\n display: flex;\n flex-flow: row-reverse;\n align-items: center;\n}\n\n.ol-attribution a {\n color: var(--ol-subtle-foreground-color);\n text-decoration: none;\n}\n\n.ol-attribution ul {\n margin: 0;\n padding: 1px .5em;\n color: var(--ol-foreground-color);\n text-shadow: 0 0 2px var(--ol-background-color);\n font-size: 12px;\n}\n\n.ol-attribution li {\n display: inline;\n list-style: none;\n}\n\n.ol-attribution li:not(:last-child):after {\n content: " ";\n}\n\n.ol-attribution img {\n max-height: 2em;\n max-width: inherit;\n vertical-align: middle;\n}\n\n.ol-attribution button {\n flex-shrink: 0;\n}\n\n.ol-attribution.ol-collapsed ul {\n display: none;\n}\n\n.ol-attribution:not(.ol-collapsed) {\n background: var(--ol-partial-background-color);\n}\n\n.ol-attribution.ol-uncollapsible {\n bottom: 0;\n right: 0;\n border-radius: 4px 0 0;\n}\n\n.ol-attribution.ol-uncollapsible img {\n margin-top: -.2em;\n max-height: 1.6em;\n}\n\n.ol-attribution.ol-uncollapsible button {\n display: none;\n}\n\n.ol-zoomslider {\n top: 4.5em;\n left: .5em;\n height: 200px;\n}\n\n.ol-zoomslider button {\n position: relative;\n height: 10px;\n}\n\n.ol-touch .ol-zoomslider {\n top: 5.5em;\n}\n\n.ol-overviewmap {\n left: 0.5em;\n bottom: 0.5em;\n}\n\n.ol-overviewmap.ol-uncollapsible {\n bottom: 0;\n left: 0;\n border-radius: 0 4px 0 0;\n}\n\n.ol-overviewmap .ol-overviewmap-map,\n.ol-overviewmap button {\n display: block;\n}\n\n.ol-overviewmap .ol-overviewmap-map {\n border: 1px solid var(--ol-subtle-foreground-color);\n height: 150px;\n width: 150px;\n}\n\n.ol-overviewmap:not(.ol-collapsed) button {\n bottom: 0;\n left: 0;\n position: absolute;\n}\n\n.ol-overviewmap.ol-collapsed .ol-overviewmap-map,\n.ol-overviewmap.ol-uncollapsible button {\n display: none;\n}\n\n.ol-overviewmap:not(.ol-collapsed) {\n background: var(--ol-subtle-background-color);\n}\n\n.ol-overviewmap-box {\n border: 1.5px dotted var(--ol-subtle-foreground-color);\n}\n\n.ol-overviewmap .ol-overviewmap-box:hover {\n cursor: move;\n}\n\n.ol-overviewmap .ol-viewport:hover {\n cursor: pointer;\n}\n',""]);const l=a},51:n=>{n.exports=function(n){var o=document.createElement("style");return n.setAttributes(o,n.attributes),n.insert(o,n.options),o}},62:n=>{n.exports=function(n,o){return o||(o={}),n?(n=String(n.__esModule?n.default:n),/^['"].*['"]$/.test(n)&&(n=n.slice(1,-1)),o.hash&&(n+=o.hash),/["'() \t\n]|(%20)/.test(n)||o.needQuotes?'"'.concat(n.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):n):n}},79:(n,o,e)=>{e.d(o,{A:()=>m});var r=e(758),t=e.n(r),i=e(935),a=e.n(i),l=e(564),p=e(365),s=e(633),d=e(606),c=e(781),g=e(367),u=e(301),b=e(4),f=a()(t());f.i(l.A),f.i(p.A),f.i(s.A),f.i(d.A),f.i(c.A),f.i(g.A),f.i(u.A),f.i(b.A),f.push([n.id,"/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|---------------------------------------------------------------------------- */\n\n.jGIS-Toolbar-GroupName {\n font-size: var(--jp-ui-font-size0);\n padding-left: 3px;\n}\n\n/* Overwrite forms CSS */\n.jGIS-property-panel .array-item-list {\n display: flex;\n gap: 1rem;\n}\n\n.jGIS-property-panel .rjsf .array-item:not(:last-child) {\n border-bottom: none;\n margin-bottom: unset;\n padding-bottom: unset;\n}\n\n.jGIS-property-panel .rjsf .array-item {\n flex: 1 0 0%;\n align-items: center;\n}\n\n.jGIS-property-panel .rjsf fieldset fieldset {\n padding-left: unset;\n border-left: none;\n}\n\n.jGIS-property-panel .rjsf .array-item-list:has(.field-array) {\n flex-direction: column;\n}\n\n.jp-gis-text-label {\n margin: 0;\n padding: 0;\n font-weight: bold;\n display: block;\n position: relative;\n}\n\n/*This is being upstreamed. Will remove once upstream's been fixed.*/\nbutton.jp-mod-styled.jp-mod-accept {\n background-color: var(--jp-brand-color1) !important;\n}\n\nbutton.jp-mod-styled.jp-mod-reject {\n background-color: var(--jp-layout-color4) !important;\n}\n",""]);const m=f},128:n=>{var o={};n.exports=function(n,e){var r=function(n){if(void 0===o[n]){var e=document.querySelector(n);if(window.HTMLIFrameElement&&e instanceof window.HTMLIFrameElement)try{e=e.contentDocument.head}catch(n){e=null}o[n]=e}return o[n]}(n);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(e)}},248:n=>{n.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2716%27 viewBox=%270 0 20 20%27%3e %3cg class=%27jp-icon3%27 fill=%27%23616161%27 shape-rendering=%27geometricPrecision%27%3e %3cpolygon class=%27st1%27 points=%279.9%2c13.6 3.6%2c7.4 4.4%2c6.6 9.9%2c12.2 15.4%2c6.7 16.1%2c7.4 %27/%3e %3c/g%3e %3c/svg%3e"},296:(n,o,e)=>{e.d(o,{A:()=>u});var r=e(758),t=e.n(r),i=e(935),a=e.n(i),l=e(997),p=e(62),s=e.n(p),d=new URL(e(248),e.b),c=a()(t());c.i(l.A);var g=s()(d);c.push([n.id,`.jGIS-Spinner {\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 10;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n outline: none;\n background: #00000075;\n}\n\n.jGIS-SpinnerContent {\n border: solid #f376269e;\n margin: 50px auto;\n text-indent: -9999em;\n width: 6em;\n height: 6em;\n border-radius: 50%;\n position: relative;\n animation:\n load3 1s infinite linear,\n fadeIn 1s;\n}\n\n.jGIS-SpinnerContent:before {\n width: 50%;\n height: 50%;\n background: #f3762605;\n border-radius: 100% 0 100% 0;\n box-shadow: inset 6px 5px 0 1px #f37626;\n position: absolute;\n top: 0;\n left: 0;\n content: '';\n}\n\n.jGIS-SpinnerContent:after {\n width: 75%;\n height: 75%;\n border-radius: 50%;\n content: '';\n margin: auto;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n}\n\n.jGIS-camera-client {\n width: 15px;\n height: 15px;\n position: absolute;\n z-index: 10;\n background-color: var(--jp-private-notebook-active-color);\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.jGIS-control-panel {\n color: var(--jp-ui-font-color1);\n background: var(--jp-layout-color1);\n height: 100%;\n}\n\n.jGIS-control-panel * {\n font-family: var(--jp-ui-font-family);\n}\n\n.jGIS-control-panel-title {\n border-bottom: solid var(--jp-border-width) var(--jp-border-color1);\n box-shadow: var(--jp-toolbar-box-shadow);\n display: flex;\n flex-direction: row;\n align-items: center;\n min-height: 24px;\n height: var(--jp-debugger-header-height);\n background-color: var(--jp-layout-color2);\n}\n\n.jGIS-control-panel-title h2 {\n text-transform: uppercase;\n font-weight: 600;\n font-size: var(--jp-ui-font-size0);\n color: var(--jp-ui-font-color1);\n padding-left: 8px;\n padding-right: 4px;\n}\n\n.jGIS-sidepanel-widget {\n overflow: auto;\n height: 100%;\n}\n\n.jGIS-sidebar-treepanel {\n display: flex;\n flex-direction: column;\n min-height: 50px;\n padding-top: 3px;\n}\n\n.jGIS-sidebar-propertiespanel {\n display: flex;\n flex-direction: column;\n min-height: 50px;\n padding-top: 3px;\n}\n\n.jGIS-treeview-wrapper {\n overflow: auto;\n height: 100%;\n}\n\n.jGIS-treeview-wrapper > div {\n padding: 0 !important;\n}\n/* TODO: More robust selector */\n.jGIS-treeview-wrapper div[style*='align-items: center;']:first-of-type {\n flex-grow: 1;\n}\n\n.jGIS-control-panel-tree {\n flex-grow: 1;\n}\n\n.jGIS-sidebar-propertiespanel > div {\n overflow: auto;\n}\n\n.jGIS-property-outer {\n padding: 10px;\n flex-grow: 1;\n overflow: auto;\n}\n\n.jGIS-property-buttons {\n display: flex;\n justify-content: end;\n padding: 10px;\n}\n\n.jGIS-property-panel {\n display: flex;\n flex-flow: column;\n height: 100%;\n overflow: hidden;\n}\n\n.jGIS-hidden-field {\n display: none;\n}\n\ndiv.field.field-array > label + span {\n display: none;\n}\n\n.jGIS-layer-CreationFormDialog .jp-Dialog-content {\n width: 60%;\n}\n\n.jGIS-layer-CreationFormDialog form {\n padding: 10px;\n}\n\n/* TODO Upstream this to jupyterlab jrfs */\n.jGIS-property-panel .rjsf .control-label,\n.jGIS-property-panel .rjsf legend {\n position: inherit;\n text-transform: capitalize;\n}\n\ndiv.jGIS-toolbar-widget > div.jp-Toolbar-item:last-child {\n flex-grow: 1;\n}\n\n.jGIS-toolbar-usertoolbar {\n flex-grow: 1;\n display: flex;\n flex-direction: row-reverse;\n}\n.jGIS-toolbar-react-widget {\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-grow: 1;\n}\n\n.jGIS-Toolbar-Separator {\n min-height: 25px;\n width: var(--jp-border-width);\n background-color: var(--jp-border-color1);\n padding-left: 0px !important;\n padding-right: 0px !important;\n}\n\n.jGIS-toolbar-usertoolbar .jp-MenuBar-anonymousIcon,\n.jGIS-toolbar-usertoolbar .jp-MenuBar-imageIcon {\n position: unset !important;\n margin-right: 2px;\n height: 22px;\n box-sizing: border-box;\n}\n\n.jGIS-toolbar-usertoolbar .jp-MenuBar-anonymousIcon.selected,\n.jGIS-toolbar-usertoolbar .jp-MenuBar-imageIcon.selected {\n border: solid 1.5px red;\n}\n\n.jGIS-Mainview-Container {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.jGIS-Mainview {\n width: 100%;\n box-sizing: border-box;\n flex: 1;\n}\n\n.jGIS-Popup-Wrapper {\n position: absolute;\n opacity: 1;\n transition: opacity 0.1s linear 0.15s;\n}\n\n.jGIS-Annotation {\n z-index: 1;\n margin-left: 1px;\n margin-top: 1px;\n padding: 1em;\n color: var(--jp-ui-font-color0);\n background: var(--jp-layout-color1);\n border-radius: 0.5em;\n font-size: 12px;\n line-height: 1.2;\n transition: opacity 0.5s;\n}\n\n.jGIS-FloatingAnnotation {\n position: absolute;\n width: 250px;\n box-shadow: var(--jp-elevation-z6);\n z-index: 40;\n max-height: 400px;\n overflow: auto;\n}\n\n.jGIS-Annotation-Card {\n max-height: 400px;\n overflow: auto;\n}\n\n.jGIS-Annotations-Separator {\n border-color: var(--jp-layout-color4);\n border-style: solid;\n border-width: 1px;\n}\n\n.jGIS-Annotation-Handler {\n position: absolute;\n top: -5px;\n left: -5px;\n width: 8px;\n height: 8px;\n border: 1px solid #ffffffc2;\n border-radius: 50%;\n background: rgb(0 0 0 / 63%);\n cursor: pointer;\n transition-property: width, height, left, top;\n transition-duration: 0.2s;\n z-index: 20;\n}\n\n.jGIS-Annotation-Handler:hover {\n top: -9px;\n left: -9px;\n width: 16px;\n height: 16px;\n}\n\n.jGIS-Annotation-Message {\n display: flex;\n margin-top: 10px;\n gap: 5px;\n align-items: center;\n justify-content: center;\n}\n\n.jGIS-Annotation-Message .jGIS-Annotation-User-Icon {\n border-radius: 100%;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n vertical-align: middle;\n color: var(--jp-ui-font-color1);\n}\n\n.jGIS-Annotation-Message textarea {\n border-radius: var(--jp-border-radius);\n background: var(--jp-layout-color2);\n color: var(--jp-ui-font-color2);\n flex-grow: 1;\n resize: none;\n border: none;\n padding: 0.5em;\n outline: thin solid var(--jp-border-color0);\n}\n\n.jGIS-Annotation-Message-Content {\n background: var(--jp-layout-color2);\n color: var(--jp-ui-font-color2);\n border-radius: var(--jp-border-radius);\n flex-grow: 1;\n}\n\n.jGIS-Popup-Topbar {\n display: flex;\n flex-direction: row-reverse;\n}\n\n.jGIS-Popup-TopBarIcon {\n cursor: pointer;\n transform: rotate(180deg);\n}\n\n.jGIS-Annotation-Submit > svg {\n width: 30px;\n height: 30px;\n}\n\n.jGIS-Annotation-Submit g {\n fill: #f6f7f8 !important;\n}\n\n.jGIS-Annotation-Submit:hover {\n opacity: 70%;\n cursor: pointer;\n}\n\n.jGIS-Annotation-Submit {\n background-color: var(--jp-brand-color1);\n border-radius: 100%;\n width: 30px;\n height: 30px;\n}\n\n.jGIS-Annotation-Buttons {\n display: flex;\n justify-content: space-around;\n padding-top: 1em;\n}\n\n.jGIS-Annotation-Buttons > button {\n border-radius: var(--jp-border-radius);\n flex-grow: 1;\n max-width: 68px;\n}\n\n.jGIS-Remote-Pointer {\n position: absolute;\n transition-property: left, top, width, height;\n transition-duration: 150ms;\n transition-timing-function: ease;\n z-index: 20;\n}\n\n.jGIS-Remote-Pointer-Icon:hover {\n scale: 1.3;\n}\n\n.jGIS-Floating-Pointer-Popup {\n position: absolute;\n width: 160px;\n box-shadow: var(--jp-elevation-z6);\n z-index: 40;\n max-height: 400px;\n overflow: auto;\n}\n\n.jGIS-Remote-Pointer-Popup {\n margin-left: 7px;\n margin-top: 14px;\n color: #fff;\n padding: 1em;\n border-radius: 0.5em;\n font-size: 12px;\n line-height: 1.2;\n}\n\n.jGIS-Remote-Pointer-Popup-Name {\n font-size: 16px;\n color: #333;\n}\n\n.jGIS-Remote-Pointer-Popup-Coordinates {\n font-size: 14px;\n}\n\n/* Hack to remove the malformed form button */\n.object-property-expand {\n display: none;\n}\n\n.highlight {\n background-color: var(--jp-layout-color2) !important;\n}\n.jupytergis-notebook-widget {\n height: 600px;\n width: 100%;\n}\n\n/* Support output views, created with "Create new view for cell output" context menu */\n.jp-LinkedOutputView .jp-OutputArea-child:only-child {\n /* NOTE: This will eventually be supported directly in JupyterLab\n * (https://github.com/jupyterlab/jupyterlab/pull/17487), but we should keep\n * it around for a while for backwards compatibility. */\n height: 100%;\n}\n.jp-LinkedOutputView .jupytergis-notebook-widget {\n height: 100%;\n}\n\n.jupytergis-notebook-widget > div {\n height: 100%;\n width: 100%;\n}\n\n.jGIS-property-panel .rjsf .control-label,\n.jGIS-property-panel .rjsf legend {\n width: 100%;\n}\n\n.jpgis-console {\n border-top: var(--jp-border-width) solid var(--jp-toolbar-border-color);\n}\n\n.jpgis-console .jp-CodeConsole-banner {\n display: none;\n}\n\n/* FormComponent CSS */\n.jGIS-property-panel .rjsf {\n color: var(--jp-ui-font-color1);\n}\n\n.jGIS-property-panel .rjsf > form {\n padding: var(--jp-ui-font-size1);\n}\n\n.jGIS-property-panel .rjsf fieldset {\n border: 0;\n margin: 0;\n padding: 0;\n}\n\n.jGIS-property-panel .rjsf button[type='submit'] {\n display: none;\n}\n\n.jGIS-property-panel .rjsf .control-label,\n.jGIS-property-panel .rjsf legend {\n margin: 0;\n padding: 0;\n font-weight: bold;\n position: relative;\n width: 100%;\n}\n\n.jGIS-property-panel .rjsf legend > :first-child,\n.jGIS-property-panel .rjsf .control-label > :first-child {\n margin-top: 0;\n padding-top: 0;\n}\n\n.jGIS-property-panel .rjsf .form-group .form-group {\n margin-bottom: var(--jp-ui-font-size1);\n}\n\n.jGIS-property-panel .rjsf .form-group:last-child {\n margin-bottom: 0;\n}\n\n.jGIS-property-panel .rjsf .jp-FormGroup-description,\n.jGIS-property-panel .rjsf .field-description,\n.jGIS-property-panel .rjsf .help-block {\n color: var(--jp-ui-font-color2);\n margin-top: 2px;\n margin-bottom: 2px;\n}\n\n.jGIS-property-panel\n .jp-FormGroup-content\n fieldset\n .jp-inputFieldWrapper\n > input {\n box-sizing: border-box;\n border: var(--jp-border-width) solid var(--jp-border-color1);\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color0);\n font-size: var(--jp-ui-font-size2);\n min-width: 0;\n outline: none !important;\n padding: 2px 7px;\n width: 100%;\n max-width: 100%;\n}\n\n.jGIS-property-panel\n .jp-FormGroup-content\n fieldset\n .jp-inputFieldWrapper\n > input#root_Color,\n.jGIS-property-panel\n .jp-FormGroup-content\n fieldset\n .jp-inputFieldWrapper\n > input#root_shadowColor {\n height: revert;\n}\n\n.jGIS-property-panel .jp-FormGroup-contentNormal {\n display: flex;\n flex-direction: column;\n align-items: inherit;\n}\n\n.jGIS-property-panel .jp-FormGroup-contentNormal .jp-FormGroup-fieldLabel {\n font-weight: bold;\n order: 1;\n margin-top: 2px;\n margin-bottom: 2px;\n text-transform: capitalize;\n}\n\n.jGIS-property-panel\n .jp-FormGroup-content\n .jp-FormGroup-contentNormal\n .jp-FormGroup-description,\n.jGIS-property-panel .field-description {\n order: 2;\n color: var(--jp-ui-font-color2);\n}\n\n.jGIS-property-panel .jp-FormGroup-content .jp-inputFieldWrapper {\n order: 3;\n}\n\n.jGIS-property-panel .jp-FormGroup-contentNormal .validationErrors,\n.jGIS-property-panel .jp-FormGroup-contentNormal .validationErrors ul {\n order: 4;\n list-style: none;\n color: var(--jp-warn-color0);\n margin: 0;\n padding: 0;\n}\n\n.jGIS-property-panel .jp-objectFieldWrapper,\n.jGIS-property-panel .jp-arrayFieldWrapper {\n padding-left: var(--jp-notebook-padding);\n border-left: solid 4px var(--jp-border-color3);\n}\n\n.jGIS-property-panel .array-item {\n border: none;\n}\n\n.jGIS-property-panel\n .jp-FormGroup-content\n .jp-FormGroup-contentNormal\n .jp-arrayFieldWrapper\n + .jp-FormGroup-description {\n display: none;\n}\n\n.jGIS-property-panel .rjsf .errors {\n color: var(--jp-warn-color0);\n}\n\n.jGIS-property-panel .rjsf .errors ul,\n.jGIS-property-panel .rjsf .validationErrors ul,\n.jGIS-property-panel .rjsf .validationErrors li,\n.jGIS-property-panel .rjsf .errors li {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.jGIS-property-panel .rjsf .jp-ArrayOperationsButton {\n display: none;\n}\n\n/* Hide additional property fields with remove buttons that should not be displayed in the form */\n.jGIS-property-panel\n .form-group:has(.jp-FormGroup-removeButton):not(:has(.jp-root)) {\n display: none;\n}\n\n.jGIS-property-panel .jp-arrayFieldWrapper .array-item legend,\n.jGIS-property-panel\n .jp-arrayFieldWrapper\n .field-array-of-array\n .field-array-of-number\n legend,\n.jGIS-property-panel\n .jp-arrayFieldWrapper\n .field-array-of-array\n .field-array-of-number\n .jp-FormGroup-fieldLabel {\n display: none;\n}\n.jGIS-property-panel\n .jp-arrayFieldWrapper\n .field-array-of-array\n .array-item\n .form-group\n .field-array-of-number {\n display: flex;\n}\n\n.jGIS-property-panel\n .jp-arrayFieldWrapper\n .field-array-of-array\n .array-item\n .form-group\n .field-array-of-number\n > div:nth-child(1) {\n order: 2;\n}\n\n.jGIS-property-panel\n .jp-arrayFieldWrapper\n .field-array-of-array\n .array-item\n .form-group\n .field-array-of-number\n > div:nth-child(2) {\n order: 1;\n}\n\n.jGIS-property-panel .required {\n font-size: var(--jp-ui-font-size3);\n color: var(--jp-warn-color1);\n font-weight: 800;\n position: absolute;\n top: 0;\n right: 0;\n display: block;\n}\n\n.jGIS-property-panel\n .jp-FormGroup-content\n fieldset\n .jp-inputFieldWrapper\n select {\n width: 100%;\n font-size: var(--jp-ui-font-size1);\n background: var(--jp-input-background);\n color: var(--jp-ui-font-color0);\n padding: calc(var(--jp-ui-font-size1) / 2);\n padding-right: var(--jp-ui-font-size3);\n background-image: url(${g});\n background-repeat: no-repeat;\n background-position: 99% center;\n background-size: 18px;\n border: var(--jp-border-width) solid var(--jp-input-border-color);\n border-radius: 0;\n outline: none;\n appearance: none;\n}\n\n.jGIS-property-panel .jp-select-wrapper select {\n background-image: unset !important;\n}\n\n.lm-TabBar-tabIcon .jgis-main-logo[fill] {\n fill: var(--jp-inverse-layout-color3);\n}\n\n.jGIS-identify-tool {\n cursor: crosshair;\n}\n\n.jgis-identify-grid-item {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: auto auto;\n position: relative;\n gap: 1px;\n}\n\n.jgis-identify-grid-item-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n grid-column: span 2;\n font-weight: bold;\n font-size: var(--jp-ui-font-size1);\n padding: 2px 0;\n cursor: pointer;\n margin: 0 5px;\n line-height: 25px;\n}\n\n.jgis-identify-grid-item:not(:last-of-type)::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n width: 90%;\n border-bottom: 1px solid var(--jp-border-color0);\n}\n\n.jgis-identify-grid-body {\n display: contents;\n}\n\n.jgis-identify-grid-body span a:link {\n color: var(--jp-content-link-color);\n cursor: pointer;\n text-decoration: underline;\n}\n\n.jgis-identify-grid-body span a:visited {\n color: var(--jp-content-link-visited-color);\n cursor: pointer;\n text-decoration: underline;\n}\n\n.jgis-identify-grid-body strong {\n grid-column: 1;\n text-transform: capitalize;\n margin-left: 21px;\n}\n\n.jgis-identify-grid-body span {\n grid-column: 2;\n}\n\n.jgis-identify-grid-body:last-of-type strong:last-of-type {\n padding-bottom: 8px;\n}\n\n.jgis-scrollable {\n overflow: auto;\n height: 100%;\n}\n\n/* Style the file path text */\n.file-container {\n display: flex;\n align-items: center;\n margin-bottom: 16px;\n gap: 10px;\n}\n\n.jgis-highlight-button {\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 28px;\n min-height: 28px;\n}\n\n.jgis-highlight-button:hover {\n color: var(--jp-brand-color1);\n}\n\n.jgis-highlight-button:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n pointer-events: auto;\n}\n`,""]);const u=c},301:(n,o,e)=>{e.d(o,{A:()=>l});var r=e(758),t=e.n(r),i=e(935),a=e.n(i)()(t());a.push([n.id,".jp-gis-temporal-slider-container {\n display: flex;\n flex-direction: column;\n gap: 0.2rem;\n padding: 0.5rem;\n background-color: var(--jp-layout-color1);\n border-bottom: 1px solid var(--jp-border-color1);\n}\n\n.jp-gis-temporal-slider-container span,\n.jp-gis-temporal-slider-container label {\n font-weight: bold;\n}\n\n.jp-gis-temporal-slider-row {\n display: flex;\n gap: 0.25rem;\n justify-content: space-between;\n align-items: center;\n}\n\n.jp-gis-temporal-slider-controls {\n display: flex;\n flex-grow: 1;\n justify-content: space-around;\n}\n\n.jp-gis-temporal-slider-sub-controls {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 0.25rem;\n}\n\n.jp-gis-temporal-slider-sub-controls > input {\n width: 35px;\n}\n\nselect,\nselect option {\n text-transform: capitalize;\n}\n\n.jp-gis-temporal-slider {\n flex: 1 0 40%;\n min-width: 300px;\n}\n",""]);const l=a},365:(n,o,e)=>{e.d(o,{A:()=>l});var r=e(758),t=e.n(r),i=e(935),a=e.n(i)()(t());a.push([n.id,".jGIS-layerbrowser-FormDialog .jp-Dialog-header {\n padding: 0;\n}\n\n.jGIS-layerbrowser-FormDialog .jp-Dialog-content {\n width: calc(100% - 4rem);\n max-width: 100%;\n height: calc(100% - 2rem);\n max-height: 100%;\n}\n\n.jGIS-layerbrowser-FormDialog form {\n padding: 10px;\n}\n\n.jGIS-customlayer-form {\n height: 100%;\n overflow: auto;\n}\n\n.jGIS-layer-browser-container * {\n box-sizing: border-box;\n}\n\n.jGIS-layer-browser-container {\n display: flex;\n flex-direction: column;\n}\n\n.jGIS-layer-browser-header-container {\n position: sticky;\n top: 0;\n z-index: 40;\n background-color: var(--jp-layout-color1);\n}\n\n.jGIS-layer-browser-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n padding: 1rem 2rem;\n}\n\n.jGIS-layer-browser-header-text {\n padding-right: 1rem;\n font-weight: bold;\n}\n\n.jGIS-layer-browser-header-search-container {\n display: flex;\n align-items: center;\n flex-grow: 1;\n position: relative;\n}\n\n.jGIS-layer-browser-header-search-icon {\n position: absolute;\n top: 50%;\n left: 0.75rem;\n transform: translateY(-50%);\n}\n\n.jGIS-layer-browser-header-search {\n box-shadow: none;\n flex: 1 1 0%;\n height: 40px;\n padding: 1rem 2rem;\n padding-left: 2.5rem;\n background-color: transparent;\n border: 1px solid var(--jp-border-color1);\n border-radius: 8px;\n color: var(--jp-ui-font-color1);\n}\n\n.jGIS-layer-browser-grid {\n display: grid;\n gap: 1.25rem;\n grid-template-rows: 1fr;\n grid-template-columns: repeat(3, minmax(0px, 1fr));\n padding: 1rem 2rem;\n}\n\n@media (min-width: 1400px) {\n .jGIS-layer-browser-grid {\n grid-template-columns: repeat(5, minmax(0px, 1fr));\n }\n}\n\n.jGIS-layer-browser-categories {\n display: flex;\n gap: 2rem;\n padding: 0 2rem;\n border-bottom: 2px solid var(--jp-border-color1);\n}\n\n.jGIS-layer-browser-category {\n position: relative;\n opacity: 0.7;\n padding: 4px 0 14px;\n cursor: pointer;\n text-decoration: none;\n}\n\n.jGIS-layer-browser-category::after {\n content: '';\n position: absolute;\n bottom: -2px;\n left: 0;\n width: 0px;\n height: 3px;\n transition:\n background-color 300ms ease-in,\n width 300ms ease-in,\n opacity 300ms ease-in;\n background-color: transparent;\n}\n\n.jGIS-layer-browser-category.jGIS-layer-browser-category-selected::after {\n width: 100%;\n background-color: var(--jp-inverse-layout-color2);\n}\n\n.jGIS-layer-browser-category.jGIS-layer-browser-category-selected {\n opacity: 1;\n font-weight: bold;\n}\n\n.jGIS-layer-browser-tile {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n position: relative;\n margin-top: 4px;\n padding: 8px;\n transition: transform 150ms ease-out;\n cursor: pointer;\n border: 1px solid var(--jp-border-color1);\n background-color: var(--jp-layout-color1);\n border-radius: 8px;\n}\n\n.jGIS-layer-browser-custom-tile {\n border: 1px solid var(--jp-border-color2);\n background-color: var(--jp-layout-color2);\n}\n\n.jGIS-layer-browser-tile:hover {\n box-shadow: var(--jp-layout-color2);\n transform: translateY(-4px);\n background-color: var(--jp-brand-color2);\n}\n\n.jGIS-layer-browser-tile-img-container {\n /* isolation: isolate; */\n /* border: medium; */\n /* background: transparent; */\n /* padding: 0px; */\n /* width: 100%; */\n aspect-ratio: 16 / 10;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n overflow: hidden;\n border-radius: 8px;\n}\n\n.jGIS-layer-browser-img {\n /* position: absolute; */\n /* height: 100%; */\n /* object-fit: cover; */\n /* box-sizing: border-box; */\n width: 100%;\n}\n\n.jGIS-layer-browser-icon {\n padding-inline: 8px;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n overflow: hidden;\n box-sizing: border-box;\n width: 32px;\n height: 32px;\n transition:\n width 125ms ease-in-out,\n background-color 125ms ease-in-out,\n opacity 150ms ease-out;\n background-color: var(--jp-accent-color1);\n border-radius: 20px;\n}\n\n.jGIS-layer-browser-tile:not(.jGIS-layer-browser-tile:hover)\n .jGIS-layer-browser-icon {\n opacity: 0;\n}\n\n.jGIS-layer-browser-added {\n display: inline-flex;\n gap: 0.35rem;\n opacity: 1 !important;\n width: 7rem;\n color: var(--jp-ui-inverse-font-color1);\n}\n\n.jGIS-layer-browser-text-container {\n padding-inline: 4px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n gap: 8px;\n flex: 1 1 0%;\n box-sizing: border-box;\n}\n\n.jGIS-layer-browser-text-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n box-sizing: border-box;\n}\n\n.jGIS-layer-browser-text-header {\n overflow: hidden;\n font-weight: bold;\n text-transform: capitalize;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.jGIS-layer-browser-text-p {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.jGIS-layer-browser-text-source {\n overflow: hidden;\n font-size: 0.75rem;\n font-weight: lighter;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.jGIS-layer-browser-text-description {\n -webkit-line-clamp: 2;\n -moz-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.jGIS-layer-browser-text-general {\n margin: 0;\n}\n",""]);const l=a},367:(n,o,e)=>{e.d(o,{A:()=>l});var r=e(758),t=e.n(r),i=e(935),a=e.n(i)()(t());a.push([n.id,".jgis-status-bar {\n display: flex;\n justify-content: space-around;\n align-items: center;\n height: 16px;\n background-color: var(--jp-layout-color1);\n font-size: var(--jp-ui-font-size0);\n}\n\n.jgis-status-bar-item {\n flex: 0 0 content;\n}\n\n.jgis-status-bar-coords {\n min-width: 160px;\n}\n",""]);const l=a},432:(n,o,e)=>{var r=e(591),t=e.n(r),i=e(740),a=e.n(i),l=e(128),p=e.n(l),s=e(855),d=e.n(s),c=e(51),g=e.n(c),u=e(656),b=e.n(u),f=e(296),m={};m.styleTagTransform=b(),m.setAttributes=d(),m.insert=p().bind(null,"head"),m.domAPI=a(),m.insertStyleElement=g(),t()(f.A,m),f.A&&f.A.locals&&f.A.locals},564:(n,o,e)=>{e.d(o,{A:()=>l});var r=e(758),t=e.n(r),i=e(935),a=e.n(i)()(t());a.push([n.id,"/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|---------------------------------------------------------------------------- */\n\n.jGIS-property-panel .rjsf .jp-select-wrapper select {\n background-image: unset;\n}\n",""]);const l=a},591:n=>{var o=[];function e(n){for(var e=-1,r=0;r<o.length;r++)if(o[r].identifier===n){e=r;break}return e}function r(n,r){for(var i={},a=[],l=0;l<n.length;l++){var p=n[l],s=r.base?p[0]+r.base:p[0],d=i[s]||0,c="".concat(s," ").concat(d);i[s]=d+1;var g=e(c),u={css:p[1],media:p[2],sourceMap:p[3],supports:p[4],layer:p[5]};if(-1!==g)o[g].references++,o[g].updater(u);else{var b=t(u,r);r.byIndex=l,o.splice(l,0,{identifier:c,updater:b,references:1})}a.push(c)}return a}function t(n,o){var e=o.domAPI(o);return e.update(n),function(o){if(o){if(o.css===n.css&&o.media===n.media&&o.sourceMap===n.sourceMap&&o.supports===n.supports&&o.layer===n.layer)return;e.update(n=o)}else e.remove()}}n.exports=function(n,t){var i=r(n=n||[],t=t||{});return function(n){n=n||[];for(var a=0;a<i.length;a++){var l=e(i[a]);o[l].references--}for(var p=r(n,t),s=0;s<i.length;s++){var d=e(i[s]);0===o[d].references&&(o[d].updater(),o.splice(d,1))}i=p}}},606:(n,o,e)=>{e.d(o,{A:()=>l});var r=e(758),t=e.n(r),i=e(935),a=e.n(i)()(t());a.push([n.id,".jp-gis-filter-main {\n display: flex;\n flex-direction: column;\n padding: 10px;\n gap: 1rem;\n}\n\n.jp-gis-filter-list {\n display: flex;\n flex-direction: column;\n}\n\n.jp-gis-filter-button-container {\n display: flex;\n justify-content: space-between;\n}\n\n.jp-gis-filter-main > .jp-Dialog-button {\n width: fit-content;\n align-self: flex-end;\n}\n\n.jp-gis-logical-select {\n width: fit-content !important;\n padding: 0 8px !important;\n text-align: center;\n}\n\n.jp-gis-filter-select-container {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.jp-gis-filter-row {\n display: flex;\n justify-content: space-around;\n width: 100%;\n gap: 0.25rem;\n}\n\n.jp-gis-filter-row > select {\n text-transform: capitalize;\n padding: 0;\n text-align: center;\n}\n\n.jp-gis-filter-row > option {\n text-transform: capitalize;\n font-size: var(--jp-ui-font-size1);\n}\n\n.jp-gis-filter-row > button {\n color: var(--jp-ui-font-color0);\n background: none;\n}\n\n.jp-gis-filter-row > button:hover {\n color: var(--jp-warn-color-hover);\n}\n\n.jp-gis-filter-icon:hover {\n scale: 1.3;\n cursor: pointer;\n}\n\n.jp-gis-filter-icon > svg {\n height: 16px;\n width: 16px;\n}\n",""]);const l=a},633:(n,o,e)=>{e.d(o,{A:()=>l});var r=e(758),t=e.n(r),i=e(935),a=e.n(i)()(t());a.push([n.id,"/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|---------------------------------------------------------------------------- */\n\n.jp-gis-sourcePanel,\n.jp-gis-layerPanel {\n min-height: 3em;\n}\n\n.jp-gis-layerItem,\n.jp-gis-source {\n padding: 2px 0 2px 12px;\n}\n\n.jp-gis-layerGroup {\n display: flex;\n flex-direction: column;\n}\n\n.jp-gis-layerGroupHeader {\n display: flex;\n margin-left: -2px;\n padding-bottom: 4px;\n}\n\n.jp-gis-layerGroupHeader:hover {\n cursor: pointer;\n}\n\n.jp-gis-layerGroupCollapser {\n transform: rotate(-90deg);\n margin: auto 0;\n height: 16px;\n}\n\n.jp-gis-layerGroupCollapser.jp-mod-expanded {\n transform: rotate(0deg);\n}\n\n.jp-gis-layer,\n.jp-gis-source {\n display: flex;\n flex-direction: row;\n align-items: center;\n color: var(--jp-ui-font-color1);\n}\n\n.jp-gis-layer.jp-mod-selected,\n.jp-gis-source.jp-mod-selected,\n.jp-gis-layerGroupHeader.jp-mod-selected {\n color: var(--jp-ui-inverse-font-color1);\n background: var(--jp-brand-color1);\n}\n\n.jp-gis-layer:hover:not(.jp-mod-selected),\n.jp-gis-source:hover:not(.jp-mod-selected) {\n cursor: pointer;\n background: var(--jp-layout-color2);\n}\n\n.jp-gis-layer.jp-mod-selected .jp-icon-selectable,\n.jp-gis-source.jp-mod-selected .jp-icon-selectable,\n.jp-gis-layerGroupHeader.jp-mod-selected .jp-icon-selectable {\n fill: var(--jp-ui-inverse-font-color1);\n}\n.jp-gis-layer.jp-mod-selected path,\n.jp-gis-source.jp-mod-selected path {\n fill: var(--jp-ui-inverse-font-color1);\n}\n.jp-gis-layer.jp-mod-selected button:hover,\n.jp-gis-source.jp-mod-selected button:hover {\n background: none;\n}\n\n.jp-gis-layer button,\n.jp-gis-source button {\n min-height: unset;\n min-width: unset;\n padding: unset;\n margin-right: 4px;\n}\n\n.jp-gis-layer.jp-mod-selected button:hover .jp-icon-selectable,\n.jp-gis-source.jp-mod-selected button:hover .jp-icon-selectable {\n fill: var(--jp-ui-font-color1);\n}\n\n.jp-gis-layerIcon,\n.jp-gis-sourceIcon {\n display: flex;\n align-items: center;\n}\n\n.jp-gis-layerIcon > svg,\n.jp-gis-sourceIcon > svg {\n height: 16px;\n width: 16px;\n}\n\n.jp-gis-layerTitle,\n.jp-gis-sourceTitle {\n display: flex;\n flex-grow: 1;\n align-items: center;\n}\n\n.jp-gis-layerText:focus,\n.jp-gis-sourceText:focus {\n outline: none;\n}\n\n.jp-gis-layerTitle .jp-gis-layerIcon,\n.jp-gis-sourceTitle .jp-gis-sourceIcon {\n padding-right: 4px;\n}\n\n.jp-gis-layerIcon.jp-gis-mod-hidden path,\n.jp-gis-sourceIcon.jp-gis-mod-hidden path {\n fill: var(--jp-warn-color0);\n}\n\n.jp-gis-left-panel-input {\n background-color: transparent;\n border: 1px solid var(--jp-border-color1);\n border-radius: 8px;\n color: var(--jp-ui-font-color1);\n flex-grow: 1;\n margin-right: 4px;\n outline: none;\n padding: 2px 7px;\n}\n\n.jp-gis-left-panel-input:focus {\n border: 1px solid var(--jp-brand-color1);\n}\n\n.jp-gis-layerText,\n.jp-gis-sourceText {\n padding: 3px 0;\n cursor: pointer;\n}\n\nli .lm-Menu-itemLabel {\n text-transform: capitalize;\n}\n\n.jp-gis-sourceInfo {\n font-size: var(--jp-ui-font-size0);\n font-style: italic;\n padding-left: 5px;\n color: var(--jp-ui-font-color2);\n}\n\n#jp-drag-indicator {\n top: calc(-1 * var(--jp-border-width) + 1px);\n left: calc(-1 * var(--jp-border-width));\n content: '';\n height: var(--jp-private-horizontal-tab-active-top-border);\n width: calc(100% + 2 * var(--jp-border-width));\n background: var(--jp-brand-color1);\n}\n",""]);const l=a},656:n=>{n.exports=function(n,o){if(o.styleSheet)o.styleSheet.cssText=n;else{for(;o.firstChild;)o.removeChild(o.firstChild);o.appendChild(document.createTextNode(n))}}},740:n=>{n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var o=n.insertStyleElement(n);return{update:function(e){!function(n,o,e){var r="";e.supports&&(r+="@supports (".concat(e.supports,") {")),e.media&&(r+="@media ".concat(e.media," {"));var t=void 0!==e.layer;t&&(r+="@layer".concat(e.layer.length>0?" ".concat(e.layer):""," {")),r+=e.css,t&&(r+="}"),e.media&&(r+="}"),e.supports&&(r+="}");var i=e.sourceMap;i&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),o.styleTagTransform(r,n,o.options)}(o,n,e)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(o)}}}},758:n=>{n.exports=function(n){return n[1]}},781:(n,o,e)=>{e.d(o,{A:()=>l});var r=e(758),t=e.n(r),i=e(935),a=e.n(i)()(t());a.push([n.id,"select,\nselect option {\n text-transform: capitalize;\n}\n\n.jp-gis-symbology-dialog .jp-Dialog-header {\n font-weight: bold;\n}\n\n.jp-gis-symbology-dialog .jp-Dialog-content {\n width: calc(80% - 4rem);\n max-width: 80%;\n height: fit-content;\n max-height: 80%;\n}\n\n.jp-gis-symbology-row {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n gap: 2rem;\n}\n\n.jp-gis-symbology-row label {\n font-size: var(--jp-ui-font-size2);\n flex: 0 1 20%;\n}\n\n.jp-gis-symbology-row > .jp-select-wrapper,\n.jp-gis-symbology-row > .jp-mod-styled {\n flex: 1 0 50%;\n max-width: 50%;\n}\n\n.jp-gis-color-ramp-div {\n display: flex;\n flex: 1 1 50%;\n max-width: 50%;\n justify-content: space-between;\n align-items: baseline;\n}\n\n.jp-gis-color-ramp-div > .jp-select-wrapper {\n flex: 1 0 40%;\n}\n\n.jp-gis-color-ramp-div:last-child {\n flex-shrink: 0;\n}\n\n.jp-gis-color-ramp-div > input {\n max-width: 25%;\n}\n\n.jp-gis-band-container {\n display: flex;\n flex-direction: column;\n gap: 13px;\n}\n\n.jp-gis-layer-symbology-container {\n display: flex;\n flex-direction: column;\n gap: 13px;\n border-top: 1px solid var(--jp-border-color2);\n padding-top: 8px;\n}\n\n.jp-gis-layer-symbology-container .jp-select-wrapper {\n margin-bottom: unset;\n}\n\n.jp-gis-color-ramp-container {\n display: flex;\n flex-direction: column;\n gap: 13px;\n}\n\n.jp-gis-stop-container {\n display: flex;\n flex-direction: column;\n gap: 0.1rem;\n}\n\n.jp-gis-stop-labels {\n display: flex;\n font-weight: bold;\n font-size: var(--jp-ui-font-size1);\n gap: 0.25rem;\n padding-bottom: 0.25rem;\n}\n\n.jp-gis-stop-labels > span {\n flex: 0 0 18%;\n}\n\n.jp-gis-color-row {\n display: flex;\n width: 100%;\n gap: 0.25rem;\n height: 32px;\n}\n\n.jp-gis-color-row-value-input {\n flex: 0 1 18%;\n min-width: 0px;\n}\n\n.jp-gis-color-row-output-input {\n flex-grow: 1;\n}\n\n.jp-gis-color-row > button {\n color: var(--jp-ui-font-color0);\n background: none;\n padding-right: 0px;\n}\n\n.jp-gis-symbology-button-container {\n padding-top: 0.5rem;\n}\n\n.jp-gis-band-info-loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 2rem;\n margin: auto;\n}\n\n.jp-gis-loading-spinner {\n animation: spin 4s linear infinite;\n font-size: 1.5rem;\n padding: 1rem 0;\n margin: auto;\n}\n\n.jp-gis-band-info-loading-container > span {\n font-size: 1rem;\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.jp-gis-color-ramp-dropdown {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n position: absolute;\n overflow-x: hidden;\n overflow-y: auto;\n visibility: hidden;\n z-index: 40;\n flex: 1 1 auto;\n width: 97%;\n max-height: 20rem;\n background: var(--jp-input-background);\n padding-left: 8px;\n border: var(--jp-border-width) solid var(--jp-input-border-color);\n border-radius: 0;\n outline: none;\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\n.jp-gis-open {\n visibility: visible;\n}\n\n.jp-gis-color-ramp-entry {\n display: flex;\n align-items: center;\n font-size: var(--jp-ui-font-size2);\n color: var(--jp-ui-font-color0);\n appearance: none;\n text-transform: capitalize;\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\n.jp-gis-color-label {\n color: white;\n position: absolute;\n transition: transform 0.3s ease;\n}\n\n.jp-gis-color-ramp-entry:hover .jp-gis-color-label {\n transform: scale(1.2);\n}\n\n.jp-gis-color-canvas {\n margin: 0 -7px;\n border-radius: 4px;\n width: 100%;\n max-height: 38px;\n}\n\n.jp-gis-color-canvas-display {\n width: 100%;\n height: 30px;\n visibility: initial;\n border-radius: var(--jp-border-radius);\n}\n\n.jp-Dialog-content:has(.jp-gis-heatmap),\n.jp-Dialog-body:has(.jp-gis-heatmap) {\n overflow: visible;\n}\n\n.jp-gis-canvas-button-wrapper {\n flex: 1 0 50%;\n max-width: 50%;\n position: relative;\n}\n\n#jp-gis-canvas-button.jp-gis-canvas-button {\n visibility: hidden;\n margin: 0;\n padding: 0 1px 0 0;\n width: 100%;\n}\n",""]);const l=a},855:(n,o,e)=>{n.exports=function(n){var o=e.nc;o&&n.setAttribute("nonce",o)}},935:n=>{n.exports=function(n){var o=[];return o.toString=function(){return this.map((function(o){var e="",r=void 0!==o[5];return o[4]&&(e+="@supports (".concat(o[4],") {")),o[2]&&(e+="@media ".concat(o[2]," {")),r&&(e+="@layer".concat(o[5].length>0?" ".concat(o[5]):""," {")),e+=n(o),r&&(e+="}"),o[2]&&(e+="}"),o[4]&&(e+="}"),e})).join("")},o.i=function(n,e,r,t,i){"string"==typeof n&&(n=[[null,n,void 0]]);var a={};if(r)for(var l=0;l<this.length;l++){var p=this[l][0];null!=p&&(a[p]=!0)}for(var s=0;s<n.length;s++){var d=[].concat(n[s]);r&&a[d[0]]||(void 0!==i&&(void 0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=i),e&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=e):d[2]=e),t&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=t):d[4]="".concat(t)),o.push(d))}},o}},997:(n,o,e)=>{e.d(o,{A:()=>s});var r=e(758),t=e.n(r),i=e(935),a=e.n(i),l=e(79),p=a()(t());p.i(l.A),p.push([n.id,"/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|---------------------------------------------------------------------------- */\n",""]);const s=p}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_jupytergis_jupytergis_lab=self.webpackChunk_jupytergis_jupytergis_lab||[]).push([[484],{484:(e,t,o)=>{o.r(t),o.d(t,{default:()=>x});var n=o(464),a=o(894),r=o(611),d=o(280),s=o(895),m=o(144),i=o(828),c=o(256),l=o(903),u=o(594),g=o(378),p=o(335),I=o(970),y=o(230),h=o(173);class M extends h.JupyterYModel{}class j extends c.Panel{constructor(e){super(),this._buildWidget=e=>{const{commands:t,model:o,externalCommands:a,tracker:r}=e,d=new n.JupyterGISPanel({model:o,commandRegistry:t});let s;o.filePath&&(s=new n.ToolbarWidget({commands:t,model:o,externalCommands:(null==a?void 0:a.getCommands())||[]})),this._jgisWidget=new n.JupyterGISOutputWidget({model:o,content:d,toolbar:s}),this.addWidget(this._jgisWidget),null==r||r.add(this._jgisWidget)};const{model:t}=e;this.addClass("jupytergis-notebook-widget"),this._buildWidget(e),t.sharedModel.changed.connect(((t,o)=>{o.stateChange&&o.stateChange.forEach((t=>{var o;"path"===t.name&&(null===(o=this.layout)||void 0===o||o.removeWidget(this._jgisWidget),this._jgisWidget.dispose(),this._buildWidget(e))}))}))}get jgisWidget(){return this._jgisWidget}}const b={id:"jupytergis:yjswidget-plugin",autoStart:!0,optional:[a.IJGISExternalCommandRegistryToken,a.IJupyterGISDocTracker,h.IJupyterYWidgetManager,l.ICollaborativeDrive],activate:(e,t,o,n,r)=>{n?n.registerWidget("@jupytergis:widget",class extends M{async initialize(t){const{path:o,format:n,contentType:d}=t,s=n;if(!r)throw(0,u.showErrorMessage)("Error using the JupyterGIS Python API","You cannot use the JupyterGIS Python API without a collaborative drive. You need to install a package providing collaboration features (e.g. jupyter-collaboration)."),new Error("Failed to create the YDoc without a collaborative drive");let m="";const i=e.shell.currentWidget;(i instanceof I.NotebookPanel||i instanceof g.ConsolePanel)&&(m=i.sessionContext.path);let c="";if(o){c=p.PathExt.join(p.PathExt.dirname(m),o);try{await e.serviceManager.contents.get(c)}catch(t){await e.serviceManager.contents.save(c,{content:btoa("{}"),format:"base64"})}}else c=p.PathExt.join(p.PathExt.dirname(m),"unsaved_project");const l=r.sharedModelFactory.createNew({path:c,format:s,contentType:d,collaborative:!0});this.jupyterGISModel=new a.JupyterGISModel({sharedModel:l}),this.jupyterGISModel.contentsManager=e.serviceManager.contents,this.jupyterGISModel.filePath=c,this.ydoc=this.jupyterGISModel.sharedModel.ydoc,this.sharedModel=new h.JupyterYDoc(t,this.ydoc)}},class{constructor(n,a){this.yModel=n,this.node=a;const r=new j({commands:e.commands,model:n.jupyterGISModel,externalCommands:t,tracker:o});this._jgisWidget=r.jgisWidget,y.MessageLoop.sendMessage(r,c.Widget.Msg.BeforeAttach),a.appendChild(r.node),y.MessageLoop.sendMessage(r,c.Widget.Msg.AfterAttach)}dispose(){this._jgisWidget.dispose()}}):console.error("Missing IJupyterYWidgetManager token!")}},C="jupytergis",x=[{id:"jupytergis:lab:main-menu",autoStart:!0,requires:[a.IJupyterGISDocTracker,a.IJGISFormSchemaRegistryToken,a.IJGISLayerBrowserRegistryToken,m.IStateDB],optional:[s.IMainMenu,i.ITranslator,d.ICompletionProviderManager],activate:(e,t,o,a,r,d,s,m)=>{console.log("jupytergis:lab:main-menu is activated!"),s=null!=s?s:i.nullTranslator;(0,n.createDefaultLayerRegistry)(a),n.GlobalStateDbManager.getInstance().initialize(r),(0,n.addCommands)(e,t,s,o,a,r,m);const l=new c.Menu({commands:e.commands});l.title.label=s.load("jupyterlab").__("Add Source"),l.id="jp-gis-contextmenu-addSource",e.contextMenu.addItem({type:"submenu",selector:".jp-gis-sourcePanel",rank:3,submenu:l}),l.addItem({command:n.CommandIDs.newRasterSource,args:{from:"contextMenu"}}),l.addItem({command:n.CommandIDs.newVectorSource,args:{from:"contextMenu"}}),l.addItem({command:n.CommandIDs.newGeoJSONSource,args:{from:"contextMenu"}}),l.addItem({command:n.CommandIDs.newRasterDemSource,args:{from:"contextMenu"}}),l.addItem({command:n.CommandIDs.newImageSource,args:{from:"contextMenu"}}),e.contextMenu.addItem({type:"separator",selector:".jp-gis-sourcePanel",rank:2}),e.contextMenu.addItem({selector:".jp-gis-source.jp-gis-sourceUnused",rank:1,command:n.CommandIDs.removeSource}),e.contextMenu.addItem({selector:".jp-gis-source",rank:1,command:n.CommandIDs.renameSource}),e.contextMenu.addItem({command:n.CommandIDs.symbology,selector:".jp-gis-layerItem",rank:1}),e.contextMenu.addItem({type:"separator",selector:".jp-gis-layerPanel",rank:1}),e.contextMenu.addItem({command:n.CommandIDs.removeLayer,selector:".jp-gis-layerItem",rank:2}),e.contextMenu.addItem({command:n.CommandIDs.renameLayer,selector:".jp-gis-layerItem",rank:2}),e.contextMenu.addItem({command:n.CommandIDs.zoomToLayer,selector:".jp-gis-layerItem",rank:2});const u=new c.Menu({commands:e.commands});u.title.label=s.load("jupyterlab").__("Download"),u.id="jp-gis-contextmenu-download",u.addItem({command:n.CommandIDs.downloadGeoJSON}),e.contextMenu.addItem({type:"submenu",selector:".jp-gis-layerItem",rank:2,submenu:u});const g=new c.Menu({commands:e.commands});g.title.label=s.load("jupyterlab").__("Processing"),g.id="jp-gis-contextmenu-processing",g.addItem({command:n.CommandIDs.buffer}),g.addItem({command:n.CommandIDs.dissolve}),e.contextMenu.addItem({type:"submenu",selector:".jp-gis-layerItem",rank:2,submenu:g});const p=new c.Menu({commands:e.commands});p.title.label=s.load("jupyterlab").__("Move Selected Layers to Group"),p.id="jp-gis-contextmenu-movelayer",e.contextMenu.addItem({type:"submenu",selector:".jp-gis-layerItem",rank:2,submenu:p}),e.contextMenu.opened.connect((()=>function(e,t){var o,a,r,d;if(!(null===(o=t.currentWidget)||void 0===o?void 0:o.model))return;const s=null===(a=t.currentWidget)||void 0===a?void 0:a.model,m=null!==(d=null===(r=e.menu.items.find((e=>{var t;return"submenu"===e.type&&"jp-gis-contextmenu-movelayer"===(null===(t=e.submenu)||void 0===t?void 0:t.id)})))||void 0===r?void 0:r.submenu)&&void 0!==d?d:null;if(!m)return;m.clearItems();const i=function e(t){const o=[];for(const n of t)if("string"!=typeof n&&n.layers){o.push(n.name);const t=e(n.layers);o.push(...t)}return o}(s.getLayerTree());m.addItem({command:n.CommandIDs.moveLayersToGroup,args:{label:""}}),i.forEach((e=>{m.addItem({command:n.CommandIDs.moveLayersToGroup,args:{label:e}})})),m.addItem({command:n.CommandIDs.moveLayerToNewGroup})}(e.contextMenu,t))),e.contextMenu.addItem({command:n.CommandIDs.removeGroup,selector:".jp-gis-layerGroupHeader",rank:2}),e.contextMenu.addItem({command:n.CommandIDs.renameGroup,selector:".jp-gis-layerGroupHeader",rank:2}),e.contextMenu.addItem({type:"separator",selector:".jp-gis-layerPanel",rank:2});const I=new c.Menu({commands:e.commands});I.title.label=s.load("jupyterlab").__("Add Layer"),I.id="jp-gis-contextmenu-addLayer",e.contextMenu.addItem({type:"submenu",selector:".jp-gis-layerPanel",rank:3,submenu:I}),I.addItem({command:n.CommandIDs.newRasterLayer,args:{from:"contextMenu"}}),I.addItem({command:n.CommandIDs.newVectorLayer,args:{from:"contextMenu"}}),I.addItem({command:n.CommandIDs.newHillshadeLayer,args:{from:"contextMenu"}}),I.addItem({command:n.CommandIDs.newImageLayer,args:{from:"contextMenu"}}),I.addItem({command:n.CommandIDs.newHeatmapLayer,args:{from:"contextMenu"}}),d&&function(e,t){e.editMenu.undoers.redo.add({id:n.CommandIDs.redo,isEnabled:t}),e.editMenu.undoers.undo.add({id:n.CommandIDs.undo,isEnabled:t})}(d,(()=>null!==t.currentWidget&&t.currentWidget===e.shell.currentWidget))}},{id:"jupytergis:lab:controlpanel",autoStart:!0,requires:[r.ILayoutRestorer,a.IJupyterGISDocTracker,a.IJGISFormSchemaRegistryToken,m.IStateDB,a.IAnnotationToken],activate:(e,t,o,a,r,d)=>{const s=new n.ControlPanelModel({tracker:o}),m=new n.LeftPanelWidget({model:s,tracker:o,state:r,commands:e.commands});m.id="jupytergis::leftControlPanel",m.title.caption="JupyterGIS Control Panel",m.title.icon=n.logoMiniIcon;const i=new n.RightPanelWidget({model:s,tracker:o,formSchemaRegistry:a,annotationModel:d});i.id="jupytergis::rightControlPanel",i.title.caption="JupyterGIS Control Panel",i.title.icon=n.logoMiniIcon,t&&(t.add(m,C),t.add(i,C)),e.shell.add(m,"left",{rank:2e3}),e.shell.add(i,"right",{rank:2e3})}},b]}}]);
@@ -1,49 +0,0 @@
1
- jupytergis_lab/__init__.py,sha256=QRBE8GcqAQSZk4d8oB6dMgU0jPXZIU1vuhjLAixF_y4,579
2
- jupytergis_lab/_version.py,sha256=eSeVXWsTpUzWvf2wBfWFRZxY_G97VncZxCWo13TAjM8,171
3
- jupytergis_lab/notebook/__init__.py,sha256=YFLWhp-9CMd5HIXVEVlFwzBiS7sZKvHUArEEz8xhP6I,46
4
- jupytergis_lab/notebook/explore.py,sha256=PqAQSJD_58N6yytQydIkGZUoS3JSAqPe43J9_7tcb48,4368
5
- jupytergis_lab/notebook/gis_document.py,sha256=xVGgY0ks1sTqyJzblvQPKxH4T6pZbiTSg8OWLrJKkzU,29158
6
- jupytergis_lab/notebook/utils.py,sha256=x9HkieWVS35Q8HtaQHDH2AKU0lTMKQbRZDpJZ5Hfk9Y,348
7
- jupytergis_lab/notebook/y_connector.py,sha256=KkkKDFvwY6ZWQ-1tubmiS9ib4LsmxYKS0bx0pPJoPGU,1029
8
- jupytergis_lab/notebook/objects/__init__.py,sha256=6gVWBaDqOWLdt63wg2vPuwNnBenZ2ovit6TN16yV45s,1230
9
- jupytergis_lab/notebook/objects/_schema/__init__.py,sha256=eKpCop52NfY5v2qvVVt2rNolpoWpR8p_pEdtGz4FoWk,97
10
- jupytergis_lab/notebook/objects/_schema/geojson.py,sha256=U56Klxp1jpVYRjsqqSzZtMGlwlCwCNPqXi8usus5gdA,10347
11
- jupytergis_lab/notebook/objects/_schema/geojsonsource.py,sha256=9N5JK5XFNiPiYNhKWt1fZB_cvamUc7_aNcp-DuNYcg0,601
12
- jupytergis_lab/notebook/objects/_schema/export/__init__.py,sha256=eKpCop52NfY5v2qvVVt2rNolpoWpR8p_pEdtGz4FoWk,97
13
- jupytergis_lab/notebook/objects/_schema/export/exportGeojson.py,sha256=hLUMmvdBpDG_K-CJ3h5Dk3hhSGHLZSnhTBtVoVc8UPA,448
14
- jupytergis_lab/notebook/objects/_schema/export/exportGeotiff.py,sha256=FvqAaHOrGiSpNT6Jc2PoUcQacSdendHrhV-T9DRqRkQ,814
15
- jupytergis_lab/notebook/objects/_schema/processing/__init__.py,sha256=eKpCop52NfY5v2qvVVt2rNolpoWpR8p_pEdtGz4FoWk,97
16
- jupytergis_lab/notebook/objects/_schema/processing/buffer.py,sha256=nWbiqtt444x_TKUXgKXay6EFTEAtjSB2j3YrInKJt0k,652
17
- jupytergis_lab/notebook/objects/_schema/processing/dissolve.py,sha256=cs1iodiKlWNWz_8eFD-s19U968PF6s8xNFgugyku8bc,659
18
- jupytergis_lab/notebook/objects/_schema/project/__init__.py,sha256=eKpCop52NfY5v2qvVVt2rNolpoWpR8p_pEdtGz4FoWk,97
19
- jupytergis_lab/notebook/objects/_schema/project/jgis.py,sha256=AxOIuKfLZfGp4Q3csvYCD2xbGBhe_Ge9daTISq4NyCI,3281
20
- jupytergis_lab/notebook/objects/_schema/project/layers/__init__.py,sha256=eKpCop52NfY5v2qvVVt2rNolpoWpR8p_pEdtGz4FoWk,97
21
- jupytergis_lab/notebook/objects/_schema/project/layers/heatmapLayer.py,sha256=cDEyfXqjOr62l8mxz7PJ8ScfwK1ebOnB5zRLlfQ9jOE,974
22
- jupytergis_lab/notebook/objects/_schema/project/layers/hillshadeLayer.py,sha256=9J8bRDPVVCXQYCzCb1ydO8QfaJuRbQ1RtWaXkJiYL9A,511
23
- jupytergis_lab/notebook/objects/_schema/project/layers/imageLayer.py,sha256=smGi92fIvt_XSowi3ibFB4B8fZeu6gPYE0T2bBANpzI,536
24
- jupytergis_lab/notebook/objects/_schema/project/layers/rasterlayer.py,sha256=eEcnv4fvvqpE2glZYAJcwEoIcXtxAZXjZfpHZb_N-6I,538
25
- jupytergis_lab/notebook/objects/_schema/project/layers/vectorTileLayer.py,sha256=VEwwzP8-imKuJTMhqv-QzXnpFf0y_VR-s_bo1jMXWyY,836
26
- jupytergis_lab/notebook/objects/_schema/project/layers/vectorlayer.py,sha256=iz4XmBuVNjYrFmSZhTp4zo9_Cn8b_BL54BzUS5kb1j8,1608
27
- jupytergis_lab/notebook/objects/_schema/project/layers/webGlLayer.py,sha256=suuMnEfagKzyb3bUVEYQCbkvmjfxQY_PEewOepdJr0U,1569
28
- jupytergis_lab/notebook/objects/_schema/project/sources/__init__.py,sha256=eKpCop52NfY5v2qvVVt2rNolpoWpR8p_pEdtGz4FoWk,97
29
- jupytergis_lab/notebook/objects/_schema/project/sources/geoTiffSource.py,sha256=8FndqffAISYI-q9ugSoABGr1bhbNB2CTSgxeKMaCn8g,724
30
- jupytergis_lab/notebook/objects/_schema/project/sources/imageSource.py,sha256=Py786Lhd_afSjwvIRpWuoibb4hIfruhVuVVCGowChAk,797
31
- jupytergis_lab/notebook/objects/_schema/project/sources/rasterDemSource.py,sha256=An25Nz4DNuFFMBFbCDfpRQXIKdGjVXjJsDYr0tXIDnU,709
32
- jupytergis_lab/notebook/objects/_schema/project/sources/rastersource.py,sha256=qcnDEPqmx8SHn88j4E407thWI8uD8kyrQfiPVGJFG60,1260
33
- jupytergis_lab/notebook/objects/_schema/project/sources/shapefileSource.py,sha256=X-OdRnGZYUODBngitNix-m0I09xezLJ8DdTwtCWpEfI,1002
34
- jupytergis_lab/notebook/objects/_schema/project/sources/vectortilesource.py,sha256=itXlGTGCZp5V7iEjKY-mbWvIt4QDNImq38UivsBNZRo,918
35
- jupytergis_lab/notebook/objects/_schema/project/sources/videoSource.py,sha256=kdObCc_DgzHRQ6TNGthU-aDgb8Am1ddi0A8j6OYYt_s,735
36
- jupytergis_lab/notebook/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- jupytergis_lab/notebook/tests/test_api.py,sha256=4aecq70FINp1SLHF6fpWlnkWwprNKYGKpTk1UTpslO4,1465
38
- jupytergis_lab-0.4.5.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/package.json,sha256=zsjc0iLsCMDTfD3Qilv9yuIUuHqEAdmEIHQ4vkbYx_s,4105
39
- jupytergis_lab-0.4.5.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/234.c2d7ed33ae9ca2244b0d.js,sha256=wtftM66coiRLDYAUn7Z5LURKJAkNR0xn7TKRdUkwS18,349
40
- jupytergis_lab-0.4.5.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/432.bb0ae93e813eefae7236.js,sha256=uwrpPoE-765yNmd5LLFGbuaee1xEMmvo7SYjQGiS5rU,46036
41
- jupytergis_lab-0.4.5.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/484.8ba570bf2020ec490e49.js,sha256=i6VwvyAg7EkOSRmkyB-YUqhp9hG5M7Is5SSnec_B39Q,8097
42
- jupytergis_lab-0.4.5.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/remoteEntry.4b4db2d5f1ccde6ba0de.js,sha256=S02y1fHM3mug3nBZ1bti2JDehCLf8UrdPNMlZii9sxM,8290
43
- jupytergis_lab-0.4.5.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/style.js,sha256=pog22wM5nCMkQO0YWJ94eDKAF1OlO1ZvCDGi_rO335U,169
44
- jupytergis_lab-0.4.5.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/third-party-licenses.json,sha256=AckYa_8zWeYPl2KrW1APdWZDGbL5JL5fnD1dx3ZkKZM,4230
45
- jupytergis_lab-0.4.5.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/install.json,sha256=t_TWPC6MDZMygRm9ujZ63nap014Sb5htaW5QEOjrmgI,189
46
- jupytergis_lab-0.4.5.dist-info/METADATA,sha256=v8R1BtT5-P85qsbjbk-8y_AQBbIxIqqzJ6Ie2gAlqDs,3151
47
- jupytergis_lab-0.4.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
48
- jupytergis_lab-0.4.5.dist-info/licenses/LICENSE,sha256=VblFgHMsSan_kg15lNsI-YHIqUOUNXGptcoaX2yDDhU,1531
49
- jupytergis_lab-0.4.5.dist-info/RECORD,,