@jbrowse/plugin-linear-genome-view 3.7.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/BaseLinearDisplay/SVGLegend.d.ts +6 -0
- package/esm/BaseLinearDisplay/SVGLegend.js +17 -0
- package/esm/BaseLinearDisplay/calculateSvgLegendWidth.d.ts +2 -0
- package/esm/BaseLinearDisplay/calculateSvgLegendWidth.js +11 -0
- package/esm/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +3 -3
- package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js +12 -8
- package/esm/BaseLinearDisplay/components/Block.js +2 -2
- package/esm/BaseLinearDisplay/components/BlockErrorMessage.js +2 -2
- package/esm/BaseLinearDisplay/components/BlockMsg.js +9 -2
- package/esm/BaseLinearDisplay/components/CollapseIntronsDialog/CollapseIntronsDialog.d.ts +9 -0
- package/esm/BaseLinearDisplay/components/CollapseIntronsDialog/CollapseIntronsDialog.js +42 -0
- package/esm/BaseLinearDisplay/components/CollapseIntronsDialog/TranscriptTable.d.ts +11 -0
- package/esm/BaseLinearDisplay/components/CollapseIntronsDialog/TranscriptTable.js +40 -0
- package/esm/BaseLinearDisplay/components/CollapseIntronsDialog/util.d.ts +19 -0
- package/esm/BaseLinearDisplay/components/CollapseIntronsDialog/util.js +45 -0
- package/esm/BaseLinearDisplay/components/FloatingLabels.d.ts +5 -0
- package/esm/BaseLinearDisplay/components/FloatingLabels.js +89 -0
- package/esm/BaseLinearDisplay/components/FloatingLegend.d.ts +8 -0
- package/esm/BaseLinearDisplay/components/FloatingLegend.js +43 -0
- package/esm/BaseLinearDisplay/components/LinearBlocks.d.ts +1 -1
- package/esm/BaseLinearDisplay/components/LinearBlocks.js +4 -6
- package/esm/BaseLinearDisplay/components/LoadingOverlay.d.ts +4 -0
- package/esm/BaseLinearDisplay/components/LoadingOverlay.js +49 -0
- package/esm/BaseLinearDisplay/components/MaxHeightReachedIndicator.d.ts +3 -2
- package/esm/BaseLinearDisplay/components/MaxHeightReachedIndicator.js +5 -3
- package/esm/BaseLinearDisplay/components/MenuPage.d.ts +2 -2
- package/esm/BaseLinearDisplay/components/MenuPage.js +1 -1
- package/esm/BaseLinearDisplay/components/NonBlockCanvasDisplayComponent.d.ts +19 -0
- package/esm/BaseLinearDisplay/components/NonBlockCanvasDisplayComponent.js +48 -0
- package/esm/BaseLinearDisplay/components/RenderedBlocks.d.ts +4 -1
- package/esm/BaseLinearDisplay/components/RenderedBlocks.js +4 -4
- package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.d.ts +4 -4
- package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +5 -8
- package/esm/BaseLinearDisplay/components/TooLargeMessage.js +3 -3
- package/esm/BaseLinearDisplay/components/Tooltip.d.ts +1 -0
- package/esm/BaseLinearDisplay/components/Tooltip.js +6 -6
- package/esm/BaseLinearDisplay/components/util.d.ts +21 -0
- package/esm/BaseLinearDisplay/components/util.js +116 -0
- package/esm/BaseLinearDisplay/index.d.ts +17 -8
- package/esm/BaseLinearDisplay/index.js +13 -6
- package/esm/BaseLinearDisplay/model.d.ts +954 -101
- package/esm/BaseLinearDisplay/model.js +211 -88
- package/esm/BaseLinearDisplay/models/FeatureDensityMixin.d.ts +5 -5
- package/esm/BaseLinearDisplay/models/FeatureDensityMixin.js +11 -14
- package/esm/BaseLinearDisplay/models/NonBlockCanvasDisplayMixin.d.ts +21 -0
- package/esm/BaseLinearDisplay/models/NonBlockCanvasDisplayMixin.js +46 -0
- package/esm/BaseLinearDisplay/models/TrackHeightMixin.d.ts +3 -3
- package/esm/BaseLinearDisplay/models/TrackHeightMixin.js +2 -3
- package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.d.ts +1 -1
- package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.js +2 -3
- package/esm/BaseLinearDisplay/models/calculateLabelPositions.d.ts +24 -0
- package/esm/BaseLinearDisplay/models/calculateLabelPositions.js +60 -0
- package/esm/BaseLinearDisplay/models/configSchema.d.ts +2 -2
- package/esm/BaseLinearDisplay/models/configSchema.js +2 -2
- package/esm/BaseLinearDisplay/models/renderSvg.d.ts +3 -7
- package/esm/BaseLinearDisplay/models/renderSvg.js +22 -11
- package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +37 -19
- package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js +151 -135
- package/esm/BaseLinearDisplay/models/util.d.ts +4 -4
- package/esm/BaseLinearDisplay/models/util.js +16 -13
- package/esm/BaseLinearDisplay/renderSvg.d.ts +3 -0
- package/esm/BaseLinearDisplay/renderSvg.js +59 -0
- package/esm/BaseLinearDisplay/types.d.ts +47 -0
- package/esm/BaseLinearDisplay/types.js +3 -0
- package/esm/BaseLinearDisplay/util.d.ts +15 -0
- package/esm/BaseLinearDisplay/util.js +61 -0
- package/esm/BasicTrack/configSchema.d.ts +16 -11
- package/esm/BasicTrack/index.js +1 -1
- package/esm/FeatureTrack/configSchema.d.ts +16 -11
- package/esm/FeatureTrack/index.js +1 -1
- package/esm/LaunchLinearGenomeView/index.js +12 -62
- package/esm/LinearBareDisplay/configSchema.d.ts +4 -4
- package/esm/LinearBareDisplay/configSchema.js +1 -1
- package/esm/LinearBareDisplay/index.d.ts +2 -2
- package/esm/LinearBareDisplay/index.js +5 -5
- package/esm/LinearBareDisplay/model.d.ts +957 -105
- package/esm/LinearBareDisplay/model.js +3 -6
- package/esm/LinearBasicDisplay/components/LinearBasicDisplayComponent.d.ts +5 -0
- package/esm/LinearBasicDisplay/components/LinearBasicDisplayComponent.js +9 -0
- package/esm/LinearBasicDisplay/configSchema.d.ts +4 -4
- package/esm/LinearBasicDisplay/configSchema.js +1 -1
- package/esm/LinearBasicDisplay/index.d.ts +2 -2
- package/esm/LinearBasicDisplay/index.js +6 -6
- package/esm/LinearBasicDisplay/model.d.ts +1132 -135
- package/esm/LinearBasicDisplay/model.js +116 -116
- package/esm/{LinearBasicDisplay → LinearFeatureDisplay}/components/AddFiltersDialog.js +2 -2
- package/esm/{LinearBasicDisplay → LinearFeatureDisplay}/components/SetMaxHeightDialog.js +3 -3
- package/{dist/LinearBasicDisplay → esm/LinearFeatureDisplay}/configSchema.d.ts +4 -4
- package/esm/LinearFeatureDisplay/configSchema.js +11 -0
- package/esm/LinearFeatureDisplay/index.d.ts +3 -0
- package/esm/LinearFeatureDisplay/index.js +2 -0
- package/esm/LinearFeatureDisplay/model.d.ts +1415 -0
- package/esm/LinearFeatureDisplay/model.js +265 -0
- package/esm/LinearGenomeView/SVGErrorBox.d.ts +5 -0
- package/esm/LinearGenomeView/SVGErrorBox.js +4 -0
- package/esm/LinearGenomeView/afterAttach.d.ts +5 -0
- package/esm/LinearGenomeView/afterAttach.js +95 -0
- package/esm/LinearGenomeView/components/CenterLine.js +6 -4
- package/esm/LinearGenomeView/components/Cytobands.js +4 -4
- package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +1 -1
- package/esm/LinearGenomeView/components/ExportSvgDialog.js +5 -1
- package/esm/LinearGenomeView/components/GetSequenceDialog.d.ts +8 -2
- package/esm/LinearGenomeView/components/GetSequenceDialog.js +13 -16
- package/esm/LinearGenomeView/components/Gridlines.js +18 -15
- package/esm/LinearGenomeView/components/Header.js +9 -9
- package/esm/LinearGenomeView/components/HeaderPanControls.js +2 -2
- package/esm/LinearGenomeView/components/HeaderRegionWidth.js +4 -5
- package/esm/LinearGenomeView/components/HeaderTrackSelectorButton.js +2 -2
- package/esm/LinearGenomeView/components/HeaderZoomControls.js +3 -3
- package/esm/LinearGenomeView/components/Highlight.d.ts +1 -1
- package/esm/LinearGenomeView/components/Highlight.js +6 -6
- package/esm/LinearGenomeView/components/ImportForm.d.ts +1 -1
- package/esm/LinearGenomeView/components/ImportForm.js +14 -12
- package/esm/LinearGenomeView/components/ImportFormRefNameAutocomplete.js +3 -3
- package/esm/LinearGenomeView/components/LinearGenomeView.js +7 -7
- package/esm/LinearGenomeView/components/LinearGenomeViewContainer.js +7 -8
- package/esm/LinearGenomeView/components/MiniControls.js +6 -6
- package/esm/LinearGenomeView/components/NoTracksActiveButton.js +2 -2
- package/esm/LinearGenomeView/components/OverviewHighlight.d.ts +1 -1
- package/esm/LinearGenomeView/components/OverviewHighlight.js +5 -5
- package/esm/LinearGenomeView/components/OverviewRubberband.js +4 -4
- package/esm/LinearGenomeView/components/OverviewRubberbandHoverTooltip.js +9 -5
- package/esm/LinearGenomeView/components/OverviewScalebar.js +36 -28
- package/esm/LinearGenomeView/components/OverviewScalebarPolygon.js +5 -5
- package/esm/LinearGenomeView/components/OverviewScalebarTickLabels.js +7 -7
- package/esm/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js +1 -1
- package/esm/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +1 -1
- package/esm/LinearGenomeView/components/RefNameAutocomplete/index.js +10 -10
- package/esm/LinearGenomeView/components/RegionWidthEditorDialog.d.ts +1 -1
- package/esm/LinearGenomeView/components/RegionWidthEditorDialog.js +6 -4
- package/esm/LinearGenomeView/components/Rubberband.js +9 -7
- package/esm/LinearGenomeView/components/RubberbandSpan.js +4 -5
- package/esm/LinearGenomeView/components/Scalebar.js +8 -10
- package/esm/LinearGenomeView/components/ScalebarCoordinateLabels.d.ts +1 -1
- package/esm/LinearGenomeView/components/ScalebarCoordinateLabels.js +50 -17
- package/esm/LinearGenomeView/components/ScalebarRefNameLabels.d.ts +1 -1
- package/esm/LinearGenomeView/components/ScalebarRefNameLabels.js +13 -11
- package/esm/LinearGenomeView/components/SearchBox.d.ts +1 -1
- package/esm/LinearGenomeView/components/SearchBox.js +8 -9
- package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +1 -1
- package/esm/LinearGenomeView/components/SearchResultsDialog.js +2 -2
- package/esm/LinearGenomeView/components/SearchResultsTable.d.ts +1 -1
- package/esm/LinearGenomeView/components/SearchResultsTable.js +4 -6
- package/esm/LinearGenomeView/components/SequenceSearchDialog.js +5 -5
- package/esm/LinearGenomeView/components/TrackContainer.js +25 -17
- package/esm/LinearGenomeView/components/TrackLabel.js +10 -11
- package/esm/LinearGenomeView/components/TrackLabelContainer.js +7 -8
- package/esm/LinearGenomeView/components/TrackLabelDragHandle.js +1 -1
- package/esm/LinearGenomeView/components/TrackLabelMenu.js +80 -68
- package/esm/LinearGenomeView/components/TrackRenderingContainer.d.ts +1 -2
- package/esm/LinearGenomeView/components/TrackRenderingContainer.js +5 -5
- package/esm/LinearGenomeView/components/TracksContainer.js +18 -15
- package/esm/LinearGenomeView/components/VerticalGuide.js +5 -3
- package/esm/LinearGenomeView/components/fetchSequence.d.ts +7 -2
- package/esm/LinearGenomeView/components/useRangeSelect.d.ts +27 -2
- package/esm/LinearGenomeView/components/useRangeSelect.js +19 -9
- package/esm/LinearGenomeView/components/useWheelScroll.js +22 -12
- package/esm/LinearGenomeView/components/util.d.ts +2 -13
- package/esm/LinearGenomeView/components/util.js +12 -31
- package/esm/LinearGenomeView/index.d.ts +1 -1
- package/esm/LinearGenomeView/index.js +3 -3
- package/esm/LinearGenomeView/keyboardHandler.d.ts +2 -0
- package/esm/LinearGenomeView/keyboardHandler.js +29 -0
- package/esm/LinearGenomeView/menuItems.d.ts +7 -0
- package/esm/LinearGenomeView/menuItems.js +299 -0
- package/esm/LinearGenomeView/model.d.ts +92 -89
- package/esm/LinearGenomeView/model.js +166 -414
- package/esm/LinearGenomeView/svgExportUtil.d.ts +9 -0
- package/esm/LinearGenomeView/svgExportUtil.js +6 -0
- package/{dist/LinearGenomeView/svgcomponents/SVGRegionSeparators.d.ts → esm/LinearGenomeView/svgcomponents/SVGGridlines.d.ts} +2 -2
- package/esm/LinearGenomeView/svgcomponents/SVGGridlines.js +20 -0
- package/esm/LinearGenomeView/svgcomponents/SVGHeader.js +5 -5
- package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.d.ts +4 -3
- package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +24 -12
- package/esm/LinearGenomeView/svgcomponents/SVGRuler.js +13 -5
- package/esm/LinearGenomeView/svgcomponents/SVGTracks.js +2 -2
- package/esm/LinearGenomeView/types.d.ts +5 -1
- package/esm/LinearGenomeView/util.d.ts +2 -2
- package/esm/LinearGenomeView/util.js +7 -5
- package/esm/index.d.ts +973 -107
- package/esm/index.js +37 -38
- package/esm/searchUtils.d.ts +1 -1
- package/esm/searchUtils.js +6 -4
- package/package.json +28 -33
- package/dist/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +0 -8
- package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +0 -57
- package/dist/BaseLinearDisplay/components/Block.d.ts +0 -14
- package/dist/BaseLinearDisplay/components/Block.js +0 -50
- package/dist/BaseLinearDisplay/components/BlockErrorMessage.d.ts +0 -7
- package/dist/BaseLinearDisplay/components/BlockErrorMessage.js +0 -27
- package/dist/BaseLinearDisplay/components/BlockLoadingMessage.d.ts +0 -6
- package/dist/BaseLinearDisplay/components/BlockLoadingMessage.js +0 -26
- package/dist/BaseLinearDisplay/components/BlockMsg.d.ts +0 -6
- package/dist/BaseLinearDisplay/components/BlockMsg.js +0 -22
- package/dist/BaseLinearDisplay/components/LinearBlocks.d.ts +0 -5
- package/dist/BaseLinearDisplay/components/LinearBlocks.js +0 -28
- package/dist/BaseLinearDisplay/components/MaxHeightReachedIndicator.d.ts +0 -3
- package/dist/BaseLinearDisplay/components/MaxHeightReachedIndicator.js +0 -27
- package/dist/BaseLinearDisplay/components/MenuPage.d.ts +0 -8
- package/dist/BaseLinearDisplay/components/MenuPage.js +0 -26
- package/dist/BaseLinearDisplay/components/RenderedBlocks.d.ts +0 -9
- package/dist/BaseLinearDisplay/components/RenderedBlocks.js +0 -27
- package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.d.ts +0 -11
- package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +0 -59
- package/dist/BaseLinearDisplay/components/TooLargeMessage.d.ts +0 -10
- package/dist/BaseLinearDisplay/components/TooLargeMessage.js +0 -25
- package/dist/BaseLinearDisplay/components/Tooltip.d.ts +0 -12
- package/dist/BaseLinearDisplay/components/Tooltip.js +0 -27
- package/dist/BaseLinearDisplay/components/types.d.ts +0 -1
- package/dist/BaseLinearDisplay/components/types.js +0 -2
- package/dist/BaseLinearDisplay/index.d.ts +0 -8
- package/dist/BaseLinearDisplay/index.js +0 -20
- package/dist/BaseLinearDisplay/model.d.ts +0 -324
- package/dist/BaseLinearDisplay/model.js +0 -340
- package/dist/BaseLinearDisplay/models/FeatureDensityMixin.d.ts +0 -32
- package/dist/BaseLinearDisplay/models/FeatureDensityMixin.js +0 -122
- package/dist/BaseLinearDisplay/models/TrackHeightMixin.d.ts +0 -11
- package/dist/BaseLinearDisplay/models/TrackHeightMixin.js +0 -35
- package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.d.ts +0 -2
- package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.js +0 -33
- package/dist/BaseLinearDisplay/models/configSchema.d.ts +0 -29
- package/dist/BaseLinearDisplay/models/configSchema.js +0 -35
- package/dist/BaseLinearDisplay/models/renderSvg.d.ts +0 -7
- package/dist/BaseLinearDisplay/models/renderSvg.js +0 -80
- package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +0 -78
- package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +0 -229
- package/dist/BaseLinearDisplay/models/util.d.ts +0 -22
- package/dist/BaseLinearDisplay/models/util.js +0 -45
- package/dist/BasicTrack/configSchema.d.ts +0 -80
- package/dist/BasicTrack/configSchema.js +0 -10
- package/dist/BasicTrack/index.d.ts +0 -2
- package/dist/BasicTrack/index.js +0 -18
- package/dist/FeatureTrack/configSchema.d.ts +0 -80
- package/dist/FeatureTrack/configSchema.js +0 -10
- package/dist/FeatureTrack/index.d.ts +0 -2
- package/dist/FeatureTrack/index.js +0 -19
- package/dist/LaunchLinearGenomeView/index.d.ts +0 -2
- package/dist/LaunchLinearGenomeView/index.js +0 -70
- package/dist/LinearBareDisplay/configSchema.d.ts +0 -32
- package/dist/LinearBareDisplay/configSchema.js +0 -13
- package/dist/LinearBareDisplay/index.d.ts +0 -4
- package/dist/LinearBareDisplay/index.js +0 -26
- package/dist/LinearBareDisplay/model.d.ts +0 -324
- package/dist/LinearBareDisplay/model.js +0 -38
- package/dist/LinearBasicDisplay/components/AddFiltersDialog.js +0 -61
- package/dist/LinearBasicDisplay/components/SetMaxHeightDialog.js +0 -28
- package/dist/LinearBasicDisplay/configSchema.js +0 -13
- package/dist/LinearBasicDisplay/index.d.ts +0 -4
- package/dist/LinearBasicDisplay/index.js +0 -29
- package/dist/LinearBasicDisplay/model.d.ts +0 -361
- package/dist/LinearBasicDisplay/model.js +0 -192
- package/dist/LinearGenomeView/components/CenterLine.d.ts +0 -6
- package/dist/LinearGenomeView/components/CenterLine.js +0 -38
- package/dist/LinearGenomeView/components/Cytobands.d.ts +0 -9
- package/dist/LinearGenomeView/components/Cytobands.js +0 -89
- package/dist/LinearGenomeView/components/ExportSvgDialog.d.ts +0 -7
- package/dist/LinearGenomeView/components/ExportSvgDialog.js +0 -57
- package/dist/LinearGenomeView/components/GetSequenceDialog.d.ts +0 -6
- package/dist/LinearGenomeView/components/GetSequenceDialog.js +0 -109
- package/dist/LinearGenomeView/components/Gridlines.d.ts +0 -7
- package/dist/LinearGenomeView/components/Gridlines.js +0 -70
- package/dist/LinearGenomeView/components/Header.d.ts +0 -5
- package/dist/LinearGenomeView/components/Header.js +0 -38
- package/dist/LinearGenomeView/components/HeaderPanControls.d.ts +0 -6
- package/dist/LinearGenomeView/components/HeaderPanControls.js +0 -27
- package/dist/LinearGenomeView/components/HeaderRegionWidth.d.ts +0 -5
- package/dist/LinearGenomeView/components/HeaderRegionWidth.js +0 -21
- package/dist/LinearGenomeView/components/HeaderTrackSelectorButton.d.ts +0 -5
- package/dist/LinearGenomeView/components/HeaderTrackSelectorButton.js +0 -19
- package/dist/LinearGenomeView/components/HeaderZoomControls.d.ts +0 -5
- package/dist/LinearGenomeView/components/HeaderZoomControls.js +0 -109
- package/dist/LinearGenomeView/components/Highlight.d.ts +0 -12
- package/dist/LinearGenomeView/components/Highlight.js +0 -95
- package/dist/LinearGenomeView/components/ImportForm.d.ts +0 -6
- package/dist/LinearGenomeView/components/ImportForm.js +0 -80
- package/dist/LinearGenomeView/components/ImportFormRefNameAutocomplete.d.ts +0 -11
- package/dist/LinearGenomeView/components/ImportFormRefNameAutocomplete.js +0 -32
- package/dist/LinearGenomeView/components/LinearGenomeView.d.ts +0 -5
- package/dist/LinearGenomeView/components/LinearGenomeView.js +0 -57
- package/dist/LinearGenomeView/components/LinearGenomeViewContainer.d.ts +0 -5
- package/dist/LinearGenomeView/components/LinearGenomeViewContainer.js +0 -98
- package/dist/LinearGenomeView/components/MiniControls.d.ts +0 -5
- package/dist/LinearGenomeView/components/MiniControls.js +0 -36
- package/dist/LinearGenomeView/components/NoTracksActiveButton.d.ts +0 -5
- package/dist/LinearGenomeView/components/NoTracksActiveButton.js +0 -23
- package/dist/LinearGenomeView/components/OverviewHighlight.d.ts +0 -8
- package/dist/LinearGenomeView/components/OverviewHighlight.js +0 -50
- package/dist/LinearGenomeView/components/OverviewRubberband.d.ts +0 -9
- package/dist/LinearGenomeView/components/OverviewRubberband.js +0 -113
- package/dist/LinearGenomeView/components/OverviewRubberbandHoverTooltip.d.ts +0 -10
- package/dist/LinearGenomeView/components/OverviewRubberbandHoverTooltip.js +0 -28
- package/dist/LinearGenomeView/components/OverviewScalebar.d.ts +0 -7
- package/dist/LinearGenomeView/components/OverviewScalebar.js +0 -146
- package/dist/LinearGenomeView/components/OverviewScalebarPolygon.d.ts +0 -8
- package/dist/LinearGenomeView/components/OverviewScalebarPolygon.js +0 -41
- package/dist/LinearGenomeView/components/OverviewScalebarTickLabels.d.ts +0 -10
- package/dist/LinearGenomeView/components/OverviewScalebarTickLabels.js +0 -37
- package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.d.ts +0 -8
- package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js +0 -18
- package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.d.ts +0 -3
- package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js +0 -56
- package/dist/LinearGenomeView/components/RefNameAutocomplete/HelpDialog.d.ts +0 -3
- package/dist/LinearGenomeView/components/RefNameAutocomplete/HelpDialog.js +0 -11
- package/dist/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +0 -16
- package/dist/LinearGenomeView/components/RefNameAutocomplete/index.js +0 -127
- package/dist/LinearGenomeView/components/RefNameAutocomplete/util.d.ts +0 -10
- package/dist/LinearGenomeView/components/RefNameAutocomplete/util.js +0 -53
- package/dist/LinearGenomeView/components/RegionWidthEditorDialog.d.ts +0 -6
- package/dist/LinearGenomeView/components/RegionWidthEditorDialog.js +0 -30
- package/dist/LinearGenomeView/components/Rubberband.d.ts +0 -7
- package/dist/LinearGenomeView/components/Rubberband.js +0 -35
- package/dist/LinearGenomeView/components/RubberbandSpan.d.ts +0 -15
- package/dist/LinearGenomeView/components/RubberbandSpan.js +0 -39
- package/dist/LinearGenomeView/components/RubberbandTooltip.d.ts +0 -5
- package/dist/LinearGenomeView/components/RubberbandTooltip.js +0 -20
- package/dist/LinearGenomeView/components/Scalebar.d.ts +0 -10
- package/dist/LinearGenomeView/components/Scalebar.js +0 -40
- package/dist/LinearGenomeView/components/ScalebarCoordinateLabels.d.ts +0 -6
- package/dist/LinearGenomeView/components/ScalebarCoordinateLabels.js +0 -29
- package/dist/LinearGenomeView/components/ScalebarCoordinateTicks.d.ts +0 -6
- package/dist/LinearGenomeView/components/ScalebarCoordinateTicks.js +0 -38
- package/dist/LinearGenomeView/components/ScalebarRefNameLabels.d.ts +0 -6
- package/dist/LinearGenomeView/components/ScalebarRefNameLabels.js +0 -46
- package/dist/LinearGenomeView/components/SearchBox.d.ts +0 -6
- package/dist/LinearGenomeView/components/SearchBox.js +0 -88
- package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +0 -9
- package/dist/LinearGenomeView/components/SearchResultsDialog.js +0 -15
- package/dist/LinearGenomeView/components/SearchResultsTable.d.ts +0 -8
- package/dist/LinearGenomeView/components/SearchResultsTable.js +0 -74
- package/dist/LinearGenomeView/components/SequenceSearchDialog.d.ts +0 -8
- package/dist/LinearGenomeView/components/SequenceSearchDialog.js +0 -67
- package/dist/LinearGenomeView/components/TrackContainer.d.ts +0 -8
- package/dist/LinearGenomeView/components/TrackContainer.js +0 -55
- package/dist/LinearGenomeView/components/TrackLabel.d.ts +0 -7
- package/dist/LinearGenomeView/components/TrackLabel.js +0 -49
- package/dist/LinearGenomeView/components/TrackLabelContainer.d.ts +0 -8
- package/dist/LinearGenomeView/components/TrackLabelContainer.js +0 -31
- package/dist/LinearGenomeView/components/TrackLabelDragHandle.d.ts +0 -8
- package/dist/LinearGenomeView/components/TrackLabelDragHandle.js +0 -32
- package/dist/LinearGenomeView/components/TrackLabelMenu.d.ts +0 -5
- package/dist/LinearGenomeView/components/TrackLabelMenu.js +0 -93
- package/dist/LinearGenomeView/components/TrackRenderingContainer.d.ts +0 -9
- package/dist/LinearGenomeView/components/TrackRenderingContainer.js +0 -50
- package/dist/LinearGenomeView/components/TracksContainer.d.ts +0 -7
- package/dist/LinearGenomeView/components/TracksContainer.js +0 -84
- package/dist/LinearGenomeView/components/VerticalGuide.d.ts +0 -7
- package/dist/LinearGenomeView/components/VerticalGuide.js +0 -31
- package/dist/LinearGenomeView/components/fetchSequence.d.ts +0 -4
- package/dist/LinearGenomeView/components/fetchSequence.js +0 -29
- package/dist/LinearGenomeView/components/useRangeSelect.d.ts +0 -59
- package/dist/LinearGenomeView/components/useRangeSelect.js +0 -127
- package/dist/LinearGenomeView/components/useSideScroll.d.ts +0 -6
- package/dist/LinearGenomeView/components/useSideScroll.js +0 -60
- package/dist/LinearGenomeView/components/useWheelScroll.d.ts +0 -7
- package/dist/LinearGenomeView/components/useWheelScroll.js +0 -62
- package/dist/LinearGenomeView/components/util.d.ts +0 -25
- package/dist/LinearGenomeView/components/util.js +0 -49
- package/dist/LinearGenomeView/consts.d.ts +0 -7
- package/dist/LinearGenomeView/consts.js +0 -10
- package/dist/LinearGenomeView/index.d.ts +0 -3
- package/dist/LinearGenomeView/index.js +0 -53
- package/dist/LinearGenomeView/model.d.ts +0 -268
- package/dist/LinearGenomeView/model.js +0 -1109
- package/dist/LinearGenomeView/svgcomponents/SVGBackground.d.ts +0 -5
- package/dist/LinearGenomeView/svgcomponents/SVGBackground.js +0 -10
- package/dist/LinearGenomeView/svgcomponents/SVGHeader.d.ts +0 -7
- package/dist/LinearGenomeView/svgcomponents/SVGHeader.js +0 -47
- package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.d.ts +0 -6
- package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +0 -42
- package/dist/LinearGenomeView/svgcomponents/SVGRegionSeparators.js +0 -8
- package/dist/LinearGenomeView/svgcomponents/SVGRuler.d.ts +0 -7
- package/dist/LinearGenomeView/svgcomponents/SVGRuler.js +0 -39
- package/dist/LinearGenomeView/svgcomponents/SVGScalebar.d.ts +0 -7
- package/dist/LinearGenomeView/svgcomponents/SVGScalebar.js +0 -17
- package/dist/LinearGenomeView/svgcomponents/SVGTrackLabel.d.ts +0 -7
- package/dist/LinearGenomeView/svgcomponents/SVGTrackLabel.js +0 -14
- package/dist/LinearGenomeView/svgcomponents/SVGTracks.d.ts +0 -21
- package/dist/LinearGenomeView/svgcomponents/SVGTracks.js +0 -32
- package/dist/LinearGenomeView/svgcomponents/util.d.ts +0 -8
- package/dist/LinearGenomeView/svgcomponents/util.js +0 -8
- package/dist/LinearGenomeView/types.d.ts +0 -43
- package/dist/LinearGenomeView/types.js +0 -2
- package/dist/LinearGenomeView/util.d.ts +0 -26
- package/dist/LinearGenomeView/util.js +0 -138
- package/dist/index.d.ts +0 -368
- package/dist/index.js +0 -120
- package/dist/searchUtils.d.ts +0 -26
- package/dist/searchUtils.js +0 -80
- package/esm/BaseLinearDisplay/components/BlockLoadingMessage.d.ts +0 -6
- package/esm/BaseLinearDisplay/components/BlockLoadingMessage.js +0 -24
- package/esm/LinearBasicDisplay/components/AddFiltersDialog.d.ts +0 -9
- package/esm/LinearBasicDisplay/components/SetMaxHeightDialog.d.ts +0 -8
- package/esm/LinearGenomeView/components/ScalebarCoordinateTicks.d.ts +0 -6
- package/esm/LinearGenomeView/components/ScalebarCoordinateTicks.js +0 -36
- /package/{dist/LinearBasicDisplay → esm/LinearFeatureDisplay}/components/AddFiltersDialog.d.ts +0 -0
- /package/{dist/LinearBasicDisplay → esm/LinearFeatureDisplay}/components/SetMaxHeightDialog.d.ts +0 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { LinearGenomeViewModel } from '../../LinearGenomeView/index.ts';
|
|
2
|
+
import type { BaseLinearDisplayModel } from '../model.ts';
|
|
3
|
+
import type { Assembly } from '@jbrowse/core/assemblyManager/assembly';
|
|
4
|
+
export interface RenderProps {
|
|
5
|
+
rendererType: any;
|
|
6
|
+
renderArgs: Record<string, any>;
|
|
7
|
+
renderProps: Record<string, any>;
|
|
8
|
+
displayError: unknown;
|
|
9
|
+
rpcManager: {
|
|
10
|
+
call: (...args: unknown[]) => void;
|
|
11
|
+
};
|
|
12
|
+
cannotBeRenderedReason: string;
|
|
13
|
+
}
|
|
14
|
+
export interface LabelData {
|
|
15
|
+
key: string;
|
|
16
|
+
label: string;
|
|
17
|
+
description: string;
|
|
18
|
+
leftPos: number;
|
|
19
|
+
topPos: number;
|
|
20
|
+
}
|
|
21
|
+
export interface ErrorProps {
|
|
22
|
+
displayError: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function calculateLabelPositions(model: BaseLinearDisplayModel, view: LinearGenomeViewModel, assembly: Assembly | undefined, offsetPx: number): LabelData[];
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { clamp, measureText } from '@jbrowse/core/util';
|
|
2
|
+
export function calculateLabelPositions(model, view, assembly, offsetPx) {
|
|
3
|
+
if (!assembly) {
|
|
4
|
+
return [];
|
|
5
|
+
}
|
|
6
|
+
const fontSize = 11;
|
|
7
|
+
const result = [];
|
|
8
|
+
for (const [key, val] of model.layoutFeatures.entries()) {
|
|
9
|
+
if (!val?.[4]) {
|
|
10
|
+
continue;
|
|
11
|
+
}
|
|
12
|
+
const [left, , right, bottom, feature] = val;
|
|
13
|
+
const { refName, description, label, totalLayoutWidth } = feature;
|
|
14
|
+
if (!label) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
const r0 = assembly.getCanonicalRefName2(refName);
|
|
18
|
+
const px1 = view.bpToPx({
|
|
19
|
+
refName: r0,
|
|
20
|
+
coord: left,
|
|
21
|
+
})?.offsetPx;
|
|
22
|
+
const px2 = view.bpToPx({
|
|
23
|
+
refName: r0,
|
|
24
|
+
coord: right,
|
|
25
|
+
})?.offsetPx;
|
|
26
|
+
if (px1 === undefined) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const leftPx = px2 !== undefined ? Math.min(px1, px2) : px1;
|
|
30
|
+
const rightPx = px2 !== undefined ? Math.max(px1, px2) : px1;
|
|
31
|
+
const labelWidth = getCachedMeasureText(label, fontSize);
|
|
32
|
+
const effectiveRightPx = totalLayoutWidth !== undefined ? leftPx + totalLayoutWidth : rightPx;
|
|
33
|
+
const leftPos = clamp(0, leftPx - offsetPx, effectiveRightPx - offsetPx - labelWidth);
|
|
34
|
+
const topPos = bottom - 14 * (+!!description + +!!label);
|
|
35
|
+
result.push({
|
|
36
|
+
key,
|
|
37
|
+
label,
|
|
38
|
+
description: description || '',
|
|
39
|
+
leftPos,
|
|
40
|
+
topPos,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
const textMeasureCache = new Map();
|
|
46
|
+
function getCachedMeasureText(text, fontSize) {
|
|
47
|
+
const key = `${text}:${fontSize}`;
|
|
48
|
+
let width = textMeasureCache.get(key);
|
|
49
|
+
if (width === undefined) {
|
|
50
|
+
width = measureText(text, fontSize);
|
|
51
|
+
if (textMeasureCache.size > 500) {
|
|
52
|
+
const firstKey = textMeasureCache.keys().next().value;
|
|
53
|
+
if (firstKey) {
|
|
54
|
+
textMeasureCache.delete(firstKey);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
textMeasureCache.set(key, width);
|
|
58
|
+
}
|
|
59
|
+
return width;
|
|
60
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare const baseLinearDisplayConfigSchema: import("
|
|
1
|
+
declare const baseLinearDisplayConfigSchema: import("node_modules/@jbrowse/core/src/configuration/configurationSchema").ConfigurationSchemaType<{
|
|
2
2
|
maxFeatureScreenDensity: {
|
|
3
3
|
type: string;
|
|
4
4
|
description: string;
|
|
@@ -25,5 +25,5 @@ declare const baseLinearDisplayConfigSchema: import("@jbrowse/core/configuration
|
|
|
25
25
|
description: string;
|
|
26
26
|
defaultValue: never[];
|
|
27
27
|
};
|
|
28
|
-
}, import("
|
|
28
|
+
}, import("node_modules/@jbrowse/core/src/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "displayId">>;
|
|
29
29
|
export default baseLinearDisplayConfigSchema;
|
|
@@ -8,7 +8,7 @@ const baseLinearDisplayConfigSchema = ConfigurationSchema('BaseLinearDisplay', {
|
|
|
8
8
|
},
|
|
9
9
|
fetchSizeLimit: {
|
|
10
10
|
type: 'number',
|
|
11
|
-
defaultValue:
|
|
11
|
+
defaultValue: 1_000_000,
|
|
12
12
|
description: "maximum data to attempt to download for a given track, used if adapter doesn't specify one",
|
|
13
13
|
},
|
|
14
14
|
height: {
|
|
@@ -19,7 +19,7 @@ const baseLinearDisplayConfigSchema = ConfigurationSchema('BaseLinearDisplay', {
|
|
|
19
19
|
mouseover: {
|
|
20
20
|
type: 'string',
|
|
21
21
|
description: 'text to display when the cursor hovers over a feature',
|
|
22
|
-
defaultValue: `jexl:
|
|
22
|
+
defaultValue: `jexl:mouseoverExtraInformation||get(feature,'_mouseOver')||get(feature,'name')||get(feature,'id')`,
|
|
23
23
|
contextVariable: ['feature', 'mouseoverExtraInformation'],
|
|
24
24
|
},
|
|
25
25
|
jexlFilters: {
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
export declare function renderBaseLinearDisplaySvg(self: BaseLinearDisplayModel, opts: ExportSvgOptions & {
|
|
5
|
-
overrideHeight: number;
|
|
6
|
-
theme?: ThemeOptions;
|
|
7
|
-
}): Promise<import("react/jsx-runtime").JSX.Element>;
|
|
1
|
+
import type { BaseLinearDisplayModel } from '../model.ts';
|
|
2
|
+
import type { ExportSvgDisplayOptions } from '../types.ts';
|
|
3
|
+
export declare function renderBaseLinearDisplaySvg(self: BaseLinearDisplayModel, opts: ExportSvgDisplayOptions): Promise<import("react/jsx-runtime").JSX.Element>;
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Fragment } from 'react';
|
|
3
|
-
import { ReactRendering, getContainingView,
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
3
|
+
import { ReactRendering, getContainingView, getSession, } from '@jbrowse/core/util';
|
|
4
|
+
import { calculateLabelPositions } from "./calculateLabelPositions.js";
|
|
5
|
+
import BlockState, { renderBlockData } from "./serverSideRenderedBlock.js";
|
|
6
|
+
import { getId } from "./util.js";
|
|
7
|
+
import { ErrorBox } from "../../LinearGenomeView/SVGErrorBox.js";
|
|
6
8
|
export async function renderBaseLinearDisplaySvg(self, opts) {
|
|
7
9
|
const { height, id } = self;
|
|
8
10
|
const { overrideHeight } = opts;
|
|
9
11
|
const view = getContainingView(self);
|
|
10
12
|
const { offsetPx: viewOffsetPx, roundedDynamicBlocks, width } = view;
|
|
13
|
+
if (self.error) {
|
|
14
|
+
return _jsx(ErrorBox, { error: self.error, width: width, height: height });
|
|
15
|
+
}
|
|
11
16
|
const renderings = await Promise.all(roundedDynamicBlocks.map(async (block) => {
|
|
12
17
|
const blockState = BlockState.create({
|
|
13
18
|
key: block.key,
|
|
@@ -23,22 +28,28 @@ export async function renderBaseLinearDisplaySvg(self, opts) {
|
|
|
23
28
|
},
|
|
24
29
|
];
|
|
25
30
|
}
|
|
26
|
-
const { rpcManager, renderArgs, renderProps, rendererType } = renderBlockData(blockState, self);
|
|
31
|
+
const { rpcManager, renderArgs, renderProps, renderingProps, rendererType, } = renderBlockData(blockState, self);
|
|
27
32
|
return [
|
|
28
33
|
block,
|
|
29
34
|
await rendererType.renderInClient(rpcManager, {
|
|
30
35
|
...renderArgs,
|
|
31
36
|
...renderProps,
|
|
32
|
-
|
|
37
|
+
renderingProps,
|
|
33
38
|
exportSVG: opts,
|
|
34
39
|
theme: opts.theme || renderProps.theme,
|
|
35
40
|
}),
|
|
36
41
|
];
|
|
37
42
|
}));
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
const { assemblyManager } = getSession(self);
|
|
44
|
+
const { offsetPx } = view;
|
|
45
|
+
const assemblyName = view.assemblyNames[0];
|
|
46
|
+
const assembly = assemblyName ? assemblyManager.get(assemblyName) : undefined;
|
|
47
|
+
const labelData = calculateLabelPositions(self, view, assembly, offsetPx);
|
|
48
|
+
const labelsClipId = getId(id, 'labels');
|
|
49
|
+
return (_jsxs(_Fragment, { children: [renderings.map(([block, rendering], index) => {
|
|
50
|
+
const { offsetPx, widthPx } = block;
|
|
51
|
+
const offset = offsetPx - viewOffsetPx;
|
|
52
|
+
const clipid = getId(id, index);
|
|
53
|
+
return (_jsxs(Fragment, { children: [_jsx("defs", { children: _jsx("clipPath", { id: clipid, children: _jsx("rect", { x: 0, y: 0, width: widthPx, height: overrideHeight || height }) }) }), _jsx("g", { transform: `translate(${offset} 0)`, children: _jsx("g", { clipPath: `url(#${clipid})`, children: _jsx(ReactRendering, { rendering: rendering }) }) })] }, `frag-${index}`));
|
|
54
|
+
}), _jsx("defs", { children: _jsx("clipPath", { id: labelsClipId, children: _jsx("rect", { x: 0, y: 0, width: width, height: overrideHeight || height }) }) }), _jsx("g", { clipPath: `url(#${labelsClipId})`, children: labelData.map(({ key, label, description, leftPos, topPos }) => (_jsxs("g", { transform: `translate(${leftPos}, ${topPos})`, children: [_jsx("text", { x: 0, y: 11, fontSize: 11, fill: "currentColor", style: { pointerEvents: 'none' }, children: label }), description ? (_jsx("text", { x: 0, y: 25, fontSize: 11, fill: "blue", style: { pointerEvents: 'none' }, children: description })) : null] }, `label-${key}`))) })] }));
|
|
44
55
|
}
|
|
@@ -1,27 +1,29 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import type { Feature } from '@jbrowse/core/util';
|
|
3
|
+
import type { StopToken } from '@jbrowse/core/util/stopToken';
|
|
3
4
|
import type { AbstractDisplayModel, Region } from '@jbrowse/core/util/types';
|
|
4
|
-
import type { Instance } from 'mobx-state-tree';
|
|
5
|
+
import type { Instance } from '@jbrowse/mobx-state-tree';
|
|
5
6
|
export interface RenderedProps {
|
|
6
7
|
reactElement: React.ReactElement;
|
|
7
8
|
features: Map<string, Feature>;
|
|
8
9
|
layout: any;
|
|
9
10
|
maxHeightReached: boolean;
|
|
10
11
|
renderProps: any;
|
|
12
|
+
renderArgs: Record<string, unknown>;
|
|
11
13
|
}
|
|
12
|
-
declare const blockState: import("mobx-state-tree").IModelType<{
|
|
13
|
-
key: import("mobx-state-tree").ISimpleType<string>;
|
|
14
|
-
region: import("mobx-state-tree").IType<Region, Region, Region>;
|
|
15
|
-
reloadFlag: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
16
|
-
isLeftEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
17
|
-
isRightEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
14
|
+
declare const blockState: import("@jbrowse/mobx-state-tree").IModelType<{
|
|
15
|
+
key: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
16
|
+
region: import("@jbrowse/mobx-state-tree").IType<Region, Region, Region>;
|
|
17
|
+
reloadFlag: import("@jbrowse/mobx-state-tree").IType<number | undefined, number, number>;
|
|
18
|
+
isLeftEndOfDisplayedRegion: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
19
|
+
isRightEndOfDisplayedRegion: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
18
20
|
}, {
|
|
19
|
-
stopToken:
|
|
21
|
+
stopToken: StopToken | undefined;
|
|
20
22
|
filled: boolean;
|
|
21
23
|
reactElement: React.ReactElement | undefined;
|
|
22
24
|
features: Map<string, Feature> | undefined;
|
|
23
25
|
layout: any;
|
|
24
|
-
|
|
26
|
+
blockStatusMessage: string;
|
|
25
27
|
error: unknown;
|
|
26
28
|
message: string | undefined;
|
|
27
29
|
maxHeightReached: boolean;
|
|
@@ -29,24 +31,31 @@ declare const blockState: import("mobx-state-tree").IModelType<{
|
|
|
29
31
|
model: {
|
|
30
32
|
error?: unknown;
|
|
31
33
|
reload: () => void;
|
|
32
|
-
message
|
|
33
|
-
|
|
34
|
-
status?: string;
|
|
34
|
+
message?: React.ReactNode;
|
|
35
|
+
statusMessage?: string;
|
|
35
36
|
reactElement?: React.ReactElement;
|
|
37
|
+
isRenderingPending?: boolean;
|
|
36
38
|
};
|
|
37
|
-
}) => import("react/jsx-runtime").JSX.Element
|
|
39
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
38
40
|
renderProps: any;
|
|
41
|
+
renderArgs: Record<string, unknown> | undefined;
|
|
42
|
+
isRenderingPending: boolean;
|
|
43
|
+
cachedDisplay: AbstractDisplayModel | undefined;
|
|
39
44
|
} & {
|
|
40
45
|
doReload(): void;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
setLoading(newStopToken: string): void;
|
|
46
|
+
setStatusMessage(message: string): void;
|
|
47
|
+
setLoading(newStopToken: StopToken): void;
|
|
44
48
|
setMessage(messageText: string): void;
|
|
45
49
|
setRendered(props: RenderedProps | undefined): void;
|
|
46
50
|
setError(error: unknown): void;
|
|
47
51
|
reload(): void;
|
|
52
|
+
setCachedDisplay(display: AbstractDisplayModel): void;
|
|
48
53
|
beforeDestroy(): void;
|
|
49
|
-
}
|
|
54
|
+
} & {
|
|
55
|
+
readonly statusMessage: any;
|
|
56
|
+
} & {
|
|
57
|
+
afterAttach(): void;
|
|
58
|
+
}, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
|
|
50
59
|
export default blockState;
|
|
51
60
|
export type BlockStateModel = typeof blockState;
|
|
52
61
|
export type BlockModel = Instance<BlockStateModel>;
|
|
@@ -54,16 +63,24 @@ export declare function renderBlockData(self: BlockModel, optDisplay?: AbstractD
|
|
|
54
63
|
rendererType: any;
|
|
55
64
|
rpcManager: import("@jbrowse/core/rpc/RpcManager").default;
|
|
56
65
|
renderProps: any;
|
|
66
|
+
renderingProps: Record<string, unknown> | undefined;
|
|
57
67
|
cannotBeRenderedReason: any;
|
|
58
68
|
displayError: any;
|
|
59
69
|
renderArgs: {
|
|
60
70
|
statusCallback: (message: string) => void;
|
|
61
71
|
assemblyName: string;
|
|
62
|
-
regions:
|
|
72
|
+
regions: {
|
|
73
|
+
seqAdapterRefName: string | undefined;
|
|
74
|
+
assemblyName: string;
|
|
75
|
+
refName: string;
|
|
76
|
+
start: number;
|
|
77
|
+
end: number;
|
|
78
|
+
reversed?: boolean | undefined;
|
|
79
|
+
}[];
|
|
63
80
|
adapterConfig: any;
|
|
64
81
|
rendererType: any;
|
|
65
82
|
sessionId: string;
|
|
66
|
-
|
|
83
|
+
trackInstanceId: any;
|
|
67
84
|
blockKey: string;
|
|
68
85
|
reloadFlag: number;
|
|
69
86
|
timeout: number;
|
|
@@ -73,6 +90,7 @@ export declare function renderBlockData(self: BlockModel, optDisplay?: AbstractD
|
|
|
73
90
|
rendererType?: undefined;
|
|
74
91
|
rpcManager?: undefined;
|
|
75
92
|
renderProps?: undefined;
|
|
93
|
+
renderingProps?: undefined;
|
|
76
94
|
cannotBeRenderedReason?: undefined;
|
|
77
95
|
renderArgs?: undefined;
|
|
78
96
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { readConfObject } from '@jbrowse/core/configuration';
|
|
2
|
-
import { assembleLocString, getContainingDisplay,
|
|
2
|
+
import { assembleLocString, getContainingDisplay, getSession, makeAbortableReaction, } from '@jbrowse/core/util';
|
|
3
3
|
import { stopStopToken } from '@jbrowse/core/util/stopToken';
|
|
4
4
|
import { getRpcSessionId, getTrackAssemblyNames, } from '@jbrowse/core/util/tracks';
|
|
5
5
|
import { isRetryException } from '@jbrowse/core/util/types';
|
|
6
|
-
import {
|
|
7
|
-
import ServerSideRenderedBlockContent from
|
|
6
|
+
import { getParent, isAlive, types } from '@jbrowse/mobx-state-tree';
|
|
7
|
+
import ServerSideRenderedBlockContent from "../components/ServerSideRenderedBlockContent.js";
|
|
8
8
|
const blockState = types
|
|
9
9
|
.model('BlockState', {
|
|
10
10
|
key: types.string,
|
|
@@ -19,205 +19,221 @@ const blockState = types
|
|
|
19
19
|
reactElement: undefined,
|
|
20
20
|
features: undefined,
|
|
21
21
|
layout: undefined,
|
|
22
|
-
|
|
22
|
+
blockStatusMessage: '',
|
|
23
23
|
error: undefined,
|
|
24
24
|
message: undefined,
|
|
25
25
|
maxHeightReached: false,
|
|
26
26
|
ReactComponent: ServerSideRenderedBlockContent,
|
|
27
27
|
renderProps: undefined,
|
|
28
|
+
renderArgs: undefined,
|
|
29
|
+
isRenderingPending: true,
|
|
30
|
+
cachedDisplay: undefined,
|
|
28
31
|
}))
|
|
29
|
-
.actions(self =>
|
|
30
|
-
|
|
31
|
-
self.reloadFlag = self.reloadFlag + 1;
|
|
32
|
-
},
|
|
33
|
-
afterAttach() {
|
|
34
|
-
const display = getContainingDisplay(self);
|
|
35
|
-
setTimeout(() => {
|
|
36
|
-
if (isAlive(self)) {
|
|
37
|
-
makeAbortableReaction(self, renderBlockData, renderBlockEffect, {
|
|
38
|
-
name: `${display.id}/${assembleLocString(self.region)} rendering`,
|
|
39
|
-
delay: display.renderDelay,
|
|
40
|
-
fireImmediately: true,
|
|
41
|
-
}, this.setLoading, this.setRendered, this.setError);
|
|
42
|
-
}
|
|
43
|
-
}, display.renderDelay);
|
|
44
|
-
},
|
|
45
|
-
setStatus(message) {
|
|
46
|
-
self.status = message;
|
|
47
|
-
},
|
|
48
|
-
setLoading(newStopToken) {
|
|
49
|
-
if (self.stopToken !== undefined) {
|
|
50
|
-
stopStopToken(self.stopToken);
|
|
51
|
-
}
|
|
52
|
-
self.filled = false;
|
|
53
|
-
self.message = undefined;
|
|
54
|
-
self.reactElement = undefined;
|
|
55
|
-
self.features = undefined;
|
|
56
|
-
self.layout = undefined;
|
|
57
|
-
self.error = undefined;
|
|
58
|
-
self.maxHeightReached = false;
|
|
59
|
-
self.renderProps = undefined;
|
|
60
|
-
self.stopToken = newStopToken;
|
|
61
|
-
},
|
|
62
|
-
setMessage(messageText) {
|
|
63
|
-
if (self.stopToken !== undefined) {
|
|
64
|
-
stopStopToken(self.stopToken);
|
|
65
|
-
}
|
|
66
|
-
self.filled = false;
|
|
67
|
-
self.message = messageText;
|
|
68
|
-
self.reactElement = undefined;
|
|
69
|
-
self.features = undefined;
|
|
70
|
-
self.layout = undefined;
|
|
71
|
-
self.error = undefined;
|
|
72
|
-
self.maxHeightReached = false;
|
|
73
|
-
self.renderProps = undefined;
|
|
74
|
-
self.stopToken = undefined;
|
|
75
|
-
},
|
|
76
|
-
setRendered(props) {
|
|
77
|
-
if (!props) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
const { reactElement, features, layout, maxHeightReached, renderProps } = props;
|
|
81
|
-
self.filled = true;
|
|
82
|
-
self.message = undefined;
|
|
83
|
-
self.reactElement = reactElement;
|
|
84
|
-
self.features = features;
|
|
85
|
-
self.layout = layout;
|
|
86
|
-
self.error = undefined;
|
|
87
|
-
self.maxHeightReached = maxHeightReached;
|
|
88
|
-
self.renderProps = renderProps;
|
|
89
|
-
self.stopToken = undefined;
|
|
90
|
-
},
|
|
91
|
-
setError(error) {
|
|
92
|
-
console.error(error);
|
|
32
|
+
.actions(self => {
|
|
33
|
+
function stopCurrentToken() {
|
|
93
34
|
if (self.stopToken !== undefined) {
|
|
94
35
|
stopStopToken(self.stopToken);
|
|
36
|
+
self.stopToken = undefined;
|
|
95
37
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
self.reactElement = undefined;
|
|
99
|
-
self.features = undefined;
|
|
100
|
-
self.layout = undefined;
|
|
101
|
-
self.maxHeightReached = false;
|
|
102
|
-
self.error = error;
|
|
103
|
-
self.renderProps = undefined;
|
|
104
|
-
self.stopToken = undefined;
|
|
105
|
-
if (isRetryException(error)) {
|
|
106
|
-
this.reload();
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
reload() {
|
|
110
|
-
self.stopToken = undefined;
|
|
38
|
+
}
|
|
39
|
+
function clearRenderState() {
|
|
111
40
|
self.filled = false;
|
|
112
41
|
self.reactElement = undefined;
|
|
113
42
|
self.features = undefined;
|
|
114
43
|
self.layout = undefined;
|
|
115
|
-
self.error = undefined;
|
|
116
|
-
self.message = undefined;
|
|
117
44
|
self.maxHeightReached = false;
|
|
118
|
-
self.ReactComponent = ServerSideRenderedBlockContent;
|
|
119
45
|
self.renderProps = undefined;
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
46
|
+
self.renderArgs = undefined;
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
doReload() {
|
|
50
|
+
self.reloadFlag = self.reloadFlag + 1;
|
|
51
|
+
},
|
|
52
|
+
setStatusMessage(message) {
|
|
53
|
+
self.blockStatusMessage = message;
|
|
54
|
+
},
|
|
55
|
+
setLoading(newStopToken) {
|
|
56
|
+
stopCurrentToken();
|
|
57
|
+
self.isRenderingPending = true;
|
|
58
|
+
self.error = undefined;
|
|
59
|
+
self.message = undefined;
|
|
60
|
+
self.stopToken = newStopToken;
|
|
61
|
+
},
|
|
62
|
+
setMessage(messageText) {
|
|
63
|
+
stopCurrentToken();
|
|
64
|
+
self.isRenderingPending = false;
|
|
65
|
+
self.message = messageText;
|
|
66
|
+
self.error = undefined;
|
|
67
|
+
clearRenderState();
|
|
68
|
+
},
|
|
69
|
+
setRendered(props) {
|
|
70
|
+
if (!props) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const { reactElement, features, layout, maxHeightReached, renderProps, renderArgs, } = props;
|
|
74
|
+
self.filled = true;
|
|
75
|
+
self.isRenderingPending = false;
|
|
76
|
+
self.message = undefined;
|
|
77
|
+
self.reactElement = reactElement;
|
|
78
|
+
self.features = features;
|
|
79
|
+
self.layout = layout;
|
|
80
|
+
self.error = undefined;
|
|
81
|
+
self.maxHeightReached = maxHeightReached;
|
|
82
|
+
self.renderProps = renderProps;
|
|
83
|
+
self.renderArgs = renderArgs;
|
|
84
|
+
self.stopToken = undefined;
|
|
85
|
+
},
|
|
86
|
+
setError(error) {
|
|
87
|
+
console.error(error);
|
|
88
|
+
stopCurrentToken();
|
|
89
|
+
self.isRenderingPending = false;
|
|
90
|
+
self.message = undefined;
|
|
91
|
+
self.error = error;
|
|
92
|
+
clearRenderState();
|
|
93
|
+
if (isRetryException(error)) {
|
|
94
|
+
this.reload();
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
reload() {
|
|
98
|
+
self.stopToken = undefined;
|
|
99
|
+
self.isRenderingPending = false;
|
|
100
|
+
self.error = undefined;
|
|
101
|
+
self.message = undefined;
|
|
102
|
+
self.ReactComponent = ServerSideRenderedBlockContent;
|
|
103
|
+
clearRenderState();
|
|
104
|
+
getParent(self, 2).reload();
|
|
105
|
+
},
|
|
106
|
+
setCachedDisplay(display) {
|
|
107
|
+
self.cachedDisplay = display;
|
|
108
|
+
},
|
|
109
|
+
beforeDestroy() {
|
|
110
|
+
;
|
|
111
|
+
(async () => {
|
|
112
|
+
try {
|
|
113
|
+
stopCurrentToken();
|
|
114
|
+
if (self.renderArgs && self.cachedDisplay) {
|
|
115
|
+
const { rpcManager } = getSession(self);
|
|
116
|
+
const { rendererType } = self.cachedDisplay;
|
|
117
|
+
await rendererType.freeResourcesInClient(rpcManager, JSON.parse(JSON.stringify(self.renderArgs)));
|
|
118
|
+
}
|
|
128
119
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
const { rendererType } = display;
|
|
132
|
-
const { renderArgs } = renderBlockData(cast(self));
|
|
133
|
-
if (renderArgs) {
|
|
134
|
-
await rendererType.freeResourcesInClient(rpcManager, JSON.parse(JSON.stringify(renderArgs)));
|
|
120
|
+
catch (e) {
|
|
121
|
+
console.error('Error while destroying block', e);
|
|
135
122
|
}
|
|
123
|
+
})();
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
})
|
|
127
|
+
.views(self => ({
|
|
128
|
+
get statusMessage() {
|
|
129
|
+
return self.isRenderingPending
|
|
130
|
+
? self.blockStatusMessage ||
|
|
131
|
+
self.cachedDisplay?.statusMessage ||
|
|
132
|
+
'Loading'
|
|
133
|
+
: undefined;
|
|
134
|
+
},
|
|
135
|
+
}))
|
|
136
|
+
.actions(self => ({
|
|
137
|
+
afterAttach() {
|
|
138
|
+
const display = self.cachedDisplay || getContainingDisplay(self);
|
|
139
|
+
setTimeout(() => {
|
|
140
|
+
if (isAlive(self)) {
|
|
141
|
+
makeAbortableReaction(self, renderBlockData, renderBlockEffect, {
|
|
142
|
+
name: `${display.id}/${assembleLocString(self.region)} rendering`,
|
|
143
|
+
delay: display.renderDelay,
|
|
144
|
+
fireImmediately: true,
|
|
145
|
+
}, self.setLoading, self.setRendered, self.setError);
|
|
136
146
|
}
|
|
137
|
-
|
|
138
|
-
console.error('Error while destroying block', e);
|
|
139
|
-
}
|
|
140
|
-
})();
|
|
147
|
+
}, display.renderDelay);
|
|
141
148
|
},
|
|
142
149
|
}));
|
|
143
150
|
export default blockState;
|
|
144
151
|
export function renderBlockData(self, optDisplay) {
|
|
145
152
|
try {
|
|
146
|
-
const display = optDisplay ||
|
|
153
|
+
const display = (optDisplay ||
|
|
154
|
+
self.cachedDisplay ||
|
|
155
|
+
getContainingDisplay(self));
|
|
147
156
|
const { assemblyManager, rpcManager } = getSession(display);
|
|
148
157
|
const { adapterConfig, rendererType, error, parentTrack } = display;
|
|
149
158
|
const assemblyNames = getTrackAssemblyNames(parentTrack);
|
|
150
159
|
const regionAsm = self.region.assemblyName;
|
|
151
160
|
if (!assemblyNames.includes(regionAsm) &&
|
|
152
|
-
!assemblyNames.some(name =>
|
|
161
|
+
!assemblyNames.some(name => assemblyManager.get(name)?.hasName(regionAsm))) {
|
|
153
162
|
throw new Error(`region assembly (${regionAsm}) does not match track assemblies (${assemblyNames})`);
|
|
154
163
|
}
|
|
155
164
|
const renderProps = display.renderProps();
|
|
165
|
+
const renderingProps = display.renderingProps?.();
|
|
156
166
|
const { config } = renderProps;
|
|
157
167
|
readConfObject(config);
|
|
158
168
|
const sessionId = getRpcSessionId(display);
|
|
159
|
-
const
|
|
169
|
+
const trackInstanceId = parentTrack.id;
|
|
160
170
|
const cannotBeRenderedReason = display.regionCannotBeRendered(self.region);
|
|
171
|
+
const assembly = assemblyManager.get(self.region.assemblyName);
|
|
172
|
+
const seqAdapterRefName = assembly?.getSeqAdapterRefName(self.region.refName);
|
|
161
173
|
return {
|
|
162
174
|
rendererType,
|
|
163
175
|
rpcManager,
|
|
164
176
|
renderProps,
|
|
177
|
+
renderingProps,
|
|
165
178
|
cannotBeRenderedReason,
|
|
166
179
|
displayError: error,
|
|
167
180
|
renderArgs: {
|
|
168
181
|
statusCallback: (message) => {
|
|
169
182
|
if (isAlive(self)) {
|
|
170
|
-
self.
|
|
183
|
+
self.setStatusMessage(message);
|
|
171
184
|
}
|
|
172
185
|
},
|
|
173
186
|
assemblyName: self.region.assemblyName,
|
|
174
|
-
regions: [
|
|
187
|
+
regions: [
|
|
188
|
+
{
|
|
189
|
+
...self.region,
|
|
190
|
+
seqAdapterRefName,
|
|
191
|
+
},
|
|
192
|
+
],
|
|
175
193
|
adapterConfig,
|
|
176
194
|
rendererType: rendererType.name,
|
|
177
195
|
sessionId,
|
|
178
|
-
|
|
196
|
+
trackInstanceId,
|
|
179
197
|
blockKey: self.key,
|
|
180
198
|
reloadFlag: self.reloadFlag,
|
|
181
|
-
timeout:
|
|
199
|
+
timeout: 1_000_000,
|
|
182
200
|
},
|
|
183
201
|
};
|
|
184
202
|
}
|
|
185
203
|
catch (e) {
|
|
186
|
-
return {
|
|
204
|
+
return {
|
|
205
|
+
displayError: e,
|
|
206
|
+
};
|
|
187
207
|
}
|
|
188
208
|
}
|
|
189
209
|
async function renderBlockEffect(props, stopToken, self) {
|
|
190
|
-
if (!props) {
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
|
-
const { rendererType, renderProps, rpcManager, renderArgs, cannotBeRenderedReason, displayError, } = props;
|
|
194
|
-
if (!isAlive(self)) {
|
|
210
|
+
if (!props || !isAlive(self)) {
|
|
195
211
|
return undefined;
|
|
196
212
|
}
|
|
197
|
-
|
|
213
|
+
const { rendererType, renderProps, renderingProps, rpcManager, renderArgs, cannotBeRenderedReason, displayError, } = props;
|
|
214
|
+
if (displayError) {
|
|
198
215
|
self.setError(displayError);
|
|
199
216
|
return undefined;
|
|
200
217
|
}
|
|
201
|
-
|
|
218
|
+
if (cannotBeRenderedReason) {
|
|
202
219
|
self.setMessage(cannotBeRenderedReason);
|
|
203
220
|
return undefined;
|
|
204
221
|
}
|
|
205
|
-
|
|
222
|
+
if (renderProps.notReady || !renderArgs) {
|
|
206
223
|
return undefined;
|
|
207
224
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
225
|
+
const { reactElement, features, layout, maxHeightReached } = await rendererType.renderInClient(rpcManager, {
|
|
226
|
+
...renderArgs,
|
|
227
|
+
...renderProps,
|
|
228
|
+
renderingProps,
|
|
229
|
+
stopToken,
|
|
230
|
+
});
|
|
231
|
+
return {
|
|
232
|
+
reactElement,
|
|
233
|
+
features,
|
|
234
|
+
layout,
|
|
235
|
+
maxHeightReached,
|
|
236
|
+
renderProps,
|
|
237
|
+
renderArgs,
|
|
238
|
+
};
|
|
223
239
|
}
|