react-msaview 9.1.0 → 9.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/index.js +111 -115
- package/bundle/index.js.map +4 -4
- package/dist/blosum62.d.ts +3 -0
- package/dist/blosum62.js +43 -0
- package/dist/blosum62.js.map +1 -0
- package/dist/colorSchemes.js +1 -0
- package/dist/colorSchemes.js.map +1 -1
- package/dist/components/Loading.d.ts +3 -2
- package/dist/components/Loading.js +2 -2
- package/dist/components/Loading.js.map +1 -1
- package/dist/components/MSAView.d.ts +3 -2
- package/dist/components/MSAView.js +7 -4
- package/dist/components/MSAView.js.map +1 -1
- package/dist/components/MSAViewer.d.ts +64 -12
- package/dist/components/MetadataTable.d.ts +4 -1
- package/dist/components/MetadataTable.js +55 -16
- package/dist/components/MetadataTable.js.map +1 -1
- package/dist/components/Track.js +6 -0
- package/dist/components/Track.js.map +1 -1
- package/dist/components/controls.js +2 -1
- package/dist/components/controls.js.map +1 -1
- package/dist/components/dialogs/AnnotationFileDialog.js +7 -2
- package/dist/components/dialogs/AnnotationFileDialog.js.map +1 -1
- package/dist/components/dialogs/FeatureDialog.js +2 -2
- package/dist/components/dialogs/FeatureDialog.js.map +1 -1
- package/dist/components/{header/MSASettingsMenu.d.ts → dialogs/GapThresholdDialog.d.ts} +3 -2
- package/dist/components/dialogs/GapThresholdDialog.js +15 -0
- package/dist/components/dialogs/GapThresholdDialog.js.map +1 -0
- package/dist/components/{header → dialogs}/GappynessSlider.d.ts +1 -1
- package/dist/components/{header → dialogs}/GappynessSlider.js +3 -10
- package/dist/components/dialogs/GappynessSlider.js.map +1 -0
- package/dist/components/{header → dialogs}/GoToBox.d.ts +4 -2
- package/dist/components/dialogs/GoToBox.js +48 -0
- package/dist/components/dialogs/GoToBox.js.map +1 -0
- package/dist/components/dialogs/GoToDialog.d.ts +6 -0
- package/dist/components/dialogs/GoToDialog.js +10 -0
- package/dist/components/dialogs/GoToDialog.js.map +1 -0
- package/dist/components/dialogs/MetadataDialog.js +11 -3
- package/dist/components/dialogs/MetadataDialog.js.map +1 -1
- package/dist/components/dialogs/goTo.d.ts +5 -0
- package/dist/components/{header → dialogs}/goTo.js +1 -1
- package/dist/components/dialogs/goTo.js.map +1 -0
- package/dist/components/dialogs/metadataLabels.d.ts +4 -0
- package/dist/components/dialogs/metadataLabels.js +52 -0
- package/dist/components/dialogs/metadataLabels.js.map +1 -0
- package/dist/components/dialogs/metadataRecord.d.ts +1 -0
- package/dist/components/dialogs/metadataRecord.js +38 -0
- package/dist/components/dialogs/metadataRecord.js.map +1 -0
- package/dist/components/header/Header.d.ts +6 -2
- package/dist/components/header/Header.js +30 -32
- package/dist/components/header/Header.js.map +1 -1
- package/dist/components/header/{TreeSettingsMenu.d.ts → HiddenColumnsChip.d.ts} +2 -2
- package/dist/components/header/HiddenColumnsChip.js +15 -0
- package/dist/components/header/HiddenColumnsChip.js.map +1 -0
- package/dist/components/header/MenuBar.d.ts +6 -0
- package/dist/components/header/MenuBar.js +33 -0
- package/dist/components/header/MenuBar.js.map +1 -0
- package/dist/components/header/ScrollZoomCheckbox.d.ts +7 -0
- package/dist/components/header/ScrollZoomCheckbox.js +19 -0
- package/dist/components/header/ScrollZoomCheckbox.js.map +1 -0
- package/dist/components/header/ZoomControls.js +10 -30
- package/dist/components/header/ZoomControls.js.map +1 -1
- package/dist/components/header/colorSchemeMenuItems.d.ts +4 -0
- package/dist/components/header/colorSchemeMenuItems.js +106 -0
- package/dist/components/header/colorSchemeMenuItems.js.map +1 -0
- package/dist/components/header/getAnnotationsMenu.d.ts +3 -30
- package/dist/components/header/getAnnotationsMenu.js +48 -54
- package/dist/components/header/getAnnotationsMenu.js.map +1 -1
- package/dist/components/header/menuBarItems.d.ts +11 -0
- package/dist/components/header/menuBarItems.js +277 -0
- package/dist/components/header/menuBarItems.js.map +1 -0
- package/dist/components/import/ImportForm.js +12 -6
- package/dist/components/import/ImportForm.js.map +1 -1
- package/dist/components/minimap/Minimap.js +7 -3
- package/dist/components/minimap/Minimap.js.map +1 -1
- package/dist/components/minimap/MinimapSVG.js +2 -1
- package/dist/components/minimap/MinimapSVG.js.map +1 -1
- package/dist/components/minimap/minimapLayout.d.ts +12 -0
- package/dist/components/minimap/minimapLayout.js +20 -0
- package/dist/components/minimap/minimapLayout.js.map +1 -1
- package/dist/components/msa/MSACanvas.js +26 -9
- package/dist/components/msa/MSACanvas.js.map +1 -1
- package/dist/components/msa/MSACanvasBlock.js +15 -11
- package/dist/components/msa/MSACanvasBlock.js.map +1 -1
- package/dist/components/msa/MSAMouseoverCanvas.js +2 -2
- package/dist/components/msa/MSAMouseoverCanvas.js.map +1 -1
- package/dist/components/msa/WheelZoomHint.d.ts +7 -0
- package/dist/components/msa/WheelZoomHint.js +38 -0
- package/dist/components/msa/WheelZoomHint.js.map +1 -0
- package/dist/components/msa/msaKeys.js +3 -0
- package/dist/components/msa/msaKeys.js.map +1 -1
- package/dist/components/msa/msaRaster.d.ts +4 -5
- package/dist/components/msa/msaRaster.js +5 -5
- package/dist/components/msa/msaRaster.js.map +1 -1
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js +22 -2
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
- package/dist/components/msa/renderHighlights.d.ts +0 -3
- package/dist/components/msa/renderHighlights.js +3 -3
- package/dist/components/msa/renderHighlights.js.map +1 -1
- package/dist/components/msa/renderMSABlock.d.ts +6 -1
- package/dist/components/msa/renderMSABlock.js +44 -17
- package/dist/components/msa/renderMSABlock.js.map +1 -1
- package/dist/components/msa/tileColor.js +7 -0
- package/dist/components/msa/tileColor.js.map +1 -1
- package/dist/components/rowpanels/RowPanelBlock.js +2 -2
- package/dist/components/rowpanels/RowPanelBlock.js.map +1 -1
- package/dist/components/settings/MenuItemsForm.d.ts +10 -0
- package/dist/components/settings/MenuItemsForm.js +80 -0
- package/dist/components/settings/MenuItemsForm.js.map +1 -0
- package/dist/components/settings/SettingsPanel.d.ts +12 -0
- package/dist/components/settings/SettingsPanel.js +92 -0
- package/dist/components/settings/SettingsPanel.js.map +1 -0
- package/dist/components/{header/FileMenu.d.ts → settings/TrackList.d.ts} +2 -2
- package/dist/components/settings/TrackList.js +58 -0
- package/dist/components/settings/TrackList.js.map +1 -0
- package/dist/components/tracks/TrackBlocks.js +2 -2
- package/dist/components/tracks/TrackBlocks.js.map +1 -1
- package/dist/components/tracks/TrackTooltipContent.js +2 -1
- package/dist/components/tracks/TrackTooltipContent.js.map +1 -1
- package/dist/components/tracks/drawTracks.js +13 -6
- package/dist/components/tracks/drawTracks.js.map +1 -1
- package/dist/components/tree/TreeCanvasBlock.js +2 -2
- package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
- package/dist/components/tree/TreeMenu.js +4 -6
- package/dist/components/tree/TreeMenu.js.map +1 -1
- package/dist/components/tree/TreeOverview.js +2 -2
- package/dist/components/tree/TreeOverview.js.map +1 -1
- package/dist/constants.d.ts +4 -1
- package/dist/constants.js +7 -1
- package/dist/constants.js.map +1 -1
- package/dist/darkReader.d.ts +7 -0
- package/dist/darkReader.js +42 -0
- package/dist/darkReader.js.map +1 -0
- package/dist/element.js +22 -47
- package/dist/element.js.map +1 -1
- package/dist/featurePanels.d.ts +37 -0
- package/dist/featurePanels.js +187 -0
- package/dist/featurePanels.js.map +1 -0
- package/dist/filehandleLoader.d.ts +41 -0
- package/dist/filehandleLoader.js +99 -0
- package/dist/filehandleLoader.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/model/treeModel.d.ts +9 -0
- package/dist/model/treeModel.js +12 -1
- package/dist/model/treeModel.js.map +1 -1
- package/dist/model.d.ts +148 -32
- package/dist/model.js +291 -569
- package/dist/model.js.map +1 -1
- package/dist/neighborJoining.js +1 -40
- package/dist/neighborJoining.js.map +1 -1
- package/dist/renderToSvg.js +1 -13
- package/dist/renderToSvg.js.map +1 -1
- package/dist/rerootTree.d.ts +1 -0
- package/dist/rerootTree.js +7 -6
- package/dist/rerootTree.js.map +1 -1
- package/dist/schemeResidueColor.d.ts +12 -0
- package/dist/schemeResidueColor.js +33 -0
- package/dist/schemeResidueColor.js.map +1 -0
- package/dist/similarityColors.d.ts +11 -0
- package/dist/similarityColors.js +90 -0
- package/dist/similarityColors.js.map +1 -0
- package/dist/svgTestUtil.d.ts +64 -12
- package/dist/treeDisplay.d.ts +37 -0
- package/dist/treeDisplay.js +209 -0
- package/dist/treeDisplay.js.map +1 -0
- package/dist/types.d.ts +7 -3
- package/dist/useWheelScroll.d.ts +3 -1
- package/dist/useWheelScroll.js +36 -17
- package/dist/useWheelScroll.js.map +1 -1
- package/dist/util.d.ts +2 -0
- package/dist/util.js +2 -0
- package/dist/util.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/wheelZoom.d.ts +8 -3
- package/dist/wheelZoom.js +44 -32
- package/dist/wheelZoom.js.map +1 -1
- package/dist/zoomSnapshot.d.ts +29 -0
- package/dist/zoomSnapshot.js +47 -0
- package/dist/zoomSnapshot.js.map +1 -0
- package/package.json +11 -11
- package/src/blosum62.ts +45 -0
- package/src/colorSchemes.ts +1 -0
- package/src/components/Loading.tsx +6 -2
- package/src/components/MSAView.tsx +22 -5
- package/src/components/MetadataTable.tsx +83 -26
- package/src/components/Track.tsx +13 -0
- package/src/components/controls.ts +2 -1
- package/src/components/dialogs/AnnotationFileDialog.tsx +12 -1
- package/src/components/dialogs/FeatureDialog.tsx +2 -5
- package/src/components/dialogs/GapThresholdDialog.tsx +36 -0
- package/src/components/{header → dialogs}/GappynessSlider.tsx +3 -10
- package/src/components/{header → dialogs}/GoToBox.tsx +36 -10
- package/src/components/dialogs/GoToDialog.tsx +30 -0
- package/src/components/dialogs/MetadataDialog.tsx +32 -4
- package/src/components/{header → dialogs}/goTo.ts +1 -1
- package/src/components/dialogs/metadataLabels.ts +54 -0
- package/src/components/dialogs/metadataRecord.tsx +61 -0
- package/src/components/header/Header.tsx +75 -42
- package/src/components/header/HiddenColumnsChip.tsx +39 -0
- package/src/components/header/MenuBar.tsx +64 -0
- package/src/components/header/ScrollZoomCheckbox.tsx +46 -0
- package/src/components/header/ZoomControls.tsx +20 -35
- package/src/components/header/colorSchemeMenuItems.ts +121 -0
- package/src/components/header/getAnnotationsMenu.ts +52 -56
- package/src/components/header/menuBarItems.ts +357 -0
- package/src/components/import/ImportForm.tsx +19 -7
- package/src/components/minimap/Minimap.tsx +11 -3
- package/src/components/minimap/MinimapSVG.tsx +17 -1
- package/src/components/minimap/minimapLayout.ts +27 -0
- package/src/components/msa/MSACanvas.tsx +22 -3
- package/src/components/msa/MSACanvasBlock.tsx +18 -11
- package/src/components/msa/MSAMouseoverCanvas.tsx +2 -2
- package/src/components/msa/WheelZoomHint.tsx +56 -0
- package/src/components/msa/msaKeys.ts +3 -0
- package/src/components/msa/msaRaster.ts +6 -8
- package/src/components/msa/renderBoxFeatureCanvasBlock.ts +28 -5
- package/src/components/msa/renderHighlights.ts +3 -3
- package/src/components/msa/renderMSABlock.ts +51 -15
- package/src/components/msa/tileColor.ts +7 -0
- package/src/components/rowpanels/RowPanelBlock.tsx +2 -2
- package/src/components/settings/MenuItemsForm.tsx +225 -0
- package/src/components/settings/SettingsPanel.tsx +156 -0
- package/src/components/settings/TrackList.tsx +124 -0
- package/src/components/tracks/TrackBlocks.tsx +2 -2
- package/src/components/tracks/TrackTooltipContent.tsx +2 -1
- package/src/components/tracks/drawTracks.ts +15 -7
- package/src/components/tree/TreeCanvasBlock.tsx +2 -2
- package/src/components/tree/TreeMenu.tsx +4 -6
- package/src/components/tree/TreeOverview.tsx +2 -2
- package/src/constants.ts +9 -1
- package/src/darkReader.ts +57 -0
- package/src/element.ts +34 -57
- package/src/featurePanels.ts +269 -0
- package/src/filehandleLoader.ts +136 -0
- package/src/index.ts +4 -0
- package/src/model/treeModel.ts +13 -0
- package/src/model.ts +370 -748
- package/src/neighborJoining.ts +1 -42
- package/src/renderToSvg.tsx +1 -13
- package/src/rerootTree.ts +7 -6
- package/src/schemeResidueColor.ts +37 -0
- package/src/similarityColors.ts +112 -0
- package/src/treeDisplay.ts +278 -0
- package/src/types.ts +7 -4
- package/src/useWheelScroll.ts +43 -22
- package/src/util.ts +3 -0
- package/src/version.ts +1 -1
- package/src/wheelZoom.ts +55 -33
- package/src/zoomSnapshot.ts +80 -0
- package/dist/components/header/ColorSchemeMenu.d.ts +0 -12
- package/dist/components/header/ColorSchemeMenu.js +0 -37
- package/dist/components/header/ColorSchemeMenu.js.map +0 -1
- package/dist/components/header/FileMenu.js +0 -92
- package/dist/components/header/FileMenu.js.map +0 -1
- package/dist/components/header/GappynessSlider.js.map +0 -1
- package/dist/components/header/GoToBox.js +0 -31
- package/dist/components/header/GoToBox.js.map +0 -1
- package/dist/components/header/MSASettingsMenu.js +0 -11
- package/dist/components/header/MSASettingsMenu.js.map +0 -1
- package/dist/components/header/ScrollZoomIcons.d.ts +0 -6
- package/dist/components/header/ScrollZoomIcons.js +0 -35
- package/dist/components/header/ScrollZoomIcons.js.map +0 -1
- package/dist/components/header/TreeSettingsMenu.js +0 -11
- package/dist/components/header/TreeSettingsMenu.js.map +0 -1
- package/dist/components/header/goTo.d.ts +0 -20
- package/dist/components/header/goTo.js.map +0 -1
- package/dist/components/header/settingsMenuItems.d.ts +0 -5
- package/dist/components/header/settingsMenuItems.js +0 -171
- package/dist/components/header/settingsMenuItems.js.map +0 -1
- package/src/components/header/ColorSchemeMenu.tsx +0 -56
- package/src/components/header/FileMenu.tsx +0 -107
- package/src/components/header/MSASettingsMenu.tsx +0 -26
- package/src/components/header/ScrollZoomIcons.tsx +0 -52
- package/src/components/header/TreeSettingsMenu.tsx +0 -30
- package/src/components/header/settingsMenuItems.ts +0 -216
package/dist/constants.js
CHANGED
|
@@ -42,6 +42,9 @@ export const defaultScrollZoomAxis = 'both';
|
|
|
42
42
|
// frame. A sprite atlas measured slower.
|
|
43
43
|
export const minLetterRowHeight = 8;
|
|
44
44
|
export const minLetterColWidth = 5;
|
|
45
|
+
// A wheel-zoom frame draws a block's letters only when the block holds at most
|
|
46
|
+
// this many cells; the settle redraw after the gesture draws the rest
|
|
47
|
+
export const zoomFrameMaxLetters = 2000;
|
|
45
48
|
// A feature span draws its label at two pixels under its height, capped at 11,
|
|
46
49
|
// so a span shorter than this holds no readable text: an underline bar, a
|
|
47
50
|
// sub-row band or a features panel over small rows
|
|
@@ -57,8 +60,10 @@ export const labelFitFontSize = fontSizeFor(defaultRowHeight);
|
|
|
57
60
|
// zoom-in buttons (which otherwise grow unbounded). minColWidth/minRowHeight are
|
|
58
61
|
// the smooth-zoom floors.
|
|
59
62
|
export const minColWidth = 0.2;
|
|
60
|
-
export const minRowHeight =
|
|
63
|
+
export const minRowHeight = 0.2;
|
|
61
64
|
export const maxCellSize = 80;
|
|
65
|
+
// the settings panel's width, which it takes out of the view's
|
|
66
|
+
export const settingsPanelWidth = 280;
|
|
62
67
|
// MSA model defaults
|
|
63
68
|
export const defaultBgColor = true;
|
|
64
69
|
export const defaultColorSchemeName = 'maeditor';
|
|
@@ -86,6 +91,7 @@ export const defaultDrawTree = true;
|
|
|
86
91
|
export const defaultDrawNodeBubbles = true;
|
|
87
92
|
export const defaultDrawNodeLabels = false;
|
|
88
93
|
export const defaultShowTreeOverview = false;
|
|
94
|
+
export const defaultShowTreeScaleBar = false;
|
|
89
95
|
export const defaultOverviewHeight = 120;
|
|
90
96
|
// Neighbor joining does not run above this many rows. The distance matrix is
|
|
91
97
|
// O(n^2*L) and the join loop O(n^3), both on the main thread with no progress
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,sBAAsB;AACtB,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAA;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;AAChC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAC/B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAC/B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAA;AACxC,0EAA0E;AAC1E,2BAA2B;AAC3B,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAA;AACtC,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAA;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAA;AACnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAA;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAA;AAC1C,2EAA2E;AAC3E,kEAAkE;AAClE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AACpC,uEAAuE;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAEtC,yEAAyE;AACzE,8EAA8E;AAC9E,wCAAwC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IACzC,MAAM;IACN,KAAK;IACL,gBAAgB;IAChB,iBAAiB;IACjB,KAAK;IACL,QAAQ;CACT,CAAC,CAAA;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AACnD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAA;AACzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAA;AAEtC,gFAAgF;AAChF,yEAAyE;AACzE,+BAA+B;AAC/B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAU,CAAA;AAEzE,MAAM,CAAC,MAAM,qBAAqB,GAAmB,MAAM,CAAA;AAE3D,8EAA8E;AAC9E,2EAA2E;AAC3E,yCAAyC;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAA;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAElC,+EAA+E;AAC/E,0EAA0E;AAC1E,mDAAmD;AACnD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAEtC,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACjD,CAAC;AAED,2EAA2E;AAC3E,8EAA8E;AAC9E,uCAAuC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAA;AAE7D,+EAA+E;AAC/E,iFAAiF;AACjF,0BAA0B;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Theme } from '@mui/material';
|
|
2
|
+
/**
|
|
3
|
+
* The theme a canvas draws in: the surrounding MUI theme, or a dark one while
|
|
4
|
+
* Dark Reader darkens a light page. The DOM keeps the surrounding theme, which
|
|
5
|
+
* Dark Reader restyles itself, and the SVG export keeps it too.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useCanvasTheme(): Theme;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { useSyncExternalStore } from 'react';
|
|
2
|
+
import { createJBrowseTheme } from '@jbrowse/core/ui/theme';
|
|
3
|
+
import { useTheme } from '@mui/material';
|
|
4
|
+
// Dark Reader's Dynamic mode rewrites the page's CSS and leaves canvas pixels
|
|
5
|
+
// alone, so a light theme's black letters land on the dark page it paints.
|
|
6
|
+
// Inlined from @jbrowse/core/util/systemColorScheme, which an older host core
|
|
7
|
+
// lacks (see CLAUDE.md on externals).
|
|
8
|
+
const DARK_READER_ATTRIBUTE = 'data-darkreader-scheme';
|
|
9
|
+
function darkReaderIsDark() {
|
|
10
|
+
return (typeof document !== 'undefined' &&
|
|
11
|
+
document.documentElement.getAttribute(DARK_READER_ATTRIBUTE) === 'dark');
|
|
12
|
+
}
|
|
13
|
+
function onDarkReaderChange(listener) {
|
|
14
|
+
if (typeof MutationObserver !== 'function' ||
|
|
15
|
+
typeof document === 'undefined') {
|
|
16
|
+
return () => { };
|
|
17
|
+
}
|
|
18
|
+
const observer = new MutationObserver(listener);
|
|
19
|
+
observer.observe(document.documentElement, {
|
|
20
|
+
attributes: true,
|
|
21
|
+
attributeFilter: [DARK_READER_ATTRIBUTE],
|
|
22
|
+
});
|
|
23
|
+
return () => {
|
|
24
|
+
observer.disconnect();
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
let darkTheme;
|
|
28
|
+
/**
|
|
29
|
+
* The theme a canvas draws in: the surrounding MUI theme, or a dark one while
|
|
30
|
+
* Dark Reader darkens a light page. The DOM keeps the surrounding theme, which
|
|
31
|
+
* Dark Reader restyles itself, and the SVG export keeps it too.
|
|
32
|
+
*/
|
|
33
|
+
export function useCanvasTheme() {
|
|
34
|
+
const theme = useTheme();
|
|
35
|
+
const darkReader = useSyncExternalStore(onDarkReaderChange, darkReaderIsDark, () => false);
|
|
36
|
+
if (darkReader && theme.palette.mode !== 'dark') {
|
|
37
|
+
darkTheme ??= createJBrowseTheme({ palette: { mode: 'dark' } });
|
|
38
|
+
return darkTheme;
|
|
39
|
+
}
|
|
40
|
+
return theme;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=darkReader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"darkReader.js","sourceRoot":"","sources":["../src/darkReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAIxC,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,sCAAsC;AACtC,MAAM,qBAAqB,GAAG,wBAAwB,CAAA;AAEtD,SAAS,gBAAgB;IACvB,OAAO,CACL,OAAO,QAAQ,KAAK,WAAW;QAC/B,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,qBAAqB,CAAC,KAAK,MAAM,CACxE,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAoB;IAC9C,IACE,OAAO,gBAAgB,KAAK,UAAU;QACtC,OAAO,QAAQ,KAAK,WAAW,EAC/B,CAAC;QACD,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IACjB,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAC/C,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE;QACzC,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,CAAC,qBAAqB,CAAC;KACzC,CAAC,CAAA;IACF,OAAO,GAAG,EAAE;QACV,QAAQ,CAAC,UAAU,EAAE,CAAA;IACvB,CAAC,CAAA;AACH,CAAC;AAED,IAAI,SAA4B,CAAA;AAEhC;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,MAAM,UAAU,GAAG,oBAAoB,CACrC,kBAAkB,EAClB,gBAAgB,EAChB,GAAG,EAAE,CAAC,KAAK,CACZ,CAAA;IACD,IAAI,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAChD,SAAS,KAAK,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;QAC/D,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
|
package/dist/element.js
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { when } from 'mobx';
|
|
2
2
|
import { mount } from './mount.js';
|
|
3
|
+
const dataProperties = [
|
|
4
|
+
'msa',
|
|
5
|
+
'tree',
|
|
6
|
+
'gff',
|
|
7
|
+
'features',
|
|
8
|
+
'colorScheme',
|
|
9
|
+
'highlights',
|
|
10
|
+
'columnTracks',
|
|
11
|
+
'residueMappings',
|
|
12
|
+
];
|
|
3
13
|
const ownAttributes = [
|
|
4
14
|
'msa-url',
|
|
5
15
|
'tree-url',
|
|
@@ -72,53 +82,18 @@ export function defineMsaElement(tagName = 'jbrowse-msa') {
|
|
|
72
82
|
#rangePending = false;
|
|
73
83
|
#reported;
|
|
74
84
|
#data = {};
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
get gff() {
|
|
88
|
-
return this.#data.gff;
|
|
89
|
-
}
|
|
90
|
-
set gff(value) {
|
|
91
|
-
this.#setData({ gff: value });
|
|
92
|
-
}
|
|
93
|
-
get features() {
|
|
94
|
-
return this.#data.features;
|
|
95
|
-
}
|
|
96
|
-
set features(value) {
|
|
97
|
-
this.#setData({ features: value });
|
|
98
|
-
}
|
|
99
|
-
get colorScheme() {
|
|
100
|
-
return this.#data.colorScheme;
|
|
101
|
-
}
|
|
102
|
-
set colorScheme(value) {
|
|
103
|
-
this.#setData({ colorScheme: value });
|
|
104
|
-
}
|
|
105
|
-
get highlights() {
|
|
106
|
-
return this.#data.highlights;
|
|
107
|
-
}
|
|
108
|
-
set highlights(value) {
|
|
109
|
-
this.#setData({ highlights: value });
|
|
110
|
-
}
|
|
111
|
-
get columnTracks() {
|
|
112
|
-
return this.#data.columnTracks;
|
|
113
|
-
}
|
|
114
|
-
set columnTracks(value) {
|
|
115
|
-
this.#setData({ columnTracks: value });
|
|
116
|
-
}
|
|
117
|
-
get residueMappings() {
|
|
118
|
-
return this.#data.residueMappings;
|
|
119
|
-
}
|
|
120
|
-
set residueMappings(value) {
|
|
121
|
-
this.#setData({ residueMappings: value });
|
|
85
|
+
static {
|
|
86
|
+
for (const key of dataProperties) {
|
|
87
|
+
Object.defineProperty(MsaElement.prototype, key, {
|
|
88
|
+
configurable: true,
|
|
89
|
+
get() {
|
|
90
|
+
return this.#data[key];
|
|
91
|
+
},
|
|
92
|
+
set(value) {
|
|
93
|
+
this.#setData({ [key]: value });
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
}
|
|
122
97
|
}
|
|
123
98
|
// the viewer's selection, which the reader's drags change
|
|
124
99
|
get selection() {
|
package/dist/element.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"element.js","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { ScaleSpec } from './scales.ts';
|
|
2
|
+
import type { Annotation, DomainBand, RowFeaturesSpec, RowPanelSpan, RowPanelSpec } from './types.ts';
|
|
3
|
+
export declare function rowPanelWidth(panel: RowPanelSpec, view: {
|
|
4
|
+
rowHeight: number;
|
|
5
|
+
}): number;
|
|
6
|
+
export declare function stringFields(row: unknown): Record<string, string> | undefined;
|
|
7
|
+
export declare function colorByRow(rowData: Record<string, Record<string, string> | undefined>, field: string, colorOf: (value: string) => string | undefined): Map<string, string>;
|
|
8
|
+
export declare function featureColorMap(annotations: Annotation[], encoding: {
|
|
9
|
+
field: string;
|
|
10
|
+
colorOf: (value: string) => string | undefined;
|
|
11
|
+
} | undefined, fillPalette: Record<string, string>): Map<Annotation, {
|
|
12
|
+
fill: string;
|
|
13
|
+
stroke: string;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function featureLabelMap(annotations: Annotation[], field: string): Map<Annotation, string>;
|
|
16
|
+
/**
|
|
17
|
+
* The spans a `features` panel draws, keyed by row name and measured in the
|
|
18
|
+
* panel's own pixels. `column` takes the bands the overlay draws, at the
|
|
19
|
+
* alignment's column width. `position` packs each row's features in its own
|
|
20
|
+
* residue positions, shifted by an `align` transform, and maps the extent they
|
|
21
|
+
* cover across every row onto the panel width, so a row with no alignment
|
|
22
|
+
* still has an x.
|
|
23
|
+
*/
|
|
24
|
+
export declare function featurePanelSpans({ panel, width, colWidth, domainBands, annotationsByRow, shifts, }: {
|
|
25
|
+
panel: RowFeaturesSpec;
|
|
26
|
+
width: number;
|
|
27
|
+
colWidth: number;
|
|
28
|
+
domainBands: Map<string, DomainBand[]>;
|
|
29
|
+
annotationsByRow: Record<string, Annotation[]>;
|
|
30
|
+
shifts: Map<string, number> | undefined;
|
|
31
|
+
}): Map<string, RowPanelSpan[]>;
|
|
32
|
+
export declare function resolveFeatureScale(field: string, scale: ScaleSpec | undefined, annotations: Annotation[], drawn: Annotation[]): {
|
|
33
|
+
kind: 'categorical';
|
|
34
|
+
colorOf: (value: string) => string | undefined;
|
|
35
|
+
field: string;
|
|
36
|
+
legend: import("./types.ts").LegendEntry[];
|
|
37
|
+
};
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { notEmpty } from '@jbrowse/core/util';
|
|
2
|
+
import { packDomainLanes } from './components/msa/packDomainLanes.js';
|
|
3
|
+
import { defaultFeaturePanelWidth } from './constants.js';
|
|
4
|
+
import { featureField } from './featureFields.js';
|
|
5
|
+
import { resolveScale } from './scales.js';
|
|
6
|
+
import { outlineColor } from './util.js';
|
|
7
|
+
// the fill of a span under a scale that gives its value no color, such as a
|
|
8
|
+
// gene a `map` over gene names leaves out
|
|
9
|
+
const UNSCALED_FEATURE = '#d9d9d9';
|
|
10
|
+
// the fraction of a span a following one may cover before it takes a lane of
|
|
11
|
+
// its own in a `features` panel
|
|
12
|
+
const laneOverlap = 0.1;
|
|
13
|
+
// a row panel's own width, or a default: the row height, which makes a strip
|
|
14
|
+
// cell square, and a gene neighborhood's width for a features panel. The row
|
|
15
|
+
// height is read only when used, so a panel with a width of its own does not
|
|
16
|
+
// recompute on a vertical zoom
|
|
17
|
+
export function rowPanelWidth(panel, view) {
|
|
18
|
+
return (panel.width ??
|
|
19
|
+
(panel.kind === 'features' ? defaultFeaturePanelWidth : view.rowHeight));
|
|
20
|
+
}
|
|
21
|
+
// one row of the row table as the channels read it. A number or a boolean
|
|
22
|
+
// reads as its string, the way a GFF value does, and null or an object drops
|
|
23
|
+
export function stringFields(row) {
|
|
24
|
+
if (typeof row !== 'object' || row === null) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
const fields = {};
|
|
28
|
+
for (const [field, value] of Object.entries(row)) {
|
|
29
|
+
if (typeof value === 'string') {
|
|
30
|
+
fields[field] = value;
|
|
31
|
+
}
|
|
32
|
+
else if (typeof value === 'number' || typeof value === 'boolean') {
|
|
33
|
+
fields[field] = String(value);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return fields;
|
|
37
|
+
}
|
|
38
|
+
// the color each row takes from a field of the row table under a scale
|
|
39
|
+
export function colorByRow(rowData, field, colorOf) {
|
|
40
|
+
const colors = new Map();
|
|
41
|
+
for (const [name, row] of Object.entries(rowData)) {
|
|
42
|
+
const value = row?.[field];
|
|
43
|
+
const color = value === undefined ? undefined : colorOf(value);
|
|
44
|
+
if (color) {
|
|
45
|
+
colors.set(name, color);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return colors;
|
|
49
|
+
}
|
|
50
|
+
// the fill and outline of every feature in a list: its own GFF `color=` first,
|
|
51
|
+
// then the scale an encoding resolves over one of its fields, then the
|
|
52
|
+
// accession palette
|
|
53
|
+
export function featureColorMap(annotations, encoding, fillPalette) {
|
|
54
|
+
const strokes = new Map();
|
|
55
|
+
const strokeOf = (fill) => {
|
|
56
|
+
const hit = strokes.get(fill);
|
|
57
|
+
if (hit !== undefined) {
|
|
58
|
+
return hit;
|
|
59
|
+
}
|
|
60
|
+
const stroke = outlineColor(fill);
|
|
61
|
+
strokes.set(fill, stroke);
|
|
62
|
+
return stroke;
|
|
63
|
+
};
|
|
64
|
+
return new Map(annotations.map(annotation => {
|
|
65
|
+
const value = encoding
|
|
66
|
+
? featureField(annotation, encoding.field)
|
|
67
|
+
: undefined;
|
|
68
|
+
const fill = annotation.color ??
|
|
69
|
+
(value === undefined ? undefined : encoding.colorOf(value)) ??
|
|
70
|
+
(encoding ? UNSCALED_FEATURE : fillPalette[annotation.accession]);
|
|
71
|
+
return [annotation, { fill, stroke: strokeOf(fill) }];
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
// the text a label channel draws inside each span, for the features carrying
|
|
75
|
+
// the field it names
|
|
76
|
+
export function featureLabelMap(annotations, field) {
|
|
77
|
+
const labels = new Map();
|
|
78
|
+
for (const annotation of annotations) {
|
|
79
|
+
const value = featureField(annotation, field);
|
|
80
|
+
if (value !== undefined) {
|
|
81
|
+
labels.set(annotation, value);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return labels;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Lanes for `position: "strandpile"`, gggenomes' `position_strandpile`: the
|
|
88
|
+
* forward features stack above the line and the reverse below it, each strand
|
|
89
|
+
* packing on its own. The deepest row on each side sets the grid every row lays
|
|
90
|
+
* out on, so the line between the strands sits at one height down the panel and
|
|
91
|
+
* a reader can scan it. A feature with no strand piles with the forward ones.
|
|
92
|
+
*/
|
|
93
|
+
function strandpileLanes(rows) {
|
|
94
|
+
const piled = rows.map(([name, bands]) => {
|
|
95
|
+
const reverse = packDomainLanes(bands.filter(b => b.annotation.strand === -1));
|
|
96
|
+
const forward = packDomainLanes(bands.filter(b => b.annotation.strand !== -1));
|
|
97
|
+
return { name, forward, reverse };
|
|
98
|
+
});
|
|
99
|
+
const up = Math.max(0, ...piled.map(p => p.forward[0]?.laneCount ?? 0));
|
|
100
|
+
const down = Math.max(0, ...piled.map(p => p.reverse[0]?.laneCount ?? 0));
|
|
101
|
+
const laneCount = up + down;
|
|
102
|
+
return new Map(piled.map(({ name, forward, reverse }) => [
|
|
103
|
+
name,
|
|
104
|
+
[
|
|
105
|
+
// forward level 0 is the lane just above the line, stacking upward
|
|
106
|
+
...forward.map(b => ({ ...b, lane: up - 1 - b.lane, laneCount })),
|
|
107
|
+
...reverse.map(b => ({ ...b, lane: up + b.lane, laneCount })),
|
|
108
|
+
],
|
|
109
|
+
]));
|
|
110
|
+
}
|
|
111
|
+
/** one row's spans laid out by the panel's `position` */
|
|
112
|
+
function panelLanes(panel, rows) {
|
|
113
|
+
return panel.position === 'strandpile'
|
|
114
|
+
? strandpileLanes(rows)
|
|
115
|
+
: new Map(rows.map(([name, bands]) => [name, packDomainLanes(bands)]));
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* The spans a `features` panel draws, keyed by row name and measured in the
|
|
119
|
+
* panel's own pixels. `column` takes the bands the overlay draws, at the
|
|
120
|
+
* alignment's column width. `position` packs each row's features in its own
|
|
121
|
+
* residue positions, shifted by an `align` transform, and maps the extent they
|
|
122
|
+
* cover across every row onto the panel width, so a row with no alignment
|
|
123
|
+
* still has an x.
|
|
124
|
+
*/
|
|
125
|
+
export function featurePanelSpans({ panel, width, colWidth, domainBands, annotationsByRow, shifts, }) {
|
|
126
|
+
if (panel.x === 'column') {
|
|
127
|
+
return panelLanes(panel, [...domainBands].map(([name, bands]) => [
|
|
128
|
+
name,
|
|
129
|
+
bands.map(band => ({
|
|
130
|
+
...band,
|
|
131
|
+
xStart: band.startCol * colWidth,
|
|
132
|
+
xEnd: band.endCol * colWidth,
|
|
133
|
+
})),
|
|
134
|
+
]));
|
|
135
|
+
}
|
|
136
|
+
const shifted = Object.entries(annotationsByRow).map(([name, annotations]) => {
|
|
137
|
+
const shift = shifts?.get(name) ?? 0;
|
|
138
|
+
return [
|
|
139
|
+
name,
|
|
140
|
+
annotations.map(annotation => ({
|
|
141
|
+
annotation,
|
|
142
|
+
start: annotation.start - 1 + shift,
|
|
143
|
+
end: annotation.end + shift,
|
|
144
|
+
})),
|
|
145
|
+
];
|
|
146
|
+
});
|
|
147
|
+
let min = Infinity;
|
|
148
|
+
let max = -Infinity;
|
|
149
|
+
for (const [, features] of shifted) {
|
|
150
|
+
for (const { start, end } of features) {
|
|
151
|
+
min = Math.min(min, start);
|
|
152
|
+
max = Math.max(max, end);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// a gene arrow ends where its feature does, so the extent maps onto the whole
|
|
156
|
+
// panel less the pixel the rightmost stroke needs
|
|
157
|
+
const drawable = Math.max(1, width - 1);
|
|
158
|
+
const scale = max > min ? drawable / (max - min) : 0;
|
|
159
|
+
// a lane opens where a span covers more than a tenth of the one before it,
|
|
160
|
+
// which keeps the genes of an operon on one lane: adjacent genes commonly
|
|
161
|
+
// share a few bases, and a stop codon overlapping the next start reads as a
|
|
162
|
+
// second lane over the whole row
|
|
163
|
+
return panelLanes(panel, shifted.map(([name, features]) => [
|
|
164
|
+
name,
|
|
165
|
+
features.map(({ annotation, start, end }) => ({
|
|
166
|
+
annotation,
|
|
167
|
+
xStart: (start - min) * scale,
|
|
168
|
+
xEnd: (end - min) * scale,
|
|
169
|
+
startCol: start,
|
|
170
|
+
endCol: end - (end - start) * laneOverlap,
|
|
171
|
+
})),
|
|
172
|
+
]));
|
|
173
|
+
}
|
|
174
|
+
// a scale over the values a field takes across every feature loaded, so hiding
|
|
175
|
+
// a type in the filter dialog leaves the rest in their colors, and a legend of
|
|
176
|
+
// the values the features drawn carry
|
|
177
|
+
export function resolveFeatureScale(field, scale, annotations, drawn) {
|
|
178
|
+
const valuesOf = (list) => list.map(a => featureField(a, field)).filter(notEmpty);
|
|
179
|
+
const resolved = resolveScale(scale, valuesOf(annotations));
|
|
180
|
+
const shown = new Set(valuesOf(drawn));
|
|
181
|
+
return {
|
|
182
|
+
field,
|
|
183
|
+
...resolved,
|
|
184
|
+
legend: resolved.legend.filter(entry => shown.has(entry.id)),
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=featurePanels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featurePanels.js","sourceRoot":"","sources":["../src/featurePanels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { FetchStatus } from './fetchUtils.ts';
|
|
2
|
+
import type { FileLocation } from '@jbrowse/core/util/types';
|
|
3
|
+
import type { IStateTreeNode } from '@jbrowse/mobx-state-tree';
|
|
4
|
+
interface LoaderHost extends IStateTreeNode {
|
|
5
|
+
setStatus: (status?: FetchStatus) => void;
|
|
6
|
+
setError: (error?: unknown) => void;
|
|
7
|
+
addWarning: (warning: string) => void;
|
|
8
|
+
}
|
|
9
|
+
interface FilehandleLoader {
|
|
10
|
+
/** the layer's name in a failure message */
|
|
11
|
+
what: string;
|
|
12
|
+
getFilehandle: () => FileLocation | undefined;
|
|
13
|
+
onLoad: (text: string) => void;
|
|
14
|
+
setLoading?: (loading: boolean) => void;
|
|
15
|
+
/** runs after a local file loads, since a blob has no URL to refetch, and on cancel */
|
|
16
|
+
clearFilehandle?: () => void;
|
|
17
|
+
/** a failure adds a warning instead of an error */
|
|
18
|
+
optional?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Latest-wins abort rotation, after `createAbortRotation` in
|
|
22
|
+
* jbrowse-components. Each `begin()` aborts the previous fetch and returns a
|
|
23
|
+
* signal with an `isCurrent()` guard; gate every write after an await on it so a
|
|
24
|
+
* superseded or torn-down fetch cannot overwrite fresher data. `end()` in the
|
|
25
|
+
* `finally` closes the guard of a fetch that completed.
|
|
26
|
+
*/
|
|
27
|
+
export declare function createAbortRotation(self: IStateTreeNode): {
|
|
28
|
+
/** aborts the running fetch, and returns whether one was running */
|
|
29
|
+
cancel(): boolean;
|
|
30
|
+
begin(): {
|
|
31
|
+
controller: AbortController;
|
|
32
|
+
isCurrent: () => boolean;
|
|
33
|
+
end(): void;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Fetches the filehandle whenever it changes and hands the text to `onLoad`. A
|
|
38
|
+
* superseded or cleared request is aborted and clears its status line.
|
|
39
|
+
*/
|
|
40
|
+
export declare function installFilehandleLoader(self: LoaderHost, { what, getFilehandle, onLoad, setLoading, clearFilehandle, optional, }: FilehandleLoader): void;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { openLocation } from '@jbrowse/core/util/io';
|
|
2
|
+
import { addDisposer, isAlive } from '@jbrowse/mobx-state-tree';
|
|
3
|
+
import { autorun, transaction } from 'mobx';
|
|
4
|
+
import { fetchTextWithProgress, isAbortError } from './fetchUtils.js';
|
|
5
|
+
/**
|
|
6
|
+
* Latest-wins abort rotation, after `createAbortRotation` in
|
|
7
|
+
* jbrowse-components. Each `begin()` aborts the previous fetch and returns a
|
|
8
|
+
* signal with an `isCurrent()` guard; gate every write after an await on it so a
|
|
9
|
+
* superseded or torn-down fetch cannot overwrite fresher data. `end()` in the
|
|
10
|
+
* `finally` closes the guard of a fetch that completed.
|
|
11
|
+
*/
|
|
12
|
+
export function createAbortRotation(self) {
|
|
13
|
+
let current;
|
|
14
|
+
return {
|
|
15
|
+
/** aborts the running fetch, and returns whether one was running */
|
|
16
|
+
cancel() {
|
|
17
|
+
const running = current !== undefined && !current.ended;
|
|
18
|
+
current?.controller.abort();
|
|
19
|
+
current = undefined;
|
|
20
|
+
return running;
|
|
21
|
+
},
|
|
22
|
+
begin() {
|
|
23
|
+
current?.controller.abort();
|
|
24
|
+
const mine = { controller: new AbortController(), ended: false };
|
|
25
|
+
current = mine;
|
|
26
|
+
return {
|
|
27
|
+
controller: mine.controller,
|
|
28
|
+
isCurrent: () => !mine.ended && mine === current && isAlive(self),
|
|
29
|
+
end() {
|
|
30
|
+
mine.ended = true;
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Fetches the filehandle whenever it changes and hands the text to `onLoad`. A
|
|
38
|
+
* superseded or cleared request is aborted and clears its status line.
|
|
39
|
+
*/
|
|
40
|
+
export function installFilehandleLoader(self, { what, getFilehandle, onLoad, setLoading, clearFilehandle, optional = false, }) {
|
|
41
|
+
const rotation = createAbortRotation(self);
|
|
42
|
+
const cancel = () => {
|
|
43
|
+
if (rotation.cancel() && isAlive(self)) {
|
|
44
|
+
self.setStatus(undefined);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
addDisposer(self, cancel);
|
|
48
|
+
addDisposer(self, autorun(async () => {
|
|
49
|
+
const filehandle = getFilehandle();
|
|
50
|
+
cancel();
|
|
51
|
+
if (!filehandle) {
|
|
52
|
+
setLoading?.(false);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const { controller, isCurrent, end } = rotation.begin();
|
|
56
|
+
try {
|
|
57
|
+
setLoading?.(true);
|
|
58
|
+
if (!optional) {
|
|
59
|
+
self.setError(undefined);
|
|
60
|
+
}
|
|
61
|
+
const text = await fetchTextWithProgress(openLocation(filehandle), status => {
|
|
62
|
+
if (isCurrent()) {
|
|
63
|
+
self.setStatus(status);
|
|
64
|
+
}
|
|
65
|
+
}, { controller });
|
|
66
|
+
if (isCurrent()) {
|
|
67
|
+
transaction(() => {
|
|
68
|
+
onLoad(text);
|
|
69
|
+
if (filehandle.locationType === 'BlobLocation') {
|
|
70
|
+
clearFilehandle?.();
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
if (isCurrent()) {
|
|
77
|
+
if (isAbortError(e)) {
|
|
78
|
+
clearFilehandle?.();
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
console.error(e);
|
|
82
|
+
if (optional) {
|
|
83
|
+
self.addWarning(`The ${what} did not load: ${e}`);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
self.setError(e);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
if (isCurrent()) {
|
|
93
|
+
setLoading?.(false);
|
|
94
|
+
}
|
|
95
|
+
end();
|
|
96
|
+
}
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=filehandleLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filehandleLoader.js","sourceRoot":"","sources":["../src/filehandleLoader.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,9 +6,11 @@ export { maxNeighborJoiningRows } from './constants.ts';
|
|
|
6
6
|
export { expandSpec, residueLabel } from './expandSpec.ts';
|
|
7
7
|
export type { ColumnTrackShorthand, HighlightShorthand, MsaSpec, RegionShorthand, } from './expandSpec.ts';
|
|
8
8
|
export { default as MSAView } from './components/Loading.tsx';
|
|
9
|
+
export type { ToolbarSlots } from './components/header/Header.tsx';
|
|
9
10
|
export { default as MSAViewer } from './components/MSAViewer.tsx';
|
|
10
11
|
export type { MSAViewerProps } from './components/MSAViewer.tsx';
|
|
11
12
|
export { resolveTheme, viewerSnapshot } from './viewerSnapshot.ts';
|
|
13
|
+
export { schemeResidueColor } from './schemeResidueColor.ts';
|
|
12
14
|
export { mount } from './mount.tsx';
|
|
13
15
|
export { defineMsaElement } from './element.ts';
|
|
14
16
|
export { useMsaSvgFigure } from './useMsaSvgFigure.ts';
|
|
@@ -20,5 +22,6 @@ export type { HierarchyNode, LaidOutNode, TreeScale } from './hierarchy.ts';
|
|
|
20
22
|
export type { InterProScanResults } from 'msa-parsers';
|
|
21
23
|
export type { ColumnCounts } from './columnCounts.ts';
|
|
22
24
|
export type { ColumnStats } from './columnStats.ts';
|
|
25
|
+
export type { ZoomSnapshot } from './zoomSnapshot.ts';
|
|
23
26
|
export type { ResolvedScale, ScaleSpec } from './scales.ts';
|
|
24
27
|
export type { Accession, Annotation, Arc, ArcSpec, ArcTrackModel, BasicTrack, BasicTrackModel, Cell, Clade, CladeMark, ColorScheme, ColumnTrackSpec, DomainBand, Encoding, EncodingChannel, Feature, Highlight, Legend, LegendEntry, MsaSelection, Node, MappedStructure, NodeWithIds, NodeWithIdsAndLength, Region, ResidueEncoding, ResidueMapping, ResidueMappingProblem, ResidueSegment, ResolvedClade, ResolvedEncoding, ResolvedHighlight, ResolvedRowPanel, ResolvedSelection, RowDataInput, RowPanelSpec, RowResidue, StructureResidue, TextTrackModel, TidyDomainAnnotation, TrackKind, TreeOrder, TreeRoot, UnshareableData, Viewport, } from './types.ts';
|