jupytergis-lab 0.1.1__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 (37) hide show
  1. jupytergis_lab/__init__.py +14 -0
  2. jupytergis_lab/_version.py +4 -0
  3. jupytergis_lab/notebook/__init__.py +1 -0
  4. jupytergis_lab/notebook/gis_document.py +616 -0
  5. jupytergis_lab/notebook/objects/__init__.py +14 -0
  6. jupytergis_lab/notebook/objects/_schema/__init__.py +3 -0
  7. jupytergis_lab/notebook/objects/_schema/geoTiffSource.py +24 -0
  8. jupytergis_lab/notebook/objects/_schema/geojsonsource.py +511 -0
  9. jupytergis_lab/notebook/objects/_schema/hillshadeLayer.py +19 -0
  10. jupytergis_lab/notebook/objects/_schema/imageLayer.py +19 -0
  11. jupytergis_lab/notebook/objects/_schema/imageSource.py +26 -0
  12. jupytergis_lab/notebook/objects/_schema/jgis.py +138 -0
  13. jupytergis_lab/notebook/objects/_schema/rasterDemSource.py +28 -0
  14. jupytergis_lab/notebook/objects/_schema/rasterlayer.py +19 -0
  15. jupytergis_lab/notebook/objects/_schema/rastersource.py +33 -0
  16. jupytergis_lab/notebook/objects/_schema/shapefileSource.py +31 -0
  17. jupytergis_lab/notebook/objects/_schema/vectorTileLayer.py +29 -0
  18. jupytergis_lab/notebook/objects/_schema/vectorlayer.py +29 -0
  19. jupytergis_lab/notebook/objects/_schema/vectortilesource.py +27 -0
  20. jupytergis_lab/notebook/objects/_schema/videoSource.py +30 -0
  21. jupytergis_lab/notebook/objects/_schema/webGlLayer.py +22 -0
  22. jupytergis_lab/notebook/tests/__init__.py +0 -0
  23. jupytergis_lab/notebook/tests/test_api.py +18 -0
  24. jupytergis_lab/notebook/utils.py +43 -0
  25. jupytergis_lab/notebook/y_connector.py +31 -0
  26. jupytergis_lab-0.1.1.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/install.json +5 -0
  27. jupytergis_lab-0.1.1.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/package.json +132 -0
  28. jupytergis_lab-0.1.1.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/373.1c3d89f9ed56880711bd.js +1 -0
  29. jupytergis_lab-0.1.1.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/432.28aaec36233a73d1589c.js +1 -0
  30. jupytergis_lab-0.1.1.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/484.7cd11c502baf51c3285e.js +1 -0
  31. jupytergis_lab-0.1.1.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/remoteEntry.15c6baaafaa709cc98c0.js +1 -0
  32. jupytergis_lab-0.1.1.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/style.js +4 -0
  33. jupytergis_lab-0.1.1.data/data/share/jupyter/labextensions/@jupytergis/jupytergis-lab/static/third-party-licenses.json +40 -0
  34. jupytergis_lab-0.1.1.dist-info/METADATA +67 -0
  35. jupytergis_lab-0.1.1.dist-info/RECORD +37 -0
  36. jupytergis_lab-0.1.1.dist-info/WHEEL +4 -0
  37. jupytergis_lab-0.1.1.dist-info/licenses/LICENSE +29 -0
@@ -0,0 +1,28 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: rasterDemSource.json
3
+ # timestamp: 2024-09-13T09:04:30+00:00
4
+
5
+ from __future__ import annotations
6
+
7
+ from enum import Enum
8
+ from typing import Dict, Optional
9
+
10
+ from pydantic import BaseModel, ConfigDict, Field
11
+
12
+
13
+ class Encoding(Enum):
14
+ terrarium = 'terrarium'
15
+ mapbox = 'mapbox'
16
+
17
+
18
+ class IRasterDemSource(BaseModel):
19
+ model_config = ConfigDict(
20
+ extra='forbid',
21
+ )
22
+ url: str = Field(..., description='The url to the tile provider')
23
+ tileSize: Optional[float] = Field(512, description=' The tile size')
24
+ attribution: Optional[str] = Field(
25
+ None, description='The attribution for the raster-dem source'
26
+ )
27
+ encoding: Optional[Encoding] = 'mapbox'
28
+ urlParameters: Optional[Dict[str, str]] = None
@@ -0,0 +1,19 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: rasterlayer.json
3
+ # timestamp: 2024-09-13T09:04:30+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
+ )
@@ -0,0 +1,33 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: rastersource.json
3
+ # timestamp: 2024-09-13T09:04:30+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]] = {}
@@ -0,0 +1,31 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: shapefileSource.json
3
+ # timestamp: 2024-09-13T09:04:30+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
+ )
@@ -0,0 +1,29 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: vectorTileLayer.json
3
+ # timestamp: 2024-09-13T09:04:30+00:00
4
+
5
+ from __future__ import annotations
6
+
7
+ from enum import Enum
8
+ from typing import 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
+ sourceLayer: Optional[str] = Field(None, description='The source layer to use')
26
+ color: Optional[str] = Field('#FF0000', description='The color of the the object')
27
+ opacity: Optional[confloat(ge=0.0, le=1.0, multiple_of=0.1)] = Field(
28
+ 1, description='The opacity of the the object'
29
+ )
@@ -0,0 +1,29 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: vectorlayer.json
3
+ # timestamp: 2024-09-13T09:04:30+00:00
4
+
5
+ from __future__ import annotations
6
+
7
+ from enum import Enum
8
+ from typing import 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 IVectorLayer(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
+ sourceLayer: Optional[str] = Field(None, description='The source layer to use')
26
+ color: Optional[str] = Field('#FF0000', description='The color of the the object')
27
+ opacity: Optional[confloat(ge=0.0, le=1.0, multiple_of=0.1)] = Field(
28
+ 1, description='The opacity of the the object'
29
+ )
@@ -0,0 +1,27 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: vectortilesource.json
3
+ # timestamp: 2024-09-13T09:04:30+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
@@ -0,0 +1,30 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: videoSource.json
3
+ # timestamp: 2024-09-13T09:04:30+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
+ )
@@ -0,0 +1,22 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: webGlLayer.json
3
+ # timestamp: 2024-09-13T09:04:30+00:00
4
+
5
+ from __future__ import annotations
6
+
7
+ from typing import List, Optional, Union
8
+
9
+ from pydantic import BaseModel, ConfigDict, Field, confloat
10
+
11
+
12
+ class IWebGlLayer(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
+ )
20
+ color: Optional[Union[str, List[Union[str, float, List[str]]]]] = Field(
21
+ '#FF0000', description='The color of the the object'
22
+ )
File without changes
@@ -0,0 +1,18 @@
1
+ import unittest
2
+
3
+ from jupytergis_lab import GISDocument
4
+
5
+
6
+ class VectorTileTests(unittest.TestCase):
7
+
8
+ def setUp(self):
9
+ self.doc = GISDocument()
10
+
11
+ def test_sourcelayer(self):
12
+ # If there are multiple source layers available and none specified we raise
13
+ with self.assertRaises(ValueError):
14
+ self.doc.add_vectortile_layer("https://basemaps.arcgis.com/arcgis/rest/services/World_Basemap_v2/VectorTileServer/tile/{z}/{y}/{x}.pbf")
15
+
16
+ # If there is on source layer available and none specified we select it
17
+ vector_tile = self.doc.add_vectortile_layer("https://planetarycomputer.microsoft.com/api/data/v1/vector/collections/ms-buildings/tilesets/global-footprints/tiles/{z}/{x}/{y}")
18
+ assert self.doc.layers[vector_tile]["parameters"]["sourceLayer"] == "bingmlbuildings"
@@ -0,0 +1,43 @@
1
+ import os
2
+ from enum import Enum
3
+ from urllib.parse import urljoin
4
+ import requests
5
+ import mapbox_vector_tile
6
+
7
+
8
+ class MESSAGE_ACTION(str, Enum):
9
+ CONNECT_ROOM = "connect_room"
10
+ DISCONNECT_ROOM = "disconnect_room"
11
+
12
+
13
+ def multi_urljoin(*parts) -> str:
14
+ if len(parts) == 0:
15
+ return ""
16
+ return urljoin(
17
+ parts[0],
18
+ "/".join(part for part in parts[1:]),
19
+ )
20
+
21
+
22
+ def normalize_path(path: str) -> str:
23
+ if os.path.isabs(path):
24
+ return path
25
+ else:
26
+ return os.path.abspath(os.path.join(os.getcwd(), path))
27
+
28
+
29
+ def get_source_layer_names(tile_url):
30
+ # Fetch a sample tile (e.g., z=0, x=0, y=0)
31
+ sample_tile_url = tile_url.format(z=0, x=0, y=0)
32
+ response = requests.get(sample_tile_url)
33
+ response.raise_for_status()
34
+
35
+ tile_data = response.content
36
+ tile = mapbox_vector_tile.decode(tile_data)
37
+
38
+ layer_names = list(tile.keys())
39
+
40
+ if len(layer_names) != 0:
41
+ return layer_names
42
+ else:
43
+ raise ValueError('No layer found in the tile')
@@ -0,0 +1,31 @@
1
+ import logging
2
+ from typing import Optional
3
+
4
+ from ypywidgets import Widget
5
+
6
+ logger = logging.getLogger(__file__)
7
+
8
+
9
+ class YDocConnector(Widget):
10
+ def __init__(self, path: Optional[str], **kwargs) -> None:
11
+ self.path = None
12
+ self._format = None
13
+ self._contentType = None
14
+
15
+ if path is not None:
16
+ self.path = path
17
+ try:
18
+ ext = path.split(".")[1].lower()
19
+ except Exception:
20
+ raise Exception("Can not detect file extension!")
21
+ if ext == "jgis":
22
+ self._format = "text"
23
+ self._contentType = "jgis"
24
+ else:
25
+ raise Exception("File extension is not supported!")
26
+ comm_data = {
27
+ "path": self.path,
28
+ "format": self._format,
29
+ "contentType": self._contentType,
30
+ }
31
+ super().__init__(name="@jupytergis:widget", open_comm=True, comm_data=comm_data)
@@ -0,0 +1,5 @@
1
+ {
2
+ "packageManager": "python",
3
+ "packageName": "jupytergis_lab",
4
+ "uninstallInstructions": "Use your Python package manager (pip, conda, etc.) to uninstall the package jupytergis_lab"
5
+ }
@@ -0,0 +1,132 @@
1
+ {
2
+ "name": "@jupytergis/jupytergis-lab",
3
+ "version": "0.1.1",
4
+ "description": "JupyterGIS Lab extension.",
5
+ "keywords": [
6
+ "jupyter",
7
+ "jupyterlab",
8
+ "jupyterlab-extension"
9
+ ],
10
+ "homepage": "https://github.com/geojupyter/jupytergis",
11
+ "bugs": {
12
+ "url": "https://github.com/geojupyter/jupytergis/issues"
13
+ },
14
+ "license": "BSD-3-Clause",
15
+ "author": "JupyterGIS contributors",
16
+ "files": [
17
+ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
18
+ "style/**/*.{css,js,eot,gif,html,jpg,json,png,svg,woff2,ttf}"
19
+ ],
20
+ "main": "lib/index.js",
21
+ "types": "lib/index.d.ts",
22
+ "style": "style/index.css",
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "https://github.com/geojupyter/jupytergis.git"
26
+ },
27
+ "scripts": {
28
+ "build": "jlpm build:lib && jlpm build:labextension:dev",
29
+ "build:prod": "jlpm clean && jlpm build:lib:prod && jlpm build:labextension",
30
+ "build:labextension": "jupyter labextension build .",
31
+ "build:labextension:dev": "jupyter labextension build --development True .",
32
+ "build:lib": "tsc --sourceMap",
33
+ "build:lib:prod": "tsc",
34
+ "build:dev": "jlpm run build",
35
+ "clean": "jlpm clean:lib",
36
+ "clean:lib": "rimraf lib tsconfig.tsbuildinfo",
37
+ "clean:lintcache": "rimraf .eslintcache .stylelintcache",
38
+ "clean:labextension": "rimraf jupytergis_lab/labextension jupytergis_lab/_version.py",
39
+ "clean:all": "jlpm clean:lib && jlpm clean:labextension && jlpm clean:lintcache",
40
+ "eslint": "jlpm eslint:check --fix",
41
+ "eslint:check": "eslint . --cache --ext .ts,.tsx",
42
+ "install:extension": "jlpm build",
43
+ "lint": "jlpm stylelint && jlpm prettier && jlpm eslint",
44
+ "lint:check": "jlpm stylelint:check && jlpm prettier:check && jlpm eslint:check",
45
+ "prettier": "jlpm prettier:base --write",
46
+ "prettier:base": "prettier \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"",
47
+ "prettier:check": "jlpm prettier:base --check",
48
+ "stylelint": "jlpm stylelint:check --fix",
49
+ "stylelint:check": "stylelint --cache \"style/**/*.css\"",
50
+ "watch": "run-p watch:src watch:labextension",
51
+ "watch:src": "tsc -w --sourceMap",
52
+ "watch:labextension": "jupyter labextension watch ."
53
+ },
54
+ "dependencies": {
55
+ "@jupyter/docprovider": "^2.0.0",
56
+ "@jupytergis/base": "^0.1.1",
57
+ "@jupytergis/jupytergis-core": "^0.1.1",
58
+ "@jupytergis/schema": "^0.1.1",
59
+ "@jupyterlab/application": "^4.0.0",
60
+ "@jupyterlab/apputils": "^4.0.0",
61
+ "@jupyterlab/coreutils": "^6.0.0",
62
+ "@jupyterlab/docregistry": "^4.0.0",
63
+ "@jupyterlab/filebrowser": "^4.0.0",
64
+ "@jupyterlab/launcher": "^4.0.0",
65
+ "@jupyterlab/mainmenu": "^4.0.0",
66
+ "@jupyterlab/services": "^7.0.0",
67
+ "@jupyterlab/translation": "^4.0.0",
68
+ "@jupyterlab/ui-components": "^4.0.0",
69
+ "@lumino/messaging": "^2.0.0",
70
+ "@lumino/widgets": "^2.0.0",
71
+ "react": "^18.0.1",
72
+ "yjs-widgets": "^0.3.5"
73
+ },
74
+ "devDependencies": {
75
+ "@jupyterlab/builder": "^4.0.0",
76
+ "css-loader": "^6.7.1",
77
+ "mkdirp": "^1.0.3",
78
+ "npm-run-all": "^4.1.5",
79
+ "rimraf": "^3.0.2",
80
+ "typescript": "^5",
81
+ "yjs": "^13.5.0"
82
+ },
83
+ "sideEffects": [
84
+ "style/*.css",
85
+ "style/index.js"
86
+ ],
87
+ "styleModule": "style/index.js",
88
+ "publishConfig": {
89
+ "access": "public"
90
+ },
91
+ "jupyterlab": {
92
+ "discovery": {
93
+ "server": {
94
+ "managers": [
95
+ "pip"
96
+ ],
97
+ "base": {
98
+ "name": "jupytergis_lab"
99
+ }
100
+ }
101
+ },
102
+ "extension": true,
103
+ "outputDir": "jupytergis_lab/labextension",
104
+ "sharedPackages": {
105
+ "@jupytergis/base": {
106
+ "singleton": true,
107
+ "bundled": false
108
+ },
109
+ "@jupytergis/schema": {
110
+ "singleton": true,
111
+ "bundled": false
112
+ },
113
+ "@jupytergis/jupytergis-core": {
114
+ "singleton": true,
115
+ "bundled": false
116
+ },
117
+ "@jupyter/docprovider": {
118
+ "singleton": true,
119
+ "bundled": false
120
+ },
121
+ "yjs-widgets": {
122
+ "singleton": true,
123
+ "bundled": false
124
+ }
125
+ },
126
+ "_build": {
127
+ "load": "static/remoteEntry.15c6baaafaa709cc98c0.js",
128
+ "extension": "./extension",
129
+ "style": "./style"
130
+ }
131
+ }
132
+ }
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_jupytergis_jupytergis_lab=self.webpackChunk_jupytergis_jupytergis_lab||[]).push([[373],{232:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(758),t=r.n(e),a=r(935),i=r.n(a)()(t());i.push([n.id,".jp-SchemaForm .array-item-move-up::before {\n content: var(--jp-schema-form-up);\n}\n\n.jp-SchemaForm .array-item-move-down::before {\n content: var(--jp-schema-form-down);\n}\n\n.jp-SchemaForm .array-item-remove::before {\n content: var(--jp-schema-form-remove);\n}\n\n.jp-SchemaForm .array-item-remove {\n content: var(--jp-schema-form-remove);\n}\n\n.jp-SchemaForm .array-item-add button::before {\n content: var(--jp-schema-form-add);\n}\n\n.jp-SchemaForm .array-item-add button {\n background-color: var(--jp-brand-color2);\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.jp-SchemaForm .array-item-add button:hover {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.jp-SchemaForm .array-item-toolbox {\n opacity: 0.5;\n flex: 0;\n padding-right: var(--jp-ui-font-size1);\n margin-bottom: calc(var(--jp-ui-font-size1) / 2);\n order: 1;\n}\n\n.jp-SchemaForm .array-item:hover > .array-item-toolbox {\n opacity: 1;\n}\n\n.jp-SchemaForm .array-item-toolbox .btn-group {\n display: flex;\n flex-direction: column;\n}\n\n.jp-SchemaForm .array-item-toolbox .btn {\n margin-bottom: calc(var(--jp-ui-font-size1) / 2);\n}\n\n.jp-SchemaForm .array-item-toolbox .btn:hover:not([disabled]) {\n background-color: var(--jp-layout-color3);\n}\n\n.jp-SchemaForm .array-item-toolbox .btn.array-item-remove:hover {\n background-color: var(--jp-warn-color2);\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.jp-SchemaForm .array-item-toolbox .btn[disabled] {\n opacity: 0.1;\n cursor: default;\n}\n\n.jp-SchemaForm .array-item {\n display: flex;\n position: relative;\n}\n\n.jp-SchemaForm .array-item:not(:last-child) {\n border-bottom: var(--jp-border-width) solid var(--jp-border-color0);\n margin-bottom: var(--jp-ui-font-size1);\n padding-bottom: var(--jp-ui-font-size1);\n}\n\n.jp-SchemaForm .array-item div:first-child {\n flex: 1;\n order: 2;\n}\n",""]);const l=i},485:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(758),t=r.n(e),a=r(935),i=r.n(a)()(t());i.push([n.id,".jp-SchemaForm .react-codemirror2 {\n border: solid var(--jp-border-width) var(--jp-border-color1);\n display: flex;\n flex-direction: column;\n}\n",""]);const l=i},54:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(758),t=r.n(e),a=r(935),i=r.n(a)()(t());i.push([n.id,".jp-SchemaForm {\n overflow-y: auto;\n color: var(--jp-ui-font-color1);\n}\n\n.jp-SchemaForm .rjsf {\n display: flex;\n flex-direction: column;\n}\n\n.jp-SchemaForm > form {\n padding: var(--jp-ui-font-size1);\n}\n\n.jp-SchemaForm fieldset {\n border: 0;\n margin: 0;\n padding: 0;\n}\n\n.jp-SchemaForm fieldset fieldset {\n padding-left: var(--jp-notebook-padding);\n border-left: solid 4px var(--jp-border-color3);\n}\n\n.jp-SchemaForm button[type='submit'] {\n display: none;\n}\n\n.jp-SchemaForm .control-label,\n.jp-SchemaForm legend {\n margin: 0;\n padding: 0;\n font-weight: bold;\n display: block;\n position: relative;\n}\n\n.jp-SchemaForm legend > :first-child,\n.jp-SchemaForm .control-label > :first-child {\n margin-top: 0;\n padding-top: 0;\n}\n\n.jp-SchemaForm .form-group {\n margin-bottom: var(--jp-ui-font-size1);\n width: 100%;\n position: relative;\n}\n\n.jp-SchemaForm .form-group:last-child {\n margin-bottom: 0;\n}\n\n.jp-SchemaForm .field-description,\n.jp-SchemaForm .help-block {\n color: var(--jp-ui-font-color2);\n}\n\n.jp-SchemaForm .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",""]);const l=i},606:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(758),t=r.n(e),a=r(935),i=r.n(a)()(t());i.push([n.id,".jp-SchemaForm .errors {\n order: 999;\n color: var(--jp-warn-color0);\n}\n\n.jp-SchemaForm .errors h3 {\n margin: 0;\n}\n\n.jp-SchemaForm .errors ul,\n.jp-SchemaForm .errors li {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.jp-SchemaForm .has-error > input[type='text'],\n.jp-SchemaForm .has-error > input[type='number'],\n.jp-SchemaForm .has-error > input[type='date'],\n.jp-SchemaForm .has-error > input[type='datetime-local'],\n.jp-SchemaForm .has-error > input[type='url'],\n.jp-SchemaForm .has-error > input[type='email'],\n.jp-SchemaForm .has-error > input[type='file'],\n.jp-SchemaForm .has-error > input[type='password'],\n.jp-SchemaForm .has-error > input[type='color'],\n.jp-SchemaForm .has-error > textarea {\n border: solid 1px var(--jp-warn-color1);\n}\n\n.jp-SchemaForm .field .error-detail {\n list-style: none;\n color: var(--jp-warn-color0);\n margin: 0;\n padding: 0;\n}\n\n.jp-SchemaForm .field .error-detail li {\n margin-top: calc(var(--jp-ui-font-size1) / 2);\n}\n",""]);const l=i},307:(n,o,r)=>{r.d(o,{A:()=>v});var e=r(758),t=r.n(e),a=r(935),i=r.n(a),l=r(54),c=r(232),p=r(19),s=r(606),d=r(836),m=r(548),u=r(293),b=r(485),h=i()(t());h.i(l.A),h.i(c.A),h.i(p.A),h.i(s.A),h.i(d.A),h.i(m.A),h.i(u.A),h.i(b.A),h.push([n.id,"\n",""]);const v=h},19:(n,o,r)=>{r.d(o,{A:()=>m});var e=r(758),t=r.n(e),a=r(935),i=r.n(a),l=r(62),c=r.n(l),p=new URL(r(967),r.b),s=i()(t()),d=c()(p);s.push([n.id,`.jp-SchemaForm input[type='text'],\n.jp-SchemaForm input[type='number'],\n.jp-SchemaForm input[type='date'],\n.jp-SchemaForm input[type='datetime-local'],\n.jp-SchemaForm input[type='url'],\n.jp-SchemaForm input[type='email'],\n.jp-SchemaForm input[type='file'],\n.jp-SchemaForm input[type='password'],\n.jp-SchemaForm input[type='color'],\n.jp-SchemaForm textarea {\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.jp-SchemaForm input[type='text']:focus,\n.jp-SchemaForm input[type='number']:focus,\n.jp-SchemaForm input[type='date']:focus,\n.jp-SchemaForm input[type='datetime-local']:focus,\n.jp-SchemaForm input[type='url']:focus,\n.jp-SchemaForm input[type='email']:focus,\n.jp-SchemaForm input[type='file']:focus,\n.jp-SchemaForm input[type='password']:focus,\n.jp-SchemaForm input[type='color']:focus,\n.jp-SchemaForm textarea:focus {\n border-color: var(--md-blue-500);\n background-color: var(--jp-layout-color0);\n box-shadow: inset 0 0 4px var(--md-blue-300);\n}\n\n.jp-SchemaForm 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(${d});\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.jp-SchemaForm select[multiple] {\n padding: 0;\n background: none;\n}\n\n.jp-SchemaForm select:focus {\n border: var(--jp-border-width) solid var(--jp-brand-color1);\n}\n\n.jp-SchemaForm fieldset button {\n font-size: var(--jp-ui-font-size2);\n padding: calc(var(--jp-ui-font-size1) / 2);\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color1);\n border: var(--jp-border-width) solid transparent;\n cursor: pointer;\n min-width: calc(var(--jp-ui-font-size1) * 1.6);\n font-weight: bold;\n}\n\n.jp-SchemaForm .radio > label > span,\n.jp-SchemaForm .field-boolean .checkbox > label {\n display: flex;\n}\n\n.jp-SchemaForm .radio > label > span > input,\n.jp-SchemaForm .field-boolean .checkbox > label > input {\n flex: 0;\n}\n\n.jp-SchemaForm .radio > label > span > span,\n.jp-SchemaForm .field-boolean .checkbox > label > span {\n flex: 1;\n}\n`,""]);const m=s},293:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(758),t=r.n(e),a=r(935),i=r.n(a)()(t());i.push([n.id,".jp-SchemaForm fieldset .jp-SchemaForm-JSONObject-buttons {\n display: flex;\n}\n\n.jp-SchemaForm fieldset .jp-SchemaForm-JSONObject-buttons button {\n border: solid var(--jp-border-width) transparent;\n flex: 1;\n margin: 0;\n background-color: transparent;\n}\n\n.jp-SchemaForm fieldset .jp-SchemaForm-JSONObject-buttons button[disabled] {\n opacity: 0.25;\n}\n\n.jp-SchemaForm fieldset .jp-SchemaForm-JSONObject-buttons button:hover:not([disabled]),\n.jp-SchemaForm fieldset .jp-SchemaForm-JSONObject-buttons button:focus:not([disabled]) {\n border: solid var(--jp-border-width) var(--jp-border-color1);\n background-color: var(jp-layout-color2);\n}\n",""]);const l=i},548:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(758),t=r.n(e),a=r(935),i=r.n(a)()(t());i.push([n.id,".jp-SchemaForm .jp-RenderedMarkdown > *:first-child {\n margin-top: 0;\n padding-top: 0;\n}\n\n.jp-SchemaForm .jp-RenderedMarkdown > *:last-child {\n margin-bottom: 0;\n padding-bottom: 0;\n}\n",""]);const l=i},836:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(758),t=r.n(e),a=r(935),i=r.n(a)()(t());i.push([n.id,":root {\n --jp-schema-form-up: '▲';\n --jp-schema-form-down: '▼';\n --jp-schema-form-remove: '×';\n --jp-schema-form-add: '+';\n}\n",""]);const l=i},4:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(758),t=r.n(e),a=r(935),i=r.n(a)()(t());i.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=i},935:n=>{n.exports=function(n){var o=[];return o.toString=function(){return this.map((function(o){var r="",e=void 0!==o[5];return o[4]&&(r+="@supports (".concat(o[4],") {")),o[2]&&(r+="@media ".concat(o[2]," {")),e&&(r+="@layer".concat(o[5].length>0?" ".concat(o[5]):""," {")),r+=n(o),e&&(r+="}"),o[2]&&(r+="}"),o[4]&&(r+="}"),r})).join("")},o.i=function(n,r,e,t,a){"string"==typeof n&&(n=[[null,n,void 0]]);var i={};if(e)for(var l=0;l<this.length;l++){var c=this[l][0];null!=c&&(i[c]=!0)}for(var p=0;p<n.length;p++){var s=[].concat(n[p]);e&&i[s[0]]||(void 0!==a&&(void 0===s[5]||(s[1]="@layer".concat(s[5].length>0?" ".concat(s[5]):""," {").concat(s[1],"}")),s[5]=a),r&&(s[2]?(s[1]="@media ".concat(s[2]," {").concat(s[1],"}"),s[2]=r):s[2]=r),t&&(s[4]?(s[1]="@supports (".concat(s[4],") {").concat(s[1],"}"),s[4]=t):s[4]="".concat(t)),o.push(s))}},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}},758:n=>{n.exports=function(n){return n[1]}},591:n=>{var o=[];function r(n){for(var r=-1,e=0;e<o.length;e++)if(o[e].identifier===n){r=e;break}return r}function e(n,e){for(var a={},i=[],l=0;l<n.length;l++){var c=n[l],p=e.base?c[0]+e.base:c[0],s=a[p]||0,d="".concat(p," ").concat(s);a[p]=s+1;var m=r(d),u={css:c[1],media:c[2],sourceMap:c[3],supports:c[4],layer:c[5]};if(-1!==m)o[m].references++,o[m].updater(u);else{var b=t(u,e);e.byIndex=l,o.splice(l,0,{identifier:d,updater:b,references:1})}i.push(d)}return i}function t(n,o){var r=o.domAPI(o);return r.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;r.update(n=o)}else r.remove()}}n.exports=function(n,t){var a=e(n=n||[],t=t||{});return function(n){n=n||[];for(var i=0;i<a.length;i++){var l=r(a[i]);o[l].references--}for(var c=e(n,t),p=0;p<a.length;p++){var s=r(a[p]);0===o[s].references&&(o[s].updater(),o.splice(s,1))}a=c}}},128:n=>{var o={};n.exports=function(n,r){var e=function(n){if(void 0===o[n]){var r=document.querySelector(n);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(n){r=null}o[n]=r}return o[n]}(n);if(!e)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");e.appendChild(r)}},51:n=>{n.exports=function(n){var o=document.createElement("style");return n.setAttributes(o,n.attributes),n.insert(o,n.options),o}},855:(n,o,r)=>{n.exports=function(n){var o=r.nc;o&&n.setAttribute("nonce",o)}},740:n=>{n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var o=n.insertStyleElement(n);return{update:function(r){!function(n,o,r){var e="";r.supports&&(e+="@supports (".concat(r.supports,") {")),r.media&&(e+="@media ".concat(r.media," {"));var t=void 0!==r.layer;t&&(e+="@layer".concat(r.layer.length>0?" ".concat(r.layer):""," {")),e+=r.css,t&&(e+="}"),r.media&&(e+="}"),r.supports&&(e+="}");var a=r.sourceMap;a&&"undefined"!=typeof btoa&&(e+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),o.styleTagTransform(e,n,o.options)}(o,n,r)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(o)}}}},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))}}},967:n=>{n.exports="data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' viewBox='0 0 20 20'%3e %3cg class='jp-icon3' fill='%23616161' shape-rendering='geometricPrecision'%3e %3cpolygon class='st1' points='9.9%2c13.6 3.6%2c7.4 4.4%2c6.6 9.9%2c12.2 15.4%2c6.7 16.1%2c7.4 '/%3e %3c/g%3e %3c/svg%3e"}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_jupytergis_jupytergis_lab=self.webpackChunk_jupytergis_jupytergis_lab||[]).push([[432],{79:(n,e,o)=>{o.d(e,{A:()=>f});var r=o(758),t=o.n(r),i=o(935),a=o.n(i),l=o(564),p=o(365),s=o(633),d=o(705),c=o(225),g=o(781),j=o(4),b=a()(t());b.i(l.A),b.i(p.A),b.i(s.A),b.i(d.A),b.i(c.A),b.i(g.A),b.i(j.A),b.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 .jp-SchemaForm .array-item:not(:last-child) {\n border-bottom: none;\n margin-bottom: unset;\n padding-bottom: unset;\n}\n\n.jGIS-property-panel .jp-SchemaForm .array-item {\n flex: 1 0 0%;\n align-items: center;\n}\n\n.jGIS-property-panel .jp-SchemaForm .field-description {\n display: none;\n}\n\n.jGIS-property-panel .jp-SchemaForm fieldset fieldset {\n padding-left: unset;\n border-left: none;\n}\n\n.jGIS-property-panel .jp-SchemaForm .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",""]);const f=b},564:(n,e,o)=>{o.d(e,{A:()=>l});var r=o(758),t=o.n(r),i=o(935),a=o.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-SchemaForm .jp-select-wrapper select {\n background-image: unset;\n}\n",""]);const l=a},225:(n,e,o)=>{o.d(e,{A:()=>l});var r=o(758),t=o.n(r),i=o(935),a=o.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},378:(n,e,o)=>{o.d(e,{A:()=>s});var r=o(758),t=o.n(r),i=o(935),a=o.n(i),l=o(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},365:(n,e,o)=>{o.d(e,{A:()=>l});var r=o(758),t=o.n(r),i=o(935),a=o.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},633:(n,e,o)=>{o.d(e,{A:()=>l});var r=o(758),t=o.n(r),i=o(935),a=o.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\n.jp-gis-layer button,\n.jp-gis-source button {\n margin-left: auto;\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-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},781:(n,e,o)=>{o.d(e,{A:()=>l});var r=o(758),t=o.n(r),i=o(935),a=o.n(i)()(t());a.push([n.id,".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 flex: 1 0 50%;\n max-width: 50%;\n}\n\n.jp-gis-band-container {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.jp-gis-layer-symbology-container {\n display: flex;\n flex-direction: column;\n}\n\n.jp-gis-band-container .jp-gis-symbology-row:last-child {\n margin-bottom: 12px;\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 > input[type='number'] {\n flex: 0 1 18%;\n min-width: 0px;\n}\n\n.jp-gis-color-row > input[type='color'] {\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",""]);const l=a},705:(n,e,o)=>{o.d(e,{A:()=>l});var r=o(758),t=o.n(r),i=o(935),a=o.n(i)()(t());a.push([n.id,".jp-gis-terrain-main {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n overflow: hidden;\n}\n\n.jp-gis-terrain-label {\n margin: 0;\n padding: 0;\n font-weight: bold;\n display: block;\n position: relative;\n}\n",""]);const l=a},296:(n,e,o)=>{o.d(e,{A:()=>d});var r=o(758),t=o.n(r),i=o(935),a=o.n(i),l=o(307),p=o(378),s=a()(t());s.i(l.A),s.i(p.A),s.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 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.jp-SchemaForm .control-label,\n.jp-SchemaForm 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 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 {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n}\n\n.jGIS-Annotation-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: #fff;\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}\n\n.jGIS-Annotations {\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: 1000;\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}\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-Annotation-Topbar {\n display: flex;\n flex-direction: row-reverse;\n}\n\n.jGIS-Annotation-TopBarIcon {\n margin: 3px;\n width: 20px;\n height: 20px;\n cursor: pointer;\n}\n\n.jGIS-Annotation-TopBarIcon > svg {\n width: 20px;\n height: 20px;\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/* 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.jupytergis-notebook-widget > div {\n height: 100%;\n width: 100%;\n}\n\n.jp-SchemaForm .control-label,\n.jp-SchemaForm 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",""]);const d=s},432:(n,e,o)=>{var r=o(591),t=o.n(r),i=o(740),a=o.n(i),l=o(128),p=o.n(l),s=o(855),d=o.n(s),c=o(51),g=o.n(c),j=o(656),b=o.n(j),f=o(296),u={};u.styleTagTransform=b(),u.setAttributes=d(),u.insert=p().bind(null,"head"),u.domAPI=a(),u.insertStyleElement=g(),t()(f.A,u),f.A&&f.A.locals&&f.A.locals}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_jupytergis_jupytergis_lab=self.webpackChunk_jupytergis_jupytergis_lab||[]).push([[484],{484:(e,o,t)=>{t.r(o),t.d(o,{default:()=>h});var n=t(323),a=t(33),r=t(909),s=t(314),d=t(241),m=t(818),c=t(678),l=t(256),i=t(796),u=t(473),p=t(354),g=t(230),y=t(677);class I extends y.JupyterYModel{}class j extends l.Panel{constructor(e){super(),this.onResize=()=>{this._jgisWidget&&g.MessageLoop.sendMessage(this._jgisWidget,l.Widget.ResizeMessage.UnknownSize)},this.addClass("jupytergis-notebook-widget"),this._jgisWidget=new n.JupyterGISPanel(e),this.addWidget(this._jgisWidget)}}const M={id:"jupytergis:yjswidget-plugin",autoStart:!0,optional:[y.IJupyterYWidgetManager,c.ITranslator],activate:(e,o,t)=>{if(!o)return void console.error("Missing IJupyterYWidgetManager token!");const n=null!=t?t:c.nullTranslator;o.registerWidget("@jupytergis:widget",class extends I{ydocFactory(o){const{path:t,format:r,contentType:s}=o;this.jupyterGISModel=new a.JupyterGISModel({});const d=e.serviceManager.user;if(t&&r&&s){const e=p.ServerConnection.makeSettings(),o=u.URLExt.join(e.wsUrl,"api/collaboration/room"),a=new i.WebSocketProvider({url:o,path:t,format:r,contentType:s,model:this.jupyterGISModel.sharedModel,user:d,translator:n.load("jupyterlab")});this.jupyterGISModel.disposed.connect((()=>{a.dispose()}))}else{const e=this.jupyterGISModel.sharedModel.awareness,o=o=>{e.setLocalStateField("user",o.identity)};d.ready.then((()=>{o(d)})).catch((e=>console.error(e))),d.userChanged.connect(o,this)}return this.jupyterGISModel.sharedModel.ydoc}},class{constructor(e,o){this.yModel=e,this.node=o;const t=new j({model:e.jupyterGISModel});g.MessageLoop.sendMessage(t,l.Widget.Msg.BeforeAttach),o.appendChild(t.node),g.MessageLoop.sendMessage(t,l.Widget.Msg.AfterAttach)}})}},C="jupytergis",h=[{id:"jupytergis:lab:main-menu",autoStart:!0,requires:[a.IJupyterGISDocTracker,a.IJGISFormSchemaRegistryToken,a.IJGISLayerBrowserRegistryToken,m.IStateDB],optional:[d.IMainMenu,c.ITranslator,s.ICompletionProviderManager],activate:(e,o,t,a,r,s,d,m)=>{console.log("jupytergis:lab:main-menu is activated!"),d=null!=d?d:c.nullTranslator;(0,n.createDefaultLayerRegistry)(a),(0,n.addCommands)(e,o,d,t,a,r,m);const i=new l.Menu({commands:e.commands});i.title.label=d.load("jupyterlab").__("Add Source"),i.id="jp-gis-contextmenu-addSource",e.contextMenu.addItem({type:"submenu",selector:".jp-gis-sourcePanel",rank:3,submenu:i}),i.addItem({command:n.CommandIDs.newRasterSource,args:{from:"contextMenu"}}),i.addItem({command:n.CommandIDs.newVectorSource,args:{from:"contextMenu"}}),i.addItem({command:n.CommandIDs.newGeoJSONSource,args:{from:"contextMenu"}}),i.addItem({command:n.CommandIDs.newRasterDemSource,args:{from:"contextMenu"}}),i.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.commands.addKeyBinding({command:n.CommandIDs.removeSource,keys:["Delete"],selector:".jp-gis-source.jp-gis-sourceUnused"}),e.contextMenu.addItem({selector:".jp-gis-source",rank:1,command:n.CommandIDs.renameSource}),e.commands.addKeyBinding({command:n.CommandIDs.renameSource,keys:["F2"],selector:".jp-gis-sourceItem"}),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.commands.addKeyBinding({command:n.CommandIDs.removeLayer,keys:["Delete"],selector:".jp-gis-layerItem"}),e.contextMenu.addItem({command:n.CommandIDs.renameLayer,selector:".jp-gis-layerItem",rank:2}),e.commands.addKeyBinding({command:n.CommandIDs.renameLayer,keys:["F2"],selector:".jp-gis-layerItem"});const u=new l.Menu({commands:e.commands});u.title.label=d.load("jupyterlab").__("Move Selected Layers to Group"),u.id="jp-gis-contextmenu-movelayer",e.contextMenu.addItem({type:"submenu",selector:".jp-gis-layerItem",rank:2,submenu:u}),e.contextMenu.opened.connect((()=>function(e,o){var t,a,r,s;if(!(null===(t=o.currentWidget)||void 0===t?void 0:t.context.model))return;const d=null===(a=o.currentWidget)||void 0===a?void 0:a.context.model,m=null!==(s=null===(r=e.menu.items.find((e=>{var o;return"submenu"===e.type&&"jp-gis-contextmenu-movelayer"===(null===(o=e.submenu)||void 0===o?void 0:o.id)})))||void 0===r?void 0:r.submenu)&&void 0!==s?s:null;if(!m)return;m.clearItems();const c=function e(o){const t=[];for(const n of o)if("string"!=typeof n&&n.layers){t.push(n.name);const o=e(n.layers);t.push(...o)}return t}(d.getLayerTree());m.addItem({command:n.CommandIDs.moveLayersToGroup,args:{label:""}}),c.forEach((e=>{m.addItem({command:n.CommandIDs.moveLayersToGroup,args:{label:e}})})),m.addItem({command:n.CommandIDs.moveLayerToNewGroup})}(e.contextMenu,o))),e.contextMenu.addItem({command:n.CommandIDs.removeGroup,selector:".jp-gis-layerGroupHeader",rank:2}),e.commands.addKeyBinding({command:n.CommandIDs.removeGroup,keys:["Delete"],selector:".jp-gis-layerGroupHeader"}),e.contextMenu.addItem({command:n.CommandIDs.renameGroup,selector:".jp-gis-layerGroupHeader",rank:2}),e.commands.addKeyBinding({command:n.CommandIDs.renameGroup,keys:["F2"],selector:".jp-gis-layerGroupHeader"}),e.contextMenu.addItem({type:"separator",selector:".jp-gis-layerPanel",rank:2});const p=new l.Menu({commands:e.commands});p.title.label=d.load("jupyterlab").__("Add Layer"),p.id="jp-gis-contextmenu-addLayer",e.contextMenu.addItem({type:"submenu",selector:".jp-gis-layerPanel",rank:3,submenu:p}),p.addItem({command:n.CommandIDs.newRasterLayer,args:{from:"contextMenu"}}),p.addItem({command:n.CommandIDs.newVectorLayer,args:{from:"contextMenu"}}),p.addItem({command:n.CommandIDs.newHillshadeLayer,args:{from:"contextMenu"}}),p.addItem({command:n.CommandIDs.newImageLayer,args:{from:"contextMenu"}}),s&&function(e,o){e.editMenu.undoers.redo.add({id:n.CommandIDs.redo,isEnabled:o}),e.editMenu.undoers.undo.add({id:n.CommandIDs.undo,isEnabled:o})}(s,(()=>null!==o.currentWidget&&o.currentWidget===e.shell.currentWidget)),e.commands.addKeyBinding({command:n.CommandIDs.executeConsole,keys:["Shift Enter"],selector:".jpgis-console .jp-CodeConsole[data-jp-interaction-mode='notebook'] .jp-CodeConsole-promptCell"}),e.commands.addKeyBinding({command:n.CommandIDs.invokeCompleter,keys:["Tab"],selector:".jpgis-console .jp-CodeConsole-promptCell .jp-mod-completer-enabled"}),e.commands.addKeyBinding({command:n.CommandIDs.selectCompleter,keys:["Enter"],selector:".jpgis-console .jp-ConsolePanel .jp-mod-completer-active"})}},{id:"jupytergis:lab:controlpanel",autoStart:!0,requires:[r.ILayoutRestorer,a.IJupyterGISDocTracker,a.IJGISFormSchemaRegistryToken,m.IStateDB],activate:(e,o,t,a,r)=>{const s=new n.ControlPanelModel({tracker:t}),d=new n.LeftPanelWidget({model:s,tracker:t,state:r});d.id="jupytergis::leftControlPanel",d.title.caption="JupyterGIS Control Panel";const m=new n.RightPanelWidget({model:s,tracker:t,formSchemaRegistry:a});m.id="jupytergis::rightControlPanel",m.title.caption="JupyterGIS Control Panel",o&&(o.add(d,C),o.add(m,C)),e.shell.add(d,"left",{rank:2e3}),e.shell.add(m,"right",{rank:2e3})}},M]}}]);
@@ -0,0 +1 @@
1
+ var _JUPYTERLAB;(()=>{"use strict";var e,r,t,a,n,o,i,u,l,s,f,p,d,c,h,g,v,b,y,m={450:(e,r,t)=>{var a={"./index":()=>t.e(484).then((()=>()=>t(484))),"./extension":()=>t.e(484).then((()=>()=>t(484))),"./style":()=>Promise.all([t.e(373),t.e(432)]).then((()=>()=>t(432)))},n=(e,r)=>(t.R=r,r=t.o(a,e)?a[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),t.R=void 0,r),o=(e,r)=>{if(t.S){var a="default",n=t.S[a];if(n&&n!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[a]=e,t.I(a,r)}};t.d(r,{get:()=>n,init:()=>o})}},j={};function w(e){var r=j[e];if(void 0!==r)return r.exports;var t=j[e]={id:e,exports:{}};return m[e](t,t.exports,w),t.exports}w.m=m,w.c=j,w.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return w.d(r,{a:r}),r},w.d=(e,r)=>{for(var t in r)w.o(r,t)&&!w.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},w.f={},w.e=e=>Promise.all(Object.keys(w.f).reduce(((r,t)=>(w.f[t](e,r),r)),[])),w.u=e=>e+"."+{373:"1c3d89f9ed56880711bd",432:"28aaec36233a73d1589c",484:"7cd11c502baf51c3285e"}[e]+".js?v="+{373:"1c3d89f9ed56880711bd",432:"28aaec36233a73d1589c",484:"7cd11c502baf51c3285e"}[e],w.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),w.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="@jupytergis/jupytergis-lab:",w.l=(t,a,n,o)=>{if(e[t])e[t].push(a);else{var i,u;if(void 0!==n)for(var l=document.getElementsByTagName("script"),s=0;s<l.length;s++){var f=l[s];if(f.getAttribute("src")==t||f.getAttribute("data-webpack")==r+n){i=f;break}}i||(u=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,w.nc&&i.setAttribute("nonce",w.nc),i.setAttribute("data-webpack",r+n),i.src=t),e[t]=[a];var p=(r,a)=>{i.onerror=i.onload=null,clearTimeout(d);var n=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(a))),r)return r(a)},d=setTimeout(p.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),u&&document.head.appendChild(i)}},w.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{w.S={};var e={},r={};w.I=(t,a)=>{a||(a=[]);var n=r[t];if(n||(n=r[t]={}),!(a.indexOf(n)>=0)){if(a.push(n),e[t])return e[t];w.o(w.S,t)||(w.S[t]={});var o=w.S[t],i="@jupytergis/jupytergis-lab",u=[];return"default"===t&&((e,r,t,a)=>{var n=o[e]=o[e]||{},u=n[r];(!u||!u.loaded&&(1!=!u.eager?a:i>u.from))&&(n[r]={get:()=>w.e(484).then((()=>()=>w(484))),from:i,eager:!1})})("@jupytergis/jupytergis-lab","0.1.1"),e[t]=u.length?Promise.all(u).then((()=>e[t]=1)):1}}})(),(()=>{var e;w.g.importScripts&&(e=w.g.location+"");var r=w.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var a=t.length-1;a>-1&&(!e||!/^http(s?):/.test(e));)e=t[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),w.p=e})(),t=e=>{var r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),a=t[1]?r(t[1]):[];return t[2]&&(a.length++,a.push.apply(a,r(t[2]))),t[3]&&(a.push([]),a.push.apply(a,r(t[3]))),a},a=(e,r)=>{e=t(e),r=t(r);for(var a=0;;){if(a>=e.length)return a<r.length&&"u"!=(typeof r[a])[0];var n=e[a],o=(typeof n)[0];if(a>=r.length)return"u"==o;var i=r[a],u=(typeof i)[0];if(o!=u)return"o"==o&&"n"==u||"s"==u||"u"==o;if("o"!=o&&"u"!=o&&n!=i)return n<i;a++}},n=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var a=1,o=1;o<e.length;o++)a--,t+="u"==(typeof(u=e[o]))[0]?"-":(a>0?".":"")+(a=2,u);return t}var i=[];for(o=1;o<e.length;o++){var u=e[o];i.push(0===u?"not("+l()+")":1===u?"("+l()+" || "+l()+")":2===u?i.pop()+" "+i.pop():n(u))}return l();function l(){return i.pop().replace(/^\((.+)\)$/,"$1")}},o=(e,r)=>{if(0 in e){r=t(r);var a=e[0],n=a<0;n&&(a=-a-1);for(var i=0,u=1,l=!0;;u++,i++){var s,f,p=u<e.length?(typeof e[u])[0]:"";if(i>=r.length||"o"==(f=(typeof(s=r[i]))[0]))return!l||("u"==p?u>a&&!n:""==p!=n);if("u"==f){if(!l||"u"!=p)return!1}else if(l)if(p==f)if(u<=a){if(s!=e[u])return!1}else{if(n?s>e[u]:s<e[u])return!1;s!=e[u]&&(l=!1)}else if("s"!=p&&"n"!=p){if(n||u<=a)return!1;l=!1,u--}else{if(u<=a||f<p!=n)return!1;l=!1}else"s"!=p&&"n"!=p&&(l=!1,u--)}}var d=[],c=d.pop.bind(d);for(i=1;i<e.length;i++){var h=e[i];d.push(1==h?c()|c():2==h?c()&c():h?o(h,r):!c())}return!!c()},i=(e,r)=>e&&w.o(e,r),u=e=>(e.loaded=1,e.get()),l=e=>Object.keys(e).reduce(((r,t)=>(e[t].eager&&(r[t]=e[t]),r)),{}),s=(e,r,t)=>{var n=t?l(e[r]):e[r];return Object.keys(n).reduce(((e,r)=>!e||!n[e].loaded&&a(e,r)?r:e),0)},f=(e,r,t,a)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+n(a)+")",p=e=>{throw new Error(e)},d=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},c=(e,r,t)=>t?t():((e,r)=>p("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),h=(e=>function(r,t,a,n,o){var i=w.I(r);return i&&i.then&&!a?i.then(e.bind(e,r,w.S[r],t,!1,n,o)):e(r,w.S[r],t,a,n,o)})(((e,r,t,a,n,l)=>{if(!i(r,t))return c(e,t,l);var p=s(r,t,a);return o(n,p)||d(f(r,t,p,n)),u(r[t][p])})),g={},v={33:()=>h("default","@jupytergis/schema",!1,[2,0,1,1]),230:()=>h("default","@lumino/messaging",!1,[1,2,0,0]),241:()=>h("default","@jupyterlab/mainmenu",!1,[1,4,2,5]),256:()=>h("default","@lumino/widgets",!1,[1,2,3,1,,"alpha",0]),314:()=>h("default","@jupyterlab/completer",!1,[1,4,2,5]),323:()=>h("default","@jupytergis/base",!1,[2,0,1,1]),354:()=>h("default","@jupyterlab/services",!1,[1,7,2,5]),473:()=>h("default","@jupyterlab/coreutils",!1,[1,6,2,5]),677:()=>h("default","yjs-widgets",!1,[2,0,3,5]),678:()=>h("default","@jupyterlab/translation",!1,[1,4,2,5]),796:()=>h("default","@jupyter/docprovider",!1,[1,2,0,0]),818:()=>h("default","@jupyterlab/statedb",!1,[1,4,2,5]),909:()=>h("default","@jupyterlab/application",!1,[1,4,2,5])},b={484:[33,230,241,256,314,323,354,473,677,678,796,818,909]},y={},w.f.consumes=(e,r)=>{w.o(b,e)&&b[e].forEach((e=>{if(w.o(g,e))return r.push(g[e]);if(!y[e]){var t=r=>{g[e]=0,w.m[e]=t=>{delete w.c[e],t.exports=r()}};y[e]=!0;var a=r=>{delete g[e],w.m[e]=t=>{throw delete w.c[e],r}};try{var n=v[e]();n.then?r.push(g[e]=n.then(t).catch(a)):t(n)}catch(e){a(e)}}}))},(()=>{w.b=document.baseURI||self.location.href;var e={738:0};w.f.j=(r,t)=>{var a=w.o(e,r)?e[r]:void 0;if(0!==a)if(a)t.push(a[2]);else{var n=new Promise(((t,n)=>a=e[r]=[t,n]));t.push(a[2]=n);var o=w.p+w.u(r),i=new Error;w.l(o,(t=>{if(w.o(e,r)&&(0!==(a=e[r])&&(e[r]=void 0),a)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,a[1](i)}}),"chunk-"+r,r)}};var r=(r,t)=>{var a,n,[o,i,u]=t,l=0;if(o.some((r=>0!==e[r]))){for(a in i)w.o(i,a)&&(w.m[a]=i[a]);u&&u(w)}for(r&&r(t);l<o.length;l++)n=o[l],w.o(e,n)&&e[n]&&e[n][0](),e[n]=0},t=self.webpackChunk_jupytergis_jupytergis_lab=self.webpackChunk_jupytergis_jupytergis_lab||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),w.nc=void 0;var S=w(450);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB)["@jupytergis/jupytergis-lab"]=S})();