jupytergis-qgis 0.10.0__tar.gz → 0.11.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 (48) hide show
  1. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/PKG-INFO +4 -3
  2. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/jupytergis_qgis/_version.py +1 -1
  3. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/jupytergis_qgis/labextension/package.json +6 -6
  4. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/jupytergis_qgis/labextension/schemas/@jupytergis/jupytergis-qgis/package.json.orig +5 -5
  5. jupytergis_qgis-0.11.1/jupytergis_qgis/labextension/static/234.289502f2f5fca279c845.js +1 -0
  6. jupytergis_qgis-0.11.1/jupytergis_qgis/labextension/static/4.58e727bd5f18ac6d1689.js +1 -0
  7. jupytergis_qgis-0.11.1/jupytergis_qgis/labextension/static/432.8b7eadb127851128d478.js +1 -0
  8. jupytergis_qgis-0.11.1/jupytergis_qgis/labextension/static/remoteEntry.826b1f7429aad46d6213.js +1 -0
  9. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/jupytergis_qgis/labextension/static/third-party-licenses.json +1 -1
  10. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/jupytergis_qgis/qgis_loader.py +1 -1
  11. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/lib/plugins.js +9 -6
  12. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/package.json +5 -5
  13. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/pyproject.toml +5 -4
  14. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/src/modelfactory.ts +1 -3
  15. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/src/plugins.ts +21 -15
  16. jupytergis_qgis-0.11.1/tsconfig.tsbuildinfo +1 -0
  17. jupytergis_qgis-0.10.0/jupytergis_qgis/labextension/static/234.0e83af2f2f78ca5704f8.js +0 -1
  18. jupytergis_qgis-0.10.0/jupytergis_qgis/labextension/static/4.cf816cacf6cd5f401b08.js +0 -1
  19. jupytergis_qgis-0.10.0/jupytergis_qgis/labextension/static/432.2f6bd92ee5f330f2ca8e.js +0 -1
  20. jupytergis_qgis-0.10.0/jupytergis_qgis/labextension/static/remoteEntry.85cd3dff34adad9d2f95.js +0 -1
  21. jupytergis_qgis-0.10.0/tsconfig.tsbuildinfo +0 -1
  22. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/.gitignore +0 -0
  23. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/.prettierignore +0 -0
  24. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/LICENSE +0 -0
  25. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/README.md +0 -0
  26. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/install.json +0 -0
  27. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/jupyter-config/server-config/jupytergis_qgis.json +0 -0
  28. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/jupytergis_qgis/__init__.py +0 -0
  29. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/jupytergis_qgis/handlers.py +0 -0
  30. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/jupytergis_qgis/labextension/schemas/@jupytergis/jupytergis-qgis/qgisplugin.json +0 -0
  31. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/jupytergis_qgis/labextension/static/style.js +0 -0
  32. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/jupytergis_qgis/qgis_ydoc.py +0 -0
  33. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/jupytergis_qgis/tests/__init__.py +0 -0
  34. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/jupytergis_qgis/tests/files/project0.qgs +0 -0
  35. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/jupytergis_qgis/tests/test_qgis.py +0 -0
  36. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/lib/index.d.ts +0 -0
  37. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/lib/index.js +0 -0
  38. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/lib/modelfactory.d.ts +0 -0
  39. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/lib/modelfactory.js +0 -0
  40. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/lib/plugins.d.ts +0 -0
  41. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/schema/qgisplugin.json +0 -0
  42. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/scripts/bump-version.py +0 -0
  43. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/setup.py +0 -0
  44. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/src/index.ts +0 -0
  45. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/style/base.css +0 -0
  46. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/style/index.css +0 -0
  47. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/style/index.js +0 -0
  48. {jupytergis_qgis-0.10.0 → jupytergis_qgis-0.11.1}/tsconfig.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jupytergis_qgis
3
- Version: 0.10.0
3
+ Version: 0.11.1
4
4
  Dynamic: Keywords
5
5
  Summary: JupyterGIS QGIS extension.
6
6
  Project-URL: Homepage, https://github.com/geojupyter/jupytergis
@@ -45,11 +45,12 @@ Classifier: Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt
45
45
  Classifier: License :: OSI Approved :: BSD License
46
46
  Classifier: Programming Language :: Python
47
47
  Classifier: Programming Language :: Python :: 3
48
- Classifier: Programming Language :: Python :: 3.8
49
- Classifier: Programming Language :: Python :: 3.9
50
48
  Classifier: Programming Language :: Python :: 3.10
51
49
  Classifier: Programming Language :: Python :: 3.11
52
50
  Classifier: Programming Language :: Python :: 3.12
51
+ Classifier: Programming Language :: Python :: 3.13
52
+ Classifier: Programming Language :: Python :: 3.14
53
+ Classifier: Topic :: Scientific/Engineering :: GIS
53
54
  Requires-Python: >=3.10
54
55
  Requires-Dist: jupyter-server<3,>=2.0.1
55
56
  Requires-Dist: jupyter-ydoc<4,>=2
@@ -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.10.0'
4
+ __version__ = VERSION = '0.11.1'
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupytergis/jupytergis-qgis",
3
- "version": "0.10.0",
3
+ "version": "0.11.1",
4
4
  "description": "JupyterGIS QGIS extension.",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -53,10 +53,10 @@
53
53
  "watch:labextension": "jupyter labextension watch ."
54
54
  },
55
55
  "dependencies": {
56
- "@jupyter/collaborative-drive": "^3.0.0",
57
- "@jupytergis/base": "^0.10.0",
58
- "@jupytergis/jupytergis-core": "^0.10.0",
59
- "@jupytergis/schema": "^0.10.0",
56
+ "@jupyter/collaborative-drive": "^4.1.2",
57
+ "@jupytergis/base": "^0.11.1",
58
+ "@jupytergis/jupytergis-core": "^0.11.1",
59
+ "@jupytergis/schema": "^0.11.1",
60
60
  "@jupyterlab/application": "^4.3.0",
61
61
  "@jupyterlab/apputils": "^4.3.0",
62
62
  "@jupyterlab/coreutils": "^6.3.0",
@@ -121,7 +121,7 @@
121
121
  }
122
122
  },
123
123
  "_build": {
124
- "load": "static/remoteEntry.85cd3dff34adad9d2f95.js",
124
+ "load": "static/remoteEntry.826b1f7429aad46d6213.js",
125
125
  "extension": "./extension",
126
126
  "style": "./style"
127
127
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupytergis/jupytergis-qgis",
3
- "version": "0.10.0",
3
+ "version": "0.11.1",
4
4
  "description": "JupyterGIS QGIS extension.",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -53,10 +53,10 @@
53
53
  "watch:labextension": "jupyter labextension watch ."
54
54
  },
55
55
  "dependencies": {
56
- "@jupyter/collaborative-drive": "^3.0.0",
57
- "@jupytergis/base": "^0.10.0",
58
- "@jupytergis/jupytergis-core": "^0.10.0",
59
- "@jupytergis/schema": "^0.10.0",
56
+ "@jupyter/collaborative-drive": "^4.1.2",
57
+ "@jupytergis/base": "^0.11.1",
58
+ "@jupytergis/jupytergis-core": "^0.11.1",
59
+ "@jupytergis/schema": "^0.11.1",
60
60
  "@jupyterlab/application": "^4.3.0",
61
61
  "@jupyterlab/apputils": "^4.3.0",
62
62
  "@jupyterlab/coreutils": "^6.3.0",
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_jupytergis_jupytergis_qgis=self.webpackChunk_jupytergis_jupytergis_qgis||[]).push([[234],{234(e,o,r){r.r(o),r.d(o,{ICollaborativeContentProvider:()=>n,IGlobalAwareness:()=>s});var t=r(262);const n=new t.Token("@jupyter/collaboration-extension:ICollaborativeContentProvider"),s=new t.Token("@jupyter/collaboration:IGlobalAwareness")}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_jupytergis_jupytergis_qgis=self.webpackChunk_jupytergis_jupytergis_qgis||[]).push([[4],{4(e,t,o){o.r(t),o.d(t,{default:()=>f});var r,n=o(911),a=o(640),i=o(95),s=o(906),l=o(827),d=o(690),c=o(805),g=o(292),m=o(118),y=o(907),p=o(223),u=o(707),h=o(247);class G{constructor(e){this.collaborative=void 0===document.querySelectorAll("[data-jupyter-lite-root]")[0],this._disposed=!1,this._annotationModel=e.annotationModel}get name(){throw"Not implemented"}get contentType(){throw"Not implemented"}get fileFormat(){return"base64"}get isDisposed(){return this._disposed}dispose(){this._disposed=!0}preferredLanguage(e){return""}createNew(e){return new s.JupyterGISModel({sharedModel:e.sharedModel,languagePreference:e.languagePreference,annotationModel:this._annotationModel,settingRegistry:this._settingRegistry})}}class S extends G{get name(){return"jupytergis-qgzmodel"}get contentType(){return"QGZ"}}class I extends G{get name(){return"jupytergis-qgsmodel"}get contentType(){return"QGS"}}!function(e){e.exportQgis="jupytergis:export"}(r||(r={}));const f=[{id:"@jupytergis/jupytergis-qgis:qgisplugin",requires:[s.IJupyterGISDocTracker,l.IThemeManager,y.IDefaultDrive,s.IJGISExternalCommandRegistryToken,c.ConsolePanel.IContentFactory,d.IEditorServices,m.IRenderMimeRegistry,c.IConsoleTracker,s.IAnnotationToken,p.ISettingRegistry,s.IJGISFormSchemaRegistryToken,u.IStateDB],optional:[l.ICommandPalette,n.ICollaborativeContentProvider],autoStart:!0,activate:async(e,t,o,n,d,c,m,y,p,u,G,f,w,Q,T)=>{const x=await(0,a.requestAPI)("jupytergis_qgis/backend-check",{method:"POST",body:JSON.stringify({})}),{installed:j}=x,v=()=>(j||(0,l.showErrorMessage)("QGIS is not installed","QGIS is required to open QGIS files"),j),M=new i.JupyterGISDocumentWidgetFactory({name:"JupyterGIS QGS Factory",modelName:"jupytergis-qgsmodel",fileTypes:["QGS"],defaultFor:["QGS"],tracker:t,commands:e.commands,externalCommandRegistry:d,backendCheck:v,manager:e.serviceManager,contentFactory:c,rendermime:y,mimeTypeService:m.mimeTypeService,consoleTracker:p,formSchemaRegistry:f,state:w,annotationModel:u}),b=new i.JupyterGISDocumentWidgetFactory({name:"JupyterGIS QGZ Factory",modelName:"jupytergis-qgzmodel",fileTypes:["QGZ"],defaultFor:["QGZ"],tracker:t,commands:e.commands,externalCommandRegistry:d,backendCheck:v,manager:e.serviceManager,contentFactory:c,rendermime:y,mimeTypeService:m.mimeTypeService,consoleTracker:p,formSchemaRegistry:f,state:w,annotationModel:u});e.docRegistry.addWidgetFactory(M),e.docRegistry.addWidgetFactory(b),e.docRegistry.addModelFactory(new I({annotationModel:u,settingRegistry:G})),e.docRegistry.addModelFactory(new S({annotationModel:u,settingRegistry:G})),e.docRegistry.addFileType({name:"QGS",displayName:"QGS",mimeTypes:["application/octet-stream"],extensions:[".qgs",".QGS"],fileFormat:"base64",contentType:"QGS",icon:a.logoMiniIcon}),e.docRegistry.addFileType({name:"QGZ",displayName:"QGZ",mimeTypes:["application/octet-stream"],extensions:[".qgz",".QGZ"],fileFormat:"base64",contentType:"QGZ",icon:a.logoMiniIconQGZ});const F=()=>new s.JupyterGISDoc;T&&(T.sharedModelFactory.registerDocumentFactory("QGS",F),T.sharedModelFactory.registerDocumentFactory("QGZ",F));const C=(r,n)=>{n.title.icon=a.logoMiniIconQGZ,n.context.pathChanged.connect(()=>{t.save(n)}),o.themeChanged.connect((e,t)=>n.model.themeChanged.emit(t)),t.add(n),e.shell.activateById("jupytergis::leftControlPanel"),e.shell.activateById("jupytergis::rightControlPanel")};M.widgetCreated.connect(C),b.widgetCreated.connect(C),j&&(e.commands.addCommand(r.exportQgis,{label:"Export To QGZ",isEnabled:()=>!!t.currentWidget&&t.currentWidget.model.sharedModel.editable,execute:async e=>{var o,r;const i=".jGIS",s=".qgz",d=null===(o=t.currentWidget)||void 0===o?void 0:o.model.sharedModel;if(!d)return;const c=t.currentWidget.model.filePath;let m=null!==(r=e.filepath)&&void 0!==r?r:null;if(m||(m=(await l.InputDialog.getText({label:"File name",placeholder:g.PathExt.basename(c,i),title:"Export the project to QGZ file"})).value),null===m)return;m?m.endsWith(s)||(m=`${m}${s}`):m=`${g.PathExt.basename(c,i)}${s}`;let y=g.PathExt.dirname(c);y.includes(":")&&(y=y.split(":")[1]);const p=g.PathExt.join(y,m),u={layers:d.layers,sources:d.sources,layerTree:d.layerTree.slice().reverse(),options:d.options};let G=!0;if(await n.get(p,{content:!1}).catch(()=>{G=!1}),G&&!(await(0,l.showDialog)({title:"Export the project to QGZ file",body:`The file ${m} already exists.\nDo you want to overwrite it ?`})).button.accept)return;const S=await(0,a.requestAPI)("jupytergis_qgis/export",{method:"POST",body:JSON.stringify({path:p,virtual_file:u})});if(S.exported){if(S.logs.warnings.length){const e=document.createElement("pre");e.textContent=`${m} has been exported with warnings\n - ${S.logs.warnings.join("\n - ")}`;const t=new h.Widget({node:e});await(0,l.showDialog)({title:"Export the project to QGZ file",body:t,buttons:[l.Dialog.okButton()]})}}else(0,l.showErrorMessage)("Export the project to QGZ file",S.logs.errors.length?S.logs.errors.join("\n"):"Unknown error")}}),Q&&Q.addItem({command:r.exportQgis,category:"JupyterGIS"})),console.debug("@jupytergis/jupytergis-qgis:qgisplugin is activated!")}}]}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_jupytergis_jupytergis_qgis=self.webpackChunk_jupytergis_jupytergis_qgis||[]).push([[432],{51(e){e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},128(e){var t={};e.exports=function(e,n){var r=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(n)}},296(e,t,n){n.d(t,{A:()=>s});var r=n(758),o=n.n(r),a=n(935),i=n.n(a)()(o());i.push([e.id,"",""]);const s=i},432(e,t,n){var r=n(591),o=n.n(r),a=n(740),i=n.n(a),s=n(128),c=n.n(s),u=n(855),p=n.n(u),l=n(51),f=n.n(l),d=n(656),v=n.n(d),h=n(296),m={};m.styleTagTransform=v(),m.setAttributes=p(),m.insert=c().bind(null,"head"),m.domAPI=i(),m.insertStyleElement=f(),o()(h.A,m),h.A&&h.A.locals&&h.A.locals},591(e){var t=[];function n(e){for(var n=-1,r=0;r<t.length;r++)if(t[r].identifier===e){n=r;break}return n}function r(e,r){for(var a={},i=[],s=0;s<e.length;s++){var c=e[s],u=r.base?c[0]+r.base:c[0],p=a[u]||0,l="".concat(u," ").concat(p);a[u]=p+1;var f=n(l),d={css:c[1],media:c[2],sourceMap:c[3],supports:c[4],layer:c[5]};if(-1!==f)t[f].references++,t[f].updater(d);else{var v=o(d,r);r.byIndex=s,t.splice(s,0,{identifier:l,updater:v,references:1})}i.push(l)}return i}function o(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,o){var a=r(e=e||[],o=o||{});return function(e){e=e||[];for(var i=0;i<a.length;i++){var s=n(a[i]);t[s].references--}for(var c=r(e,o),u=0;u<a.length;u++){var p=n(a[u]);0===t[p].references&&(t[p].updater(),t.splice(p,1))}a=c}}},656(e){e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},740(e){e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var r="";n.supports&&(r+="@supports (".concat(n.supports,") {")),n.media&&(r+="@media ".concat(n.media," {"));var o=void 0!==n.layer;o&&(r+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),r+=n.css,o&&(r+="}"),n.media&&(r+="}"),n.supports&&(r+="}");var a=n.sourceMap;a&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),t.styleTagTransform(r,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},758(e){e.exports=function(e){return e[1]}},855(e,t,n){e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},935(e){e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n}).join("")},t.i=function(e,n,r,o,a){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(r)for(var s=0;s<this.length;s++){var c=this[s][0];null!=c&&(i[c]=!0)}for(var u=0;u<e.length;u++){var p=[].concat(e[u]);r&&i[p[0]]||(void 0!==a&&(void 0===p[5]||(p[1]="@layer".concat(p[5].length>0?" ".concat(p[5]):""," {").concat(p[1],"}")),p[5]=a),n&&(p[2]?(p[1]="@media ".concat(p[2]," {").concat(p[1],"}"),p[2]=n):p[2]=n),o&&(p[4]?(p[1]="@supports (".concat(p[4],") {").concat(p[1],"}"),p[4]=o):p[4]="".concat(o)),t.push(p))}},t}}}]);
@@ -0,0 +1 @@
1
+ var _JUPYTERLAB;(()=>{"use strict";var e,r,t,n,o,i,a,u,s,l,d,f,p,c,h,v,g,y,b,m,j,w,S,E={7(e,r,t){var n={"./index":()=>t.e(4).then(()=>()=>t(4)),"./extension":()=>t.e(4).then(()=>()=>t(4)),"./style":()=>t.e(432).then(()=>()=>t(432))},o=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then(()=>{throw new Error('Module "'+e+'" does not exist in container.')}),t.R=void 0,r),i=(e,r)=>{if(t.S){var n="default",o=t.S[n];if(o&&o!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)}};t.d(r,{get:()=>o,init:()=>i})}},k={};function P(e){var r=k[e];if(void 0!==r)return r.exports;var t=k[e]={id:e,exports:{}};return E[e](t,t.exports,P),t.exports}P.m=E,P.c=k,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+"."+{4:"58e727bd5f18ac6d1689",234:"289502f2f5fca279c845",432:"8b7eadb127851128d478"}[e]+".js?v="+{4:"58e727bd5f18ac6d1689",234:"289502f2f5fca279c845",432:"8b7eadb127851128d478"}[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-qgis:",P.l=(t,n,o,i)=>{if(e[t])e[t].push(n);else{var a,u;if(void 0!==o)for(var s=document.getElementsByTagName("script"),l=0;l<s.length;l++){var d=s[l];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==r+o){a=d;break}}a||(u=!0,(a=document.createElement("script")).charset="utf-8",P.nc&&a.setAttribute("nonce",P.nc),a.setAttribute("data-webpack",r+o),a.src=t),e[t]=[n];var f=(r,n)=>{a.onerror=a.onload=null,clearTimeout(p);var o=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(e=>e(n)),r)return r(n)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=f.bind(null,a.onerror),a.onload=f.bind(null,a.onload),u&&document.head.appendChild(a)}},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,n)=>{n||(n=[]);var o=r[t];if(o||(o=r[t]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[t])return e[t];P.o(P.S,t)||(P.S[t]={});var i=P.S[t],a="@jupytergis/jupytergis-qgis",u=(e,r,t,n)=>{var o=i[e]=i[e]||{},u=o[r];(!u||!u.loaded&&(!n!=!u.eager?n:a>u.from))&&(o[r]={get:t,from:a,eager:!!n})},s=[];return"default"===t&&(u("@jupyter/collaborative-drive","4.2.0",()=>P.e(234).then(()=>()=>P(234))),u("@jupytergis/jupytergis-qgis","0.11.1",()=>P.e(4).then(()=>()=>P(4)))),e[t]=s.length?Promise.all(s).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 n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].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),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},n=(e,r)=>{e=t(e),r=t(r);for(var n=0;;){if(n>=e.length)return n<r.length&&"u"!=(typeof r[n])[0];var o=e[n],i=(typeof o)[0];if(n>=r.length)return"u"==i;var a=r[n],u=(typeof a)[0];if(i!=u)return"o"==i&&"n"==u||"s"==u||"u"==i;if("o"!=i&&"u"!=i&&o!=a)return o<a;n++}},o=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 n=1,i=1;i<e.length;i++)n--,t+="u"==(typeof(u=e[i]))[0]?"-":(n>0?".":"")+(n=2,u);return t}var a=[];for(i=1;i<e.length;i++){var u=e[i];a.push(0===u?"not("+s()+")":1===u?"("+s()+" || "+s()+")":2===u?a.pop()+" "+a.pop():o(u))}return s();function s(){return a.pop().replace(/^\((.+)\)$/,"$1")}},i=(e,r)=>{if(0 in e){r=t(r);var n=e[0],o=n<0;o&&(n=-n-1);for(var a=0,u=1,s=!0;;u++,a++){var l,d,f=u<e.length?(typeof e[u])[0]:"";if(a>=r.length||"o"==(d=(typeof(l=r[a]))[0]))return!s||("u"==f?u>n&&!o:""==f!=o);if("u"==d){if(!s||"u"!=f)return!1}else if(s)if(f==d)if(u<=n){if(l!=e[u])return!1}else{if(o?l>e[u]:l<e[u])return!1;l!=e[u]&&(s=!1)}else if("s"!=f&&"n"!=f){if(o||u<=n)return!1;s=!1,u--}else{if(u<=n||d<f!=o)return!1;s=!1}else"s"!=f&&"n"!=f&&(s=!1,u--)}}var p=[],c=p.pop.bind(p);for(a=1;a<e.length;a++){var h=e[a];p.push(1==h?c()|c():2==h?c()&c():h?i(h,r):!c())}return!!c()},a=(e,r)=>e&&P.o(e,r),u=e=>(e.loaded=1,e.get()),s=e=>Object.keys(e).reduce((r,t)=>(e[t].eager&&(r[t]=e[t]),r),{}),l=(e,r,t,o)=>{var a=o?s(e[r]):e[r];return(r=Object.keys(a).reduce((e,r)=>!i(t,r)||e&&!n(e,r)?e:r,0))&&a[r]},d=(e,r,t)=>{var o=t?s(e[r]):e[r];return Object.keys(o).reduce((e,r)=>!e||!o[e].loaded&&n(e,r)?r:e,0)},f=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+o(n)+")",p=(e,r,t,n,i)=>{var a=e[t];return"No satisfying version ("+o(n)+")"+(i?" for eager consumption":"")+" of shared module "+t+" found in shared scope "+r+".\nAvailable versions: "+Object.keys(a).map(e=>e+" from "+a[e].from).join(", ")},c=e=>{throw new Error(e)},h=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},g=(e,r,t)=>t?t():((e,r)=>c("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),y=(v=e=>function(r,t,n,o,i){var a=P.I(r);return a&&a.then&&!n?a.then(e.bind(e,r,P.S[r],t,!1,o,i)):e(r,P.S[r],t,n,o,i)})((e,r,t,n,o,i)=>{if(!a(r,t))return g(e,t,i);var s=l(r,t,o,n);return s?u(s):i?i():void c(p(r,e,t,o,n))}),b=v((e,r,t,n,o,s)=>{if(!a(r,t))return g(e,t,s);var l=d(r,t,n);return i(o,l)||h(f(r,t,l,o)),u(r[t][l])}),m={},j={95:()=>b("default","@jupytergis/jupytergis-core",!1,[2,0,11,1]),118:()=>b("default","@jupyterlab/rendermime",!1,[1,4,5,1]),223:()=>b("default","@jupyterlab/settingregistry",!1,[1,4,5,1]),247:()=>b("default","@lumino/widgets",!1,[1,2,3,1,,"alpha",1]),292:()=>b("default","@jupyterlab/coreutils",!1,[1,6,5,1]),640:()=>b("default","@jupytergis/base",!1,[2,0,11,1]),690:()=>b("default","@jupyterlab/codeeditor",!1,[1,4,5,1]),707:()=>b("default","@jupyterlab/statedb",!1,[1,4,5,1]),805:()=>b("default","@jupyterlab/console",!1,[1,4,5,1]),827:()=>b("default","@jupyterlab/apputils",!1,[1,4,6,1]),906:()=>b("default","@jupytergis/schema",!1,[2,0,11,1]),907:()=>b("default","@jupyterlab/services",!1,[1,7,5,1]),911:()=>y("default","@jupyter/collaborative-drive",!1,[1,4,1,2],()=>P.e(234).then(()=>()=>P(234))),262:()=>b("default","@lumino/coreutils",!1,[1,2,0,0])},w={4:[95,118,223,247,292,640,690,707,805,827,906,907,911],234:[262]},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 n=r=>{delete m[e],P.m[e]=t=>{throw delete P.c[e],r}};try{var o=j[e]();o.then?r.push(m[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}})},(()=>{var e={617:0};P.f.j=(r,t)=>{var n=P.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var o=new Promise((t,o)=>n=e[r]=[t,o]);t.push(n[2]=o);var i=P.p+P.u(r),a=new Error;P.l(i,t=>{if(P.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var o=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;a.message="Loading chunk "+r+" failed.\n("+o+": "+i+")",a.name="ChunkLoadError",a.type=o,a.request=i,n[1](a)}},"chunk-"+r,r)}};var r=(r,t)=>{var n,o,[i,a,u]=t,s=0;if(i.some(r=>0!==e[r])){for(n in a)P.o(a,n)&&(P.m[n]=a[n]);u&&u(P)}for(r&&r(t);s<i.length;s++)o=i[s],P.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=self.webpackChunk_jupytergis_jupytergis_qgis=self.webpackChunk_jupytergis_jupytergis_qgis||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),P.nc=void 0;var _=P(7);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB)["@jupytergis/jupytergis-qgis"]=_})();
@@ -2,7 +2,7 @@
2
2
  "packages": [
3
3
  {
4
4
  "name": "@jupyter/collaborative-drive",
5
- "versionInfo": "3.1.2",
5
+ "versionInfo": "4.2.0",
6
6
  "licenseId": "BSD-3-Clause",
7
7
  "extractedText": ""
8
8
  },
@@ -916,7 +916,7 @@ def jgis_layer_to_qgis(
916
916
  # check logical operator to choose discrete or exact
917
917
  op = layer_colors[3][0]
918
918
 
919
- # skip the last value in both cases, thats the fallback and not used by qgis
919
+ # skip the last value in both cases, that's the fallback and not used by qgis
920
920
  if op == "<=":
921
921
  # skip the second to last pair because that needs special handling
922
922
  color_ramp_shader.setColorRampType(QgsColorRampShader.Discrete)
@@ -1,4 +1,4 @@
1
- import { ICollaborativeDrive, } from '@jupyter/collaborative-drive';
1
+ import { ICollaborativeContentProvider } from '@jupyter/collaborative-drive';
2
2
  import { logoMiniIcon, logoMiniIconQGZ, requestAPI, } from '@jupytergis/base';
3
3
  import { JupyterGISDocumentWidgetFactory } from '@jupytergis/jupytergis-core';
4
4
  import { IJGISExternalCommandRegistryToken, JupyterGISDoc, IJupyterGISDocTracker, IAnnotationToken, IJGISFormSchemaRegistryToken, } from '@jupytergis/schema';
@@ -7,6 +7,7 @@ import { IEditorServices } from '@jupyterlab/codeeditor';
7
7
  import { ConsolePanel, IConsoleTracker } from '@jupyterlab/console';
8
8
  import { PathExt } from '@jupyterlab/coreutils';
9
9
  import { IRenderMimeRegistry } from '@jupyterlab/rendermime';
10
+ import { IDefaultDrive, } from '@jupyterlab/services';
10
11
  import { ISettingRegistry } from '@jupyterlab/settingregistry';
11
12
  import { IStateDB } from '@jupyterlab/statedb';
12
13
  import { Widget } from '@lumino/widgets';
@@ -18,7 +19,7 @@ var CommandIDs;
18
19
  (function (CommandIDs) {
19
20
  CommandIDs.exportQgis = 'jupytergis:export';
20
21
  })(CommandIDs || (CommandIDs = {}));
21
- const activate = async (app, tracker, themeManager, drive, externalCommandRegistry, contentFactory, editorServices, rendermime, consoleTracker, annotationModel, settingRegistry, formSchemaRegistry, state, commandPalette) => {
22
+ const activate = async (app, tracker, themeManager, drive, externalCommandRegistry, contentFactory, editorServices, rendermime, consoleTracker, annotationModel, settingRegistry, formSchemaRegistry, state, commandPalette, collaborativeContentProvider) => {
22
23
  const fcCheck = await requestAPI('jupytergis_qgis/backend-check', {
23
24
  method: 'POST',
24
25
  body: JSON.stringify({}),
@@ -94,8 +95,10 @@ const activate = async (app, tracker, themeManager, drive, externalCommandRegist
94
95
  const QGISSharedModelFactory = () => {
95
96
  return new JupyterGISDoc();
96
97
  };
97
- drive.sharedModelFactory.registerDocumentFactory('QGS', QGISSharedModelFactory);
98
- drive.sharedModelFactory.registerDocumentFactory('QGZ', QGISSharedModelFactory);
98
+ if (collaborativeContentProvider) {
99
+ collaborativeContentProvider.sharedModelFactory.registerDocumentFactory('QGS', QGISSharedModelFactory);
100
+ collaborativeContentProvider.sharedModelFactory.registerDocumentFactory('QGZ', QGISSharedModelFactory);
101
+ }
99
102
  const widgetCreatedCallback = (sender, widget) => {
100
103
  widget.title.icon = logoMiniIconQGZ;
101
104
  // Notify the instance tracker if restore data needs to update.
@@ -215,7 +218,7 @@ export const qgisplugin = {
215
218
  requires: [
216
219
  IJupyterGISDocTracker,
217
220
  IThemeManager,
218
- ICollaborativeDrive,
221
+ IDefaultDrive,
219
222
  IJGISExternalCommandRegistryToken,
220
223
  ConsolePanel.IContentFactory,
221
224
  IEditorServices,
@@ -226,7 +229,7 @@ export const qgisplugin = {
226
229
  IJGISFormSchemaRegistryToken,
227
230
  IStateDB,
228
231
  ],
229
- optional: [ICommandPalette],
232
+ optional: [ICommandPalette, ICollaborativeContentProvider],
230
233
  autoStart: true,
231
234
  activate,
232
235
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupytergis/jupytergis-qgis",
3
- "version": "0.10.0",
3
+ "version": "0.11.1",
4
4
  "description": "JupyterGIS QGIS extension.",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -53,10 +53,10 @@
53
53
  "watch:labextension": "jupyter labextension watch ."
54
54
  },
55
55
  "dependencies": {
56
- "@jupyter/collaborative-drive": "^3.0.0",
57
- "@jupytergis/base": "^0.10.0",
58
- "@jupytergis/jupytergis-core": "^0.10.0",
59
- "@jupytergis/schema": "^0.10.0",
56
+ "@jupyter/collaborative-drive": "^4.1.2",
57
+ "@jupytergis/base": "^0.11.1",
58
+ "@jupytergis/jupytergis-core": "^0.11.1",
59
+ "@jupytergis/schema": "^0.11.1",
60
60
  "@jupyterlab/application": "^4.3.0",
61
61
  "@jupyterlab/apputils": "^4.3.0",
62
62
  "@jupyterlab/coreutils": "^6.3.0",
@@ -2,7 +2,7 @@
2
2
  build-backend = "hatchling.build"
3
3
  requires = [
4
4
  "hatchling>=1.5.0",
5
- "jupyterlab>=4.0.0,<5",
5
+ "jupyterlab>=4.5.1",
6
6
  "hatch-nodejs-version>=0.3.2",
7
7
  ]
8
8
 
@@ -13,14 +13,15 @@ classifiers = [
13
13
  "Framework :: Jupyter :: JupyterLab :: 4",
14
14
  "Framework :: Jupyter :: JupyterLab :: Extensions",
15
15
  "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt",
16
+ "Topic :: Scientific/Engineering :: GIS",
16
17
  "License :: OSI Approved :: BSD License",
17
18
  "Programming Language :: Python",
18
19
  "Programming Language :: Python :: 3",
19
- "Programming Language :: Python :: 3.8",
20
- "Programming Language :: Python :: 3.9",
21
20
  "Programming Language :: Python :: 3.10",
22
21
  "Programming Language :: Python :: 3.11",
23
22
  "Programming Language :: Python :: 3.12",
23
+ "Programming Language :: Python :: 3.13",
24
+ "Programming Language :: Python :: 3.14",
24
25
  ]
25
26
  dependencies = [
26
27
  "jupyter_server>=2.0.1,<3",
@@ -78,7 +79,7 @@ version_cmd = "hatch version"
78
79
 
79
80
  [tool.jupyter-releaser.hooks]
80
81
  before-build-npm = [
81
- "python -m pip install 'jupyterlab>=4.0.0,<5'",
82
+ "python -m pip install 'jupyterlab>=4.5.1'",
82
83
  "jlpm",
83
84
  "jlpm build:prod",
84
85
  ]
@@ -10,9 +10,7 @@ import { ISettingRegistry } from '@jupyterlab/settingregistry';
10
10
  /**
11
11
  * A Model factory to create new instances of JupyterGISModel.
12
12
  */
13
- export class JupyterGISModelFactoryBase
14
- implements DocumentRegistry.IModelFactory<JupyterGISModel>
15
- {
13
+ export class JupyterGISModelFactoryBase implements DocumentRegistry.IModelFactory<JupyterGISModel> {
16
14
  constructor(options: JupyterGISModelFactoryBase.IOptions) {
17
15
  this._annotationModel = options.annotationModel;
18
16
  }
@@ -1,7 +1,4 @@
1
- import {
2
- ICollaborativeDrive,
3
- SharedDocumentFactory,
4
- } from '@jupyter/collaborative-drive';
1
+ import { ICollaborativeContentProvider } from '@jupyter/collaborative-drive';
5
2
  import {
6
3
  JupyterGISDocumentWidget,
7
4
  logoMiniIcon,
@@ -37,6 +34,11 @@ import { IEditorServices } from '@jupyterlab/codeeditor';
37
34
  import { ConsolePanel, IConsoleTracker } from '@jupyterlab/console';
38
35
  import { PathExt } from '@jupyterlab/coreutils';
39
36
  import { IRenderMimeRegistry } from '@jupyterlab/rendermime';
37
+ import {
38
+ Contents,
39
+ IDefaultDrive,
40
+ SharedDocumentFactory,
41
+ } from '@jupyterlab/services';
40
42
  import { ISettingRegistry } from '@jupyterlab/settingregistry';
41
43
  import { IStateDB } from '@jupyterlab/statedb';
42
44
  import { Widget } from '@lumino/widgets';
@@ -75,7 +77,7 @@ const activate = async (
75
77
  app: JupyterFrontEnd,
76
78
  tracker: WidgetTracker<IJupyterGISWidget>,
77
79
  themeManager: IThemeManager,
78
- drive: ICollaborativeDrive,
80
+ drive: Contents.IDrive,
79
81
  externalCommandRegistry: IJGISExternalCommandRegistry,
80
82
  contentFactory: ConsolePanel.IContentFactory,
81
83
  editorServices: IEditorServices,
@@ -86,6 +88,7 @@ const activate = async (
86
88
  formSchemaRegistry: IJGISFormSchemaRegistry,
87
89
  state: IStateDB,
88
90
  commandPalette: ICommandPalette | null,
91
+ collaborativeContentProvider: ICollaborativeContentProvider | null,
89
92
  ): Promise<void> => {
90
93
  const fcCheck = await requestAPI<{ installed: boolean }>(
91
94
  'jupytergis_qgis/backend-check',
@@ -175,14 +178,17 @@ const activate = async (
175
178
  const QGISSharedModelFactory: SharedDocumentFactory = () => {
176
179
  return new JupyterGISDoc();
177
180
  };
178
- drive.sharedModelFactory.registerDocumentFactory(
179
- 'QGS',
180
- QGISSharedModelFactory,
181
- );
182
- drive.sharedModelFactory.registerDocumentFactory(
183
- 'QGZ',
184
- QGISSharedModelFactory,
185
- );
181
+
182
+ if (collaborativeContentProvider) {
183
+ collaborativeContentProvider.sharedModelFactory.registerDocumentFactory(
184
+ 'QGS',
185
+ QGISSharedModelFactory,
186
+ );
187
+ collaborativeContentProvider.sharedModelFactory.registerDocumentFactory(
188
+ 'QGZ',
189
+ QGISSharedModelFactory,
190
+ );
191
+ }
186
192
 
187
193
  const widgetCreatedCallback = (
188
194
  sender: any,
@@ -323,7 +329,7 @@ export const qgisplugin: JupyterFrontEndPlugin<void> = {
323
329
  requires: [
324
330
  IJupyterGISDocTracker,
325
331
  IThemeManager,
326
- ICollaborativeDrive,
332
+ IDefaultDrive,
327
333
  IJGISExternalCommandRegistryToken,
328
334
  ConsolePanel.IContentFactory,
329
335
  IEditorServices,
@@ -334,7 +340,7 @@ export const qgisplugin: JupyterFrontEndPlugin<void> = {
334
340
  IJGISFormSchemaRegistryToken,
335
341
  IStateDB,
336
342
  ],
337
- optional: [ICommandPalette],
343
+ optional: [ICommandPalette, ICollaborativeContentProvider],
338
344
  autoStart: true,
339
345
  activate,
340
346
  };