@jupytergis/base 0.15.0 → 0.16.0-alpha.0

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