jupytergis-lab 0.5.0__tar.gz → 0.6.1__tar.gz

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 (41) hide show
  1. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/PKG-INFO +1 -1
  2. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/jupytergis_lab/_version.py +1 -1
  3. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/jupytergis_lab/labextension/package.json +4 -4
  4. jupytergis_lab-0.5.0/jupytergis_lab/labextension/static/234.c2d7ed33ae9ca2244b0d.js → jupytergis_lab-0.6.1/jupytergis_lab/labextension/static/234.8ab0931c15a13e5d92fd.js +1 -1
  5. jupytergis_lab-0.6.1/jupytergis_lab/labextension/static/432.89caab7d62deb1639c84.js +1 -0
  6. jupytergis_lab-0.6.1/jupytergis_lab/labextension/static/484.dbb7e9985a5654434e3c.js +1 -0
  7. jupytergis_lab-0.6.1/jupytergis_lab/labextension/static/remoteEntry.38b05357a91669494229.js +1 -0
  8. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/jupytergis_lab/labextension/static/third-party-licenses.json +2 -2
  9. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/jupytergis_lab/notebook/gis_document.py +15 -13
  10. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/lib/index.js +38 -39
  11. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/lib/notebookrenderer.js +11 -11
  12. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/package.json +3 -3
  13. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/src/index.ts +46 -46
  14. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/src/notebookrenderer.ts +17 -17
  15. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/style/base.css +54 -4
  16. jupytergis_lab-0.6.1/tsconfig.tsbuildinfo +1 -0
  17. jupytergis_lab-0.5.0/jupytergis_lab/labextension/static/432.c9ac1551a28b0189d4b3.js +0 -1
  18. jupytergis_lab-0.5.0/jupytergis_lab/labextension/static/484.1e1e78276dfe49d0de97.js +0 -1
  19. jupytergis_lab-0.5.0/jupytergis_lab/labextension/static/remoteEntry.5cdf3f10821b0262016a.js +0 -1
  20. jupytergis_lab-0.5.0/tsconfig.tsbuildinfo +0 -1
  21. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/.gitignore +0 -0
  22. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/.prettierignore +0 -0
  23. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/LICENSE +0 -0
  24. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/README.md +0 -0
  25. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/install.json +0 -0
  26. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/jupytergis_lab/__init__.py +0 -0
  27. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/jupytergis_lab/labextension/static/style.js +0 -0
  28. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/jupytergis_lab/notebook/__init__.py +0 -0
  29. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/jupytergis_lab/notebook/explore.py +0 -0
  30. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/jupytergis_lab/notebook/tests/__init__.py +0 -0
  31. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/jupytergis_lab/notebook/tests/test_api.py +0 -0
  32. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/jupytergis_lab/notebook/utils.py +0 -0
  33. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/jupytergis_lab/notebook/y_connector.py +0 -0
  34. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/lib/index.d.ts +0 -0
  35. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/lib/notebookrenderer.d.ts +0 -0
  36. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/pyproject.toml +0 -0
  37. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/scripts/bump-version.py +0 -0
  38. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/setup.py +0 -0
  39. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/style/index.css +0 -0
  40. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/style/index.js +0 -0
  41. {jupytergis_lab-0.5.0 → jupytergis_lab-0.6.1}/tsconfig.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jupytergis_lab
3
- Version: 0.5.0
3
+ Version: 0.6.1
4
4
  Dynamic: Keywords
5
5
  Summary: JupyterGIS Lab extension.
6
6
  Project-URL: Homepage, https://github.com/geojupyter/jupytergis
@@ -1,4 +1,4 @@
1
1
  # This file is auto-generated by Hatchling. As such, do not:
2
2
  # - modify
3
3
  # - track in version control e.g. be sure to add to .gitignore
4
- __version__ = VERSION = '0.5.0'
4
+ __version__ = VERSION = '0.6.1'
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupytergis/jupytergis-lab",
3
- "version": "0.5.0",
3
+ "version": "0.6.1",
4
4
  "description": "JupyterGIS Lab extension.",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -53,8 +53,8 @@
53
53
  },
54
54
  "dependencies": {
55
55
  "@jupyter/collaborative-drive": "^3.0.0",
56
- "@jupytergis/base": "^0.5.0",
57
- "@jupytergis/schema": "^0.5.0",
56
+ "@jupytergis/base": "^0.6.1",
57
+ "@jupytergis/schema": "^0.6.1",
58
58
  "@jupyterlab/application": "^4.3.0",
59
59
  "@jupyterlab/apputils": "^4.3.0",
60
60
  "@jupyterlab/completer": "^4.3.0",
@@ -124,7 +124,7 @@
124
124
  }
125
125
  },
126
126
  "_build": {
127
- "load": "static/remoteEntry.5cdf3f10821b0262016a.js",
127
+ "load": "static/remoteEntry.38b05357a91669494229.js",
128
128
  "extension": "./extension",
129
129
  "style": "./style"
130
130
  }
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_jupytergis_jupytergis_lab=self.webpackChunk_jupytergis_jupytergis_lab||[]).push([[234],{234:(e,a,r)=>{r.r(a),r.d(a,{ICollaborativeDrive:()=>o,IGlobalAwareness:()=>s});var l=r(262);const o=new l.Token("@jupyter/collaboration-extension:ICollaborativeDrive"),s=new l.Token("@jupyter/collaboration:IGlobalAwareness")}}]);
1
+ "use strict";(self.webpackChunk_jupytergis_jupytergis_lab=self.webpackChunk_jupytergis_jupytergis_lab||[]).push([[234],{234:(e,a,r)=>{r.r(a),r.d(a,{ICollaborativeDrive:()=>o,IGlobalAwareness:()=>s});var l=r(7262);const o=new l.Token("@jupyter/collaboration-extension:ICollaborativeDrive"),s=new l.Token("@jupyter/collaboration:IGlobalAwareness")}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_jupytergis_jupytergis_lab=self.webpackChunk_jupytergis_jupytergis_lab||[]).push([[432],{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}},855:(n,o,r)=>{n.exports=function(n){var o=r.nc;o&&n.setAttribute("nonce",o)}},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,i){"string"==typeof n&&(n=[[null,n,void 0]]);var a={};if(e)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]);e&&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),r&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=r):d[2]=r),t&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=t):d[4]="".concat(t)),o.push(d))}},o}},1378:(n,o,r)=>{r.d(o,{A:()=>s});var e=r(6758),t=r.n(e),i=r(935),a=r.n(i),l=r(2079),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},1432:(n,o,r)=>{var e=r(2591),t=r.n(e),i=r(1740),a=r.n(i),l=r(8128),p=r.n(l),s=r(855),d=r.n(s),c=r(3051),g=r.n(c),u=r(3656),m=r.n(u),b=r(4296),j={};j.styleTagTransform=m(),j.setAttributes=d(),j.insert=p().bind(null,"head"),j.domAPI=a(),j.insertStyleElement=g(),t()(b.A,j),b.A&&b.A.locals&&b.A.locals},1740: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 i=r.sourceMap;i&&"undefined"!=typeof btoa&&(e+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),o.styleTagTransform(e,n,o.options)}(o,n,r)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(o)}}}},2079:(n,o,r)=>{r.d(o,{A:()=>S});var e=r(6758),t=r.n(e),i=r(935),a=r.n(i),l=r(5564),p=r(7365),s=r(5633),d=r(9606),c=r(8781),g=r(8367),u=r(3301),m=r(3629),b=r(7004),j=r(5872),f=r(2532),h=r(9836),x=r(6088),v=r(5362),y=r(7746),w=r(5891),k=r(4691),I=a()(t());I.i(l.A),I.i(p.A),I.i(s.A),I.i(d.A),I.i(c.A),I.i(g.A),I.i(u.A),I.i(m.A),I.i(b.A),I.i(j.A),I.i(f.A),I.i(h.A),I.i(x.A),I.i(v.A),I.i(y.A),I.i(w.A),I.i(k.A),I.push([n.id,"/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|---------------------------------------------------------------------------- */\n\n.errors {\n color: var(--jp-warn-color0);\n font-weight: bold;\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\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n",""]);const S=I},2532:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.n(i)()(t());a.push([n.id,".jgis-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 0.375rem;\n font-size: var(--jp-ui-font-size1);\n font-weight: 500;\n padding: 0.5rem 1rem;\n transition:\n color 0.3s,\n background-color 0.3s;\n outline: none;\n color: var(--jp-ui-font-color0);\n background-color: var(--jp-layout-color0);\n border: 1px solid transparent;\n}\n\n.jgis-toggle:hover {\n background-color: color-mix(\n in srgb,\n var(--jp-ui-font-color0),\n transparent 90%\n );\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.jgis-toggle:focus-visible {\n box-shadow:\n 0 0 0 2px var(--jp-accent-color0),\n 0 0 0 4px var(--jp-accent-color0);\n}\n\n.jgis-toggle:disabled {\n pointer-events: none;\n opacity: 0.5;\n}\n\n.jgis-toggle[data-state='on'] {\n text-decoration: underline;\n text-underline-offset: 4px;\n color: var(--jp-accent-color0);\n}\n\n.jgis-toggle-default {\n background-color: transparent;\n}\n\n.jgis-toggle-outline {\n border: 1px solid var(--jp-accent-color0);\n background-color: transparent;\n transition:\n background-color 0.3s,\n color 0.3s;\n color: inherit;\n}\n\n.jgis-toggle-outline:hover {\n background-color: var(--jp-accent-color0);\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.jgis-toggle-default-size {\n height: 2.5rem;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n.jgis-toggle-small-size {\n height: 2.25rem;\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n\n.jgis-toggle-large-size {\n height: 2.25rem;\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n\n.jgis-toggle-group-context {\n display: flex;\n align-items: center;\n justify-content: start;\n gap: 0.25rem;\n}\n",""]);const l=a},2591: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 i={},a=[],l=0;l<n.length;l++){var p=n[l],s=e.base?p[0]+e.base:p[0],d=i[s]||0,c="".concat(s," ").concat(d);i[s]=d+1;var g=r(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 m=t(u,e);e.byIndex=l,o.splice(l,0,{identifier:c,updater:m,references:1})}a.push(c)}return a}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 i=e(n=n||[],t=t||{});return function(n){n=n||[];for(var a=0;a<i.length;a++){var l=r(i[a]);o[l].references--}for(var p=e(n,t),s=0;s<i.length;s++){var d=r(i[s]);0===o[d].references&&(o[d].updater(),o.splice(d,1))}i=p}}},3051:n=>{n.exports=function(n){var o=document.createElement("style");return n.setAttributes(o,n.attributes),n.insert(o,n.options),o}},3301:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.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},3629:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.n(i)()(t());a.push([n.id,".jgis-stac-browser-main {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n}\n\n.jgis-stac-browser-collection {\n flex-wrap: wrap;\n margin-top: 0.5rem;\n}\n\n.jgis-stac-browser-section-item {\n border-radius: 1rem !important;\n cursor: pointer;\n}\n\n.jgis-stac-browser-results-item {\n border-radius: 1rem !important;\n cursor: pointer;\n white-space: normal !important;\n height: auto !important;\n}\n\n.jgis-stac-browser-results-list {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n word-break: break-word;\n padding: 0.25rem;\n margin-right: 0.5rem;\n}\n\n.jgis-stac-browser-date-picker {\n display: flex;\n justify-content: space-around;\n flex-wrap: wrap;\n gap: 0.5rem;\n}\n\n.jgis-stac-browser-filters-panel {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n align-items: flex-start;\n padding: 0 0.5rem;\n}\n\n.jgis-stac-filter-trigger {\n max-width: fit-content;\n border: 1px solid var(--jp-border-color0);\n padding: 0.5rem;\n cursor: pointer;\n font-weight: bold;\n display: flex;\n align-items: center;\n gap: 0.15rem;\n}\n\n.jgis-stac-filter-trigger:disabled {\n cursor: not-allowed;\n}\n\n.jgis-stac-filter-section-container {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n\n.jgis-stac-filter-section-badges {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n}\n\n.jgis-stac-datepicker-icon {\n width: 1rem;\n height: 1rem;\n}\n\n.jgis-stac-badge {\n gap: 0.25rem;\n padding-right: 0.3rem !important;\n}\n\n.jgis-stac-badge-icon:hover {\n background-color: color-mix(\n in srgb,\n var(--jp-error-color0),\n transparent 20%\n ) !important;\n}\n",""]);const l=a},3656: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))}}},4296:(n,o,r)=>{r.d(o,{A:()=>u});var e=r(6758),t=r.n(e),i=r(935),a=r.n(i),l=r(1378),p=r(62),s=r.n(p),d=new URL(r(7248),r.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 position: relative;\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 {\n filter: drop-shadow(-1px 0px white) drop-shadow(1px 0px white)\n drop-shadow(0px -1px white) drop-shadow(0px 1px white)\n drop-shadow(0px 0px 1px black);\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 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\n.jp-gis-stop-container-wrapper {\n display: flex;\n flex-direction: row;\n gap: 2rem;\n}\n\n.jp-gis-stop-container-wrapper > * {\n flex: 1;\n}\n\n.jp-gis-stop-container-wrapper > *:only-child {\n flex: 1 1 100%;\n}\n\n.jp-gis-symbology-tabs {\n display: flex;\n border-bottom: 1px solid #ccc;\n margin: 12px 0;\n}\n\n.jp-gis-tab {\n flex: 1;\n text-align: center;\n padding: 10px 16px;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: var(--jp-ui-font-size2);\n color: var(--jp-ui-font-color1);\n background-color: var(--jp-layout-color1);\n}\n\n.jp-gis-tab:not(.active):hover {\n background-color: var(--jp-layout-color2);\n}\n\n.jp-gis-tab.active {\n background-color: var(--jp-layout-color2);\n color: var(--jp-brand-color1);\n border-bottom: 2px solid var(--jp-brand-color1);\n font-weight: 500;\n}\n\n.jp-toolbar-users-item > .lm-MenuBar-itemIcon {\n cursor: pointer !important;\n border: 2px solid transparent;\n border-radius: 50%;\n}\n\n.jp-toolbar-users-item > .lm-MenuBar-itemIcon.selected {\n border-color: var(--jp-brand-color1);\n}\n`,""]);const u=c},4691:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.n(i)()(t());a.push([n.id,".jgis-checkbox {\n height: 1rem;\n width: 1rem;\n flex-shrink: 0;\n border-radius: 0.125rem;\n background-color: var(--jp-inverse-layout-color0);\n border: 1px solid color-mix(in srgb, var(--jp-border-color0), transparent 20%);\n outline: none;\n cursor: pointer;\n padding: 0;\n}\n\n.jgis-checkbox:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.jgis-checkbox[data-state='checked'] {\n background-color: var(--jp-ui-font-color0);\n color: var(--jp-layout-color0);\n}\n\n.jgis-checkbox-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n color: currentColor;\n}\n",""]);const l=a},5362:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.n(i)()(t());a.push([n.id,".jgis-calendar-container {\n padding: 0.75rem;\n background-color: var(--jp-layout-color2);\n border: 1px solid var(--jp-accent-color0);\n border-radius: var(--jp-border-radius);\n}\n\n.jgis-calendar-months {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n justify-content: center;\n}\n\n@media (min-width: 640px) {\n .jgis-calendar-months {\n flex-direction: row;\n }\n}\n\n.jgis-calendar-month {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n}\n\n.jgis-calendar-month-caption {\n display: flex;\n justify-content: center;\n padding-top: 0.25rem;\n position: relative;\n align-items: center;\n}\n\n.jgis-calendar-caption-label {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 500;\n}\n\n.jgis-calendar-nav {\n gap: 0.25rem;\n display: flex;\n align-items: center;\n}\n\n.jgis-calendar-button-previous {\n height: 1.75rem;\n width: 1.75rem;\n background-color: transparent;\n padding: 0;\n opacity: 0.5;\n position: absolute;\n left: 1.25rem;\n top: 1.25rem;\n border: 1px solid transparent;\n}\n\n.jgis-calendar-button-previous:hover {\n opacity: 1;\n}\n\n.jgis-calendar-button-next {\n height: 1.75rem;\n width: 1.75rem;\n background-color: transparent;\n padding: 0;\n opacity: 0.5;\n position: absolute;\n right: 1.25rem;\n top: 1.25rem;\n border: 1px solid transparent;\n}\n\n.jgis-calendar-button-next:hover {\n opacity: 1;\n}\n\n.jgis-calendar-month-grid {\n width: 100%;\n border-collapse: collapse;\n gap: 0.25rem;\n}\n\n.jgis-calendar-weekdays {\n display: flex;\n}\n\n.jgis-calendar-weekday {\n color: var(--jp-ui-font-color2);\n border-radius: 0.375rem;\n width: 2.25rem;\n font-weight: 400;\n font-size: 0.8rem;\n}\n\n.jgis-calendar-week {\n display: flex;\n width: 100%;\n margin-top: 0.5rem;\n}\n\n.jgis-calendar-day {\n height: 2.25rem;\n width: 2.25rem;\n text-align: center;\n font-size: 0.875rem;\n line-height: 1.25rem;\n padding: 0;\n position: relative;\n border-radius: 0.25rem;\n}\n\n.jgis-calendar-day-button {\n height: 2.25rem;\n width: 2.25rem;\n padding: 0;\n font-weight: 400;\n opacity: 1;\n border: none;\n background-color: transparent;\n cursor: pointer;\n color: inherit;\n}\n\n.jgis-calendar-day-button.selected {\n border-radius: 0.375rem 0.375rem 0.375rem 0.375rem;\n}\n\n.jgis-calendar-day-button.range-end {\n border-radius: 0 0.375rem 0.375rem 0;\n}\n\n.jgis-calendar-day-button.range-middle {\n border-radius: 0;\n}\n\n.jgis-calendar-day-selected {\n background-color: var(--jp-accent-color1);\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.jgis-calendar-day-selected:hover {\n background-color: var(--jp-layout-color1);\n color: var(--jp-ui-font-color0);\n}\n\n.jgis-calendar-day-selected:focus {\n background-color: var(--jp-layout-color1);\n color: var(--jp-ui-font-color0);\n}\n\n.jgis-calendar-day-today {\n background-color: var(--jp-accent-color0);\n color: var(--jp-ui-font-color0);\n}\n\n.jgis-calendar-day-outside {\n color: var(--jp-ui-font-color2);\n opacity: 0.5;\n}\n\n.jgis-calendar-day-outside.selected {\n background-color: var(--jp-accent-color0);\n color: var(--jp-ui-font-color2);\n opacity: 0.3;\n}\n\n.jgis-calendar-day-disabled {\n color: var(--jp-ui-font-color2);\n opacity: 0.5;\n}\n\n.jgis-calendar-day-range-middle {\n background-color: var(--jp-accent-color0);\n color: var(--jp-ui-font-color0);\n}\n\n.jgis-calendar-hidden {\n visibility: hidden;\n}\n\n.jgis-select-trigger-focus {\n display: flex;\n background-color: var(--jp-accent-color0);\n color: var(--jp-ui-inverse-font-color0);\n width: fit-content;\n gap: 0.25rem;\n border: none;\n align-items: center;\n justify-content: center;\n}\n\n.jgis-time-period-select-trigger {\n background-color: var(--jp-accent-color0);\n color: var(--jp-ui-font-color0);\n width: 65px;\n}\n\n.jgis-time-picker-input {\n width: 48px;\n text-align: center;\n font-family: monospace;\n font-size: 1rem;\n line-height: 1.5rem;\n font-feature-settings: 'tnum';\n caret-color: transparent;\n}\n\n.jgis-time-picker-input::-webkit-inner-spin-button {\n appearance: none;\n}\n\n.jgis-time-picker-input:focus {\n background-color: var(--jp-accent-color0);\n color: var(--jp-ui-font-color0);\n}\n\n.jgis-time-picker-container {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n}\n\n.jgis-time-picker-label {\n cursor: pointer;\n}\n\n.jgis-time-picker-clock-icon {\n margin-right: 0.5rem;\n height: 1rem;\n width: 1rem;\n}\n\n.jgis-date-time-picker-button {\n width: 100%;\n justify-content: flex-start;\n text-align: left;\n font-weight: 400;\n}\n\n.jgis-date-time-picker-button-muted {\n color: var(--jp-ui-font-color2);\n}\n\n.jgis-date-time-picker-calendar-icon {\n margin-right: 0.5rem;\n height: 1rem;\n width: 1rem;\n}\n\n.jgis-date-time-picker-popover-content {\n width: auto;\n padding: 0;\n}\n\n.jgis-date-time-picker-time-section {\n border-top: 1px solid var(--jp-border-color0);\n padding: 0.75rem;\n}\n\n.jgis-time-period-selector-container {\n display: grid;\n gap: 0.25rem;\n text-align: center;\n}\n\n.jgis-time-period-select-container {\n display: flex;\n height: 2.5rem;\n align-items: center;\n}\n",""]);const l=a},5564:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.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},5633:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.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-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},5872:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.n(i)()(t());a.push([n.id,".jgis-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n border-radius: 0.375rem;\n font-size: 0.875rem;\n font-weight: 600;\n outline: none;\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color0);\n border: 0.0375rem solid\n color-mix(in srgb, var(--jp-accent-color0), transparent 20%);\n transition: background-color 0.2s ease;\n height: 2.5rem;\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n max-width: 20rem;\n gap: 0.25rem;\n}\n\n.jgis-button:hover {\n cursor: pointer;\n background-color: color-mix(\n in srgb,\n var(--jp-layout-color2),\n transparent 20%\n );\n transition: background-color 0.2s ease;\n}\n\n.jgis-button:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px\n color-mix(in srgb, var(--jp-ui-font-color0), transparent 50%);\n}\n\n.jgis-button:disabled {\n pointer-events: none;\n opacity: 0.5;\n}\n\n.jgis-button:disabled:focus-visible {\n outline: none;\n box-shadow: none;\n}\n\n.jgis-button[data-variant='destructive'] {\n background-color: var(--jp-error-color0);\n color: var(--jp-ui-font-color0);\n transition: background-color 0.2s ease;\n}\n\n.jgis-button[data-variant='destructive']:hover {\n background-color: color-mix(in srgb, var(--jp-error-color0), transparent 10%);\n}\n\n.jgis-button[data-variant='outline'] {\n border: 1px solid var(--jp-border-color0);\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color0);\n transition:\n background-color 0.2s ease,\n color 0.2s ease;\n}\n\n.jgis-button[data-variant='outline']:hover {\n cursor: pointer;\n background-color: color-mix(\n in srgb,\n var(--jp-ui-font-color0),\n transparent 95%\n );\n color: var(--jp-ui-font-color2);\n}\n\n.jgis-button[data-variant='secondary'] {\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color2);\n transition: background-color 0.2s ease;\n}\n\n.jgis-button[data-variant='secondary']:hover {\n background-color: color-mix(\n in srgb,\n var(--jp-layout-color2),\n transparent 10%\n );\n}\n\n.jgis-button[data-variant='ghost'] {\n background-color: transparent;\n border: 1px solid transparent;\n color: var(--jp-ui-font-color0);\n display: flex;\n align-items: center;\n}\n\n.jgis-button[data-variant='ghost']:hover {\n background-color: color-mix(\n in srgb,\n var(--jp-ui-font-color0),\n transparent 90%\n );\n}\n\n.jgis-button[data-variant='link'] {\n color: var(--jp-ui-font-color0);\n background-color: transparent;\n text-decoration: none;\n transition: text-decoration 0.2s ease;\n border: none;\n padding: 0;\n height: max-content;\n width: max-content;\n}\n\n.jgis-button[data-variant='link']:hover {\n color: var(--jp-layout-color0);\n text-decoration-color: var(--jp-ui-font-color0);\n}\n\n.jgis-button[data-variant='icon'] {\n background-color: var(--jp-ui-font-color0);\n border: none;\n color: var(--jp-layout-color0);\n display: flex;\n align-items: center;\n justify-content: center;\n height: 2rem;\n width: 2rem;\n padding: 0;\n border-radius: 9999px;\n}\n\n.jgis-button[data-variant='icon']:hover {\n background-color: color-mix(\n in srgb,\n var(--jp-accent-color0),\n transparent 20%\n );\n}\n\n/* sizing */\n.jgis-button[data-size='sm'] {\n height: 2.25rem;\n border-radius: 0.375rem;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n.jgis-button[data-size='lg'] {\n height: 2.75rem;\n border-radius: 0.375rem;\n padding-left: 2rem;\n padding-right: 2rem;\n}\n\n.jgis-button[data-size='icon'] {\n height: 2.5rem;\n width: 2.5rem;\n}\n\n.jgis-button[data-size='icon-sm'] {\n height: 1rem;\n width: 1rem;\n}\n",""]);const l=a},5891:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.n(i)()(t());a.push([n.id,".jgis-badge {\n display: inline-flex;\n align-items: center;\n border-radius: 9999px;\n border: 1px solid transparent;\n padding: 2px 0.5rem;\n font-size: 0.75rem;\n font-weight: 600;\n outline: none;\n color: var(--jp-ui-inverse-font-color1);\n background-color: var(--jp-brand-color0);\n width: max-content;\n word-break: break-word;\n max-width: 200px;\n text-align: center;\n}\n\n.jgis-badge:hover {\n background-color: color-mix(in srgb, var(--jp-brand-color0) 80%, transparent);\n}\n\n.jgis-badge[data-variant='secondary'] {\n border: 1px solid transparent;\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n transition: background-color 0.3s ease;\n}\n\n.jgis-badge[data-variant='secondary']:focus {\n border-width: 2px;\n border-color: var(--jp-border-color0);\n box-shadow: 0 0 0 3px var(--jp-border-color0);\n}\n\n.jgis-badge[data-variant='destructive'] {\n border: 1px solid transparent;\n background-color: color-mix(in srgb, var(--jp-error-color1) 90%, transparent);\n color: var(--jp-ui-inverse-font-color1);\n}\n\n.jgis-badge[data-variant='destructive']:hover {\n background-color: color-mix(in srgb, var(--jp-error-color1) 80%, transparent);\n}\n\n.jgis-badge[data-variant='destructive']:focus {\n background-color: var(--jp-error-color1);\n}\n\n.jgis-badge[data-variant='outline'] {\n color: var(--jp-ui-font-color1);\n background-color: transparent;\n border: 1px solid color-mix(in srgb, var(--jp-border-color1) 80%, transparent);\n}\n\n.jgis-badge[data-variant='outline']:hover {\n background-color: color-mix(\n in srgb,\n var(--jp-ui-font-color1) 10%,\n transparent\n );\n}\n",""]);const l=a},6088:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.n(i)()(t());a.push([n.id,".jgis-pagination {\n margin-left: auto;\n margin-right: auto;\n display: flex;\n width: 100%;\n justify-content: center;\n}\n\n.jgis-pagination-content {\n margin-left: auto;\n margin-right: auto;\n display: flex;\n width: 100%;\n justify-content: space-evenly;\n list-style-type: none;\n gap: 0.25rem;\n padding-left: unset;\n align-items: center;\n}\n\n.jgis-pagination-link {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n border-radius: 0.375rem;\n font-size: 0.875rem;\n font-weight: 500;\n transition-property: color, background-color, border-color;\n transition-duration: 0.2s;\n transition-timing-function: ease;\n outline: none;\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color0);\n border: 0.0375rem solid\n color-mix(in srgb, var(--jp-border-color0), transparent 80%);\n transition: background-color 0.2s ease;\n padding: 0.25rem;\n}\n\n.jgis-pagination-link:hover {\n background-color: color-mix(\n in srgb,\n var(--jp-layout-color0),\n transparent 90%\n );\n}\n\n.jgis-pagination-link:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px\n color-mix(in srgb, var(--jp-layout-color2), transparent 50%);\n}\n\n.jgis-pagination-link:disabled {\n pointer-events: none;\n opacity: 0.5;\n}\n\n.jgis-pagination-link:disabled:focus-visible {\n outline: none;\n box-shadow: none;\n}\n\n.jgis-pagination-link[data-variant='destructive'] {\n background-color: var(--jp-error-color0);\n color: var(--jp-ui-font-color0);\n transition: background-color 0.2s ease;\n}\n\n.jgis-pagination-link[data-variant='destructive']:hover {\n background-color: color-mix(in srgb, var(--jp-error-color0), transparent 90%);\n}\n\n.jgis-pagination-link[data-variant='outline'] {\n border: 1px solid var(--jp-accent-color0);\n background-color: var(--jp-layout-color2);\n transition:\n background-color 0.2s ease,\n color 0.2s ease;\n}\n\n.jgis-pagination-link[data-variant='ghost']:hover,\n.jgis-pagination-link[data-variant='outline']:hover {\n background-color: var(--jp-accent-color0);\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.jgis-pagination-link[data-variant='secondary'] {\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color2);\n transition: background-color 0.2s ease;\n}\n\n.jgis-pagination-link[data-variant='secondary']:hover {\n background-color: color-mix(\n in srgb,\n var(--jp-layout-color0),\n transparent 80%\n );\n}\n\n.jgis-pagination-link[data-variant='ghost'] {\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color0);\n}\n\n.jgis-pagination-link[data-variant='link'] {\n color: var(--jp-ui-font-color0);\n text-decoration: underline;\n text-underline-offset: 0.25rem;\n transition: text-decoration 0.2s ease;\n border: none;\n padding: 0;\n}\n\n.jgis-pagination-link[data-variant='link']:hover {\n color: color-mix(in srgb, var(--jp-ui-font-color0), transparent 80%);\n text-decoration-color: var(--jp-ui-font-color0);\n}\n\n.jgis-pagination-link[data-size='sm'] {\n height: 2.25rem;\n border-radius: 0.375rem;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n.jgis-pagination-link[data-size='lg'] {\n height: 2.75rem;\n border-radius: 0.375rem;\n padding-left: 2rem;\n padding-right: 2rem;\n}\n\n.jgis-pagination-link[data-size='icon'] {\n height: 1.5rem;\n width: 1.5rem;\n}\n\n.jgis-pagination-previous {\n gap: 0.25rem;\n padding-left: 0.625rem;\n display: flex;\n cursor: pointer;\n margin-right: 0.5rem;\n color: var(--jp-ui-font-color0);\n background-color: var(--jp-layout-color1);\n}\n\n.jgis-pagination-next {\n gap: 0.25rem;\n padding-right: 0.625rem;\n display: flex;\n cursor: pointer;\n margin-left: 0.5rem;\n color: var(--jp-ui-font-color0);\n background-color: var(--jp-layout-color1);\n}\n\n.jgis-pagination-ellipsis {\n display: flex;\n height: 2.25rem;\n width: 2.25rem;\n align-items: center;\n justify-content: center;\n}\n",""]);const l=a},6758:n=>{n.exports=function(n){return n[1]}},7004:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.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},7248: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"},7365:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.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-category.jGIS-layer-browser-category[data-state='active']::after {\n width: 100%;\n background-color: var(--jp-inverse-layout-color2);\n}\n\n.jGIS-layer-browser-category.jGIS-layer-browser-category[data-state='active'] {\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},7746:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.n(i)()(t());a.push([n.id,"@keyframes animate-in {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@keyframes animate-out {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.95);\n }\n}\n\n.jgis-dropdown-menu-sub-trigger {\n display: flex;\n cursor: default;\n user-select: none;\n align-items: center;\n border-radius: 0.25rem;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 0.875rem;\n outline: none;\n}\n\n.jgis-dropdown-menu-sub-trigger:focus {\n background-color: color-mix(\n in srgb,\n var(--jp-ui-font-color0),\n transparent 90%\n );\n}\n\n.jgis-dropdown-menu-sub-trigger[data-state='open'] {\n background-color: color-mix(\n in srgb,\n var(--jp-ui-font-color0),\n transparent 90%\n );\n}\n\n.jgis-dropdown-menu-sub-content {\n display: flex;\n flex-direction: column;\n cursor: default;\n user-select: none;\n align-items: flex-start;\n justify-self: center;\n border-radius: 0.25rem;\n padding-right: 0.5rem;\n font-size: 0.875rem;\n outline: none;\n border: 1px solid var(--jp-border-color0);\n}\n\n.jgis-dropdown-menu-sub-content:focus {\n background-color: color-mix(\n in srgb,\n var(--jp-layout-color0),\n transparent 90%\n );\n}\n\n.jgis-dropdown-menu-sub-content[data-state='open'] {\n background-color: var(--jp-layout-color2);\n}\n\n.jgis-dropdown-menu-content {\n z-index: 50;\n min-width: 8rem;\n overflow: hidden;\n border-radius: 0.375rem;\n border: 1px solid var(--jp-border-color0);\n background-color: var(--jp-layout-color2);\n padding: 0.25rem;\n color: var(--jp-ui-font-color0);\n box-shadow: 0 4px 6px\n color-mix(in srgb, var(--jp-layout-color0), transparent 50%);\n}\n\n.jgis-dropdown-menu-content[data-state='open'] {\n animation: animate-in 0.3s ease-in;\n}\n\n.jgis-dropdown-menu-content[data-state='closed'] {\n animation: animate-out 0.3s ease-out;\n}\n\n.jgis-dropdown-menu-item {\n position: relative;\n display: flex;\n cursor: default;\n user-select: none;\n align-items: center;\n border-radius: 0.25rem;\n padding-right: 0.5rem;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 0.875rem;\n outline: none;\n transition-property: background-color, color;\n transition-duration: 0.3s;\n}\n\n.jgis-dropdown-menu-item:focus {\n background-color: color-mix(\n in srgb,\n var(--jp-ui-font-color0),\n transparent 95%\n );\n}\n\n.jgis-dropdown-menu-item[data-disabled='true'] {\n pointer-events: none;\n opacity: 0.5;\n}\n\n.jgis-dropdown-menu-checkbox-item {\n position: relative;\n display: flex;\n cursor: default;\n user-select: none;\n align-items: center;\n border-radius: 0.25rem;\n padding-left: 1.75rem;\n padding-right: 0.5rem;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 0.875rem;\n outline: none;\n gap: 1rem;\n transition:\n background-color 0.3s,\n color 0.3s;\n}\n\n.jgis-dropdown-menu-checkbox-item:focus {\n background-color: var(--jp-layout-color2);\n color: var(--jp-accent-color0);\n}\n\n.jgis-dropdown-menu-checkbox-item[data-disabled='true'] {\n pointer-events: none;\n opacity: 0.5;\n}\n\n.jgis-dropdown-menu-checkbox-item-span {\n position: absolute;\n left: 0.5rem;\n display: flex;\n height: 0.875rem;\n width: 0.875rem;\n align-items: center;\n justify-content: center;\n}\n\n.jgis-dropdown-menu-radio-item {\n position: relative;\n display: flex;\n cursor: default;\n user-select: none;\n align-items: center;\n border-radius: 0.25rem;\n padding-left: 1rem;\n padding-right: 0.5rem;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 0.875rem;\n outline: none;\n transition:\n background-color 0.3s,\n color 0.3s;\n}\n\n.jgis-dropdown-menu-radio-item:focus {\n background-color: var(--jp-layout-color2);\n color: var(--jp-accent-color0);\n}\n\n.jgis-dropdown-menu-radio-item[data-disabled='true'] {\n pointer-events: none;\n opacity: 0.5;\n}\n\n.jgis-dropdown-menu-radio-item-span {\n position: absolute;\n left: 0.5rem;\n display: flex;\n height: 0.875rem;\n width: 0.875rem;\n align-items: center;\n justify-content: center;\n}\n\n.jgis-dropdown-menu-label {\n color: var(--jp-ui-font-color0);\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n margin-bottom: 0.5rem;\n font-size: 0.875rem;\n font-weight: 600;\n text-decoration: underline;\n text-underline-offset: 0.5rem;\n}\n\n.jgis-dropdown-menu-separator {\n width: 100%;\n height: 1px;\n background-color: color-mix(\n in srgb,\n var(--jp-ui-font-color0),\n transparent 90%\n );\n}\n\n.jgis-dropdown-menu-shortcut {\n margin-left: auto;\n font-size: 0.75rem;\n letter-spacing: 0.15em;\n opacity: 0.6;\n}\n\n.jgis-dropdown-menu-icon {\n margin-left: auto;\n height: 1rem;\n width: 1rem;\n}\n",""]);const l=a},8128: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)}},8367:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.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},8781:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.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-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},9606:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.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},9836:(n,o,r)=>{r.d(o,{A:()=>l});var e=r(6758),t=r.n(e),i=r(935),a=r.n(i)()(t());a.push([n.id,".jgis-tabs-list {\n display: inline-flex;\n height: 2.5rem;\n align-items: center;\n justify-content: space-evenly;\n border-radius: 0.375rem;\n background-color: var(--jp-layout-color2);\n padding: 0.25rem;\n color: var(--jp-ui-font-color0);\n gap: 1rem;\n width: 100%;\n}\n\n.jgis-tabs-trigger {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n border-radius: 0.25rem;\n padding: 0.25rem 0.5rem;\n font-size: var(--jp-ui-font-size2);\n font-weight: 500;\n outline: none;\n transition: all 0.3s ease;\n border: 1px solid transparent;\n background-color: transparent;\n}\n\n.jgis-tabs-trigger:focus-visible {\n box-shadow:\n 0 0 0 2px var(--jp-accent-color0),\n 0 0 0 4px var(--jp-accent-color0);\n}\n\n.jgis-tabs-trigger:disabled {\n pointer-events: none;\n opacity: 0.5;\n}\n\n.jgis-tabs-trigger[data-state='active'] {\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color0);\n box-shadow: 0 1px 2px\n color-mix(in srgb, var(--jp-layout-color0), transparent 90%);\n}\n\n.jgis-tabs-content {\n outline: none;\n width: 100%;\n}\n\n.jgis-tabs-content:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 2px var(--jp-accent-color0),\n 0 0 0 4px var(--jp-accent-color0);\n}\n",""]);const l=a}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_jupytergis_jupytergis_lab=self.webpackChunk_jupytergis_jupytergis_lab||[]).push([[484],{3484:(e,t,o)=>{o.r(t),o.d(t,{default:()=>k});var n=o(3662),a=o(1664),r=o(3904),s=o(6771),d=o(5828),i=o(4947),l=o(4503),m=o(5256),c=o(6903),u=o(8805),g=o(5533),p=o(8708),y=o(6341),I=o(6230),h=o(9173);class M extends h.JupyterYModel{}class j extends m.Panel{constructor(e){super(),this._buildWidget=e=>{const{commands:t,model:o,externalCommands:a,tracker:r}=e,s=new n.JupyterGISPanel({model:o,commandRegistry:t});let d;o.filePath&&(d=new n.ToolbarWidget({commands:t,model:o,externalCommands:(null==a?void 0:a.getCommands())||[]})),this._jgisWidget=new n.JupyterGISOutputWidget({model:o,content:s,toolbar:d}),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,c.ICollaborativeDrive],activate:(e,t,o,n,r)=>{n?n.registerWidget("@jupytergis:widget",class extends M{async initialize(t){const{path:o,format:n,contentType:s}=t,d=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 i="";const l=e.shell.currentWidget;(l instanceof y.NotebookPanel||l instanceof g.ConsolePanel)&&(i=l.sessionContext.path);let m="";if(o){m=p.PathExt.join(p.PathExt.dirname(i),o);try{await e.serviceManager.contents.get(m)}catch(t){await e.serviceManager.contents.save(m,{content:btoa("{}"),format:"base64"})}}else m=p.PathExt.join(p.PathExt.dirname(i),"unsaved_project");const c=r.sharedModelFactory.createNew({path:m,format:d,contentType:s,collaborative:!0});this.jupyterGISModel=new a.JupyterGISModel({sharedModel:c}),this.jupyterGISModel.contentsManager=e.serviceManager.contents,this.jupyterGISModel.filePath=m,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,I.MessageLoop.sendMessage(r,m.Widget.Msg.BeforeAttach),a.appendChild(r.node),I.MessageLoop.sendMessage(r,m.Widget.Msg.AfterAttach)}dispose(){this._jgisWidget.dispose()}}):console.error("Missing IJupyterYWidgetManager token!")}},v="jupytergis",k=[{id:"jupytergis:lab:main-menu",autoStart:!0,requires:[a.IJupyterGISDocTracker,a.IJGISFormSchemaRegistryToken,a.IJGISLayerBrowserRegistryToken,i.IStateDB],optional:[d.IMainMenu,l.ITranslator,s.ICompletionProviderManager],activate:(e,t,o,r,s,d,i,c)=>{console.log("jupytergis:lab:main-menu is activated!"),i=null!=i?i:l.nullTranslator;(0,n.createDefaultLayerRegistry)(r),n.GlobalStateDbManager.getInstance().initialize(s),(0,n.addCommands)(e,t,i,o,r,s,c),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 m.Menu({commands:e.commands});u.title.label=i.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 m.Menu({commands:e.commands});g.title.label=i.load("jupyterlab").__("Processing"),g.id="jp-gis-contextmenu-processing";for(const e of a.ProcessingMerge)g.addItem({command:e.name});e.contextMenu.addItem({type:"submenu",selector:".jp-gis-layerItem",rank:2,submenu:g});const p=new m.Menu({commands:e.commands});p.title.label=i.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,s;if(!(null===(o=t.currentWidget)||void 0===o?void 0:o.model))return;const d=null===(a=t.currentWidget)||void 0===a?void 0:a.model,i=null!==(s=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!==s?s:null;if(!i)return;i.clearItems();const l=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}(d.getLayerTree());i.addItem({command:n.CommandIDs.moveLayersToGroup,args:{label:""}}),l.forEach(e=>{i.addItem({command:n.CommandIDs.moveLayersToGroup,args:{label:e}})}),i.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 y=new m.Menu({commands:e.commands});y.title.label=i.load("jupyterlab").__("Add Layer"),y.id="jp-gis-contextmenu-addLayer",y.addItem({type:"submenu",submenu:(0,n.rasterSubMenu)(e.commands)}),y.addItem({type:"submenu",submenu:(0,n.vectorSubMenu)(e.commands)}),e.contextMenu.addItem({type:"submenu",selector:".jp-gis-layerPanel",rank:3,submenu:y}),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,i.IStateDB,a.IAnnotationToken],activate:(e,t,o,a,r,s)=>{const d=new n.ControlPanelModel({tracker:o}),i=new n.LeftPanelWidget({model:d,tracker:o,state:r,commands:e.commands});i.id="jupytergis::leftControlPanel",i.title.caption="JupyterGIS Control Panel",i.title.icon=n.logoMiniIcon;const l=new n.RightPanelWidget({model:d,tracker:o,formSchemaRegistry:a,annotationModel:s});l.id="jupytergis::rightControlPanel",l.title.caption="JupyterGIS Control Panel",l.title.icon=n.logoMiniIcon,t&&(t.add(i,`${v}-left`),t.add(l,`${v}-right`)),e.shell.add(i,"left",{rank:2e3}),e.shell.add(l,"right",{rank:2e3})}},b]}}]);
@@ -0,0 +1 @@
1
+ var _JUPYTERLAB;(()=>{"use strict";var e,r,t,a,n,o,i,u,l,s,f,d,p,c,h,v,b,g,y,m,j,w,S,k={1450:(e,r,t)=>{var a={"./index":()=>t.e(484).then(()=>()=>t(3484)),"./extension":()=>t.e(484).then(()=>()=>t(3484)),"./style":()=>t.e(432).then(()=>()=>t(1432))},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})}},E={};function P(e){var r=E[e];if(void 0!==r)return r.exports;var t=E[e]={id:e,exports:{}};return k[e](t,t.exports,P),t.exports}P.m=k,P.c=E,P.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return P.d(r,{a:r}),r},P.d=(e,r)=>{for(var t in r)P.o(r,t)&&!P.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},P.f={},P.e=e=>Promise.all(Object.keys(P.f).reduce((r,t)=>(P.f[t](e,r),r),[])),P.u=e=>e+"."+{234:"8ab0931c15a13e5d92fd",432:"89caab7d62deb1639c84",484:"dbb7e9985a5654434e3c"}[e]+".js?v="+{234:"8ab0931c15a13e5d92fd",432:"89caab7d62deb1639c84",484:"dbb7e9985a5654434e3c"}[e],P.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),P.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="@jupytergis/jupytergis-lab:",P.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,P.nc&&i.setAttribute("nonce",P.nc),i.setAttribute("data-webpack",r+n),i.src=t),e[t]=[a];var d=(r,a)=>{i.onerror=i.onload=null,clearTimeout(p);var n=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach(e=>e(a)),r)return r(a)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),u&&document.head.appendChild(i)}},P.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{P.S={};var e={},r={};P.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];P.o(P.S,t)||(P.S[t]={});var o=P.S[t],i="@jupytergis/jupytergis-lab",u=(e,r,t,a)=>{var n=o[e]=o[e]||{},u=n[r];(!u||!u.loaded&&(!a!=!u.eager?a:i>u.from))&&(n[r]={get:t,from:i,eager:!!a})},l=[];return"default"===t&&(u("@jupyter/collaborative-drive","3.1.2",()=>P.e(234).then(()=>()=>P(234))),u("@jupytergis/jupytergis-lab","0.6.1",()=>P.e(484).then(()=>()=>P(3484)))),e[t]=l.length?Promise.all(l).then(()=>e[t]=1):1}}})(),(()=>{var e;P.g.importScripts&&(e=P.g.location+"");var r=P.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(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),P.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,d=u<e.length?(typeof e[u])[0]:"";if(i>=r.length||"o"==(f=(typeof(s=r[i]))[0]))return!l||("u"==d?u>a&&!n:""==d!=n);if("u"==f){if(!l||"u"!=d)return!1}else if(l)if(d==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"!=d&&"n"!=d){if(n||u<=a)return!1;l=!1,u--}else{if(u<=a||f<d!=n)return!1;l=!1}else"s"!=d&&"n"!=d&&(l=!1,u--)}}var p=[],c=p.pop.bind(p);for(i=1;i<e.length;i++){var h=e[i];p.push(1==h?c()|c():2==h?c()&c():h?o(h,r):!c())}return!!c()},i=(e,r)=>e&&P.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,n)=>{var i=n?l(e[r]):e[r];return(r=Object.keys(i).reduce((e,r)=>!o(t,r)||e&&!a(e,r)?e:r,0))&&i[r]},f=(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)},d=(e,r,t,a)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+n(a)+")",p=(e,r,t,a,o)=>{var i=e[t];return"No satisfying version ("+n(a)+")"+(o?" for eager consumption":"")+" of shared module "+t+" found in shared scope "+r+".\nAvailable versions: "+Object.keys(i).map(e=>e+" from "+i[e].from).join(", ")},c=e=>{throw new Error(e)},h=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},b=(e,r,t)=>t?t():((e,r)=>c("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),g=(v=e=>function(r,t,a,n,o){var i=P.I(r);return i&&i.then&&!a?i.then(e.bind(e,r,P.S[r],t,!1,n,o)):e(r,P.S[r],t,a,n,o)})((e,r,t,a,n,o)=>{if(!i(r,t))return b(e,t,o);var l=s(r,t,n,a);return l?u(l):o?o():void c(p(r,e,t,n,a))}),y=v((e,r,t,a,n,l)=>{if(!i(r,t))return b(e,t,l);var s=f(r,t,a);return o(n,s)||h(d(r,t,s,n)),u(r[t][s])}),m={},j={1664:()=>y("default","@jupytergis/schema",!1,[2,0,6,1]),3662:()=>y("default","@jupytergis/base",!1,[2,0,6,1]),3904:()=>y("default","@jupyterlab/application",!1,[1,4,4,4]),4503:()=>y("default","@jupyterlab/translation",!1,[1,4,4,4]),4947:()=>y("default","@jupyterlab/statedb",!1,[1,4,4,4]),5256:()=>y("default","@lumino/widgets",!1,[1,2,3,1,,"alpha",0]),5533:()=>y("default","@jupyterlab/console",!1,[1,4,4,4]),5828:()=>y("default","@jupyterlab/mainmenu",!1,[1,4,4,4]),6230:()=>y("default","@lumino/messaging",!1,[1,2,0,0]),6341:()=>y("default","@jupyterlab/notebook",!1,[1,4,4,4]),6771:()=>y("default","@jupyterlab/completer",!1,[1,4,4,4]),6903:()=>g("default","@jupyter/collaborative-drive",!1,[1,3,0,0],()=>P.e(234).then(()=>()=>P(234))),8708:()=>y("default","@jupyterlab/coreutils",!1,[1,6,4,4]),8805:()=>y("default","@jupyterlab/apputils",!1,[1,4,5,4]),9173:()=>y("default","yjs-widgets",!1,[2,0,4]),7262:()=>y("default","@lumino/coreutils",!1,[1,2,0,0])},w={234:[7262],484:[1664,3662,3904,4503,4947,5256,5533,5828,6230,6341,6771,6903,8708,8805,9173]},S={},P.f.consumes=(e,r)=>{P.o(w,e)&&w[e].forEach(e=>{if(P.o(m,e))return r.push(m[e]);if(!S[e]){var t=r=>{m[e]=0,P.m[e]=t=>{delete P.c[e],t.exports=r()}};S[e]=!0;var a=r=>{delete m[e],P.m[e]=t=>{throw delete P.c[e],r}};try{var n=j[e]();n.then?r.push(m[e]=n.then(t).catch(a)):t(n)}catch(e){a(e)}}})},(()=>{P.b=document.baseURI||self.location.href;var e={738:0};P.f.j=(r,t)=>{var a=P.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=P.p+P.u(r),i=new Error;P.l(o,t=>{if(P.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)P.o(i,a)&&(P.m[a]=i[a]);u&&u(P)}for(r&&r(t);l<o.length;l++)n=o[l],P.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))})(),P.nc=void 0;var _=P(1450);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB)["@jupytergis/jupytergis-lab"]=_})();
@@ -8,7 +8,7 @@
8
8
  },
9
9
  {
10
10
  "name": "@jupytergis/base",
11
- "versionInfo": "0.5.0",
11
+ "versionInfo": "0.6.1",
12
12
  "licenseId": "BSD-3-Clause",
13
13
  "extractedText": ""
14
14
  },
@@ -20,7 +20,7 @@
20
20
  },
21
21
  {
22
22
  "name": "ol",
23
- "versionInfo": "10.5.0",
23
+ "versionInfo": "10.6.1",
24
24
  "licenseId": "BSD-2-Clause",
25
25
  "extractedText": "BSD 2-Clause License\n\nCopyright 2005-present, OpenLayers Contributors\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
26
26
  },
@@ -5,6 +5,7 @@ import logging
5
5
  from pathlib import Path
6
6
  from typing import Any, Dict, List, Literal, Optional, Union
7
7
  from uuid import uuid4
8
+ import requests
8
9
 
9
10
  from pycrdt import Array, Map
10
11
  from pydantic import BaseModel
@@ -185,7 +186,6 @@ class GISDocument(CommWidget):
185
186
  attribution: str = "",
186
187
  min_zoom: int = 0,
187
188
  max_zoom: int = 24,
188
- type: Literal["circle", "fill", "line"] = "line",
189
189
  color_expr=None,
190
190
  opacity: float = 1,
191
191
  logical_op: str | None = None,
@@ -225,7 +225,6 @@ class GISDocument(CommWidget):
225
225
  "visible": True,
226
226
  "parameters": {
227
227
  "source": source_id,
228
- "type": type,
229
228
  "opacity": opacity,
230
229
  "color": color_expr,
231
230
  "opacity": opacity,
@@ -245,7 +244,6 @@ class GISDocument(CommWidget):
245
244
  path: str | Path | None = None,
246
245
  data: Dict | None = None,
247
246
  name: str = "GeoJSON Layer",
248
- type: "circle" | "fill" | "line" = "line",
249
247
  opacity: float = 1,
250
248
  logical_op: str | None = None,
251
249
  feature: str | None = None,
@@ -257,9 +255,8 @@ class GISDocument(CommWidget):
257
255
  Add a GeoJSON Layer to the document.
258
256
 
259
257
  :param name: The name that will be used for the object in the document.
260
- :param path: The path to the JSON file to embed into the jGIS file.
258
+ :param path: The path to the JSON file or URL to embed into the jGIS file.
261
259
  :param data: The raw GeoJSON data to embed into the jGIS file.
262
- :param type: The type of the vector layer to create.
263
260
  :param opacity: The opacity, between 0 and 1.
264
261
  :param color_expr: The style expression used to style the layer, defaults to None
265
262
  """
@@ -272,16 +269,22 @@ class GISDocument(CommWidget):
272
269
  if path is not None and data is not None:
273
270
  raise ValueError("Cannot set GeoJSON layer data and path at the same time")
274
271
 
272
+ parameters = {}
273
+
275
274
  if path is not None:
276
- # We cannot put the path to the file in the model
277
- # We don't know where the kernel runs/live
278
- # The front-end would have no way of finding the file reliably
279
- # TODO Support urls to JSON files, in that case, don't embed the data
280
- with open(path, "r") as fobj:
281
- parameters = {"data": json.loads(fobj.read())}
275
+ if path.startswith("http://") or path.startswith("https://"):
276
+ response = requests.get(path)
277
+ response.raise_for_status()
278
+ parameters["path"] = path
279
+ else:
280
+ # We cannot put the path to the file in the model
281
+ # We don't know where the kernel runs/live
282
+ # The front-end would have no way of finding the file reliably
283
+ with open(path, "r") as fobj:
284
+ parameters["data"] = json.load(fobj)
282
285
 
283
286
  if data is not None:
284
- parameters = {"data": data}
287
+ parameters["data"] = data
285
288
 
286
289
  source = {
287
290
  "type": SourceType.GeoJSONSource,
@@ -297,7 +300,6 @@ class GISDocument(CommWidget):
297
300
  "visible": True,
298
301
  "parameters": {
299
302
  "source": source_id,
300
- "type": type,
301
303
  "color": color_expr,
302
304
  "opacity": opacity,
303
305
  },
@@ -1,6 +1,6 @@
1
- import { CommandIDs, ControlPanelModel, GlobalStateDbManager, LeftPanelWidget, RightPanelWidget, addCommands, createDefaultLayerRegistry, rasterSubMenu, vectorSubMenu, logoMiniIcon } from '@jupytergis/base';
2
- import { IAnnotationToken, IJGISFormSchemaRegistryToken, IJGISLayerBrowserRegistryToken, IJupyterGISDocTracker } from '@jupytergis/schema';
3
- import { ILayoutRestorer } from '@jupyterlab/application';
1
+ import { CommandIDs, ControlPanelModel, GlobalStateDbManager, LeftPanelWidget, RightPanelWidget, addCommands, createDefaultLayerRegistry, logoMiniIcon, rasterSubMenu, vectorSubMenu, } from '@jupytergis/base';
2
+ import { IAnnotationToken, IJGISFormSchemaRegistryToken, IJGISLayerBrowserRegistryToken, IJupyterGISDocTracker, ProcessingMerge, } from '@jupytergis/schema';
3
+ import { ILayoutRestorer, } from '@jupyterlab/application';
4
4
  import { ICompletionProviderManager } from '@jupyterlab/completer';
5
5
  import { IMainMenu } from '@jupyterlab/mainmenu';
6
6
  import { IStateDB } from '@jupyterlab/statedb';
@@ -15,7 +15,7 @@ const plugin = {
15
15
  IJupyterGISDocTracker,
16
16
  IJGISFormSchemaRegistryToken,
17
17
  IJGISLayerBrowserRegistryToken,
18
- IStateDB
18
+ IStateDB,
19
19
  ],
20
20
  optional: [IMainMenu, ITranslator, ICompletionProviderManager],
21
21
  activate: (app, tracker, formSchemaRegistry, layerBrowserRegistry, state, mainMenu, translator, completionProviderManager) => {
@@ -32,53 +32,53 @@ const plugin = {
32
32
  app.contextMenu.addItem({
33
33
  selector: '.jp-gis-source.jp-gis-sourceUnused',
34
34
  rank: 1,
35
- command: CommandIDs.removeSource
35
+ command: CommandIDs.removeSource,
36
36
  });
37
37
  app.contextMenu.addItem({
38
38
  selector: '.jp-gis-source',
39
39
  rank: 1,
40
- command: CommandIDs.renameSource
40
+ command: CommandIDs.renameSource,
41
41
  });
42
42
  // LAYERS and LAYER GROUPS context menu
43
43
  app.contextMenu.addItem({
44
44
  command: CommandIDs.symbology,
45
45
  selector: '.jp-gis-layerItem',
46
- rank: 1
46
+ rank: 1,
47
47
  });
48
48
  // Separator
49
49
  app.contextMenu.addItem({
50
50
  type: 'separator',
51
51
  selector: '.jp-gis-layerPanel',
52
- rank: 1
52
+ rank: 1,
53
53
  });
54
54
  app.contextMenu.addItem({
55
55
  command: CommandIDs.removeLayer,
56
56
  selector: '.jp-gis-layerItem',
57
- rank: 2
57
+ rank: 2,
58
58
  });
59
59
  app.contextMenu.addItem({
60
60
  command: CommandIDs.renameLayer,
61
61
  selector: '.jp-gis-layerItem',
62
- rank: 2
62
+ rank: 2,
63
63
  });
64
64
  app.contextMenu.addItem({
65
65
  command: CommandIDs.zoomToLayer,
66
66
  selector: '.jp-gis-layerItem',
67
- rank: 2
67
+ rank: 2,
68
68
  });
69
69
  // Create the Download submenu
70
70
  const downloadSubmenu = new Menu({ commands: app.commands });
71
71
  downloadSubmenu.title.label = translator.load('jupyterlab').__('Download');
72
72
  downloadSubmenu.id = 'jp-gis-contextmenu-download';
73
73
  downloadSubmenu.addItem({
74
- command: CommandIDs.downloadGeoJSON
74
+ command: CommandIDs.downloadGeoJSON,
75
75
  });
76
76
  // Add the Download submenu to the context menu
77
77
  app.contextMenu.addItem({
78
78
  type: 'submenu',
79
79
  selector: '.jp-gis-layerItem',
80
80
  rank: 2,
81
- submenu: downloadSubmenu
81
+ submenu: downloadSubmenu,
82
82
  });
83
83
  // Create the Processing submenu
84
84
  const processingSubmenu = new Menu({ commands: app.commands });
@@ -86,17 +86,16 @@ const plugin = {
86
86
  .load('jupyterlab')
87
87
  .__('Processing');
88
88
  processingSubmenu.id = 'jp-gis-contextmenu-processing';
89
- processingSubmenu.addItem({
90
- command: CommandIDs.buffer
91
- });
92
- processingSubmenu.addItem({
93
- command: CommandIDs.dissolve
94
- });
89
+ for (const processingElement of ProcessingMerge) {
90
+ processingSubmenu.addItem({
91
+ command: processingElement.name,
92
+ });
93
+ }
95
94
  app.contextMenu.addItem({
96
95
  type: 'submenu',
97
96
  selector: '.jp-gis-layerItem',
98
97
  rank: 2,
99
- submenu: processingSubmenu
98
+ submenu: processingSubmenu,
100
99
  });
101
100
  const moveLayerSubmenu = new Menu({ commands: app.commands });
102
101
  moveLayerSubmenu.title.label = translator
@@ -107,46 +106,46 @@ const plugin = {
107
106
  type: 'submenu',
108
107
  selector: '.jp-gis-layerItem',
109
108
  rank: 2,
110
- submenu: moveLayerSubmenu
109
+ submenu: moveLayerSubmenu,
111
110
  });
112
111
  app.contextMenu.opened.connect(() => buildGroupsMenu(app.contextMenu, tracker));
113
112
  app.contextMenu.addItem({
114
113
  command: CommandIDs.removeGroup,
115
114
  selector: '.jp-gis-layerGroupHeader',
116
- rank: 2
115
+ rank: 2,
117
116
  });
118
117
  app.contextMenu.addItem({
119
118
  command: CommandIDs.renameGroup,
120
119
  selector: '.jp-gis-layerGroupHeader',
121
- rank: 2
120
+ rank: 2,
122
121
  });
123
122
  // Separator
124
123
  app.contextMenu.addItem({
125
124
  type: 'separator',
126
125
  selector: '.jp-gis-layerPanel',
127
- rank: 2
126
+ rank: 2,
128
127
  });
129
128
  const newLayerSubMenu = new Menu({ commands: app.commands });
130
129
  newLayerSubMenu.title.label = translator.load('jupyterlab').__('Add Layer');
131
130
  newLayerSubMenu.id = 'jp-gis-contextmenu-addLayer';
132
131
  newLayerSubMenu.addItem({
133
132
  type: 'submenu',
134
- submenu: rasterSubMenu(app.commands)
133
+ submenu: rasterSubMenu(app.commands),
135
134
  });
136
135
  newLayerSubMenu.addItem({
137
136
  type: 'submenu',
138
- submenu: vectorSubMenu(app.commands)
137
+ submenu: vectorSubMenu(app.commands),
139
138
  });
140
139
  app.contextMenu.addItem({
141
140
  type: 'submenu',
142
141
  selector: '.jp-gis-layerPanel',
143
142
  rank: 3,
144
- submenu: newLayerSubMenu
143
+ submenu: newLayerSubMenu,
145
144
  });
146
145
  if (mainMenu) {
147
146
  populateMenus(mainMenu, isEnabled);
148
147
  }
149
- }
148
+ },
150
149
  };
151
150
  const controlPanel = {
152
151
  id: 'jupytergis:lab:controlpanel',
@@ -156,7 +155,7 @@ const controlPanel = {
156
155
  IJupyterGISDocTracker,
157
156
  IJGISFormSchemaRegistryToken,
158
157
  IStateDB,
159
- IAnnotationToken
158
+ IAnnotationToken,
160
159
  ],
161
160
  activate: (app, restorer, tracker, formSchemaRegistry, state, annotationModel) => {
162
161
  const controlModel = new ControlPanelModel({ tracker });
@@ -164,7 +163,7 @@ const controlPanel = {
164
163
  model: controlModel,
165
164
  tracker,
166
165
  state,
167
- commands: app.commands
166
+ commands: app.commands,
168
167
  });
169
168
  leftControlPanel.id = 'jupytergis::leftControlPanel';
170
169
  leftControlPanel.title.caption = 'JupyterGIS Control Panel';
@@ -173,18 +172,18 @@ const controlPanel = {
173
172
  model: controlModel,
174
173
  tracker,
175
174
  formSchemaRegistry,
176
- annotationModel
175
+ annotationModel,
177
176
  });
178
177
  rightControlPanel.id = 'jupytergis::rightControlPanel';
179
178
  rightControlPanel.title.caption = 'JupyterGIS Control Panel';
180
179
  rightControlPanel.title.icon = logoMiniIcon;
181
180
  if (restorer) {
182
- restorer.add(leftControlPanel, NAME_SPACE);
183
- restorer.add(rightControlPanel, NAME_SPACE);
181
+ restorer.add(leftControlPanel, `${NAME_SPACE}-left`);
182
+ restorer.add(rightControlPanel, `${NAME_SPACE}-right`);
184
183
  }
185
184
  app.shell.add(leftControlPanel, 'left', { rank: 2000 });
186
185
  app.shell.add(rightControlPanel, 'right', { rank: 2000 });
187
- }
186
+ },
188
187
  };
189
188
  /**
190
189
  * Populates the application menus for the notebook.
@@ -193,11 +192,11 @@ function populateMenus(mainMenu, isEnabled) {
193
192
  // Add undo/redo hooks to the edit menu.
194
193
  mainMenu.editMenu.undoers.redo.add({
195
194
  id: CommandIDs.redo,
196
- isEnabled
195
+ isEnabled,
197
196
  });
198
197
  mainMenu.editMenu.undoers.undo.add({
199
198
  id: CommandIDs.undo,
200
- isEnabled
199
+ isEnabled,
201
200
  });
202
201
  }
203
202
  /**
@@ -242,16 +241,16 @@ function buildGroupsMenu(contextMenu, tracker) {
242
241
  }
243
242
  submenu.addItem({
244
243
  command: CommandIDs.moveLayersToGroup,
245
- args: { label: '' }
244
+ args: { label: '' },
246
245
  });
247
246
  groupNames.forEach(name => {
248
247
  submenu.addItem({
249
248
  command: CommandIDs.moveLayersToGroup,
250
- args: { label: name }
249
+ args: { label: name },
251
250
  });
252
251
  });
253
252
  submenu.addItem({
254
- command: CommandIDs.moveLayerToNewGroup
253
+ command: CommandIDs.moveLayerToNewGroup,
255
254
  });
256
255
  }
257
256
  export default [plugin, controlPanel, notebookRendererPlugin];