@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.
- package/lib/commands/BaseCommandIDs.d.ts +5 -0
- package/lib/commands/BaseCommandIDs.js +5 -0
- package/lib/commands/index.js +218 -47
- package/lib/commands/operationCommands.js +2 -2
- package/lib/constants.js +5 -1
- package/lib/{panelview/annotationPanel.js → features/annotations/AnnotationsPanel.js} +1 -1
- package/lib/{annotations → features/annotations}/index.d.ts +1 -0
- package/lib/{annotations → features/annotations}/index.js +1 -0
- package/lib/{console → features/console}/consoleview.js +1 -1
- package/lib/{panelview/filter-panel → features/filter}/Filter.js +4 -4
- package/lib/{panelview/filter-panel → features/filter}/FilterRow.d.ts +3 -2
- package/lib/{panelview/filter-panel → features/filter}/FilterRow.js +2 -1
- package/lib/{panelview/identify-panel → features/identify}/IdentifyPanel.d.ts +2 -0
- package/lib/features/identify/IdentifyPanel.js +102 -0
- package/lib/features/identify/components/FeatureCard.d.ts +17 -0
- package/lib/features/identify/components/FeatureCard.js +26 -0
- package/lib/features/identify/components/FeatureCardHeader.d.ts +11 -0
- package/lib/features/identify/components/FeatureCardHeader.js +30 -0
- package/lib/features/identify/components/FeatureFloater.d.ts +7 -0
- package/lib/features/identify/components/FeatureFloater.js +19 -0
- package/lib/features/identify/components/FeaturePropertyList.d.ts +11 -0
- package/lib/features/identify/components/FeaturePropertyList.js +18 -0
- package/lib/features/identify/components/FeatureRow.d.ts +13 -0
- package/lib/features/identify/components/FeatureRow.js +25 -0
- package/lib/features/identify/components/PropertyEditors.d.ts +44 -0
- package/lib/features/identify/components/PropertyEditors.js +56 -0
- package/lib/features/identify/hooks/useIdentifyPropertyEditor.d.ts +11 -0
- package/lib/features/identify/hooks/useIdentifyPropertyEditor.js +132 -0
- package/lib/features/identify/types/editorTypes.d.ts +21 -0
- package/lib/features/identify/utils/getFeatureIdentifier.d.ts +5 -0
- package/lib/features/identify/utils/getFeatureIdentifier.js +14 -0
- package/lib/features/identify/utils/highlightLayer.d.ts +11 -0
- package/lib/features/identify/utils/highlightLayer.js +57 -0
- package/lib/features/identify/utils/highlightStyle.d.ts +7 -0
- package/lib/features/identify/utils/highlightStyle.js +40 -0
- package/lib/{dialogs/layerBrowserDialog.js → features/layer-browser/index.js} +2 -2
- package/lib/features/layers/forms/layer/geoTiffLayerForm.d.ts +3 -0
- package/lib/{formbuilder/objectform/layer/webGlLayerForm.js → features/layers/forms/layer/geoTiffLayerForm.js} +5 -5
- package/lib/{formbuilder/objectform → features/layers/forms}/layer/heatmapLayerForm.js +4 -4
- package/lib/{formbuilder/objectform → features/layers/forms}/layer/hillshadeLayerForm.js +4 -4
- package/lib/{formbuilder/objectform → features/layers/forms}/layer/index.d.ts +1 -1
- package/lib/{formbuilder/objectform → features/layers/forms}/layer/index.js +1 -1
- package/lib/{formbuilder/objectform → features/layers/forms}/layer/layerform.d.ts +1 -1
- package/lib/{formbuilder/objectform → features/layers/forms}/layer/layerform.js +4 -4
- package/lib/features/layers/forms/layer/storySegmentLayerForm.js +150 -0
- package/lib/{formbuilder/objectform → features/layers/forms}/layer/vectorlayerform.js +4 -4
- package/lib/{formbuilder/objectform → features/layers/forms}/source/geojsonsource.js +5 -5
- package/lib/features/layers/forms/source/geopackagesource.d.ts +3 -0
- package/lib/features/layers/forms/source/geopackagesource.js +93 -0
- package/lib/{formbuilder/objectform → features/layers/forms}/source/geotiffsource.js +5 -5
- package/lib/{formbuilder/objectform → features/layers/forms}/source/index.d.ts +1 -0
- package/lib/{formbuilder/objectform → features/layers/forms}/source/index.js +1 -0
- package/lib/{formbuilder/objectform → features/layers/forms}/source/pathbasedsource.js +5 -5
- package/lib/{formbuilder/objectform → features/layers/forms}/source/sourceform.d.ts +1 -1
- package/lib/{formbuilder/objectform → features/layers/forms}/source/sourceform.js +4 -4
- package/lib/{formbuilder/objectform → features/layers/forms}/source/tilesourceform.js +4 -4
- package/lib/{formbuilder/objectform → features/layers/forms}/source/wmsTileSource.d.ts +1 -1
- package/lib/{formbuilder/objectform → features/layers/forms}/source/wmsTileSource.js +6 -6
- package/lib/{dialogs → features/layers}/layerCreationFormDialog.d.ts +1 -1
- package/lib/{dialogs → features/layers}/layerCreationFormDialog.js +1 -1
- package/lib/features/layers/symbology/Grammar.d.ts +11 -0
- package/lib/features/layers/symbology/Grammar.js +235 -0
- package/lib/{dialogs/symbology/vector_layer/types → features/layers/symbology}/Heatmap.d.ts +1 -1
- package/lib/{dialogs/symbology/vector_layer/types → features/layers/symbology}/Heatmap.js +30 -10
- package/lib/{dialogs → features/layers}/symbology/classificationModes.d.ts +6 -6
- package/lib/{dialogs → features/layers}/symbology/classificationModes.js +48 -44
- package/lib/{dialogs → features/layers}/symbology/colorRampUtils.d.ts +1 -0
- package/lib/{dialogs → features/layers}/symbology/colorRampUtils.js +12 -1
- package/lib/features/layers/symbology/components/MappingRow.d.ts +40 -0
- package/lib/features/layers/symbology/components/MappingRow.js +516 -0
- package/lib/features/layers/symbology/components/NumericInput.d.ts +20 -0
- package/lib/features/layers/symbology/components/NumericInput.js +44 -0
- package/lib/features/layers/symbology/components/ScaleEditor.d.ts +33 -0
- package/lib/features/layers/symbology/components/ScaleEditor.js +221 -0
- package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ColorRampControls.d.ts +1 -1
- package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ColorRampControls.js +3 -2
- package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ColorRampSelector.d.ts +2 -1
- package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ColorRampSelector.js +6 -1
- package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ModeSelectRow.d.ts +1 -1
- package/lib/{dialogs → features/layers}/symbology/components/color_ramp/RgbaColorPicker.js +39 -9
- package/lib/{dialogs → features/layers}/symbology/components/color_stops/StopRow.d.ts +1 -1
- package/lib/{dialogs → features/layers}/symbology/components/color_stops/StopRow.js +1 -1
- package/lib/features/layers/symbology/grammarToOLLayer.d.ts +27 -0
- package/lib/features/layers/symbology/grammarToOLLayer.js +145 -0
- package/lib/features/layers/symbology/grammarToOLStyle.d.ts +32 -0
- package/lib/features/layers/symbology/grammarToOLStyle.js +467 -0
- package/lib/{dialogs → features/layers}/symbology/hooks/useGetBandInfo.d.ts +1 -1
- package/lib/{dialogs → features/layers}/symbology/hooks/useGetBandInfo.js +1 -1
- package/lib/{dialogs → features/layers}/symbology/hooks/useGetProperties.js +1 -1
- package/lib/{dialogs → features/layers}/symbology/hooks/useGetSymbology.js +4 -2
- package/lib/features/layers/symbology/styleBuilder.d.ts +21 -0
- package/lib/features/layers/symbology/styleBuilder.js +145 -0
- package/lib/{dialogs → features/layers}/symbology/symbologyDialog.d.ts +1 -1
- package/lib/{dialogs → features/layers}/symbology/symbologyDialog.js +12 -12
- package/lib/{dialogs → features/layers}/symbology/symbologyUtils.d.ts +18 -10
- package/lib/{dialogs → features/layers}/symbology/symbologyUtils.js +0 -84
- package/lib/{panelview/objectproperties.d.ts → features/objectproperties/index.d.ts} +1 -1
- package/lib/{panelview/objectproperties.js → features/objectproperties/index.js} +5 -10
- package/lib/{dialogs → features/processing}/ProcessingFormDialog.d.ts +1 -1
- package/lib/{dialogs → features/processing}/ProcessingFormDialog.js +28 -14
- package/lib/features/processing/forms/MapExtentToggle.d.ts +13 -0
- package/lib/features/processing/forms/MapExtentToggle.js +20 -0
- package/lib/features/processing/forms/clipRasterByExtentForm.d.ts +10 -0
- package/lib/features/processing/forms/clipRasterByExtentForm.js +99 -0
- package/lib/{formbuilder/objectform/process → features/processing/forms}/dissolveProcessForm.js +5 -5
- package/lib/{formbuilder/objectform → features/processing/forms}/processingForm.d.ts +1 -1
- package/lib/{formbuilder/objectform → features/processing/forms}/processingForm.js +6 -6
- package/lib/features/processing/forms/rasterizeForm.d.ts +10 -0
- package/lib/features/processing/forms/rasterizeForm.js +75 -0
- package/lib/features/processing/forms/useMapExtent.d.ts +22 -0
- package/lib/features/processing/forms/useMapExtent.js +57 -0
- package/lib/{processing → features/processing}/index.d.ts +19 -2
- package/lib/features/processing/index.js +1246 -0
- package/lib/{processing → features/processing}/processingCommands.d.ts +1 -1
- package/lib/features/processing/processingCommands.js +168 -0
- package/lib/features/processing/serverProcessing.d.ts +51 -0
- package/lib/features/processing/serverProcessing.js +99 -0
- package/lib/{stacBrowser → features/stac-browser}/components/StacPanel.js +2 -2
- package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/QueryableComboBox.js +5 -5
- package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/QueryableRow.js +1 -1
- package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/StacFilterExtensionPanel.js +2 -2
- package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/StacQueryableFilters.js +1 -1
- package/lib/{stacBrowser → features/stac-browser}/components/geodes/StacFilterSection.js +3 -3
- package/lib/{stacBrowser → features/stac-browser}/components/shared/StacPanelResults.js +3 -3
- package/lib/{stacBrowser → features/stac-browser}/components/shared/StacSpatialExtent.js +1 -1
- package/lib/{stacBrowser → features/stac-browser}/components/shared/StacTemporalExtent.js +1 -1
- package/lib/{stacBrowser → features/stac-browser}/context/StacResultsContext.js +2 -2
- package/lib/{stacBrowser → features/stac-browser}/hooks/useGeodesSearch.js +2 -2
- package/lib/{stacBrowser → features/stac-browser}/hooks/useStacFilterExtension.js +3 -3
- package/lib/{stacBrowser → features/stac-browser}/hooks/useStacSearch.js +1 -1
- package/lib/features/stac-browser/types/types.js +1 -0
- package/lib/{panelview/story-maps → features/story}/SpectaPanel.d.ts +4 -1
- package/lib/{panelview/story-maps → features/story}/SpectaPanel.js +3 -4
- package/lib/{panelview/story-maps → features/story}/StoryEditorPanel.js +1 -1
- package/lib/{panelview/story-maps → features/story}/StoryViewerPanel.d.ts +12 -11
- package/lib/features/story/StoryViewerPanel.js +64 -0
- package/lib/features/story/__tests__/fixtures/listStoryTestItems.d.ts +9 -0
- package/lib/features/story/__tests__/fixtures/listStoryTestItems.js +21 -0
- package/lib/features/story/components/ListStoryMapOverlayPanel.d.ts +10 -0
- package/lib/features/story/components/ListStoryMapOverlayPanel.js +11 -0
- package/lib/features/story/components/ListStoryMarkdownMeasurePane.d.ts +11 -0
- package/lib/features/story/components/ListStoryMarkdownMeasurePane.js +55 -0
- package/lib/features/story/components/ListStoryOverlayMarkdown.d.ts +15 -0
- package/lib/features/story/components/ListStoryOverlayMarkdown.js +93 -0
- package/lib/features/story/components/ListStoryStageOverlay.d.ts +12 -0
- package/lib/features/story/components/ListStoryStageOverlay.js +132 -0
- package/lib/features/story/components/ListStoryVirtualScrollTrack.d.ts +6 -0
- package/lib/features/story/components/ListStoryVirtualScrollTrack.js +7 -0
- package/lib/{panelview/story-maps → features/story}/components/SpectaDesktopView.d.ts +4 -2
- package/lib/features/story/components/SpectaDesktopView.js +67 -0
- package/lib/{panelview/story-maps → features/story}/components/SpectaMobileView.d.ts +2 -4
- package/lib/{panelview/story-maps → features/story}/components/SpectaMobileView.js +3 -3
- package/lib/features/story/components/SpectaSingleModeContent.d.ts +18 -0
- package/lib/features/story/components/SpectaSingleModeContent.js +8 -0
- package/lib/features/story/context/ListStoryScrollTrackContext.d.ts +15 -0
- package/lib/features/story/context/ListStoryScrollTrackContext.js +142 -0
- package/lib/features/story/hooks/useCurrentSegmentIndex.d.ts +3 -0
- package/lib/features/story/hooks/useCurrentSegmentIndex.js +17 -0
- package/lib/features/story/hooks/useListStoryScroll.d.ts +15 -0
- package/lib/features/story/hooks/useListStoryScroll.js +107 -0
- package/lib/features/story/hooks/useQueuedMarkdownHeightMeasure.d.ts +19 -0
- package/lib/features/story/hooks/useQueuedMarkdownHeightMeasure.js +56 -0
- package/lib/features/story/hooks/useStoryImagePreload.d.ts +1 -0
- package/lib/features/story/hooks/useStoryImagePreload.js +24 -0
- package/lib/{panelview/story-maps → features/story}/hooks/useStoryMap.d.ts +2 -7
- package/lib/{panelview/story-maps → features/story}/hooks/useStoryMap.js +20 -44
- package/lib/features/story/hooks/useStoryScrollState.d.ts +21 -0
- package/lib/features/story/hooks/useStoryScrollState.js +39 -0
- package/lib/features/story/hooks/useStorySegmentSync.d.ts +8 -0
- package/lib/features/story/hooks/useStorySegmentSync.js +51 -0
- package/lib/features/story/types/types.d.ts +38 -0
- package/lib/features/story/types/types.js +1 -0
- package/lib/features/story/utils/computeListStoryScrollState.d.ts +12 -0
- package/lib/features/story/utils/computeListStoryScrollState.js +70 -0
- package/lib/features/story/utils/listStoryMeasureQueue.d.ts +11 -0
- package/lib/features/story/utils/listStoryMeasureQueue.js +14 -0
- package/lib/features/story/utils/listStoryScrollTrack.d.ts +17 -0
- package/lib/features/story/utils/listStoryScrollTrack.js +72 -0
- package/lib/features/story/utils/spectaPresentation.d.ts +9 -0
- package/lib/features/story/utils/spectaPresentation.js +37 -0
- package/lib/features/story/utils/storySegmentViewItems.d.ts +5 -0
- package/lib/features/story/utils/storySegmentViewItems.js +30 -0
- package/lib/index.d.ts +11 -9
- package/lib/index.js +11 -9
- package/lib/keybindings.json +5 -0
- package/lib/mainview/OpenEOTileLayer.d.ts +49 -0
- package/lib/mainview/OpenEOTileLayer.js +179 -0
- package/lib/mainview/TemporalSlider.js +11 -9
- package/lib/mainview/geoJsonFeaturePatch.d.ts +9 -0
- package/lib/mainview/geoJsonFeaturePatch.js +43 -0
- package/lib/mainview/mainView.d.ts +90 -7
- package/lib/mainview/mainView.js +1196 -586
- package/lib/mainview/mainviewwidget.d.ts +5 -1
- package/lib/mainview/mainviewwidget.js +4 -2
- package/lib/shared/components/Button.d.ts +1 -1
- package/lib/shared/components/DropdownMenu.d.ts +1 -0
- package/lib/shared/components/DropdownMenu.js +3 -2
- package/lib/shared/components/NativeSelect.d.ts +8 -0
- package/lib/shared/components/NativeSelect.js +29 -0
- package/lib/shared/components/Tabs.d.ts +3 -3
- package/lib/shared/components/Tabs.js +5 -5
- package/lib/{formbuilder → shared/formbuilder}/creationform.js +71 -4
- package/lib/{formbuilder → shared/formbuilder}/editform.js +1 -1
- package/lib/{formbuilder → shared/formbuilder}/formselectors.d.ts +2 -2
- package/lib/{formbuilder → shared/formbuilder}/formselectors.js +10 -4
- package/lib/shared/formbuilder/index.d.ts +4 -0
- package/lib/shared/formbuilder/index.js +4 -0
- package/lib/{formbuilder → shared/formbuilder}/objectform/SchemaForm.d.ts +1 -1
- package/lib/{formbuilder → shared/formbuilder}/objectform/StoryEditorForm.d.ts +1 -1
- package/lib/{formbuilder → shared/formbuilder}/objectform/StoryEditorForm.js +1 -1
- package/lib/{formbuilder → shared/formbuilder}/objectform/components/LayerSelect.js +1 -1
- package/lib/{formbuilder → shared/formbuilder}/objectform/components/SegmentFormSymbology.js +4 -4
- package/lib/{formbuilder → shared/formbuilder}/objectform/components/SourcePropertiesField.js +1 -1
- package/lib/{formbuilder → shared/formbuilder}/objectform/components/StorySegmentReset.js +1 -1
- package/lib/{formbuilder → shared/formbuilder}/objectform/components/WmsTileSourceUrlInput.js +4 -4
- package/lib/{formbuilder → shared/formbuilder}/objectform/fileselectorwidget.js +8 -1
- package/lib/{formbuilder → shared/formbuilder}/objectform/schemaUtils.d.ts +3 -1
- package/lib/{formbuilder → shared/formbuilder}/objectform/schemaUtils.js +11 -0
- package/lib/{formbuilder → shared/formbuilder}/objectform/useSchemaFormState.d.ts +1 -1
- package/lib/{formbuilder → shared/formbuilder}/objectform/useSchemaFormState.js +1 -1
- package/lib/{icons.d.ts → shared/icons.d.ts} +2 -0
- package/lib/{icons.js → shared/icons.js} +28 -18
- package/lib/tools.d.ts +2 -0
- package/lib/tools.js +138 -4
- package/lib/types.d.ts +6 -1
- package/lib/types.js +6 -1
- package/lib/{menus.js → workspace/menus.js} +10 -2
- package/lib/workspace/panels/components/TabbedPanel.d.ts +17 -0
- package/lib/workspace/panels/components/TabbedPanel.js +19 -0
- package/lib/{panelview → workspace/panels}/components/layers.js +63 -18
- package/lib/workspace/panels/components/legendItem.js +680 -0
- package/lib/workspace/panels/hooks/useLayerTree.d.ts +19 -0
- package/lib/workspace/panels/hooks/useLayerTree.js +103 -0
- package/lib/workspace/panels/hooks/useRightPanelOptions.d.ts +27 -0
- package/lib/workspace/panels/hooks/useRightPanelOptions.js +72 -0
- package/lib/workspace/panels/hooks/useUIState.d.ts +2 -0
- package/lib/workspace/panels/hooks/useUIState.js +25 -0
- package/lib/{panelview → workspace/panels}/index.d.ts +1 -1
- package/lib/{panelview → workspace/panels}/index.js +1 -1
- package/lib/{panelview → workspace/panels}/leftpanel.d.ts +1 -1
- package/lib/workspace/panels/leftpanel.js +70 -0
- package/lib/{panelview/rightpanel.d.ts → workspace/panels/mergedpanel.d.ts} +6 -5
- package/lib/workspace/panels/mergedpanel.js +166 -0
- package/lib/workspace/panels/rightpanel.d.ts +25 -0
- package/lib/{panelview → workspace/panels}/rightpanel.js +53 -63
- package/lib/{statusbar → workspace/statusbar}/StatusBar.js +5 -4
- package/lib/{toolbar → workspace/toolbar}/widget.d.ts +2 -0
- package/lib/{toolbar → workspace/toolbar}/widget.js +33 -5
- package/lib/{widget.d.ts → workspace/widget.d.ts} +7 -5
- package/lib/{widget.js → workspace/widget.js} +16 -7
- package/package.json +16 -4
- package/style/base.css +109 -1
- package/style/icons/geopackage.svg +95 -0
- package/style/icons/pencil_solid.svg +7 -0
- package/style/identify.css +95 -0
- package/style/layerBrowser.css +28 -0
- package/style/leftPanel.css +25 -0
- package/style/shared/button.css +12 -0
- package/style/shared/dropdownMenu.css +9 -0
- package/style/shared/nativeSelect.css +75 -0
- package/style/shared/tabs.css +1 -1
- package/style/spectaProgressBar.css +0 -1
- package/style/storyPanel.css +140 -9
- package/style/storySpectaArticleOverlay.css +129 -0
- package/style/symbologyDialog.css +285 -27
- package/lib/dialogs/symbology/tiff_layer/TiffRendering.d.ts +0 -4
- package/lib/dialogs/symbology/tiff_layer/TiffRendering.js +0 -42
- package/lib/dialogs/symbology/tiff_layer/components/BandRow.d.ts +0 -23
- package/lib/dialogs/symbology/tiff_layer/components/BandRow.js +0 -59
- package/lib/dialogs/symbology/tiff_layer/types/MultibandColor.d.ts +0 -4
- package/lib/dialogs/symbology/tiff_layer/types/MultibandColor.js +0 -92
- package/lib/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.d.ts +0 -5
- package/lib/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.js +0 -313
- package/lib/dialogs/symbology/vector_layer/VectorRendering.d.ts +0 -4
- package/lib/dialogs/symbology/vector_layer/VectorRendering.js +0 -112
- package/lib/dialogs/symbology/vector_layer/components/ValueSelect.d.ts +0 -8
- package/lib/dialogs/symbology/vector_layer/components/ValueSelect.js +0 -9
- package/lib/dialogs/symbology/vector_layer/types/Canonical.d.ts +0 -4
- package/lib/dialogs/symbology/vector_layer/types/Canonical.js +0 -130
- package/lib/dialogs/symbology/vector_layer/types/Categorized.d.ts +0 -4
- package/lib/dialogs/symbology/vector_layer/types/Categorized.js +0 -243
- package/lib/dialogs/symbology/vector_layer/types/Graduated.d.ts +0 -4
- package/lib/dialogs/symbology/vector_layer/types/Graduated.js +0 -362
- package/lib/dialogs/symbology/vector_layer/types/SimpleSymbol.d.ts +0 -4
- package/lib/dialogs/symbology/vector_layer/types/SimpleSymbol.js +0 -120
- package/lib/formbuilder/index.d.ts +0 -4
- package/lib/formbuilder/index.js +0 -4
- package/lib/formbuilder/objectform/layer/storySegmentLayerForm.js +0 -95
- package/lib/formbuilder/objectform/layer/webGlLayerForm.d.ts +0 -3
- package/lib/formbuilder/objectform/process/index.d.ts +0 -1
- package/lib/formbuilder/objectform/process/index.js +0 -1
- package/lib/panelview/components/legendItem.js +0 -210
- package/lib/panelview/identify-panel/IdentifyPanel.js +0 -102
- package/lib/panelview/leftpanel.js +0 -139
- package/lib/panelview/story-maps/StoryViewerPanel.js +0 -116
- package/lib/panelview/story-maps/components/SpectaDesktopView.js +0 -49
- package/lib/processing/index.js +0 -200
- package/lib/processing/processingCommands.js +0 -67
- /package/lib/{panelview/annotationPanel.d.ts → features/annotations/AnnotationsPanel.d.ts} +0 -0
- /package/lib/{annotations → features/annotations}/components/Annotation.d.ts +0 -0
- /package/lib/{annotations → features/annotations}/components/Annotation.js +0 -0
- /package/lib/{annotations → features/annotations}/components/AnnotationFloater.d.ts +0 -0
- /package/lib/{annotations → features/annotations}/components/AnnotationFloater.js +0 -0
- /package/lib/{annotations → features/annotations}/components/Message.d.ts +0 -0
- /package/lib/{annotations → features/annotations}/components/Message.js +0 -0
- /package/lib/{annotations → features/annotations}/model.d.ts +0 -0
- /package/lib/{annotations → features/annotations}/model.js +0 -0
- /package/lib/{console → features/console}/consoleview.d.ts +0 -0
- /package/lib/{console → features/console}/index.d.ts +0 -0
- /package/lib/{console → features/console}/index.js +0 -0
- /package/lib/{panelview/filter-panel → features/filter}/Filter.d.ts +0 -0
- /package/lib/{stacBrowser/types/types.js → features/identify/types/editorTypes.js} +0 -0
- /package/lib/{dialogs/layerBrowserDialog.d.ts → features/layer-browser/index.d.ts} +0 -0
- /package/lib/{formbuilder/objectform → features/layers/forms}/layer/heatmapLayerForm.d.ts +0 -0
- /package/lib/{formbuilder/objectform → features/layers/forms}/layer/hillshadeLayerForm.d.ts +0 -0
- /package/lib/{formbuilder/objectform → features/layers/forms}/layer/storySegmentLayerForm.d.ts +0 -0
- /package/lib/{formbuilder/objectform → features/layers/forms}/layer/vectorlayerform.d.ts +0 -0
- /package/lib/{formbuilder/objectform → features/layers/forms}/source/geojsonsource.d.ts +0 -0
- /package/lib/{formbuilder/objectform → features/layers/forms}/source/geotiffsource.d.ts +0 -0
- /package/lib/{formbuilder/objectform → features/layers/forms}/source/pathbasedsource.d.ts +0 -0
- /package/lib/{formbuilder/objectform → features/layers/forms}/source/tilesourceform.d.ts +0 -0
- /package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ColorRampSelectorEntry.d.ts +0 -0
- /package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ColorRampSelectorEntry.js +0 -0
- /package/lib/{dialogs → features/layers}/symbology/components/color_ramp/ModeSelectRow.js +0 -0
- /package/lib/{dialogs → features/layers}/symbology/components/color_ramp/RgbaColorPicker.d.ts +0 -0
- /package/lib/{dialogs → features/layers}/symbology/components/color_ramp/cmocean.json +0 -0
- /package/lib/{dialogs → features/layers}/symbology/components/color_stops/StopContainer.d.ts +0 -0
- /package/lib/{dialogs → features/layers}/symbology/components/color_stops/StopContainer.js +0 -0
- /package/lib/{dialogs → features/layers}/symbology/hooks/useEffectiveSymbologyParams.d.ts +0 -0
- /package/lib/{dialogs → features/layers}/symbology/hooks/useEffectiveSymbologyParams.js +0 -0
- /package/lib/{dialogs → features/layers}/symbology/hooks/useGetProperties.d.ts +0 -0
- /package/lib/{dialogs → features/layers}/symbology/hooks/useGetSymbology.d.ts +0 -0
- /package/lib/{dialogs → features/layers}/symbology/hooks/useOkSignal.d.ts +0 -0
- /package/lib/{dialogs → features/layers}/symbology/hooks/useOkSignal.js +0 -0
- /package/lib/{formbuilder/objectform/process → features/processing/forms}/dissolveProcessForm.d.ts +0 -0
- /package/lib/{processing → features/processing}/processingFormToParam.d.ts +0 -0
- /package/lib/{processing → features/processing}/processingFormToParam.js +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/components/StacPanel.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/QueryableComboBox.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/QueryableRow.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/StacFilterExtensionPanel.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/components/filter-extension/StacQueryableFilters.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/components/geodes/StacFilterSection.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/components/geodes/StacGeodesFilterPanel.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/components/geodes/StacGeodesFilterPanel.js +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/components/shared/StacPanelResults.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/components/shared/StacSpatialExtent.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/components/shared/StacTemporalExtent.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/constants.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/constants.js +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/context/StacResultsContext.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/hooks/useGeodesSearch.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/hooks/useStacFilterExtension.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/hooks/useStacSearch.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/index.d.ts +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/index.js +0 -0
- /package/lib/{stacBrowser → features/stac-browser}/types/types.d.ts +0 -0
- /package/lib/{panelview/story-maps → features/story}/StoryEditorPanel.d.ts +0 -0
- /package/lib/{panelview/story-maps → features/story}/components/PreviewModeSwitch.d.ts +0 -0
- /package/lib/{panelview/story-maps → features/story}/components/PreviewModeSwitch.js +0 -0
- /package/lib/{panelview/story-maps → features/story}/components/StoryContentSection.d.ts +0 -0
- /package/lib/{panelview/story-maps → features/story}/components/StoryContentSection.js +0 -0
- /package/lib/{panelview/story-maps → features/story}/components/StoryImageSection.d.ts +0 -0
- /package/lib/{panelview/story-maps → features/story}/components/StoryImageSection.js +0 -0
- /package/lib/{panelview/story-maps → features/story}/components/StoryNavBar.d.ts +0 -0
- /package/lib/{panelview/story-maps → features/story}/components/StoryNavBar.js +0 -0
- /package/lib/{panelview/story-maps → features/story}/components/StorySubtitleSection.d.ts +0 -0
- /package/lib/{panelview/story-maps → features/story}/components/StorySubtitleSection.js +0 -0
- /package/lib/{panelview/story-maps → features/story}/components/StoryTitleSection.d.ts +0 -0
- /package/lib/{panelview/story-maps → features/story}/components/StoryTitleSection.js +0 -0
- /package/lib/{formbuilder → shared/formbuilder}/creationform.d.ts +0 -0
- /package/lib/{formbuilder → shared/formbuilder}/editform.d.ts +0 -0
- /package/lib/{formbuilder → shared/formbuilder}/objectform/SchemaForm.js +0 -0
- /package/lib/{formbuilder → shared/formbuilder}/objectform/components/LayerSelect.d.ts +0 -0
- /package/lib/{formbuilder → shared/formbuilder}/objectform/components/OpacitySlider.d.ts +0 -0
- /package/lib/{formbuilder → shared/formbuilder}/objectform/components/OpacitySlider.js +0 -0
- /package/lib/{formbuilder → shared/formbuilder}/objectform/components/SegmentFormSymbology.d.ts +0 -0
- /package/lib/{formbuilder → shared/formbuilder}/objectform/components/SourcePropertiesField.d.ts +0 -0
- /package/lib/{formbuilder → shared/formbuilder}/objectform/components/StorySegmentReset.d.ts +0 -0
- /package/lib/{formbuilder → shared/formbuilder}/objectform/components/WmsTileSourceUrlInput.d.ts +0 -0
- /package/lib/{formbuilder → shared/formbuilder}/objectform/fileselectorwidget.d.ts +0 -0
- /package/lib/{store.d.ts → shared/store.d.ts} +0 -0
- /package/lib/{store.js → shared/store.js} +0 -0
- /package/lib/{menus.d.ts → workspace/menus.d.ts} +0 -0
- /package/lib/{panelview → workspace/panels}/components/layers.d.ts +0 -0
- /package/lib/{panelview → workspace/panels}/components/legendItem.d.ts +0 -0
- /package/lib/{panelview → workspace/panels}/header.d.ts +0 -0
- /package/lib/{panelview → workspace/panels}/header.js +0 -0
- /package/lib/{statusbar → workspace/statusbar}/SpectaPresentationProgressBar.d.ts +0 -0
- /package/lib/{statusbar → workspace/statusbar}/SpectaPresentationProgressBar.js +0 -0
- /package/lib/{statusbar → workspace/statusbar}/StatusBar.d.ts +0 -0
- /package/lib/{toolbar → workspace/toolbar}/index.d.ts +0 -0
- /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';
|
package/lib/commands/index.js
CHANGED
|
@@ -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 {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
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
|
-
'
|
|
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
|
-
'
|
|
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
|
-
|
|
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: '
|
|
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: '
|
|
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
|
-
|
|
992
|
+
if (!current) {
|
|
993
|
+
return false;
|
|
994
|
+
}
|
|
995
|
+
const open = current.model.getUIState().leftPanelOpen;
|
|
996
|
+
return open !== false;
|
|
969
997
|
},
|
|
970
|
-
execute:
|
|
971
|
-
var _a, _b, _c;
|
|
998
|
+
execute: () => {
|
|
972
999
|
const current = tracker.currentWidget;
|
|
973
1000
|
if (!current) {
|
|
974
1001
|
return;
|
|
975
1002
|
}
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
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
|
-
|
|
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:
|
|
1002
|
-
var _a, _b, _c;
|
|
1054
|
+
execute: () => {
|
|
1003
1055
|
const current = tracker.currentWidget;
|
|
1004
1056
|
if (!current) {
|
|
1005
1057
|
return;
|
|
1006
1058
|
}
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
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
|
-
|
|
1014
|
-
|
|
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
|
-
|
|
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: '
|
|
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 : {
|
|
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,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 "
|
|
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 "
|
|
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
|
|
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.
|
|
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.
|
|
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:
|
|
6
|
-
setFilterRows:
|
|
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
|
|
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 {};
|