@jbrowse/plugin-linear-genome-view 2.5.0 → 2.6.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/dist/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +1 -1
- package/dist/BaseLinearDisplay/components/Block.d.ts +3 -3
- package/dist/BaseLinearDisplay/components/BlockMsg.d.ts +1 -1
- package/dist/BaseLinearDisplay/components/LinearBlocks.d.ts +3 -2
- package/dist/BaseLinearDisplay/components/TooLargeMessage.d.ts +2 -1
- package/dist/BaseLinearDisplay/components/Tooltip.d.ts +2 -1
- package/dist/BaseLinearDisplay/index.d.ts +5 -2
- package/dist/BaseLinearDisplay/index.js +7 -1
- package/dist/BaseLinearDisplay/index.js.map +1 -1
- package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +62 -142
- package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +34 -355
- package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -1
- package/dist/BaseLinearDisplay/models/FeatureDensityMixin.d.ts +99 -0
- package/dist/BaseLinearDisplay/models/FeatureDensityMixin.js +190 -0
- package/dist/BaseLinearDisplay/models/FeatureDensityMixin.js.map +1 -0
- package/dist/BaseLinearDisplay/models/TrackHeightMixin.d.ts +30 -0
- package/dist/BaseLinearDisplay/models/TrackHeightMixin.js +56 -0
- package/dist/BaseLinearDisplay/models/TrackHeightMixin.js.map +1 -0
- package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.d.ts +2 -0
- package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.js +42 -0
- package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.js.map +1 -0
- package/dist/BaseLinearDisplay/models/configSchema.js +1 -0
- package/dist/BaseLinearDisplay/models/configSchema.js.map +1 -1
- package/dist/BaseLinearDisplay/models/renderSvg.d.ts +8 -0
- package/dist/BaseLinearDisplay/models/renderSvg.js +83 -0
- package/dist/BaseLinearDisplay/models/renderSvg.js.map +1 -0
- package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +20 -16
- package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -1
- package/dist/BasicTrack/configSchema.js +1 -0
- package/dist/BasicTrack/configSchema.js.map +1 -1
- package/dist/FeatureTrack/configSchema.d.ts +1 -3
- package/dist/FeatureTrack/configSchema.js +1 -0
- package/dist/FeatureTrack/configSchema.js.map +1 -1
- package/dist/LinearBareDisplay/configSchema.d.ts +1 -0
- package/dist/LinearBareDisplay/configSchema.js +1 -0
- package/dist/LinearBareDisplay/configSchema.js.map +1 -1
- package/dist/LinearBareDisplay/model.d.ts +52 -39
- package/dist/LinearBareDisplay/model.js +1 -0
- package/dist/LinearBareDisplay/model.js.map +1 -1
- package/dist/LinearBasicDisplay/components/SetMaxHeight.d.ts +2 -1
- package/dist/LinearBasicDisplay/configSchema.d.ts +1 -0
- package/dist/LinearBasicDisplay/configSchema.js +1 -0
- package/dist/LinearBasicDisplay/configSchema.js.map +1 -1
- package/dist/LinearBasicDisplay/model.d.ts +67 -66
- package/dist/LinearBasicDisplay/model.js +1 -0
- package/dist/LinearBasicDisplay/model.js.map +1 -1
- package/dist/LinearGenomeView/components/CenterLine.d.ts +2 -1
- package/dist/LinearGenomeView/components/Cytobands.d.ts +2 -1
- package/dist/LinearGenomeView/components/ExportSvgDialog.d.ts +2 -1
- package/dist/LinearGenomeView/components/GetSequenceDialog.d.ts +2 -1
- package/dist/LinearGenomeView/components/Gridlines.d.ts +2 -1
- package/dist/LinearGenomeView/components/Header.d.ts +2 -1
- package/dist/LinearGenomeView/components/ImportForm.d.ts +2 -1
- package/dist/LinearGenomeView/components/LinearGenomeView.d.ts +2 -1
- package/dist/LinearGenomeView/components/LinearGenomeView.js +28 -4
- package/dist/LinearGenomeView/components/LinearGenomeView.js.map +1 -1
- package/dist/LinearGenomeView/components/MiniControls.d.ts +3 -2
- package/dist/LinearGenomeView/components/MiniControls.js +20 -40
- package/dist/LinearGenomeView/components/MiniControls.js.map +1 -1
- package/dist/LinearGenomeView/components/OverviewRubberband.d.ts +1 -1
- package/dist/LinearGenomeView/components/OverviewScalebar.d.ts +2 -2
- package/dist/LinearGenomeView/components/OverviewScalebar.js +10 -4
- package/dist/LinearGenomeView/components/OverviewScalebar.js.map +1 -1
- package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.d.ts +10 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js +22 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js.map +1 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.d.ts +5 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js +52 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js.map +1 -0
- package/dist/LinearGenomeView/components/{HelpDialog.d.ts → RefNameAutocomplete/HelpDialog.d.ts} +2 -1
- package/dist/LinearGenomeView/components/RefNameAutocomplete/HelpDialog.js.map +1 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +18 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete/index.js +111 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete/index.js.map +1 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete/util.d.ts +12 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete/util.js +59 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete/util.js.map +1 -0
- package/dist/LinearGenomeView/components/Rubberband.d.ts +1 -1
- package/dist/LinearGenomeView/components/RubberbandSpan.d.ts +2 -1
- package/dist/LinearGenomeView/components/SearchBox.d.ts +2 -1
- package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +2 -1
- package/dist/LinearGenomeView/components/SearchResultsTable.d.ts +2 -1
- package/dist/LinearGenomeView/components/SequenceSearchDialog.d.ts +2 -1
- package/dist/LinearGenomeView/components/TrackContainer.d.ts +3 -3
- package/dist/LinearGenomeView/components/TrackContainer.js +12 -68
- package/dist/LinearGenomeView/components/TrackContainer.js.map +1 -1
- package/dist/LinearGenomeView/components/TrackLabel.js +6 -10
- package/dist/LinearGenomeView/components/TrackLabel.js.map +1 -1
- package/dist/LinearGenomeView/components/TrackLabelContainer.d.ts +9 -0
- package/dist/LinearGenomeView/components/TrackLabelContainer.js +32 -0
- package/dist/LinearGenomeView/components/TrackLabelContainer.js.map +1 -0
- package/dist/LinearGenomeView/components/TrackRenderingContainer.d.ts +10 -0
- package/dist/LinearGenomeView/components/TrackRenderingContainer.js +74 -0
- package/dist/LinearGenomeView/components/TrackRenderingContainer.js.map +1 -0
- package/dist/LinearGenomeView/components/TracksContainer.d.ts +1 -1
- package/dist/LinearGenomeView/components/TracksContainer.js +2 -2
- package/dist/LinearGenomeView/components/TracksContainer.js.map +1 -1
- package/dist/LinearGenomeView/components/VerticalGuide.d.ts +2 -1
- package/dist/LinearGenomeView/components/ZoomControls.d.ts +2 -1
- package/dist/LinearGenomeView/model.d.ts +13 -12
- package/dist/LinearGenomeView/model.js +25 -25
- package/dist/LinearGenomeView/model.js.map +1 -1
- package/dist/LinearGenomeView/svgcomponents/SVGBackground.d.ts +2 -1
- package/dist/LinearGenomeView/svgcomponents/SVGHeader.d.ts +3 -4
- package/dist/LinearGenomeView/svgcomponents/SVGHeader.js +7 -2
- package/dist/LinearGenomeView/svgcomponents/SVGHeader.js.map +1 -1
- package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +1 -1
- package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js.map +1 -1
- package/dist/LinearGenomeView/svgcomponents/SVGRegionSeparators.d.ts +2 -1
- package/dist/LinearGenomeView/svgcomponents/SVGRuler.d.ts +2 -1
- package/dist/LinearGenomeView/svgcomponents/SVGScalebar.d.ts +2 -1
- package/dist/LinearGenomeView/svgcomponents/SVGTrackLabel.d.ts +2 -1
- package/dist/LinearGenomeView/svgcomponents/SVGTracks.d.ts +2 -1
- package/dist/LinearGenomeView/util.d.ts +2 -2
- package/dist/index.d.ts +160 -134
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/esm/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +1 -1
- package/esm/BaseLinearDisplay/components/Block.d.ts +3 -3
- package/esm/BaseLinearDisplay/components/BlockMsg.d.ts +1 -1
- package/esm/BaseLinearDisplay/components/LinearBlocks.d.ts +3 -2
- package/esm/BaseLinearDisplay/components/TooLargeMessage.d.ts +2 -1
- package/esm/BaseLinearDisplay/components/Tooltip.d.ts +2 -1
- package/esm/BaseLinearDisplay/index.d.ts +5 -2
- package/esm/BaseLinearDisplay/index.js +3 -0
- package/esm/BaseLinearDisplay/index.js.map +1 -1
- package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +62 -142
- package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js +36 -334
- package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -1
- package/esm/BaseLinearDisplay/models/FeatureDensityMixin.d.ts +99 -0
- package/esm/BaseLinearDisplay/models/FeatureDensityMixin.js +184 -0
- package/esm/BaseLinearDisplay/models/FeatureDensityMixin.js.map +1 -0
- package/esm/BaseLinearDisplay/models/TrackHeightMixin.d.ts +30 -0
- package/esm/BaseLinearDisplay/models/TrackHeightMixin.js +53 -0
- package/esm/BaseLinearDisplay/models/TrackHeightMixin.js.map +1 -0
- package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.d.ts +2 -0
- package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.js +39 -0
- package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.js.map +1 -0
- package/esm/BaseLinearDisplay/models/configSchema.js +1 -0
- package/esm/BaseLinearDisplay/models/configSchema.js.map +1 -1
- package/esm/BaseLinearDisplay/models/renderSvg.d.ts +8 -0
- package/esm/BaseLinearDisplay/models/renderSvg.js +54 -0
- package/esm/BaseLinearDisplay/models/renderSvg.js.map +1 -0
- package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js +20 -16
- package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -1
- package/esm/BasicTrack/configSchema.js +1 -0
- package/esm/BasicTrack/configSchema.js.map +1 -1
- package/esm/FeatureTrack/configSchema.d.ts +1 -3
- package/esm/FeatureTrack/configSchema.js +1 -0
- package/esm/FeatureTrack/configSchema.js.map +1 -1
- package/esm/LinearBareDisplay/configSchema.d.ts +1 -0
- package/esm/LinearBareDisplay/configSchema.js +1 -0
- package/esm/LinearBareDisplay/configSchema.js.map +1 -1
- package/esm/LinearBareDisplay/model.d.ts +52 -39
- package/esm/LinearBareDisplay/model.js +1 -0
- package/esm/LinearBareDisplay/model.js.map +1 -1
- package/esm/LinearBasicDisplay/components/SetMaxHeight.d.ts +2 -1
- package/esm/LinearBasicDisplay/configSchema.d.ts +1 -0
- package/esm/LinearBasicDisplay/configSchema.js +1 -0
- package/esm/LinearBasicDisplay/configSchema.js.map +1 -1
- package/esm/LinearBasicDisplay/model.d.ts +67 -66
- package/esm/LinearBasicDisplay/model.js +1 -0
- package/esm/LinearBasicDisplay/model.js.map +1 -1
- package/esm/LinearGenomeView/components/CenterLine.d.ts +2 -1
- package/esm/LinearGenomeView/components/Cytobands.d.ts +2 -1
- package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +2 -1
- package/esm/LinearGenomeView/components/GetSequenceDialog.d.ts +2 -1
- package/esm/LinearGenomeView/components/Gridlines.d.ts +2 -1
- package/esm/LinearGenomeView/components/Header.d.ts +2 -1
- package/esm/LinearGenomeView/components/ImportForm.d.ts +2 -1
- package/esm/LinearGenomeView/components/LinearGenomeView.d.ts +2 -1
- package/esm/LinearGenomeView/components/LinearGenomeView.js +4 -3
- package/esm/LinearGenomeView/components/LinearGenomeView.js.map +1 -1
- package/esm/LinearGenomeView/components/MiniControls.d.ts +3 -2
- package/esm/LinearGenomeView/components/MiniControls.js +20 -17
- package/esm/LinearGenomeView/components/MiniControls.js.map +1 -1
- package/esm/LinearGenomeView/components/OverviewRubberband.d.ts +1 -1
- package/esm/LinearGenomeView/components/OverviewScalebar.d.ts +2 -2
- package/esm/LinearGenomeView/components/OverviewScalebar.js +10 -4
- package/esm/LinearGenomeView/components/OverviewScalebar.js.map +1 -1
- package/esm/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.d.ts +10 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js +16 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js.map +1 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.d.ts +5 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js +23 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js.map +1 -0
- package/esm/LinearGenomeView/components/{HelpDialog.d.ts → RefNameAutocomplete/HelpDialog.d.ts} +2 -1
- package/esm/LinearGenomeView/components/RefNameAutocomplete/HelpDialog.js.map +1 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +18 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete/index.js +83 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete/index.js.map +1 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete/util.d.ts +12 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete/util.js +50 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete/util.js.map +1 -0
- package/esm/LinearGenomeView/components/Rubberband.d.ts +1 -1
- package/esm/LinearGenomeView/components/RubberbandSpan.d.ts +2 -1
- package/esm/LinearGenomeView/components/SearchBox.d.ts +2 -1
- package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +2 -1
- package/esm/LinearGenomeView/components/SearchResultsTable.d.ts +2 -1
- package/esm/LinearGenomeView/components/SequenceSearchDialog.d.ts +2 -1
- package/esm/LinearGenomeView/components/TrackContainer.d.ts +3 -3
- package/esm/LinearGenomeView/components/TrackContainer.js +13 -69
- package/esm/LinearGenomeView/components/TrackContainer.js.map +1 -1
- package/esm/LinearGenomeView/components/TrackLabel.js +6 -10
- package/esm/LinearGenomeView/components/TrackLabel.js.map +1 -1
- package/esm/LinearGenomeView/components/TrackLabelContainer.d.ts +9 -0
- package/esm/LinearGenomeView/components/TrackLabelContainer.js +27 -0
- package/esm/LinearGenomeView/components/TrackLabelContainer.js.map +1 -0
- package/esm/LinearGenomeView/components/TrackRenderingContainer.d.ts +10 -0
- package/esm/LinearGenomeView/components/TrackRenderingContainer.js +49 -0
- package/esm/LinearGenomeView/components/TrackRenderingContainer.js.map +1 -0
- package/esm/LinearGenomeView/components/TracksContainer.d.ts +1 -1
- package/esm/LinearGenomeView/components/TracksContainer.js +2 -2
- package/esm/LinearGenomeView/components/TracksContainer.js.map +1 -1
- package/esm/LinearGenomeView/components/VerticalGuide.d.ts +2 -1
- package/esm/LinearGenomeView/components/ZoomControls.d.ts +2 -1
- package/esm/LinearGenomeView/model.d.ts +13 -12
- package/esm/LinearGenomeView/model.js +21 -21
- package/esm/LinearGenomeView/model.js.map +1 -1
- package/esm/LinearGenomeView/svgcomponents/SVGBackground.d.ts +2 -1
- package/esm/LinearGenomeView/svgcomponents/SVGHeader.d.ts +3 -4
- package/esm/LinearGenomeView/svgcomponents/SVGHeader.js +7 -2
- package/esm/LinearGenomeView/svgcomponents/SVGHeader.js.map +1 -1
- package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +1 -1
- package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js.map +1 -1
- package/esm/LinearGenomeView/svgcomponents/SVGRegionSeparators.d.ts +2 -1
- package/esm/LinearGenomeView/svgcomponents/SVGRuler.d.ts +2 -1
- package/esm/LinearGenomeView/svgcomponents/SVGScalebar.d.ts +2 -1
- package/esm/LinearGenomeView/svgcomponents/SVGTrackLabel.d.ts +2 -1
- package/esm/LinearGenomeView/svgcomponents/SVGTracks.d.ts +2 -1
- package/esm/LinearGenomeView/util.d.ts +2 -2
- package/esm/index.d.ts +160 -134
- package/esm/index.js +1 -1
- package/esm/index.js.map +1 -1
- package/package.json +2 -2
- package/src/BaseLinearDisplay/index.ts +5 -1
- package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +46 -407
- package/src/BaseLinearDisplay/models/FeatureDensityMixin.tsx +213 -0
- package/src/BaseLinearDisplay/models/TrackHeightMixin.tsx +59 -0
- package/src/BaseLinearDisplay/models/autorunFeatureDensityStats.ts +46 -0
- package/src/BaseLinearDisplay/models/configSchema.ts +1 -0
- package/src/BaseLinearDisplay/models/renderSvg.tsx +101 -0
- package/src/BaseLinearDisplay/models/serverSideRenderedBlock.ts +21 -19
- package/src/BasicTrack/configSchema.ts +1 -0
- package/src/FeatureTrack/configSchema.ts +1 -0
- package/src/LinearBareDisplay/configSchema.ts +1 -0
- package/src/LinearBareDisplay/model.ts +1 -0
- package/src/LinearBasicDisplay/configSchema.ts +1 -0
- package/src/LinearBasicDisplay/model.ts +1 -0
- package/src/LinearGenomeView/components/LinearGenomeView.test.tsx +3 -3
- package/src/LinearGenomeView/components/LinearGenomeView.tsx +6 -3
- package/src/LinearGenomeView/components/MiniControls.tsx +37 -38
- package/src/LinearGenomeView/components/OverviewScalebar.tsx +11 -5
- package/src/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.tsx +53 -0
- package/src/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.tsx +44 -0
- package/src/LinearGenomeView/components/RefNameAutocomplete/index.tsx +160 -0
- package/src/LinearGenomeView/components/RefNameAutocomplete/util.ts +65 -0
- package/src/LinearGenomeView/components/TrackContainer.tsx +16 -104
- package/src/LinearGenomeView/components/TrackLabel.tsx +7 -27
- package/src/LinearGenomeView/components/TrackLabelContainer.tsx +48 -0
- package/src/LinearGenomeView/components/TrackRenderingContainer.tsx +96 -0
- package/src/LinearGenomeView/components/TracksContainer.tsx +2 -2
- package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.tsx.snap +3 -3
- package/src/LinearGenomeView/model.ts +29 -28
- package/src/LinearGenomeView/svgcomponents/SVGHeader.tsx +8 -6
- package/src/LinearGenomeView/svgcomponents/SVGLinearGenomeView.tsx +1 -1
- package/src/index.ts +11 -5
- package/dist/LinearGenomeView/components/HelpDialog.js.map +0 -1
- package/dist/LinearGenomeView/components/RefNameAutocomplete.d.ts +0 -23
- package/dist/LinearGenomeView/components/RefNameAutocomplete.js +0 -189
- package/dist/LinearGenomeView/components/RefNameAutocomplete.js.map +0 -1
- package/esm/LinearGenomeView/components/HelpDialog.js.map +0 -1
- package/esm/LinearGenomeView/components/RefNameAutocomplete.d.ts +0 -23
- package/esm/LinearGenomeView/components/RefNameAutocomplete.js +0 -161
- package/esm/LinearGenomeView/components/RefNameAutocomplete.js.map +0 -1
- package/src/LinearGenomeView/components/RefNameAutocomplete.tsx +0 -321
- /package/dist/LinearGenomeView/components/{HelpDialog.js → RefNameAutocomplete/HelpDialog.js} +0 -0
- /package/esm/LinearGenomeView/components/{HelpDialog.js → RefNameAutocomplete/HelpDialog.js} +0 -0
- /package/src/LinearGenomeView/components/{HelpDialog.tsx → RefNameAutocomplete/HelpDialog.tsx} +0 -0
package/esm/index.js
CHANGED
|
@@ -44,7 +44,7 @@ export default class LinearGenomeViewPlugin extends Plugin {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
export { configSchemaFactory as linearBareDisplayConfigSchemaFactory } from './LinearBareDisplay';
|
|
47
|
-
export {
|
|
47
|
+
export { baseLinearDisplayConfigSchema, BaseLinearDisplay, BlockMsg, BaseLinearDisplayComponent, TrackHeightMixin, FeatureDensityMixin, TooLargeMessage, } from './BaseLinearDisplay';
|
|
48
48
|
export { RefNameAutocomplete, SearchBox, } from './LinearGenomeView';
|
|
49
49
|
export { renderToSvg, SVGTracks, totalHeight, SVGRuler, } from './LinearGenomeView/svgcomponents/SVGLinearGenomeView';
|
|
50
50
|
export { configSchema as linearBasicDisplayConfigSchemaFactory, modelFactory as linearBasicDisplayModelFactory, } from './LinearBasicDisplay';
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,sBAAsB,CAAA;AAEzC,OAAO,EAAwB,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAEhF,QAAQ;AACR,OAAO,aAAa,MAAM,+BAA+B,CAAA;AAEzD,SAAS;AACT,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,kBAAkB,MAAM,qBAAqB,CAAA;AACpD,OAAO,iBAAiB,EAAE,EACxB,SAAS,EACT,YAAY,EACZ,gBAAgB,GACjB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,mBAAmB,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,sBAAsB,CAAA;AAEzC,OAAO,EAAwB,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAEhF,QAAQ;AACR,OAAO,aAAa,MAAM,+BAA+B,CAAA;AAEzD,SAAS;AACT,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,kBAAkB,MAAM,qBAAqB,CAAA;AACpD,OAAO,iBAAiB,EAAE,EACxB,SAAS,EACT,YAAY,EACZ,gBAAgB,GACjB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,mBAAmB,MAAM,sBAAsB,CAAA;AACtD,OAAO,aAAa,MAAM,gBAAgB,CAAA;AAC1C,OAAO,WAAW,MAAM,cAAc,CAAA;AACtC,OAAO,uBAAuB,MAAM,0BAA0B,CAAA;AAE9D,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,MAAM;IAA1D;;QACE,SAAI,GAAG,wBAAwB,CAAA;QAE/B,YAAO,GAAG;YACR,0BAA0B;YAC1B,iBAAiB;YACjB,6BAA6B;YAC7B,SAAS;YACT,YAAY;YACZ,gBAAgB;SACjB,CAAA;IAsBH,CAAC;IApBC,OAAO,CAAC,aAA4B;QAClC,aAAa,CAAC,aAAa,CAAC,CAAA;QAC5B,WAAW,CAAC,aAAa,CAAC,CAAA;QAC1B,mBAAmB,CAAC,aAAa,CAAC,CAAA;QAClC,iBAAiB,CAAC,aAAa,CAAC,CAAA;QAChC,kBAAkB,CAAC,aAAa,CAAC,CAAA;QACjC,uBAAuB,CAAC,aAAa,CAAC,CAAA;IACxC,CAAC;IAED,SAAS,CAAC,aAA4B;QACpC,IAAI,qBAAqB,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;YAClD,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE;gBAC/C,KAAK,EAAE,oBAAoB;gBAC3B,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,CAAC,OAA6B,EAAE,EAAE;oBACzC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;gBACzC,CAAC;aACF,CAAC,CAAA;SACH;IACH,CAAC;CACF;AAQD,OAAO,EAAE,mBAAmB,IAAI,oCAAoC,EAAE,MAAM,qBAAqB,CAAA;AACjG,OAAO,EACL,6BAA6B,EAC7B,iBAAiB,EACjB,QAAQ,EACR,0BAA0B,EAC1B,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAGL,mBAAmB,EACnB,SAAS,GACV,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,QAAQ,GACT,MAAM,sDAAsD,CAAA;AAC7D,OAAO,EACL,YAAY,IAAI,qCAAqC,EACrD,YAAY,IAAI,8BAA8B,GAC/C,MAAM,sBAAsB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-linear-genome-view",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.1",
|
|
4
4
|
"description": "JBrowse 2 linear genome view",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -66,5 +66,5 @@
|
|
|
66
66
|
"access": "public"
|
|
67
67
|
},
|
|
68
68
|
"module": "esm/index.js",
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "1cbe7ba097fb2d2763c776e5e429e4670cdd583c"
|
|
70
70
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { default as baseLinearDisplayConfigSchema } from './models/configSchema'
|
|
2
|
-
export { BaseLinearDisplay } from './models/BaseLinearDisplayModel'
|
|
3
2
|
export type { BlockModel } from './models/serverSideRenderedBlock'
|
|
3
|
+
export { BaseLinearDisplay } from './models/BaseLinearDisplayModel'
|
|
4
4
|
export type {
|
|
5
|
+
ExportSvgDisplayOptions,
|
|
5
6
|
BaseLinearDisplayModel,
|
|
6
7
|
BaseLinearDisplayStateModel,
|
|
7
8
|
} from './models/BaseLinearDisplayModel'
|
|
@@ -10,3 +11,6 @@ export {
|
|
|
10
11
|
Tooltip,
|
|
11
12
|
BlockMsg,
|
|
12
13
|
} from './components/BaseLinearDisplay'
|
|
14
|
+
export { default as TrackHeightMixin } from './models/TrackHeightMixin'
|
|
15
|
+
export { default as FeatureDensityMixin } from './models/FeatureDensityMixin'
|
|
16
|
+
export { default as TooLargeMessage } from './components/TooLargeMessage'
|
|
@@ -2,23 +2,18 @@
|
|
|
2
2
|
import React from 'react'
|
|
3
3
|
import { ThemeOptions } from '@mui/material'
|
|
4
4
|
import { BaseDisplay } from '@jbrowse/core/pluggableElementTypes/models'
|
|
5
|
-
import { ConfigurationReference
|
|
5
|
+
import { ConfigurationReference } from '@jbrowse/core/configuration'
|
|
6
6
|
import { MenuItem } from '@jbrowse/core/ui'
|
|
7
7
|
import {
|
|
8
|
-
isAbortException,
|
|
9
8
|
getContainingView,
|
|
10
9
|
getContainingTrack,
|
|
11
10
|
getSession,
|
|
12
|
-
getViewParams,
|
|
13
11
|
isSelectionContainer,
|
|
14
12
|
isSessionModelWithWidgets,
|
|
15
13
|
isFeature,
|
|
16
14
|
Feature,
|
|
17
|
-
ReactRendering,
|
|
18
15
|
} from '@jbrowse/core/util'
|
|
19
|
-
import { FeatureDensityStats } from '@jbrowse/core/data_adapters/BaseAdapter'
|
|
20
16
|
import { BaseBlock } from '@jbrowse/core/util/blockTypes'
|
|
21
|
-
import { Region } from '@jbrowse/core/util/types'
|
|
22
17
|
import CompositeMap from '@jbrowse/core/util/compositeMap'
|
|
23
18
|
import { getParentRenderProps } from '@jbrowse/core/util/tracks'
|
|
24
19
|
import { autorun } from 'mobx'
|
|
@@ -30,10 +25,11 @@ import MenuOpenIcon from '@mui/icons-material/MenuOpen'
|
|
|
30
25
|
// locals
|
|
31
26
|
import { LinearGenomeViewModel, ExportSvgOptions } from '../../LinearGenomeView'
|
|
32
27
|
import { Tooltip } from '../components/BaseLinearDisplay'
|
|
33
|
-
import
|
|
34
|
-
import BlockState, { renderBlockData } from './serverSideRenderedBlock'
|
|
35
|
-
import { getId, getDisplayStr, getFeatureDensityStatsPre } from './util'
|
|
28
|
+
import BlockState from './serverSideRenderedBlock'
|
|
36
29
|
import configSchema from './configSchema'
|
|
30
|
+
import renderBaseLinearDisplaySvg from './renderSvg'
|
|
31
|
+
import TrackHeightMixin from './TrackHeightMixin'
|
|
32
|
+
import FeatureDensityMixin from './FeatureDensityMixin'
|
|
37
33
|
|
|
38
34
|
type LGV = LinearGenomeViewModel
|
|
39
35
|
|
|
@@ -47,10 +43,14 @@ export interface Layout {
|
|
|
47
43
|
|
|
48
44
|
type LayoutRecord = [number, number, number, number]
|
|
49
45
|
|
|
50
|
-
|
|
46
|
+
export interface ExportSvgDisplayOptions extends ExportSvgOptions {
|
|
47
|
+
overrideHeight: number
|
|
48
|
+
theme: ThemeOptions
|
|
49
|
+
}
|
|
51
50
|
|
|
52
51
|
/**
|
|
53
52
|
* #stateModel BaseLinearDisplay
|
|
53
|
+
* #category display
|
|
54
54
|
* extends `BaseDisplay`
|
|
55
55
|
*/
|
|
56
56
|
function stateModelFactory() {
|
|
@@ -58,30 +58,14 @@ function stateModelFactory() {
|
|
|
58
58
|
.compose(
|
|
59
59
|
'BaseLinearDisplay',
|
|
60
60
|
BaseDisplay,
|
|
61
|
+
TrackHeightMixin(),
|
|
62
|
+
FeatureDensityMixin(),
|
|
61
63
|
types.model({
|
|
62
|
-
/**
|
|
63
|
-
* #property
|
|
64
|
-
*/
|
|
65
|
-
heightPreConfig: types.maybe(
|
|
66
|
-
types.refinement(
|
|
67
|
-
'displayHeight',
|
|
68
|
-
types.number,
|
|
69
|
-
n => n >= minDisplayHeight,
|
|
70
|
-
),
|
|
71
|
-
),
|
|
72
64
|
/**
|
|
73
65
|
* #property
|
|
74
66
|
* updated via autorun
|
|
75
67
|
*/
|
|
76
68
|
blockState: types.map(BlockState),
|
|
77
|
-
/**
|
|
78
|
-
* #property
|
|
79
|
-
*/
|
|
80
|
-
userBpPerPxLimit: types.maybe(types.number),
|
|
81
|
-
/**
|
|
82
|
-
* #property
|
|
83
|
-
*/
|
|
84
|
-
userByteSizeLimit: types.maybe(types.number),
|
|
85
69
|
/**
|
|
86
70
|
* #property
|
|
87
71
|
*/
|
|
@@ -89,20 +73,10 @@ function stateModelFactory() {
|
|
|
89
73
|
}),
|
|
90
74
|
)
|
|
91
75
|
.volatile(() => ({
|
|
92
|
-
currBpPerPx: 0,
|
|
93
|
-
scrollTop: 0,
|
|
94
|
-
message: '',
|
|
95
76
|
featureIdUnderMouse: undefined as undefined | string,
|
|
96
77
|
contextMenuFeature: undefined as undefined | Feature,
|
|
97
|
-
featureDensityStatsP: undefined as
|
|
98
|
-
| undefined
|
|
99
|
-
| Promise<FeatureDensityStats>,
|
|
100
|
-
featureDensityStats: undefined as undefined | FeatureDensityStats,
|
|
101
78
|
}))
|
|
102
79
|
.views(self => ({
|
|
103
|
-
get height() {
|
|
104
|
-
return self.heightPreConfig ?? (getConf(self, 'height') as number)
|
|
105
|
-
},
|
|
106
80
|
/**
|
|
107
81
|
* #getter
|
|
108
82
|
*/
|
|
@@ -113,12 +87,11 @@ function stateModelFactory() {
|
|
|
113
87
|
* #getter
|
|
114
88
|
*/
|
|
115
89
|
get blockDefinitions() {
|
|
116
|
-
const { blockType } = this
|
|
117
90
|
const view = getContainingView(self) as LGV
|
|
118
91
|
if (!view.initialized) {
|
|
119
92
|
throw new Error('view not initialized yet')
|
|
120
93
|
}
|
|
121
|
-
return view[blockType]
|
|
94
|
+
return view[this.blockType]
|
|
122
95
|
},
|
|
123
96
|
}))
|
|
124
97
|
.views(self => ({
|
|
@@ -217,152 +190,9 @@ function stateModelFactory() {
|
|
|
217
190
|
})
|
|
218
191
|
return ret
|
|
219
192
|
},
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* #getter
|
|
223
|
-
*/
|
|
224
|
-
get currentBytesRequested() {
|
|
225
|
-
return self.featureDensityStats?.bytes || 0
|
|
226
|
-
},
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* #getter
|
|
230
|
-
*/
|
|
231
|
-
get currentFeatureScreenDensity() {
|
|
232
|
-
const view = getContainingView(self) as LGV
|
|
233
|
-
return (self.featureDensityStats?.featureDensity || 0) * view.bpPerPx
|
|
234
|
-
},
|
|
235
|
-
|
|
236
|
-
/**
|
|
237
|
-
* #getter
|
|
238
|
-
*/
|
|
239
|
-
get maxFeatureScreenDensity() {
|
|
240
|
-
return getConf(self, 'maxFeatureScreenDensity')
|
|
241
|
-
},
|
|
242
|
-
/**
|
|
243
|
-
* #getter
|
|
244
|
-
*/
|
|
245
|
-
get featureDensityStatsReady() {
|
|
246
|
-
return !!self.featureDensityStats || !!self.userBpPerPxLimit
|
|
247
|
-
},
|
|
248
|
-
|
|
249
|
-
/**
|
|
250
|
-
* #getter
|
|
251
|
-
*/
|
|
252
|
-
get maxAllowableBytes() {
|
|
253
|
-
return (
|
|
254
|
-
self.userByteSizeLimit ||
|
|
255
|
-
self.featureDensityStats?.fetchSizeLimit ||
|
|
256
|
-
(getConf(self, 'fetchSizeLimit') as number)
|
|
257
|
-
)
|
|
258
|
-
},
|
|
259
193
|
}))
|
|
260
|
-
.actions(self => ({
|
|
261
|
-
/**
|
|
262
|
-
* #action
|
|
263
|
-
*/
|
|
264
|
-
setMessage(message: string) {
|
|
265
|
-
self.message = message
|
|
266
|
-
},
|
|
267
|
-
}))
|
|
268
|
-
.actions(self => ({
|
|
269
|
-
afterAttach() {
|
|
270
|
-
// watch the parent's blocks to update our block state when they change,
|
|
271
|
-
// then we recreate the blocks on our own model (creating and deleting to
|
|
272
|
-
// match the parent blocks)
|
|
273
|
-
addDisposer(
|
|
274
|
-
self,
|
|
275
|
-
autorun(() => {
|
|
276
|
-
const blocksPresent: { [key: string]: boolean } = {}
|
|
277
|
-
const view = getContainingView(self) as LGV
|
|
278
|
-
if (view.initialized) {
|
|
279
|
-
self.blockDefinitions.contentBlocks.forEach(block => {
|
|
280
|
-
blocksPresent[block.key] = true
|
|
281
|
-
if (!self.blockState.has(block.key)) {
|
|
282
|
-
this.addBlock(block.key, block)
|
|
283
|
-
}
|
|
284
|
-
})
|
|
285
|
-
self.blockState.forEach((_, key) => {
|
|
286
|
-
if (!blocksPresent[key]) {
|
|
287
|
-
this.deleteBlock(key)
|
|
288
|
-
}
|
|
289
|
-
})
|
|
290
|
-
}
|
|
291
|
-
}),
|
|
292
|
-
)
|
|
293
|
-
},
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* #action
|
|
297
|
-
*/
|
|
298
|
-
async getFeatureDensityStats() {
|
|
299
|
-
if (!self.featureDensityStatsP) {
|
|
300
|
-
self.featureDensityStatsP = getFeatureDensityStatsPre(self).catch(
|
|
301
|
-
e => {
|
|
302
|
-
this.setFeatureDensityStatsP(undefined)
|
|
303
|
-
throw e
|
|
304
|
-
},
|
|
305
|
-
)
|
|
306
|
-
}
|
|
307
|
-
return self.featureDensityStatsP
|
|
308
|
-
},
|
|
309
|
-
|
|
310
|
-
/**
|
|
311
|
-
* #action
|
|
312
|
-
*/
|
|
313
|
-
setFeatureDensityStatsP(arg: any) {
|
|
314
|
-
self.featureDensityStatsP = arg
|
|
315
|
-
},
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
* #action
|
|
319
|
-
*/
|
|
320
|
-
setFeatureDensityStats(featureDensityStats?: FeatureDensityStats) {
|
|
321
|
-
self.featureDensityStats = featureDensityStats
|
|
322
|
-
},
|
|
323
|
-
/**
|
|
324
|
-
* #action
|
|
325
|
-
*/
|
|
326
|
-
clearFeatureDensityStats() {
|
|
327
|
-
self.featureDensityStatsP = undefined
|
|
328
|
-
self.featureDensityStats = undefined
|
|
329
|
-
},
|
|
330
|
-
/**
|
|
331
|
-
* #action
|
|
332
|
-
*/
|
|
333
|
-
setHeight(displayHeight: number) {
|
|
334
|
-
self.heightPreConfig =
|
|
335
|
-
displayHeight > minDisplayHeight ? displayHeight : minDisplayHeight
|
|
336
|
-
return self.height
|
|
337
|
-
},
|
|
338
|
-
/**
|
|
339
|
-
* #action
|
|
340
|
-
*/
|
|
341
|
-
resizeHeight(distance: number) {
|
|
342
|
-
const oldHeight = self.height
|
|
343
|
-
const newHeight = this.setHeight(self.height + distance)
|
|
344
|
-
return newHeight - oldHeight
|
|
345
|
-
},
|
|
346
|
-
|
|
347
|
-
/**
|
|
348
|
-
* #action
|
|
349
|
-
*/
|
|
350
|
-
setScrollTop(scrollTop: number) {
|
|
351
|
-
self.scrollTop = scrollTop
|
|
352
|
-
},
|
|
353
|
-
|
|
354
|
-
/**
|
|
355
|
-
* #action
|
|
356
|
-
*/
|
|
357
|
-
setFeatureDensityStatsLimit(stats?: FeatureDensityStats) {
|
|
358
|
-
const view = getContainingView(self) as LGV
|
|
359
|
-
if (stats?.bytes) {
|
|
360
|
-
self.userByteSizeLimit = stats.bytes
|
|
361
|
-
} else {
|
|
362
|
-
self.userBpPerPxLimit = view.bpPerPx
|
|
363
|
-
}
|
|
364
|
-
},
|
|
365
194
|
|
|
195
|
+
.actions(self => ({
|
|
366
196
|
/**
|
|
367
197
|
* #action
|
|
368
198
|
*/
|
|
@@ -375,12 +205,7 @@ function stateModelFactory() {
|
|
|
375
205
|
}),
|
|
376
206
|
)
|
|
377
207
|
},
|
|
378
|
-
|
|
379
|
-
* #action
|
|
380
|
-
*/
|
|
381
|
-
setCurrBpPerPx(n: number) {
|
|
382
|
-
self.currBpPerPx = n
|
|
383
|
-
},
|
|
208
|
+
|
|
384
209
|
/**
|
|
385
210
|
* #action
|
|
386
211
|
*/
|
|
@@ -421,12 +246,7 @@ function stateModelFactory() {
|
|
|
421
246
|
setFeatureIdUnderMouse(feature?: string) {
|
|
422
247
|
self.featureIdUnderMouse = feature
|
|
423
248
|
},
|
|
424
|
-
|
|
425
|
-
* #action
|
|
426
|
-
*/
|
|
427
|
-
reload() {
|
|
428
|
-
;[...self.blockState.values()].map(val => val.doReload())
|
|
429
|
-
},
|
|
249
|
+
|
|
430
250
|
/**
|
|
431
251
|
* #action
|
|
432
252
|
*/
|
|
@@ -434,45 +254,7 @@ function stateModelFactory() {
|
|
|
434
254
|
self.contextMenuFeature = feature
|
|
435
255
|
},
|
|
436
256
|
}))
|
|
437
|
-
.views(self => ({
|
|
438
|
-
/**
|
|
439
|
-
* #getter
|
|
440
|
-
* region is too large if:
|
|
441
|
-
* - stats are ready
|
|
442
|
-
* - region is greater than 20kb (don't warn when zoomed in less than that)
|
|
443
|
-
* - and bytes is greater than max allowed bytes or density greater than max
|
|
444
|
-
* density
|
|
445
|
-
*/
|
|
446
|
-
get regionTooLarge() {
|
|
447
|
-
const view = getContainingView(self) as LGV
|
|
448
|
-
if (
|
|
449
|
-
!self.featureDensityStatsReady ||
|
|
450
|
-
view.dynamicBlocks.totalBp < 20_000
|
|
451
|
-
) {
|
|
452
|
-
return false
|
|
453
|
-
}
|
|
454
|
-
return (
|
|
455
|
-
self.currentBytesRequested > self.maxAllowableBytes ||
|
|
456
|
-
(self.userBpPerPxLimit
|
|
457
|
-
? view.bpPerPx > self.userBpPerPxLimit
|
|
458
|
-
: self.currentFeatureScreenDensity > self.maxFeatureScreenDensity)
|
|
459
|
-
)
|
|
460
|
-
},
|
|
461
|
-
|
|
462
|
-
/**
|
|
463
|
-
* #getter
|
|
464
|
-
* only shows a message of bytes requested is defined, the feature density
|
|
465
|
-
* based stats don't produce any helpful message besides to zoom in
|
|
466
|
-
*/
|
|
467
|
-
get regionTooLargeReason() {
|
|
468
|
-
const req = self.currentBytesRequested
|
|
469
|
-
const max = self.maxAllowableBytes
|
|
470
257
|
|
|
471
|
-
return req && req > max
|
|
472
|
-
? `Requested too much data (${getDisplayStr(req)})`
|
|
473
|
-
: ''
|
|
474
|
-
},
|
|
475
|
-
}))
|
|
476
258
|
.actions(self => {
|
|
477
259
|
const { reload: superReload } = self
|
|
478
260
|
|
|
@@ -482,99 +264,15 @@ function stateModelFactory() {
|
|
|
482
264
|
*/
|
|
483
265
|
async reload() {
|
|
484
266
|
self.setError()
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
if (!view.initialized || !view.staticBlocks.contentBlocks.length) {
|
|
490
|
-
return
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
try {
|
|
494
|
-
const featureDensityStats = await self.getFeatureDensityStats()
|
|
495
|
-
|
|
496
|
-
if (isAlive(self)) {
|
|
497
|
-
self.setFeatureDensityStats(featureDensityStats)
|
|
498
|
-
superReload()
|
|
499
|
-
}
|
|
500
|
-
} catch (e) {
|
|
501
|
-
console.error(e)
|
|
502
|
-
self.setError(e)
|
|
503
|
-
}
|
|
267
|
+
self.setCurrStatsBpPerPx(0)
|
|
268
|
+
self.clearFeatureDensityStats()
|
|
269
|
+
;[...self.blockState.values()].map(val => val.doReload())
|
|
270
|
+
superReload()
|
|
504
271
|
},
|
|
505
272
|
}
|
|
506
273
|
})
|
|
507
|
-
.actions(self => ({
|
|
508
|
-
afterAttach() {
|
|
509
|
-
// this autorun performs stats estimation
|
|
510
|
-
//
|
|
511
|
-
// the chain of events calls getFeatureDensityStats against the data
|
|
512
|
-
// adapter which by default uses featureDensity, but can also respond
|
|
513
|
-
// with a byte size estimate and fetch size limit (data adapter can
|
|
514
|
-
// define what is too much data)
|
|
515
|
-
addDisposer(
|
|
516
|
-
self,
|
|
517
|
-
autorun(async () => {
|
|
518
|
-
try {
|
|
519
|
-
const view = getContainingView(self) as LGV
|
|
520
|
-
|
|
521
|
-
// extra check for contentBlocks.length
|
|
522
|
-
// https://github.com/GMOD/jbrowse-components/issues/2694
|
|
523
|
-
if (
|
|
524
|
-
!view.initialized ||
|
|
525
|
-
!view.staticBlocks.contentBlocks.length
|
|
526
|
-
) {
|
|
527
|
-
return
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
// don't re-estimate featureDensity even if zoom level changes,
|
|
531
|
-
// jbrowse1-style assume it's sort of representative
|
|
532
|
-
if (self.featureDensityStats?.featureDensity !== undefined) {
|
|
533
|
-
self.setCurrBpPerPx(view.bpPerPx)
|
|
534
|
-
return
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
// we estimate stats once at a given zoom level
|
|
538
|
-
if (view.bpPerPx === self.currBpPerPx) {
|
|
539
|
-
return
|
|
540
|
-
}
|
|
541
274
|
|
|
542
|
-
self.clearFeatureDensityStats()
|
|
543
|
-
self.setCurrBpPerPx(view.bpPerPx)
|
|
544
|
-
const featureDensityStats = await self.getFeatureDensityStats()
|
|
545
|
-
if (isAlive(self)) {
|
|
546
|
-
self.setFeatureDensityStats(featureDensityStats)
|
|
547
|
-
}
|
|
548
|
-
} catch (e) {
|
|
549
|
-
if (!isAbortException(e) && isAlive(self)) {
|
|
550
|
-
console.error(e)
|
|
551
|
-
self.setError(e)
|
|
552
|
-
}
|
|
553
|
-
}
|
|
554
|
-
}),
|
|
555
|
-
)
|
|
556
|
-
},
|
|
557
|
-
}))
|
|
558
275
|
.views(self => ({
|
|
559
|
-
/**
|
|
560
|
-
* #method
|
|
561
|
-
*/
|
|
562
|
-
regionCannotBeRenderedText(_region: Region) {
|
|
563
|
-
return self.regionTooLarge ? 'Force load to see features' : ''
|
|
564
|
-
},
|
|
565
|
-
|
|
566
|
-
/**
|
|
567
|
-
* #method
|
|
568
|
-
* @param region -
|
|
569
|
-
* @returns falsy if the region is fine to try rendering. Otherwise,
|
|
570
|
-
* return a react node + string of text.
|
|
571
|
-
* string of text describes why it cannot be rendered
|
|
572
|
-
* react node allows user to force load at current setting
|
|
573
|
-
*/
|
|
574
|
-
regionCannotBeRendered(_region: Region) {
|
|
575
|
-
return self.regionTooLarge ? <TooLargeMessage model={self} /> : null
|
|
576
|
-
},
|
|
577
|
-
|
|
578
276
|
/**
|
|
579
277
|
* #method
|
|
580
278
|
*/
|
|
@@ -606,11 +304,9 @@ function stateModelFactory() {
|
|
|
606
304
|
* #method
|
|
607
305
|
*/
|
|
608
306
|
renderProps() {
|
|
609
|
-
const view = getContainingView(self) as LGV
|
|
610
307
|
return {
|
|
611
308
|
...getParentRenderProps(self),
|
|
612
|
-
notReady:
|
|
613
|
-
self.currBpPerPx !== view.bpPerPx || !self.featureDensityStatsReady,
|
|
309
|
+
notReady: !self.featureDensityStatsReady,
|
|
614
310
|
rpcDriverName: self.rpcDriverName,
|
|
615
311
|
displayModel: self,
|
|
616
312
|
onFeatureClick(_: unknown, featureId?: string) {
|
|
@@ -657,91 +353,34 @@ function stateModelFactory() {
|
|
|
657
353
|
/**
|
|
658
354
|
* #method
|
|
659
355
|
*/
|
|
660
|
-
async renderSvg(
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
key: block.key,
|
|
675
|
-
region: block,
|
|
676
|
-
})
|
|
677
|
-
|
|
678
|
-
// regionCannotBeRendered can return jsx so look for plaintext
|
|
679
|
-
// version, or just get the default if none available
|
|
680
|
-
const cannotBeRenderedReason =
|
|
681
|
-
self.regionCannotBeRenderedText(block) ||
|
|
682
|
-
self.regionCannotBeRendered(block)
|
|
683
|
-
|
|
684
|
-
if (cannotBeRenderedReason) {
|
|
685
|
-
return [
|
|
686
|
-
block,
|
|
687
|
-
{
|
|
688
|
-
reactElement: (
|
|
689
|
-
<>
|
|
690
|
-
<rect x={0} y={0} width={width} height={20} fill="#aaa" />
|
|
691
|
-
<text x={0} y={15}>
|
|
692
|
-
{cannotBeRenderedReason}
|
|
693
|
-
</text>
|
|
694
|
-
</>
|
|
695
|
-
),
|
|
696
|
-
},
|
|
697
|
-
] as const
|
|
356
|
+
async renderSvg(opts: ExportSvgDisplayOptions) {
|
|
357
|
+
return renderBaseLinearDisplaySvg(self as BaseLinearDisplayModel, opts)
|
|
358
|
+
},
|
|
359
|
+
afterAttach() {
|
|
360
|
+
// watch the parent's blocks to update our block state when they change,
|
|
361
|
+
// then we recreate the blocks on our own model (creating and deleting to
|
|
362
|
+
// match the parent blocks)
|
|
363
|
+
addDisposer(
|
|
364
|
+
self,
|
|
365
|
+
autorun(() => {
|
|
366
|
+
const blocksPresent: { [key: string]: boolean } = {}
|
|
367
|
+
const view = getContainingView(self) as LGV
|
|
368
|
+
if (!view.initialized) {
|
|
369
|
+
return
|
|
698
370
|
}
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
theme: opts.theme || renderProps.theme,
|
|
711
|
-
}),
|
|
712
|
-
] as const
|
|
371
|
+
self.blockDefinitions.contentBlocks.forEach(block => {
|
|
372
|
+
blocksPresent[block.key] = true
|
|
373
|
+
if (!self.blockState.has(block.key)) {
|
|
374
|
+
self.addBlock(block.key, block)
|
|
375
|
+
}
|
|
376
|
+
})
|
|
377
|
+
self.blockState.forEach((_, key) => {
|
|
378
|
+
if (!blocksPresent[key]) {
|
|
379
|
+
self.deleteBlock(key)
|
|
380
|
+
}
|
|
381
|
+
})
|
|
713
382
|
}),
|
|
714
383
|
)
|
|
715
|
-
|
|
716
|
-
return (
|
|
717
|
-
<>
|
|
718
|
-
{renderings.map(([block, rendering], index) => {
|
|
719
|
-
const { offsetPx, widthPx } = block
|
|
720
|
-
const offset = offsetPx - viewOffsetPx
|
|
721
|
-
const clipid = getId(id, index)
|
|
722
|
-
|
|
723
|
-
return (
|
|
724
|
-
<React.Fragment key={`frag-${index}`}>
|
|
725
|
-
<defs>
|
|
726
|
-
<clipPath id={clipid}>
|
|
727
|
-
<rect
|
|
728
|
-
x={0}
|
|
729
|
-
y={0}
|
|
730
|
-
width={widthPx}
|
|
731
|
-
height={overrideHeight || height}
|
|
732
|
-
/>
|
|
733
|
-
</clipPath>
|
|
734
|
-
</defs>
|
|
735
|
-
<g transform={`translate(${offset} 0)`}>
|
|
736
|
-
<g clipPath={`url(#${clipid})`}>
|
|
737
|
-
<ReactRendering rendering={rendering} />
|
|
738
|
-
</g>
|
|
739
|
-
</g>
|
|
740
|
-
</React.Fragment>
|
|
741
|
-
)
|
|
742
|
-
})}
|
|
743
|
-
</>
|
|
744
|
-
)
|
|
745
384
|
},
|
|
746
385
|
}))
|
|
747
386
|
.preProcessSnapshot(snap => {
|