@jupytergis/base 0.15.0 → 0.16.0-alpha.1

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 (414) hide show
  1. package/lib/commands/BaseCommandIDs.d.ts +5 -0
  2. package/lib/commands/BaseCommandIDs.js +5 -0
  3. package/lib/commands/index.js +218 -48
  4. package/lib/commands/operationCommands.js +2 -2
  5. package/lib/constants.js +9 -1
  6. package/lib/{panelview/annotationPanel.js → features/annotations/AnnotationsPanel.js} +1 -1
  7. package/lib/{annotations → features/annotations}/index.d.ts +1 -0
  8. package/lib/{annotations → features/annotations}/index.js +1 -0
  9. package/lib/{console → features/console}/consoleview.js +1 -1
  10. package/lib/{panelview/filter-panel → features/filter}/Filter.js +4 -4
  11. package/lib/{panelview/filter-panel → features/filter}/FilterRow.d.ts +3 -2
  12. package/lib/{panelview/filter-panel → features/filter}/FilterRow.js +2 -1
  13. package/lib/{panelview/identify-panel → features/identify}/IdentifyPanel.d.ts +2 -0
  14. package/lib/features/identify/IdentifyPanel.js +102 -0
  15. package/lib/features/identify/components/FeatureCard.d.ts +17 -0
  16. package/lib/features/identify/components/FeatureCard.js +26 -0
  17. package/lib/features/identify/components/FeatureCardHeader.d.ts +11 -0
  18. package/lib/features/identify/components/FeatureCardHeader.js +30 -0
  19. package/lib/features/identify/components/FeatureFloater.d.ts +7 -0
  20. package/lib/features/identify/components/FeatureFloater.js +19 -0
  21. package/lib/features/identify/components/FeaturePropertyList.d.ts +11 -0
  22. package/lib/features/identify/components/FeaturePropertyList.js +18 -0
  23. package/lib/features/identify/components/FeatureRow.d.ts +13 -0
  24. package/lib/features/identify/components/FeatureRow.js +25 -0
  25. package/lib/features/identify/components/PropertyEditors.d.ts +44 -0
  26. package/lib/features/identify/components/PropertyEditors.js +56 -0
  27. package/lib/features/identify/hooks/useIdentifyPropertyEditor.d.ts +11 -0
  28. package/lib/features/identify/hooks/useIdentifyPropertyEditor.js +132 -0
  29. package/lib/features/identify/types/editorTypes.d.ts +21 -0
  30. package/lib/features/identify/utils/getFeatureIdentifier.d.ts +5 -0
  31. package/lib/features/identify/utils/getFeatureIdentifier.js +14 -0
  32. package/lib/features/identify/utils/highlightLayer.d.ts +11 -0
  33. package/lib/features/identify/utils/highlightLayer.js +57 -0
  34. package/lib/features/identify/utils/highlightStyle.d.ts +7 -0
  35. package/lib/features/identify/utils/highlightStyle.js +40 -0
  36. package/lib/{dialogs/layerBrowserDialog.js → features/layer-browser/index.js} +2 -2
  37. package/lib/{formbuilder/objectform/layer/heatmapLayerForm.d.ts → features/layers/forms/layer/geoTiffLayerForm.d.ts} +1 -1
  38. package/lib/{formbuilder/objectform/layer/webGlLayerForm.js → features/layers/forms/layer/geoTiffLayerForm.js} +5 -5
  39. package/lib/{formbuilder/objectform → features/layers/forms}/layer/hillshadeLayerForm.js +4 -4
  40. package/lib/{formbuilder/objectform → features/layers/forms}/layer/index.d.ts +1 -2
  41. package/lib/{formbuilder/objectform → features/layers/forms}/layer/index.js +1 -2
  42. package/lib/{formbuilder/objectform → features/layers/forms}/layer/layerform.d.ts +1 -1
  43. package/lib/{formbuilder/objectform → features/layers/forms}/layer/layerform.js +4 -4
  44. package/lib/features/layers/forms/layer/storySegmentLayerForm.js +150 -0
  45. package/lib/{formbuilder/objectform → features/layers/forms}/layer/vectorlayerform.js +4 -4
  46. package/lib/{formbuilder/objectform → features/layers/forms}/source/geojsonsource.js +5 -5
  47. package/lib/features/layers/forms/source/geopackagesource.d.ts +3 -0
  48. package/lib/features/layers/forms/source/geopackagesource.js +93 -0
  49. package/lib/{formbuilder/objectform → features/layers/forms}/source/geotiffsource.js +5 -5
  50. package/lib/{formbuilder/objectform → features/layers/forms}/source/index.d.ts +1 -0
  51. package/lib/{formbuilder/objectform → features/layers/forms}/source/index.js +1 -0
  52. package/lib/{formbuilder/objectform → features/layers/forms}/source/pathbasedsource.js +5 -5
  53. package/lib/{formbuilder/objectform → features/layers/forms}/source/sourceform.d.ts +1 -1
  54. package/lib/{formbuilder/objectform → features/layers/forms}/source/sourceform.js +4 -4
  55. package/lib/{formbuilder/objectform → features/layers/forms}/source/tilesourceform.js +4 -4
  56. package/lib/{formbuilder/objectform → features/layers/forms}/source/wmsTileSource.d.ts +1 -1
  57. package/lib/{formbuilder/objectform → features/layers/forms}/source/wmsTileSource.js +6 -6
  58. package/lib/{dialogs → features/layers}/layerCreationFormDialog.d.ts +1 -1
  59. package/lib/{dialogs → features/layers}/layerCreationFormDialog.js +1 -1
  60. package/lib/features/layers/symbology/Grammar.d.ts +11 -0
  61. package/lib/features/layers/symbology/Grammar.js +316 -0
  62. package/lib/{dialogs → features/layers}/symbology/classificationModes.d.ts +6 -6
  63. package/lib/{dialogs → features/layers}/symbology/classificationModes.js +48 -44
  64. package/lib/{dialogs → features/layers}/symbology/colorRampUtils.d.ts +1 -0
  65. package/lib/{dialogs → features/layers}/symbology/colorRampUtils.js +12 -1
  66. package/lib/features/layers/symbology/components/MappingRow.d.ts +40 -0
  67. package/lib/features/layers/symbology/components/MappingRow.js +520 -0
  68. package/lib/features/layers/symbology/components/NumericInput.d.ts +20 -0
  69. package/lib/features/layers/symbology/components/NumericInput.js +44 -0
  70. package/lib/features/layers/symbology/components/ScaleEditor.d.ts +33 -0
  71. package/lib/features/layers/symbology/components/ScaleEditor.js +221 -0
  72. package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ColorRampControls.d.ts +1 -1
  73. package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ColorRampControls.js +4 -3
  74. package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ColorRampSelector.d.ts +2 -1
  75. package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ColorRampSelector.js +6 -1
  76. package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ModeSelectRow.d.ts +1 -1
  77. package/lib/{dialogs → features/layers}/symbology/components/color_ramp/RgbaColorPicker.js +39 -9
  78. package/lib/{dialogs → features/layers}/symbology/components/color_stops/StopContainer.js +1 -1
  79. package/lib/{dialogs → features/layers}/symbology/components/color_stops/StopRow.d.ts +1 -1
  80. package/lib/{dialogs → features/layers}/symbology/components/color_stops/StopRow.js +14 -2
  81. package/lib/features/layers/symbology/grammarToOLLayer.d.ts +27 -0
  82. package/lib/features/layers/symbology/grammarToOLLayer.js +145 -0
  83. package/lib/features/layers/symbology/grammarToOLStyle.d.ts +32 -0
  84. package/lib/features/layers/symbology/grammarToOLStyle.js +487 -0
  85. package/lib/{dialogs → features/layers}/symbology/hooks/useGetBandInfo.d.ts +1 -1
  86. package/lib/{dialogs → features/layers}/symbology/hooks/useGetBandInfo.js +1 -1
  87. package/lib/{dialogs → features/layers}/symbology/hooks/useGetProperties.js +1 -1
  88. package/lib/{dialogs → features/layers}/symbology/hooks/useGetSymbology.js +4 -2
  89. package/lib/features/layers/symbology/styleBuilder.d.ts +24 -0
  90. package/lib/features/layers/symbology/styleBuilder.js +158 -0
  91. package/lib/{dialogs → features/layers}/symbology/symbologyDialog.d.ts +1 -1
  92. package/lib/{dialogs → features/layers}/symbology/symbologyDialog.js +11 -13
  93. package/lib/{dialogs → features/layers}/symbology/symbologyUtils.d.ts +18 -10
  94. package/lib/{dialogs → features/layers}/symbology/symbologyUtils.js +0 -84
  95. package/lib/{panelview/objectproperties.d.ts → features/objectproperties/index.d.ts} +1 -1
  96. package/lib/{panelview/objectproperties.js → features/objectproperties/index.js} +5 -10
  97. package/lib/{dialogs → features/processing}/ProcessingFormDialog.d.ts +1 -1
  98. package/lib/{dialogs → features/processing}/ProcessingFormDialog.js +28 -14
  99. package/lib/features/processing/forms/MapExtentToggle.d.ts +13 -0
  100. package/lib/features/processing/forms/MapExtentToggle.js +20 -0
  101. package/lib/features/processing/forms/clipRasterByExtentForm.d.ts +10 -0
  102. package/lib/features/processing/forms/clipRasterByExtentForm.js +99 -0
  103. package/lib/{formbuilder/objectform/process → features/processing/forms}/dissolveProcessForm.js +5 -5
  104. package/lib/{formbuilder/objectform → features/processing/forms}/processingForm.d.ts +1 -1
  105. package/lib/{formbuilder/objectform → features/processing/forms}/processingForm.js +6 -6
  106. package/lib/features/processing/forms/rasterizeForm.d.ts +10 -0
  107. package/lib/features/processing/forms/rasterizeForm.js +75 -0
  108. package/lib/features/processing/forms/useMapExtent.d.ts +22 -0
  109. package/lib/features/processing/forms/useMapExtent.js +57 -0
  110. package/lib/{processing → features/processing}/index.d.ts +19 -2
  111. package/lib/features/processing/index.js +1246 -0
  112. package/lib/{processing → features/processing}/processingCommands.d.ts +1 -1
  113. package/lib/features/processing/processingCommands.js +168 -0
  114. package/lib/features/processing/serverProcessing.d.ts +51 -0
  115. package/lib/features/processing/serverProcessing.js +99 -0
  116. package/lib/{stacBrowser → features/stac-browser}/components/StacPanel.js +2 -2
  117. package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/QueryableComboBox.js +5 -5
  118. package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/QueryableRow.js +1 -1
  119. package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/StacFilterExtensionPanel.js +2 -2
  120. package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/StacQueryableFilters.js +1 -1
  121. package/lib/{stacBrowser → features/stac-browser}/components/geodes/StacFilterSection.js +3 -3
  122. package/lib/{stacBrowser → features/stac-browser}/components/shared/StacPanelResults.js +3 -3
  123. package/lib/{stacBrowser → features/stac-browser}/components/shared/StacSpatialExtent.js +1 -1
  124. package/lib/{stacBrowser → features/stac-browser}/components/shared/StacTemporalExtent.js +1 -1
  125. package/lib/{stacBrowser → features/stac-browser}/context/StacResultsContext.js +2 -2
  126. package/lib/{stacBrowser → features/stac-browser}/hooks/useGeodesSearch.js +2 -2
  127. package/lib/{stacBrowser → features/stac-browser}/hooks/useStacFilterExtension.js +3 -3
  128. package/lib/{stacBrowser → features/stac-browser}/hooks/useStacSearch.js +1 -1
  129. package/lib/features/stac-browser/types/types.js +1 -0
  130. package/lib/{panelview/story-maps → features/story}/SpectaPanel.d.ts +4 -1
  131. package/lib/{panelview/story-maps → features/story}/SpectaPanel.js +3 -4
  132. package/lib/{panelview/story-maps → features/story}/StoryEditorPanel.js +1 -1
  133. package/lib/{panelview/story-maps → features/story}/StoryViewerPanel.d.ts +12 -11
  134. package/lib/features/story/StoryViewerPanel.js +64 -0
  135. package/lib/features/story/__tests__/fixtures/listStoryTestItems.d.ts +9 -0
  136. package/lib/features/story/__tests__/fixtures/listStoryTestItems.js +21 -0
  137. package/lib/features/story/components/ListStoryMapOverlayPanel.d.ts +10 -0
  138. package/lib/features/story/components/ListStoryMapOverlayPanel.js +11 -0
  139. package/lib/features/story/components/ListStoryMarkdownMeasurePane.d.ts +11 -0
  140. package/lib/features/story/components/ListStoryMarkdownMeasurePane.js +55 -0
  141. package/lib/features/story/components/ListStoryOverlayMarkdown.d.ts +15 -0
  142. package/lib/features/story/components/ListStoryOverlayMarkdown.js +93 -0
  143. package/lib/features/story/components/ListStoryStageOverlay.d.ts +11 -0
  144. package/lib/features/story/components/ListStoryStageOverlay.js +150 -0
  145. package/lib/features/story/components/ListStoryTitleBar.d.ts +7 -0
  146. package/lib/features/story/components/ListStoryTitleBar.js +20 -0
  147. package/lib/features/story/components/ListStoryTitleBarDesktop.d.ts +2 -0
  148. package/lib/features/story/components/ListStoryTitleBarDesktop.js +55 -0
  149. package/lib/features/story/components/ListStoryTitleBarMobile.d.ts +2 -0
  150. package/lib/features/story/components/ListStoryTitleBarMobile.js +41 -0
  151. package/lib/features/story/components/ListStoryVirtualScrollTrack.d.ts +6 -0
  152. package/lib/features/story/components/ListStoryVirtualScrollTrack.js +7 -0
  153. package/lib/{panelview/story-maps → features/story}/components/SpectaDesktopView.d.ts +4 -2
  154. package/lib/features/story/components/SpectaDesktopView.js +67 -0
  155. package/lib/features/story/components/SpectaMobileListModeContent.d.ts +13 -0
  156. package/lib/features/story/components/SpectaMobileListModeContent.js +36 -0
  157. package/lib/features/story/components/SpectaMobileSingleModeContent.d.ts +14 -0
  158. package/lib/{panelview/story-maps/components/SpectaMobileView.js → features/story/components/SpectaMobileSingleModeContent.js} +4 -6
  159. package/lib/{panelview/story-maps → features/story}/components/SpectaMobileView.d.ts +5 -3
  160. package/lib/features/story/components/SpectaMobileView.js +12 -0
  161. package/lib/features/story/components/SpectaSingleModeContent.d.ts +18 -0
  162. package/lib/features/story/components/SpectaSingleModeContent.js +8 -0
  163. package/lib/features/story/context/ListStoryScrollTrackContext.d.ts +19 -0
  164. package/lib/features/story/context/ListStoryScrollTrackContext.js +186 -0
  165. package/lib/features/story/hooks/useCurrentSegmentIndex.d.ts +3 -0
  166. package/lib/features/story/hooks/useCurrentSegmentIndex.js +17 -0
  167. package/lib/features/story/hooks/useListStoryScroll.d.ts +15 -0
  168. package/lib/features/story/hooks/useListStoryScroll.js +107 -0
  169. package/lib/features/story/hooks/useQueuedMarkdownHeightMeasure.d.ts +19 -0
  170. package/lib/features/story/hooks/useQueuedMarkdownHeightMeasure.js +56 -0
  171. package/lib/features/story/hooks/useStoryImagePreload.d.ts +1 -0
  172. package/lib/features/story/hooks/useStoryImagePreload.js +24 -0
  173. package/lib/{panelview/story-maps → features/story}/hooks/useStoryMap.d.ts +2 -7
  174. package/lib/{panelview/story-maps → features/story}/hooks/useStoryMap.js +21 -60
  175. package/lib/features/story/hooks/useStoryScrollState.d.ts +21 -0
  176. package/lib/features/story/hooks/useStoryScrollState.js +39 -0
  177. package/lib/features/story/hooks/useStorySegmentSync.d.ts +8 -0
  178. package/lib/features/story/hooks/useStorySegmentSync.js +51 -0
  179. package/lib/features/story/types/types.d.ts +43 -0
  180. package/lib/features/story/types/types.js +1 -0
  181. package/lib/features/story/utils/computeListStoryScrollState.d.ts +14 -0
  182. package/lib/features/story/utils/computeListStoryScrollState.js +79 -0
  183. package/lib/features/story/utils/listStoryMeasureQueue.d.ts +11 -0
  184. package/lib/features/story/utils/listStoryMeasureQueue.js +14 -0
  185. package/lib/features/story/utils/listStoryScrollTrack.d.ts +17 -0
  186. package/lib/features/story/utils/listStoryScrollTrack.js +72 -0
  187. package/lib/features/story/utils/spectaPresentation.d.ts +9 -0
  188. package/lib/features/story/utils/spectaPresentation.js +37 -0
  189. package/lib/features/story/utils/storySegmentViewItems.d.ts +5 -0
  190. package/lib/features/story/utils/storySegmentViewItems.js +30 -0
  191. package/lib/index.d.ts +11 -9
  192. package/lib/index.js +11 -9
  193. package/lib/keybindings.json +5 -0
  194. package/lib/mainview/OpenEOTileLayer.d.ts +49 -0
  195. package/lib/mainview/OpenEOTileLayer.js +179 -0
  196. package/lib/mainview/TemporalSlider.js +11 -9
  197. package/lib/mainview/components/MainViewMapSurface.d.ts +15 -0
  198. package/lib/mainview/components/MainViewMapSurface.js +13 -0
  199. package/lib/mainview/components/MainViewOverlayLayer.d.ts +9 -0
  200. package/lib/mainview/components/MainViewOverlayLayer.js +11 -0
  201. package/lib/mainview/components/MainViewSidePanels.d.ts +17 -0
  202. package/lib/mainview/components/MainViewSidePanels.js +10 -0
  203. package/lib/mainview/components/MainViewSpectaPanel.d.ts +17 -0
  204. package/lib/mainview/components/MainViewSpectaPanel.js +8 -0
  205. package/lib/mainview/components/MainViewStoryStage.d.ts +13 -0
  206. package/lib/mainview/components/MainViewStoryStage.js +17 -0
  207. package/lib/mainview/components/PositionedFloater.d.ts +10 -0
  208. package/lib/mainview/components/PositionedFloater.js +7 -0
  209. package/lib/mainview/geoJsonFeaturePatch.d.ts +9 -0
  210. package/lib/mainview/geoJsonFeaturePatch.js +43 -0
  211. package/lib/mainview/mainView.d.ts +93 -14
  212. package/lib/mainview/mainView.js +1216 -686
  213. package/lib/mainview/mainviewwidget.d.ts +5 -1
  214. package/lib/mainview/mainviewwidget.js +4 -2
  215. package/lib/shared/components/Button.d.ts +1 -1
  216. package/lib/shared/components/DropdownMenu.d.ts +1 -0
  217. package/lib/shared/components/DropdownMenu.js +3 -2
  218. package/lib/shared/components/NativeSelect.d.ts +8 -0
  219. package/lib/shared/components/NativeSelect.js +29 -0
  220. package/lib/shared/components/Tabs.d.ts +3 -3
  221. package/lib/shared/components/Tabs.js +5 -5
  222. package/lib/{formbuilder → shared/formbuilder}/creationform.js +71 -4
  223. package/lib/{formbuilder → shared/formbuilder}/editform.js +1 -1
  224. package/lib/{formbuilder → shared/formbuilder}/formselectors.d.ts +2 -2
  225. package/lib/{formbuilder → shared/formbuilder}/formselectors.js +10 -7
  226. package/lib/shared/formbuilder/index.d.ts +4 -0
  227. package/lib/shared/formbuilder/index.js +4 -0
  228. package/lib/{formbuilder → shared/formbuilder}/objectform/SchemaForm.d.ts +1 -1
  229. package/lib/{formbuilder → shared/formbuilder}/objectform/StoryEditorForm.d.ts +1 -1
  230. package/lib/{formbuilder → shared/formbuilder}/objectform/StoryEditorForm.js +1 -1
  231. package/lib/{formbuilder → shared/formbuilder}/objectform/components/LayerSelect.js +1 -1
  232. package/lib/{formbuilder → shared/formbuilder}/objectform/components/SegmentFormSymbology.js +4 -4
  233. package/lib/{formbuilder → shared/formbuilder}/objectform/components/SourcePropertiesField.js +1 -1
  234. package/lib/{formbuilder → shared/formbuilder}/objectform/components/StorySegmentReset.js +1 -1
  235. package/lib/{formbuilder → shared/formbuilder}/objectform/components/WmsTileSourceUrlInput.js +4 -4
  236. package/lib/{formbuilder → shared/formbuilder}/objectform/fileselectorwidget.js +8 -1
  237. package/lib/{formbuilder → shared/formbuilder}/objectform/schemaUtils.d.ts +3 -1
  238. package/lib/{formbuilder → shared/formbuilder}/objectform/schemaUtils.js +11 -0
  239. package/lib/{formbuilder → shared/formbuilder}/objectform/useSchemaFormState.d.ts +1 -1
  240. package/lib/{formbuilder → shared/formbuilder}/objectform/useSchemaFormState.js +1 -1
  241. package/lib/{icons.d.ts → shared/icons.d.ts} +2 -0
  242. package/lib/{icons.js → shared/icons.js} +28 -18
  243. package/lib/tools.d.ts +2 -0
  244. package/lib/tools.js +138 -4
  245. package/lib/types.d.ts +6 -1
  246. package/lib/types.js +6 -2
  247. package/lib/{menus.js → workspace/menus.js} +10 -2
  248. package/lib/workspace/panels/components/TabbedPanel.d.ts +17 -0
  249. package/lib/workspace/panels/components/TabbedPanel.js +19 -0
  250. package/lib/{panelview → workspace/panels}/components/layers.js +63 -18
  251. package/lib/workspace/panels/components/legendItem.js +680 -0
  252. package/lib/workspace/panels/hooks/useLayerTree.d.ts +19 -0
  253. package/lib/workspace/panels/hooks/useLayerTree.js +103 -0
  254. package/lib/workspace/panels/hooks/useRightPanelOptions.d.ts +27 -0
  255. package/lib/workspace/panels/hooks/useRightPanelOptions.js +72 -0
  256. package/lib/workspace/panels/hooks/useUIState.d.ts +2 -0
  257. package/lib/workspace/panels/hooks/useUIState.js +25 -0
  258. package/lib/{panelview → workspace/panels}/index.d.ts +1 -1
  259. package/lib/{panelview → workspace/panels}/index.js +1 -1
  260. package/lib/{panelview → workspace/panels}/leftpanel.d.ts +1 -1
  261. package/lib/workspace/panels/leftpanel.js +70 -0
  262. package/lib/{panelview/rightpanel.d.ts → workspace/panels/mergedpanel.d.ts} +6 -5
  263. package/lib/workspace/panels/mergedpanel.js +166 -0
  264. package/lib/workspace/panels/rightpanel.d.ts +25 -0
  265. package/lib/{panelview → workspace/panels}/rightpanel.js +53 -63
  266. package/lib/{statusbar → workspace/statusbar}/StatusBar.js +5 -4
  267. package/lib/{toolbar → workspace/toolbar}/widget.d.ts +2 -0
  268. package/lib/{toolbar → workspace/toolbar}/widget.js +33 -5
  269. package/lib/{widget.d.ts → workspace/widget.d.ts} +7 -5
  270. package/lib/{widget.js → workspace/widget.js} +16 -7
  271. package/package.json +16 -4
  272. package/style/base.css +124 -2
  273. package/style/icons/geopackage.svg +95 -0
  274. package/style/icons/pencil_solid.svg +7 -0
  275. package/style/identify.css +95 -0
  276. package/style/layerBrowser.css +29 -1
  277. package/style/leftPanel.css +25 -0
  278. package/style/shared/button.css +12 -0
  279. package/style/shared/dropdownMenu.css +9 -0
  280. package/style/shared/nativeSelect.css +75 -0
  281. package/style/shared/tabs.css +1 -1
  282. package/style/spectaProgressBar.css +0 -1
  283. package/style/storyPanel.css +330 -9
  284. package/style/storySpectaArticleOverlay.css +129 -0
  285. package/style/symbologyDialog.css +522 -27
  286. package/lib/dialogs/symbology/tiff_layer/TiffRendering.d.ts +0 -4
  287. package/lib/dialogs/symbology/tiff_layer/TiffRendering.js +0 -42
  288. package/lib/dialogs/symbology/tiff_layer/components/BandRow.d.ts +0 -23
  289. package/lib/dialogs/symbology/tiff_layer/components/BandRow.js +0 -59
  290. package/lib/dialogs/symbology/tiff_layer/types/MultibandColor.d.ts +0 -4
  291. package/lib/dialogs/symbology/tiff_layer/types/MultibandColor.js +0 -92
  292. package/lib/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.d.ts +0 -5
  293. package/lib/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.js +0 -313
  294. package/lib/dialogs/symbology/vector_layer/VectorRendering.d.ts +0 -4
  295. package/lib/dialogs/symbology/vector_layer/VectorRendering.js +0 -112
  296. package/lib/dialogs/symbology/vector_layer/components/ValueSelect.d.ts +0 -8
  297. package/lib/dialogs/symbology/vector_layer/components/ValueSelect.js +0 -9
  298. package/lib/dialogs/symbology/vector_layer/types/Canonical.d.ts +0 -4
  299. package/lib/dialogs/symbology/vector_layer/types/Canonical.js +0 -130
  300. package/lib/dialogs/symbology/vector_layer/types/Categorized.d.ts +0 -4
  301. package/lib/dialogs/symbology/vector_layer/types/Categorized.js +0 -243
  302. package/lib/dialogs/symbology/vector_layer/types/Graduated.d.ts +0 -4
  303. package/lib/dialogs/symbology/vector_layer/types/Graduated.js +0 -362
  304. package/lib/dialogs/symbology/vector_layer/types/Heatmap.d.ts +0 -4
  305. package/lib/dialogs/symbology/vector_layer/types/Heatmap.js +0 -89
  306. package/lib/dialogs/symbology/vector_layer/types/SimpleSymbol.d.ts +0 -4
  307. package/lib/dialogs/symbology/vector_layer/types/SimpleSymbol.js +0 -120
  308. package/lib/formbuilder/index.d.ts +0 -4
  309. package/lib/formbuilder/index.js +0 -4
  310. package/lib/formbuilder/objectform/layer/heatmapLayerForm.js +0 -96
  311. package/lib/formbuilder/objectform/layer/storySegmentLayerForm.js +0 -95
  312. package/lib/formbuilder/objectform/layer/webGlLayerForm.d.ts +0 -3
  313. package/lib/formbuilder/objectform/process/index.d.ts +0 -1
  314. package/lib/formbuilder/objectform/process/index.js +0 -1
  315. package/lib/panelview/components/legendItem.js +0 -210
  316. package/lib/panelview/identify-panel/IdentifyPanel.js +0 -102
  317. package/lib/panelview/leftpanel.js +0 -139
  318. package/lib/panelview/story-maps/StoryViewerPanel.js +0 -116
  319. package/lib/panelview/story-maps/components/SpectaDesktopView.js +0 -49
  320. package/lib/processing/index.js +0 -200
  321. package/lib/processing/processingCommands.js +0 -67
  322. /package/lib/{panelview/annotationPanel.d.ts → features/annotations/AnnotationsPanel.d.ts} +0 -0
  323. /package/lib/{annotations → features/annotations}/components/Annotation.d.ts +0 -0
  324. /package/lib/{annotations → features/annotations}/components/Annotation.js +0 -0
  325. /package/lib/{annotations → features/annotations}/components/AnnotationFloater.d.ts +0 -0
  326. /package/lib/{annotations → features/annotations}/components/AnnotationFloater.js +0 -0
  327. /package/lib/{annotations → features/annotations}/components/Message.d.ts +0 -0
  328. /package/lib/{annotations → features/annotations}/components/Message.js +0 -0
  329. /package/lib/{annotations → features/annotations}/model.d.ts +0 -0
  330. /package/lib/{annotations → features/annotations}/model.js +0 -0
  331. /package/lib/{console → features/console}/consoleview.d.ts +0 -0
  332. /package/lib/{console → features/console}/index.d.ts +0 -0
  333. /package/lib/{console → features/console}/index.js +0 -0
  334. /package/lib/{panelview/filter-panel → features/filter}/Filter.d.ts +0 -0
  335. /package/lib/{stacBrowser/types/types.js → features/identify/types/editorTypes.js} +0 -0
  336. /package/lib/{dialogs/layerBrowserDialog.d.ts → features/layer-browser/index.d.ts} +0 -0
  337. /package/lib/{formbuilder/objectform → features/layers/forms}/layer/hillshadeLayerForm.d.ts +0 -0
  338. /package/lib/{formbuilder/objectform → features/layers/forms}/layer/storySegmentLayerForm.d.ts +0 -0
  339. /package/lib/{formbuilder/objectform → features/layers/forms}/layer/vectorlayerform.d.ts +0 -0
  340. /package/lib/{formbuilder/objectform → features/layers/forms}/source/geojsonsource.d.ts +0 -0
  341. /package/lib/{formbuilder/objectform → features/layers/forms}/source/geotiffsource.d.ts +0 -0
  342. /package/lib/{formbuilder/objectform → features/layers/forms}/source/pathbasedsource.d.ts +0 -0
  343. /package/lib/{formbuilder/objectform → features/layers/forms}/source/tilesourceform.d.ts +0 -0
  344. /package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ColorRampSelectorEntry.d.ts +0 -0
  345. /package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ColorRampSelectorEntry.js +0 -0
  346. /package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ModeSelectRow.js +0 -0
  347. /package/lib/{dialogs → features/layers}/symbology/components/color_ramp/RgbaColorPicker.d.ts +0 -0
  348. /package/lib/{dialogs → features/layers}/symbology/components/color_ramp/cmocean.json +0 -0
  349. /package/lib/{dialogs → features/layers}/symbology/components/color_stops/StopContainer.d.ts +0 -0
  350. /package/lib/{dialogs → features/layers}/symbology/hooks/useEffectiveSymbologyParams.d.ts +0 -0
  351. /package/lib/{dialogs → features/layers}/symbology/hooks/useEffectiveSymbologyParams.js +0 -0
  352. /package/lib/{dialogs → features/layers}/symbology/hooks/useGetProperties.d.ts +0 -0
  353. /package/lib/{dialogs → features/layers}/symbology/hooks/useGetSymbology.d.ts +0 -0
  354. /package/lib/{dialogs → features/layers}/symbology/hooks/useOkSignal.d.ts +0 -0
  355. /package/lib/{dialogs → features/layers}/symbology/hooks/useOkSignal.js +0 -0
  356. /package/lib/{formbuilder/objectform/process → features/processing/forms}/dissolveProcessForm.d.ts +0 -0
  357. /package/lib/{processing → features/processing}/processingFormToParam.d.ts +0 -0
  358. /package/lib/{processing → features/processing}/processingFormToParam.js +0 -0
  359. /package/lib/{stacBrowser → features/stac-browser}/components/StacPanel.d.ts +0 -0
  360. /package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/QueryableComboBox.d.ts +0 -0
  361. /package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/QueryableRow.d.ts +0 -0
  362. /package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/StacFilterExtensionPanel.d.ts +0 -0
  363. /package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/StacQueryableFilters.d.ts +0 -0
  364. /package/lib/{stacBrowser → features/stac-browser}/components/geodes/StacFilterSection.d.ts +0 -0
  365. /package/lib/{stacBrowser → features/stac-browser}/components/geodes/StacGeodesFilterPanel.d.ts +0 -0
  366. /package/lib/{stacBrowser → features/stac-browser}/components/geodes/StacGeodesFilterPanel.js +0 -0
  367. /package/lib/{stacBrowser → features/stac-browser}/components/shared/StacPanelResults.d.ts +0 -0
  368. /package/lib/{stacBrowser → features/stac-browser}/components/shared/StacSpatialExtent.d.ts +0 -0
  369. /package/lib/{stacBrowser → features/stac-browser}/components/shared/StacTemporalExtent.d.ts +0 -0
  370. /package/lib/{stacBrowser → features/stac-browser}/constants.d.ts +0 -0
  371. /package/lib/{stacBrowser → features/stac-browser}/constants.js +0 -0
  372. /package/lib/{stacBrowser → features/stac-browser}/context/StacResultsContext.d.ts +0 -0
  373. /package/lib/{stacBrowser → features/stac-browser}/hooks/useGeodesSearch.d.ts +0 -0
  374. /package/lib/{stacBrowser → features/stac-browser}/hooks/useStacFilterExtension.d.ts +0 -0
  375. /package/lib/{stacBrowser → features/stac-browser}/hooks/useStacSearch.d.ts +0 -0
  376. /package/lib/{stacBrowser → features/stac-browser}/index.d.ts +0 -0
  377. /package/lib/{stacBrowser → features/stac-browser}/index.js +0 -0
  378. /package/lib/{stacBrowser → features/stac-browser}/types/types.d.ts +0 -0
  379. /package/lib/{panelview/story-maps → features/story}/StoryEditorPanel.d.ts +0 -0
  380. /package/lib/{panelview/story-maps → features/story}/components/PreviewModeSwitch.d.ts +0 -0
  381. /package/lib/{panelview/story-maps → features/story}/components/PreviewModeSwitch.js +0 -0
  382. /package/lib/{panelview/story-maps → features/story}/components/StoryContentSection.d.ts +0 -0
  383. /package/lib/{panelview/story-maps → features/story}/components/StoryContentSection.js +0 -0
  384. /package/lib/{panelview/story-maps → features/story}/components/StoryImageSection.d.ts +0 -0
  385. /package/lib/{panelview/story-maps → features/story}/components/StoryImageSection.js +0 -0
  386. /package/lib/{panelview/story-maps → features/story}/components/StoryNavBar.d.ts +0 -0
  387. /package/lib/{panelview/story-maps → features/story}/components/StoryNavBar.js +0 -0
  388. /package/lib/{panelview/story-maps → features/story}/components/StorySubtitleSection.d.ts +0 -0
  389. /package/lib/{panelview/story-maps → features/story}/components/StorySubtitleSection.js +0 -0
  390. /package/lib/{panelview/story-maps → features/story}/components/StoryTitleSection.d.ts +0 -0
  391. /package/lib/{panelview/story-maps → features/story}/components/StoryTitleSection.js +0 -0
  392. /package/lib/{formbuilder → shared/formbuilder}/creationform.d.ts +0 -0
  393. /package/lib/{formbuilder → shared/formbuilder}/editform.d.ts +0 -0
  394. /package/lib/{formbuilder → shared/formbuilder}/objectform/SchemaForm.js +0 -0
  395. /package/lib/{formbuilder → shared/formbuilder}/objectform/components/LayerSelect.d.ts +0 -0
  396. /package/lib/{formbuilder → shared/formbuilder}/objectform/components/OpacitySlider.d.ts +0 -0
  397. /package/lib/{formbuilder → shared/formbuilder}/objectform/components/OpacitySlider.js +0 -0
  398. /package/lib/{formbuilder → shared/formbuilder}/objectform/components/SegmentFormSymbology.d.ts +0 -0
  399. /package/lib/{formbuilder → shared/formbuilder}/objectform/components/SourcePropertiesField.d.ts +0 -0
  400. /package/lib/{formbuilder → shared/formbuilder}/objectform/components/StorySegmentReset.d.ts +0 -0
  401. /package/lib/{formbuilder → shared/formbuilder}/objectform/components/WmsTileSourceUrlInput.d.ts +0 -0
  402. /package/lib/{formbuilder → shared/formbuilder}/objectform/fileselectorwidget.d.ts +0 -0
  403. /package/lib/{store.d.ts → shared/store.d.ts} +0 -0
  404. /package/lib/{store.js → shared/store.js} +0 -0
  405. /package/lib/{menus.d.ts → workspace/menus.d.ts} +0 -0
  406. /package/lib/{panelview → workspace/panels}/components/layers.d.ts +0 -0
  407. /package/lib/{panelview → workspace/panels}/components/legendItem.d.ts +0 -0
  408. /package/lib/{panelview → workspace/panels}/header.d.ts +0 -0
  409. /package/lib/{panelview → workspace/panels}/header.js +0 -0
  410. /package/lib/{statusbar → workspace/statusbar}/SpectaPresentationProgressBar.d.ts +0 -0
  411. /package/lib/{statusbar → workspace/statusbar}/SpectaPresentationProgressBar.js +0 -0
  412. /package/lib/{statusbar → workspace/statusbar}/StatusBar.d.ts +0 -0
  413. /package/lib/{toolbar → workspace/toolbar}/index.d.ts +0 -0
  414. /package/lib/{toolbar → workspace/toolbar}/index.js +0 -0
@@ -17,6 +17,9 @@ export declare const openNewImageDialog = "jupytergis:openNewImageDialog";
17
17
  export declare const openNewVideoDialog = "jupytergis:openNewVideoDialog";
18
18
  export declare const openNewGeoTiffDialog = "jupytergis:openNewGeoTiffDialog";
19
19
  export declare const openNewGeoParquetDialog = "jupytergis:openNewGeoParquetDialog";
20
+ export declare const newGeoPackageRasterEntry = "jupytergis:newGeoPackageRasterEntry";
21
+ export declare const newGeoPackageVectorEntry = "jupytergis:newGeoPackageVectorEntry";
22
+ export declare const toggleDrawFeatures = "jupytergis:toggleDrawFeatures";
20
23
  export declare const renameSelected = "jupytergis:renameSelected";
21
24
  export declare const removeSelected = "jupytergis:removeSelected";
22
25
  export declare const duplicateSelected = "jupytergis:duplicateSelected";
@@ -32,6 +35,7 @@ export declare const zoomToLayer = "jupytergis:zoomToLayer";
32
35
  export declare const downloadGeoJSON = "jupytergis:downloadGeoJSON";
33
36
  export declare const toggleLeftPanel = "jupytergis:toggleLeftPanel";
34
37
  export declare const toggleRightPanel = "jupytergis:toggleRightPanel";
38
+ export declare const togglePanel = "jupytergis:togglePanel";
35
39
  export declare const showLayersTab = "jupytergis:showLayersTab";
36
40
  export declare const showStacBrowserTab = "jupytergis:showStacBrowserTab";
37
41
  export declare const showObjectPropertiesTab = "jupytergis:showObjectPropertiesTab";
@@ -39,5 +43,6 @@ export declare const showAnnotationsTab = "jupytergis:showAnnotationsTab";
39
43
  export declare const showIdentifyPanelTab = "jupytergis:showIdentifyPanelTab";
40
44
  export declare const addStorySegment = "jupytergis:addStorySegment";
41
45
  export declare const toggleStoryPresentationMode = "jupytergis:toggleStoryPresentationMode";
46
+ export declare const createStorySegmentFromLayer = "jupytergis:createStorySegmentFromLayer";
42
47
  export declare const storyPrev = "jupytergis:storyPrev";
43
48
  export declare const storyNext = "jupytergis:storyNext";
@@ -25,6 +25,9 @@ export const openNewImageDialog = 'jupytergis:openNewImageDialog';
25
25
  export const openNewVideoDialog = 'jupytergis:openNewVideoDialog';
26
26
  export const openNewGeoTiffDialog = 'jupytergis:openNewGeoTiffDialog';
27
27
  export const openNewGeoParquetDialog = 'jupytergis:openNewGeoParquetDialog';
28
+ export const newGeoPackageRasterEntry = 'jupytergis:newGeoPackageRasterEntry';
29
+ export const newGeoPackageVectorEntry = 'jupytergis:newGeoPackageVectorEntry';
30
+ export const toggleDrawFeatures = 'jupytergis:toggleDrawFeatures';
28
31
  // Layer and group actions
29
32
  export const renameSelected = 'jupytergis:renameSelected';
30
33
  export const removeSelected = 'jupytergis:removeSelected';
@@ -44,6 +47,7 @@ export const downloadGeoJSON = 'jupytergis:downloadGeoJSON';
44
47
  // Panel toggles
45
48
  export const toggleLeftPanel = 'jupytergis:toggleLeftPanel';
46
49
  export const toggleRightPanel = 'jupytergis:toggleRightPanel';
50
+ export const togglePanel = 'jupytergis:togglePanel';
47
51
  // Left panel tabs
48
52
  export const showLayersTab = 'jupytergis:showLayersTab';
49
53
  export const showStacBrowserTab = 'jupytergis:showStacBrowserTab';
@@ -54,5 +58,6 @@ export const showIdentifyPanelTab = 'jupytergis:showIdentifyPanelTab';
54
58
  // Story maps
55
59
  export const addStorySegment = 'jupytergis:addStorySegment';
56
60
  export const toggleStoryPresentationMode = 'jupytergis:toggleStoryPresentationMode';
61
+ export const createStorySegmentFromLayer = 'jupytergis:createStorySegmentFromLayer';
57
62
  export const storyPrev = 'jupytergis:storyPrev';
58
63
  export const storyNext = 'jupytergis:storyNext';
@@ -1,18 +1,18 @@
1
1
  import { UUID } from '@lumino/coreutils';
2
2
  import { fromLonLat } from 'ol/proj';
3
+ import { targetWithCenterIcon } from "../shared/icons";
4
+ import { addLayerCreationCommands } from './operationCommands';
3
5
  import { CommandIDs, icons } from '../constants';
4
- import { ProcessingFormDialog } from '../dialogs/ProcessingFormDialog';
5
- import { LayerBrowserWidget } from '../dialogs/layerBrowserDialog';
6
- import { LayerCreationFormDialog } from '../dialogs/layerCreationFormDialog';
7
- import { SymbologyWidget } from '../dialogs/symbology/symbologyDialog';
8
- import { targetWithCenterIcon } from '../icons';
6
+ import { LayerBrowserWidget } from '../features/layer-browser';
7
+ import { LayerCreationFormDialog } from '../features/layers/layerCreationFormDialog';
8
+ import { SymbologyWidget } from '../features/layers/symbology/symbologyDialog';
9
+ import { ProcessingFormDialog } from '../features/processing/ProcessingFormDialog';
10
+ import { getSingleSelectedLayer } from '../features/processing/index';
11
+ import { addProcessingCommands } from '../features/processing/processingCommands';
9
12
  import keybindings from '../keybindings.json';
10
- import { getSingleSelectedLayer } from '../processing/index';
11
- import { addProcessingCommands } from '../processing/processingCommands';
12
13
  import { getGeoJSONDataFromLayerSource, downloadFile } from '../tools';
13
- import { SYMBOLOGY_VALID_LAYER_TYPES } from '../types';
14
- import { JupyterGISDocumentWidget } from '../widget';
15
- import { addLayerCreationCommands } from './operationCommands';
14
+ import { STORY_TYPE, SYMBOLOGY_VALID_LAYER_TYPES, } from '../types';
15
+ import { JupyterGISDocumentWidget } from '../workspace/widget';
16
16
  const POINT_SELECTION_TOOL_CLASS = 'jGIS-point-selection-tool';
17
17
  function loadKeybindings(commands, keybindings) {
18
18
  keybindings.forEach(binding => {
@@ -156,7 +156,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
156
156
  const canIdentify = [
157
157
  'VectorLayer',
158
158
  'ShapefileLayer',
159
- 'WebGlLayer',
159
+ 'GeoTiffLayer',
160
160
  'VectorTileLayer',
161
161
  ].includes(selectedLayer.type);
162
162
  if (current.model.currentMode === 'identifying' && !canIdentify) {
@@ -177,7 +177,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
177
177
  return [
178
178
  'VectorLayer',
179
179
  'ShapefileLayer',
180
- 'WebGlLayer',
180
+ 'GeoTiffLayer',
181
181
  'VectorTileLayer',
182
182
  ].includes(selectedLayer.type);
183
183
  }, execute: args => {
@@ -230,16 +230,9 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
230
230
  if (!layerType) {
231
231
  return false;
232
232
  }
233
- // Selection should only be one vector or heatmap layer
234
- const isSelectionValid = Object.keys(selectedLayers).length === 1 &&
233
+ return (Object.keys(selectedLayers).length === 1 &&
235
234
  !model.getSource(layerId) &&
236
- ['VectorLayer', 'HeatmapLayer'].includes(layerType);
237
- if (!isSelectionValid && model.isTemporalControllerActive) {
238
- model.toggleTemporalController();
239
- commands.notifyCommandChanged(CommandIDs.temporalController);
240
- return false;
241
- }
242
- return true;
235
+ layerType === 'VectorLayer');
243
236
  }, execute: (args) => {
244
237
  const filePath = args === null || args === void 0 ? void 0 : args.filePath;
245
238
  const current = filePath
@@ -361,7 +354,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
361
354
  createSource: true,
362
355
  layerData: { name: 'Custom WMS Layer' },
363
356
  sourceType: 'WmsTileSource',
364
- layerType: 'WebGlLayer',
357
+ layerType: 'GeoTiffLayer',
365
358
  }) }, icons.get(CommandIDs.openNewWmsDialog)));
366
359
  //Add processing commands
367
360
  addProcessingCommands(app, commands, tracker, trans, formSchemaRegistry, Object.fromEntries(formSchemaRegistry.getSchemas()));
@@ -466,7 +459,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
466
459
  },
467
460
  layerData: { name: 'Custom GeoTiff Layer' },
468
461
  sourceType: 'GeoTiffSource',
469
- layerType: 'WebGlLayer',
462
+ layerType: 'GeoTiffLayer',
470
463
  }) }, icons.get(CommandIDs.openNewGeoTiffDialog)));
471
464
  commands.addCommand(CommandIDs.openNewShapefileDialog, Object.assign({ label: trans.__('Shapefile'), caption: 'Open a dialog to create a new shapefile layer and source in the current JupyterGIS document.', describedBy: {
472
465
  args: {
@@ -488,6 +481,36 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
488
481
  sourceType: 'ShapefileSource',
489
482
  layerType: 'VectorLayer',
490
483
  }) }, icons.get(CommandIDs.openNewShapefileDialog)));
484
+ commands.addCommand(CommandIDs.newGeoPackageVectorEntry, Object.assign({ label: trans.__('GeoPackage'), isEnabled: () => {
485
+ return tracker.currentWidget
486
+ ? tracker.currentWidget.model.sharedModel.editable
487
+ : false;
488
+ }, execute: Private.createEntry({
489
+ tracker,
490
+ formSchemaRegistry,
491
+ title: 'Create GeoPackage Layer',
492
+ createLayer: true,
493
+ createSource: true,
494
+ sourceData: { name: 'Custom GeoPackage Vector Source' },
495
+ layerData: { name: 'Custom GeoPackage Vector Layer' },
496
+ sourceType: 'GeoPackageVectorSource',
497
+ layerType: 'VectorLayer',
498
+ }) }, icons.get(CommandIDs.newGeoPackageVectorEntry)));
499
+ commands.addCommand(CommandIDs.newGeoPackageRasterEntry, Object.assign({ label: trans.__('GeoPackage'), isEnabled: () => {
500
+ return tracker.currentWidget
501
+ ? tracker.currentWidget.model.sharedModel.editable
502
+ : false;
503
+ }, execute: Private.createEntry({
504
+ tracker,
505
+ formSchemaRegistry,
506
+ title: 'Create GeoPackage Layer',
507
+ createLayer: true,
508
+ createSource: true,
509
+ sourceData: { name: 'Custom GeoPackage Raster Source' },
510
+ layerData: { name: 'Custom GeoPackage Raster Layer' },
511
+ sourceType: 'GeoPackageRasterSource',
512
+ layerType: 'RasterLayer',
513
+ }) }, icons.get(CommandIDs.newGeoPackageRasterEntry)));
491
514
  /**
492
515
  * LAYERS and LAYER GROUP actions.
493
516
  */
@@ -965,23 +988,21 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
965
988
  isEnabled: () => Boolean(tracker.currentWidget),
966
989
  isToggled: () => {
967
990
  const current = tracker.currentWidget;
968
- return current ? !current.model.jgisSettings.leftPanelDisabled : false;
991
+ if (!current) {
992
+ return false;
993
+ }
994
+ const open = current.model.getUIState().leftPanelOpen;
995
+ return open !== false;
969
996
  },
970
- execute: async () => {
971
- var _a, _b, _c;
997
+ execute: () => {
972
998
  const current = tracker.currentWidget;
973
999
  if (!current) {
974
1000
  return;
975
1001
  }
976
- try {
977
- const settings = await current.model.getSettings();
978
- const currentValue = (_c = (_b = (_a = settings === null || settings === void 0 ? void 0 : settings.composite) === null || _a === void 0 ? void 0 : _a.leftPanelDisabled) !== null && _b !== void 0 ? _b : current.model.jgisSettings.leftPanelDisabled) !== null && _c !== void 0 ? _c : false;
979
- await (settings === null || settings === void 0 ? void 0 : settings.set('leftPanelDisabled', !currentValue));
980
- commands.notifyCommandChanged(CommandIDs.toggleLeftPanel);
981
- }
982
- catch (err) {
983
- console.error('Failed to toggle Left Panel:', err);
984
- }
1002
+ const open = current.model.getUIState().leftPanelOpen;
1003
+ current.model.setUIState({ leftPanelOpen: open === false });
1004
+ commands.notifyCommandChanged(CommandIDs.toggleLeftPanel);
1005
+ commands.notifyCommandChanged(CommandIDs.togglePanel);
985
1006
  },
986
1007
  });
987
1008
  commands.addCommand(CommandIDs.toggleRightPanel, {
@@ -996,23 +1017,58 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
996
1017
  isEnabled: () => Boolean(tracker.currentWidget),
997
1018
  isToggled: () => {
998
1019
  const current = tracker.currentWidget;
999
- return current ? !current.model.jgisSettings.rightPanelDisabled : false;
1020
+ if (!current) {
1021
+ return false;
1022
+ }
1023
+ const open = current.model.getUIState().rightPanelOpen;
1024
+ return open !== false;
1025
+ },
1026
+ execute: () => {
1027
+ const current = tracker.currentWidget;
1028
+ if (!current) {
1029
+ return;
1030
+ }
1031
+ const open = current.model.getUIState().rightPanelOpen;
1032
+ current.model.setUIState({ rightPanelOpen: open === false });
1033
+ commands.notifyCommandChanged(CommandIDs.toggleRightPanel);
1034
+ commands.notifyCommandChanged(CommandIDs.togglePanel);
1035
+ },
1036
+ });
1037
+ commands.addCommand(CommandIDs.togglePanel, {
1038
+ label: trans.__('Toggle Panel'),
1039
+ caption: 'Toggle the panel in the current JupyterGIS document.',
1040
+ iconClass: 'fa fa-layer-group',
1041
+ isEnabled: () => Boolean(tracker.currentWidget),
1042
+ isToggled: () => {
1043
+ const current = tracker.currentWidget;
1044
+ if (!current) {
1045
+ return false;
1046
+ }
1047
+ const { leftPanelDisabled, rightPanelDisabled } = current.model.jgisSettings;
1048
+ const { leftPanelOpen = true, rightPanelOpen = true } = current.model.getUIState();
1049
+ const show = (!leftPanelDisabled && !leftPanelOpen) ||
1050
+ (!rightPanelDisabled && !rightPanelOpen);
1051
+ return !show;
1000
1052
  },
1001
- execute: async () => {
1002
- var _a, _b, _c;
1053
+ execute: () => {
1003
1054
  const current = tracker.currentWidget;
1004
1055
  if (!current) {
1005
1056
  return;
1006
1057
  }
1007
- try {
1008
- const settings = await current.model.getSettings();
1009
- const currentValue = (_c = (_b = (_a = settings === null || settings === void 0 ? void 0 : settings.composite) === null || _a === void 0 ? void 0 : _a.rightPanelDisabled) !== null && _b !== void 0 ? _b : current.model.jgisSettings.rightPanelDisabled) !== null && _c !== void 0 ? _c : false;
1010
- await (settings === null || settings === void 0 ? void 0 : settings.set('rightPanelDisabled', !currentValue));
1011
- commands.notifyCommandChanged(CommandIDs.toggleRightPanel);
1058
+ const { leftPanelDisabled, rightPanelDisabled } = current.model.jgisSettings;
1059
+ const { leftPanelOpen = true, rightPanelOpen = true } = current.model.getUIState();
1060
+ // Show all if any non-disabled panel is hidden; hide all otherwise.
1061
+ const show = (!leftPanelDisabled && !leftPanelOpen) ||
1062
+ (!rightPanelDisabled && !rightPanelOpen);
1063
+ const newState = {};
1064
+ if (!leftPanelDisabled) {
1065
+ newState.leftPanelOpen = show;
1012
1066
  }
1013
- catch (err) {
1014
- console.error('Failed to toggle Right Panel:', err);
1067
+ if (!rightPanelDisabled) {
1068
+ newState.rightPanelOpen = show;
1015
1069
  }
1070
+ current.model.setUIState(newState);
1071
+ commands.notifyCommandChanged(CommandIDs.togglePanel);
1016
1072
  },
1017
1073
  });
1018
1074
  // Left panel tabs
@@ -1160,6 +1216,59 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
1160
1216
  current.model.toggleMode('marking');
1161
1217
  commands.notifyCommandChanged(CommandIDs.addMarker);
1162
1218
  } }, icons.get(CommandIDs.addMarker)));
1219
+ commands.addCommand(CommandIDs.toggleDrawFeatures, Object.assign({ label: trans.__('Edit Features'), caption: 'Toggle feature editing for the selected draw-compatible layer.', describedBy: {
1220
+ args: {
1221
+ type: 'object',
1222
+ properties: {},
1223
+ },
1224
+ }, isToggled: () => {
1225
+ var _a, _b, _c;
1226
+ if (!(tracker.currentWidget instanceof JupyterGISDocumentWidget)) {
1227
+ return false;
1228
+ }
1229
+ const model = (_c = (_b = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.currentViewModel) === null || _c === void 0 ? void 0 : _c.jGISModel;
1230
+ if (!model) {
1231
+ return false;
1232
+ }
1233
+ const selectedLayer = getSingleSelectedLayer(tracker);
1234
+ if (!selectedLayer) {
1235
+ return false;
1236
+ }
1237
+ if (!model.checkIfIsADrawVectorLayer(selectedLayer)) {
1238
+ return false;
1239
+ }
1240
+ return model.editingVectorLayer;
1241
+ }, isEnabled: () => {
1242
+ var _a, _b, _c;
1243
+ if (!(tracker.currentWidget instanceof JupyterGISDocumentWidget)) {
1244
+ return false;
1245
+ }
1246
+ const model = (_c = (_b = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.currentViewModel) === null || _c === void 0 ? void 0 : _c.jGISModel;
1247
+ if (!model) {
1248
+ return false;
1249
+ }
1250
+ const selectedLayer = getSingleSelectedLayer(tracker);
1251
+ if (!selectedLayer) {
1252
+ return false;
1253
+ }
1254
+ return model.checkIfIsADrawVectorLayer(selectedLayer) === true;
1255
+ }, execute: async () => {
1256
+ var _a, _b;
1257
+ if (!(tracker.currentWidget instanceof JupyterGISDocumentWidget)) {
1258
+ return;
1259
+ }
1260
+ const model = (_b = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.content.currentViewModel) === null || _b === void 0 ? void 0 : _b.jGISModel;
1261
+ if (!model) {
1262
+ return false;
1263
+ }
1264
+ const selectedLayer = getSingleSelectedLayer(tracker);
1265
+ if (!selectedLayer) {
1266
+ return false;
1267
+ }
1268
+ model.editingVectorLayer = !model.editingVectorLayer;
1269
+ model.updateEditingVectorLayer();
1270
+ commands.notifyCommandChanged(CommandIDs.toggleDrawFeatures);
1271
+ } }, icons.get(CommandIDs.toggleDrawFeatures)));
1163
1272
  commands.addCommand(CommandIDs.addStorySegment, Object.assign({ label: trans.__('Add Story Segment'), isEnabled: () => {
1164
1273
  const current = tracker.currentWidget;
1165
1274
  if (!current) {
@@ -1200,11 +1309,44 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
1200
1309
  current.model.setOptions(Object.assign(Object.assign({}, currentOptions), { storyMapPresentationMode: !currentOptions.storyMapPresentationMode }));
1201
1310
  commands.notifyCommandChanged(CommandIDs.toggleStoryPresentationMode);
1202
1311
  } }, icons.get(CommandIDs.toggleStoryPresentationMode)));
1312
+ commands.addCommand(CommandIDs.createStorySegmentFromLayer, {
1313
+ label: trans.__('Create Story Segment for Layer'),
1314
+ isEnabled: () => {
1315
+ var _a, _b, _c;
1316
+ const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model;
1317
+ const selected = (_c = (_b = model === null || model === void 0 ? void 0 : model.localState) === null || _b === void 0 ? void 0 : _b.selected) === null || _c === void 0 ? void 0 : _c.value;
1318
+ if (!model || !selected) {
1319
+ return false;
1320
+ }
1321
+ if (Object.keys(selected).length !== 1) {
1322
+ return false;
1323
+ }
1324
+ const layerId = Object.keys(selected)[0];
1325
+ return !!model.getLayer(layerId);
1326
+ },
1327
+ execute: () => {
1328
+ var _a, _b;
1329
+ const current = tracker.currentWidget;
1330
+ if (!current) {
1331
+ return;
1332
+ }
1333
+ const model = current.model;
1334
+ const selected = (_b = (_a = model === null || model === void 0 ? void 0 : model.localState) === null || _a === void 0 ? void 0 : _a.selected) === null || _b === void 0 ? void 0 : _b.value;
1335
+ if (!selected) {
1336
+ return;
1337
+ }
1338
+ const layerId = Object.keys(selected)[0];
1339
+ const result = model.createStorySegmentFromLayer(layerId);
1340
+ if (result) {
1341
+ model.centerOnPosition(layerId);
1342
+ }
1343
+ },
1344
+ });
1203
1345
  /* Needs to be enabled in Specta mode, so add without Specta-aware wrapper */
1204
1346
  originalAddCommand(CommandIDs.storyPrev, {
1205
1347
  label: trans.__('Previous Story Segment'),
1206
1348
  isEnabled: () => {
1207
- var _a, _b;
1349
+ var _a, _b, _c;
1208
1350
  const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model;
1209
1351
  const storySegments = (_b = model === null || model === void 0 ? void 0 : model.getSelectedStory().story) === null || _b === void 0 ? void 0 : _b.storySegments;
1210
1352
  if (!model ||
@@ -1216,6 +1358,9 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
1216
1358
  if (!model.isSpectaMode()) {
1217
1359
  return false;
1218
1360
  }
1361
+ if (((_c = model.getSelectedStory().story) === null || _c === void 0 ? void 0 : _c.storyType) === STORY_TYPE.verticalScroll) {
1362
+ return false;
1363
+ }
1219
1364
  return model.getCurrentSegmentIndex() > 0;
1220
1365
  },
1221
1366
  execute: () => {
@@ -1231,7 +1376,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
1231
1376
  originalAddCommand(CommandIDs.storyNext, {
1232
1377
  label: trans.__('Next Story Segment'),
1233
1378
  isEnabled: () => {
1234
- var _a, _b, _c;
1379
+ var _a, _b, _c, _d;
1235
1380
  const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model;
1236
1381
  const storySegments = (_b = model === null || model === void 0 ? void 0 : model.getSelectedStory().story) === null || _b === void 0 ? void 0 : _b.storySegments;
1237
1382
  if (!model ||
@@ -1244,7 +1389,10 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
1244
1389
  if (!isSpecta) {
1245
1390
  return false;
1246
1391
  }
1247
- const current = (_c = model.getCurrentSegmentIndex()) !== null && _c !== void 0 ? _c : 0;
1392
+ if (((_c = model.getSelectedStory().story) === null || _c === void 0 ? void 0 : _c.storyType) === STORY_TYPE.verticalScroll) {
1393
+ return false;
1394
+ }
1395
+ const current = (_d = model.getCurrentSegmentIndex()) !== null && _d !== void 0 ? _d : 0;
1248
1396
  return current < storySegments.length - 1;
1249
1397
  },
1250
1398
  execute: () => {
@@ -1257,6 +1405,28 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
1257
1405
  model.setCurrentSegmentIndex(current + 1);
1258
1406
  },
1259
1407
  });
1408
+ const notifyCommandsChanged = () => {
1409
+ for (const command of Object.values(CommandIDs)) {
1410
+ try {
1411
+ commands.notifyCommandChanged(command);
1412
+ }
1413
+ catch (_) {
1414
+ // Do Continue if command is not registered
1415
+ }
1416
+ }
1417
+ };
1418
+ let cleanup = null;
1419
+ tracker.currentChanged.connect(_ => {
1420
+ var _a;
1421
+ cleanup === null || cleanup === void 0 ? void 0 : cleanup();
1422
+ cleanup = null;
1423
+ const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model;
1424
+ model === null || model === void 0 ? void 0 : model.selectedChanged.connect(notifyCommandsChanged);
1425
+ cleanup = () => {
1426
+ model === null || model === void 0 ? void 0 : model.selectedChanged.disconnect(notifyCommandsChanged);
1427
+ };
1428
+ notifyCommandsChanged();
1429
+ });
1260
1430
  loadKeybindings(commands, keybindings);
1261
1431
  }
1262
1432
  var Private;
@@ -241,7 +241,7 @@ export function addLayerCreationCommands(options) {
241
241
  label: 'New GeoTIFF Layer From Parameters',
242
242
  caption: 'Add a new GeoTIFF layer (by file path or URL) and add it to the given JupyterGIS file',
243
243
  sourceType: 'GeoTiffSource',
244
- layerType: 'WebGlLayer',
244
+ layerType: 'GeoTiffLayer',
245
245
  sourceSchema: {
246
246
  type: 'object',
247
247
  required: ['urls'],
@@ -296,7 +296,7 @@ export function addLayerCreationCommands(options) {
296
296
  source: id,
297
297
  color: (_a = p.color) !== null && _a !== void 0 ? _a : {},
298
298
  opacity: (_b = p.opacity) !== null && _b !== void 0 ? _b : 1,
299
- symbologyState: (_c = p.symbologyState) !== null && _c !== void 0 ? _c : { renderType: 'Single Symbol' },
299
+ symbologyState: (_c = p.symbologyState) !== null && _c !== void 0 ? _c : { layers: [] },
300
300
  });
301
301
  },
302
302
  },
package/lib/constants.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { ProcessingCommandIDs } from '@jupytergis/schema';
2
2
  import { redoIcon, undoIcon } from '@jupyterlab/ui-components';
3
3
  import * as BaseCommandIDs from './commands/BaseCommandIDs';
4
- import { bookOpenIcon, clockIcon, geoJSONIcon, infoIcon, moundIcon, rasterIcon, vectorSquareIcon, markerIcon, } from './icons';
4
+ import { bookOpenIcon, clockIcon, geoJSONIcon, geoPackageIcon, infoIcon, moundIcon, rasterIcon, vectorSquareIcon, markerIcon, pencilSolidIcon, } from './shared/icons';
5
5
  /**
6
6
  * The command IDs.
7
7
  */
@@ -15,10 +15,15 @@ const iconObject = {
15
15
  VideoSource: { iconClass: 'fa fa-video' },
16
16
  ShapefileSource: { iconClass: 'fa fa-file' },
17
17
  RasterLayer: { icon: rasterIcon },
18
+ OpenEOTileLayer: { icon: rasterIcon },
18
19
  VectorLayer: { iconClass: 'fa fa-vector-square' },
20
+ VectorTileLayer: { iconClass: 'fa fa-vector-square' },
19
21
  HillshadeLayer: { icon: moundIcon },
22
+ GeoTiffLayer: { iconClass: 'fa fa-image' },
23
+ StacLayer: { icon: rasterIcon },
20
24
  ImageLayer: { iconClass: 'fa fa-image' },
21
25
  VideoLayer: { iconClass: 'fa fa-video' },
26
+ StorySegmentLayer: { iconClass: 'fa fa-link' },
22
27
  [CommandIDs.redo]: { icon: redoIcon },
23
28
  [CommandIDs.undo]: { icon: undoIcon },
24
29
  [CommandIDs.openLayerBrowser]: { icon: bookOpenIcon },
@@ -29,6 +34,8 @@ const iconObject = {
29
34
  [CommandIDs.openNewHillshadeDialog]: { icon: moundIcon },
30
35
  [CommandIDs.openNewImageDialog]: { iconClass: 'fa fa-image' },
31
36
  [CommandIDs.openNewVideoDialog]: { iconClass: 'fa fa-video' },
37
+ [CommandIDs.newGeoPackageVectorEntry]: { icon: geoPackageIcon },
38
+ [CommandIDs.newGeoPackageRasterEntry]: { icon: geoPackageIcon },
32
39
  [CommandIDs.openNewShapefileDialog]: { iconClass: 'fa fa-file' },
33
40
  [CommandIDs.openNewGeoTiffDialog]: { iconClass: 'fa fa-image' },
34
41
  [CommandIDs.openNewGeoParquetDialog]: { iconClass: 'fa fa-file' },
@@ -36,6 +43,7 @@ const iconObject = {
36
43
  [CommandIDs.identify]: { icon: infoIcon },
37
44
  [CommandIDs.temporalController]: { icon: clockIcon },
38
45
  [CommandIDs.addMarker]: { icon: markerIcon },
46
+ [CommandIDs.toggleDrawFeatures]: { icon: pencilSolidIcon },
39
47
  [CommandIDs.addStorySegment]: { iconClass: 'fa fa-link' },
40
48
  [CommandIDs.toggleStoryPresentationMode]: {
41
49
  iconClass: 'fa fa-book jgis-icon-adjust',
@@ -1,5 +1,5 @@
1
1
  import React, { Component } from 'react';
2
- import Annotation from "../annotations/components/Annotation";
2
+ import Annotation from './components/Annotation';
3
3
  export class AnnotationsPanel extends Component {
4
4
  constructor(props) {
5
5
  var _a, _b;
@@ -1,3 +1,4 @@
1
1
  export * from './model';
2
2
  export * from './components/Annotation';
3
3
  export * from './components/AnnotationFloater';
4
+ export * from './AnnotationsPanel';
@@ -1,3 +1,4 @@
1
1
  export * from './model';
2
2
  export * from './components/Annotation';
3
3
  export * from './components/AnnotationFloater';
4
+ export * from './AnnotationsPanel';
@@ -1,7 +1,7 @@
1
1
  import { ConsolePanel } from '@jupyterlab/console';
2
2
  import { closeIcon, CommandToolbarButton, expandIcon, Toolbar, } from '@jupyterlab/ui-components';
3
3
  import { BoxPanel } from '@lumino/widgets';
4
- import { debounce } from "../tools";
4
+ import { debounce } from "../../tools";
5
5
  export class ConsoleView extends BoxPanel {
6
6
  constructor(options) {
7
7
  super({ direction: 'top-to-bottom' });
@@ -1,7 +1,7 @@
1
1
  import { Button } from '@jupyterlab/ui-components';
2
2
  import { cloneDeep } from 'lodash';
3
3
  import React, { useEffect, useRef, useState } from 'react';
4
- import { useOkSignal } from "../../dialogs/symbology/hooks/useOkSignal";
4
+ import { useOkSignal } from "../layers/symbology/hooks/useOkSignal";
5
5
  import { debounce, loadFile } from "../../tools";
6
6
  import FilterRow from './FilterRow';
7
7
  const FilterComponent = ({ model, okSignalPromise, }) => {
@@ -19,7 +19,7 @@ const FilterComponent = ({ model, okSignalPromise, }) => {
19
19
  }
20
20
  }, []);
21
21
  useEffect(() => {
22
- const handleClientStateChanged = () => {
22
+ const handleSelectedChanged = () => {
23
23
  var _a, _b, _c, _d;
24
24
  if (!((_b = (_a = model === null || model === void 0 ? void 0 : model.localState) === null || _a === void 0 ? void 0 : _a.selected) === null || _b === void 0 ? void 0 : _b.value)) {
25
25
  return;
@@ -40,12 +40,12 @@ const FilterComponent = ({ model, okSignalPromise, }) => {
40
40
  buildFilterDebounce(currentLayer);
41
41
  }
42
42
  };
43
- model === null || model === void 0 ? void 0 : model.clientStateChanged.connect(handleClientStateChanged);
43
+ model === null || model === void 0 ? void 0 : model.selectedChanged.connect(handleSelectedChanged);
44
44
  // Want to rebuild filter object when zoom changes to get values for that zoom level
45
45
  // This is because the filtering inputs may depend on the currently visible features
46
46
  model === null || model === void 0 ? void 0 : model.sharedOptionsChanged.connect(handleSharedOptionsChanged);
47
47
  return () => {
48
- model === null || model === void 0 ? void 0 : model.clientStateChanged.disconnect(handleClientStateChanged);
48
+ model === null || model === void 0 ? void 0 : model.selectedChanged.disconnect(handleSelectedChanged);
49
49
  model === null || model === void 0 ? void 0 : model.sharedOptionsChanged.disconnect(handleSharedOptionsChanged);
50
50
  };
51
51
  }, [model]);
@@ -1,9 +1,10 @@
1
+ import { IJGISFilterItem } from '@jupytergis/schema';
1
2
  import React from 'react';
2
3
  declare const FilterRow: React.FC<{
3
4
  index: number;
4
5
  features: Record<string, Set<string | number>>;
5
- filterRows: any;
6
- setFilterRows: any;
6
+ filterRows: IJGISFilterItem[];
7
+ setFilterRows: React.Dispatch<React.SetStateAction<IJGISFilterItem[]>>;
7
8
  deleteRow: () => void;
8
9
  }>;
9
10
  export default FilterRow;
@@ -44,7 +44,8 @@ const FilterRow = ({ index, features, filterRows, setFilterRows, deleteRow }) =>
44
44
  };
45
45
  const handleOperatorChange = (event) => {
46
46
  const newFilters = [...filterRows];
47
- newFilters[index].operator = event.target.value;
47
+ newFilters[index].operator = event.target
48
+ .value;
48
49
  setFilterRows(newFilters);
49
50
  };
50
51
  const handleValueChange = (event) => {
@@ -1,7 +1,9 @@
1
1
  import { IJupyterGISModel } from '@jupytergis/schema';
2
2
  import React from 'react';
3
+ import { PatchGeoJSONFeatureProperties } from './types/editorTypes';
3
4
  interface IIdentifyComponentProps {
4
5
  model: IJupyterGISModel;
6
+ patchGeoJSONFeatureProperties?: PatchGeoJSONFeatureProperties;
5
7
  }
6
8
  export declare const IdentifyPanelComponent: React.FC<IIdentifyComponentProps>;
7
9
  export {};