react-msaview 8.3.0 → 8.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/bundle/index.js +77 -287
  2. package/bundle/index.js.map +4 -4
  3. package/dist/blockFasta.d.ts +6 -0
  4. package/dist/blockFasta.js +12 -0
  5. package/dist/blockFasta.js.map +1 -0
  6. package/dist/colorSchemes.d.ts +7 -0
  7. package/dist/colorSchemes.js +15 -0
  8. package/dist/colorSchemes.js.map +1 -1
  9. package/dist/components/MSAView.js +15 -9
  10. package/dist/components/MSAView.js.map +1 -1
  11. package/dist/components/MSAViewer.d.ts +28 -7
  12. package/dist/components/MSAViewer.js +61 -22
  13. package/dist/components/MSAViewer.js.map +1 -1
  14. package/dist/components/MetadataTable.d.ts +5 -0
  15. package/dist/components/MetadataTable.js +29 -0
  16. package/dist/components/MetadataTable.js.map +1 -0
  17. package/dist/components/Track.js +11 -2
  18. package/dist/components/Track.js.map +1 -1
  19. package/dist/components/dialogs/MetadataDialog.js +5 -6
  20. package/dist/components/dialogs/MetadataDialog.js.map +1 -1
  21. package/dist/components/header/ColorSchemeMenu.d.ts +6 -0
  22. package/dist/components/header/ColorSchemeMenu.js +23 -5
  23. package/dist/components/header/ColorSchemeMenu.js.map +1 -1
  24. package/dist/components/header/{RowSearch.d.ts → GoToBox.d.ts} +2 -2
  25. package/dist/components/header/GoToBox.js +21 -0
  26. package/dist/components/header/GoToBox.js.map +1 -0
  27. package/dist/components/header/Header.js +4 -2
  28. package/dist/components/header/Header.js.map +1 -1
  29. package/dist/components/header/SelectionMenu.d.ts +12 -0
  30. package/dist/components/header/SelectionMenu.js +72 -0
  31. package/dist/components/header/SelectionMenu.js.map +1 -0
  32. package/dist/components/header/goTo.d.ts +20 -0
  33. package/dist/components/header/goTo.js +69 -0
  34. package/dist/components/header/goTo.js.map +1 -0
  35. package/dist/components/msa/MSACanvas.js +13 -2
  36. package/dist/components/msa/MSACanvas.js.map +1 -1
  37. package/dist/components/msa/MSACanvasBlock.js +5 -1
  38. package/dist/components/msa/MSACanvasBlock.js.map +1 -1
  39. package/dist/components/msa/msaKeys.js +6 -0
  40. package/dist/components/msa/msaKeys.js.map +1 -1
  41. package/dist/components/msa/msaRaster.js +1 -0
  42. package/dist/components/msa/msaRaster.js.map +1 -1
  43. package/dist/components/msa/renderHighlights.d.ts +14 -3
  44. package/dist/components/msa/renderHighlights.js +29 -4
  45. package/dist/components/msa/renderHighlights.js.map +1 -1
  46. package/dist/components/msa/tileColor.js +9 -8
  47. package/dist/components/msa/tileColor.js.map +1 -1
  48. package/dist/components/msa/useMsaBlockMouse.d.ts +1 -1
  49. package/dist/components/msa/useMsaBlockMouse.js +18 -11
  50. package/dist/components/msa/useMsaBlockMouse.js.map +1 -1
  51. package/dist/components/overlayColors.d.ts +2 -0
  52. package/dist/components/overlayColors.js +3 -0
  53. package/dist/components/overlayColors.js.map +1 -1
  54. package/dist/components/selectionDrag.d.ts +17 -0
  55. package/dist/components/selectionDrag.js +30 -0
  56. package/dist/components/selectionDrag.js.map +1 -0
  57. package/dist/components/tracks/useTrackHover.d.ts +3 -1
  58. package/dist/components/tracks/useTrackHover.js +26 -6
  59. package/dist/components/tracks/useTrackHover.js.map +1 -1
  60. package/dist/components/tree/dialogs/TreeNodeInfoDialog.js +9 -8
  61. package/dist/components/tree/dialogs/TreeNodeInfoDialog.js.map +1 -1
  62. package/dist/constants.d.ts +1 -1
  63. package/dist/constants.js +6 -6
  64. package/dist/constants.js.map +1 -1
  65. package/dist/element.d.ts +7 -3
  66. package/dist/element.js +32 -4
  67. package/dist/element.js.map +1 -1
  68. package/dist/featuresLayer.d.ts +8 -0
  69. package/dist/featuresLayer.js +42 -0
  70. package/dist/featuresLayer.js.map +1 -0
  71. package/dist/index.d.ts +1 -1
  72. package/dist/model/DataModel.d.ts +1 -1
  73. package/dist/model/DataModel.js +3 -3
  74. package/dist/model/DataModel.js.map +1 -1
  75. package/dist/model/msaModel.d.ts +14 -1
  76. package/dist/model/msaModel.js +17 -1
  77. package/dist/model/msaModel.js.map +1 -1
  78. package/dist/model.d.ts +122 -11
  79. package/dist/model.js +260 -41
  80. package/dist/model.js.map +1 -1
  81. package/dist/svgTestUtil.d.ts +68 -8
  82. package/dist/types.d.ts +50 -0
  83. package/dist/version.d.ts +1 -1
  84. package/dist/version.js +1 -1
  85. package/package.json +3 -3
  86. package/src/blockFasta.ts +18 -0
  87. package/src/colorSchemes.ts +20 -0
  88. package/src/components/MSAView.tsx +16 -9
  89. package/src/components/MSAViewer.tsx +95 -26
  90. package/src/components/MetadataTable.tsx +55 -0
  91. package/src/components/Track.tsx +14 -1
  92. package/src/components/dialogs/MetadataDialog.tsx +9 -8
  93. package/src/components/header/ColorSchemeMenu.tsx +31 -12
  94. package/src/components/header/GoToBox.tsx +50 -0
  95. package/src/components/header/Header.tsx +6 -2
  96. package/src/components/header/SelectionMenu.tsx +117 -0
  97. package/src/components/header/goTo.ts +75 -0
  98. package/src/components/msa/MSACanvas.tsx +12 -2
  99. package/src/components/msa/MSACanvasBlock.tsx +5 -1
  100. package/src/components/msa/msaKeys.ts +6 -0
  101. package/src/components/msa/msaRaster.ts +1 -0
  102. package/src/components/msa/renderHighlights.ts +46 -4
  103. package/src/components/msa/tileColor.ts +9 -8
  104. package/src/components/msa/useMsaBlockMouse.ts +24 -27
  105. package/src/components/overlayColors.ts +4 -0
  106. package/src/components/selectionDrag.ts +42 -0
  107. package/src/components/tracks/useTrackHover.ts +28 -6
  108. package/src/components/tree/dialogs/TreeNodeInfoDialog.tsx +14 -16
  109. package/src/constants.ts +6 -6
  110. package/src/element.ts +45 -5
  111. package/src/featuresLayer.ts +48 -0
  112. package/src/index.ts +5 -0
  113. package/src/model/DataModel.ts +3 -3
  114. package/src/model/msaModel.ts +19 -1
  115. package/src/model.ts +309 -51
  116. package/src/types.ts +58 -0
  117. package/src/version.ts +1 -1
  118. package/dist/components/header/RowSearch.js +0 -15
  119. package/dist/components/header/RowSearch.js.map +0 -1
  120. package/dist/components/header/revealRow.d.ts +0 -3
  121. package/dist/components/header/revealRow.js +0 -15
  122. package/dist/components/header/revealRow.js.map +0 -1
  123. package/src/components/header/RowSearch.tsx +0 -34
  124. package/src/components/header/revealRow.ts +0 -17
@@ -2,12 +2,12 @@
2
2
  // only the active scheme's column table leaves the other per-column table
3
3
  // uncomputed.
4
4
  export function tileColorFn(model) {
5
- const { colorSchemeName } = model;
6
- if (colorSchemeName === 'clustalx_protein_dynamic') {
5
+ const { dynamicColorSchemeName } = model;
6
+ if (dynamicColorSchemeName === 'clustalx_protein_dynamic') {
7
7
  const { colClustalX } = model;
8
8
  return (col, letter) => colClustalX[col][letter];
9
9
  }
10
- if (colorSchemeName === 'percent_identity_dynamic') {
10
+ if (dynamicColorSchemeName === 'percent_identity_dynamic') {
11
11
  const { colConsensus } = model;
12
12
  return (col, letter) => {
13
13
  const consensus = colConsensus[col];
@@ -17,14 +17,15 @@ export function tileColorFn(model) {
17
17
  const { colorScheme } = model;
18
18
  return (_col, letter) => colorScheme[letter];
19
19
  }
20
- // The column table the active scheme colors from, or undefined for the static
21
- // schemes. A cache of rendered colors keys on its identity plus the scheme name.
20
+ // The table the active scheme colors from: a dynamic scheme's per-column table,
21
+ // or the letter table of a static scheme or a `customColorScheme` map. A cache
22
+ // of rendered colors keys on its identity plus the scheme name.
22
23
  export function tileColorTable(model) {
23
- const { colorSchemeName } = model;
24
- if (colorSchemeName === 'clustalx_protein_dynamic') {
24
+ const { dynamicColorSchemeName } = model;
25
+ if (dynamicColorSchemeName === 'clustalx_protein_dynamic') {
25
26
  return model.colClustalX;
26
27
  }
27
- if (colorSchemeName === 'percent_identity_dynamic') {
28
+ if (dynamicColorSchemeName === 'percent_identity_dynamic') {
28
29
  return model.colConsensus;
29
30
  }
30
31
  return model.colorScheme;
@@ -1 +1 @@
1
- {"version":3,"file":"tileColor.js","sourceRoot":"","sources":["../../../src/components/msa/tileColor.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,0EAA0E;AAC1E,cAAc;AACd,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAA;IACjC,IAAI,eAAe,KAAK,0BAA0B,EAAE,CAAC;QACnD,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;QAC7B,OAAO,CAAC,GAAW,EAAE,MAAc,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAE,CAAC,MAAM,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,eAAe,KAAK,0BAA0B,EAAE,CAAC;QACnD,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;QAC9B,OAAO,CAAC,GAAW,EAAE,MAAc,EAAE,EAAE;YACrC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAE,CAAA;YACpC,OAAO,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QAClE,CAAC,CAAA;IACH,CAAC;IACD,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAC7B,OAAO,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;AAC9D,CAAC;AAED,8EAA8E;AAC9E,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAA;IACjC,IAAI,eAAe,KAAK,0BAA0B,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC,WAAW,CAAA;IAC1B,CAAC;IACD,IAAI,eAAe,KAAK,0BAA0B,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC,YAAY,CAAA;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC,WAAW,CAAA;AAC1B,CAAC"}
1
+ {"version":3,"file":"tileColor.js","sourceRoot":"","sources":["../../../src/components/msa/tileColor.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,0EAA0E;AAC1E,cAAc;AACd,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,MAAM,EAAE,sBAAsB,EAAE,GAAG,KAAK,CAAA;IACxC,IAAI,sBAAsB,KAAK,0BAA0B,EAAE,CAAC;QAC1D,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;QAC7B,OAAO,CAAC,GAAW,EAAE,MAAc,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAE,CAAC,MAAM,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,sBAAsB,KAAK,0BAA0B,EAAE,CAAC;QAC1D,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;QAC9B,OAAO,CAAC,GAAW,EAAE,MAAc,EAAE,EAAE;YACrC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAE,CAAA;YACpC,OAAO,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QAClE,CAAC,CAAA;IACH,CAAC;IACD,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAC7B,OAAO,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;AAC9D,CAAC;AAED,gFAAgF;AAChF,+EAA+E;AAC/E,gEAAgE;AAChE,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,MAAM,EAAE,sBAAsB,EAAE,GAAG,KAAK,CAAA;IACxC,IAAI,sBAAsB,KAAK,0BAA0B,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC,WAAW,CAAA;IAC1B,CAAC;IACD,IAAI,sBAAsB,KAAK,0BAA0B,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC,YAAY,CAAA;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC,WAAW,CAAA;AAC1B,CAAC"}
@@ -17,7 +17,7 @@ export declare function useMsaBlockMouse({ model, offsetX, offsetY, }: {
17
17
  }): {
18
18
  anchor: import("../useHoverAnchor.ts").HoverAnchor<true> | undefined;
19
19
  onMouseMove: (event: React.MouseEvent, el: HTMLElement) => void;
20
- onMouseDown: (event: React.MouseEvent) => void;
20
+ onMouseDown: (event: React.MouseEvent, el: HTMLElement) => void;
21
21
  onClick: (event: React.MouseEvent, el: HTMLElement) => void;
22
22
  onMouseLeave: () => void;
23
23
  };
@@ -1,13 +1,6 @@
1
1
  import { useRef } from 'react';
2
+ import { dragSelection, maxClickTravel } from '../selectionDrag.js';
2
3
  import { useHoverAnchor } from '../useHoverAnchor.js';
3
- const maxClickTravel = 3;
4
- function eventToColRow({ event, el, offsetX, offsetY, colWidth, rowHeight, }) {
5
- const { left, top } = el.getBoundingClientRect();
6
- return {
7
- col: Math.floor((event.clientX - left + offsetX) / colWidth),
8
- row: Math.floor((event.clientY - top + offsetY) / rowHeight),
9
- };
10
- }
11
4
  /**
12
5
  * Translates pointer events over one MSA block into model column/row hover and
13
6
  * click state, and reports where a tooltip should be anchored.
@@ -21,9 +14,18 @@ function eventToColRow({ event, el, offsetX, offsetY, colWidth, rowHeight, }) {
21
14
  export function useMsaBlockMouse({ model, offsetX, offsetY, }) {
22
15
  const { anchor, hoverAt, clearAnchor } = useHoverAnchor();
23
16
  const downAt = useRef(undefined);
17
+ // The block's rect places its cells on the page. A drag keeps the mapping
18
+ // it started with, so each point subtracts the scroll since then.
19
+ function cellMapper(el) {
20
+ const { left, top } = el.getBoundingClientRect();
21
+ const { scrollX, scrollY } = model;
22
+ return ({ clientX, clientY }) => ({
23
+ col: Math.floor((clientX - left + offsetX - (model.scrollX - scrollX)) / model.colWidth),
24
+ row: Math.floor((clientY - top + offsetY - (model.scrollY - scrollY)) / model.rowHeight),
25
+ });
26
+ }
24
27
  function colRow(event, el) {
25
- const { colWidth, rowHeight } = model;
26
- return eventToColRow({ event, el, offsetX, offsetY, colWidth, rowHeight });
28
+ return cellMapper(el)(event);
27
29
  }
28
30
  // a block can extend past the alignment (the last block is a full tile wide,
29
31
  // and the panel is taller than the rows when there are few of them), so a
@@ -38,8 +40,13 @@ export function useMsaBlockMouse({ model, offsetX, offsetY, }) {
38
40
  const hasTooltip = !!model.hoveredInsertion || model.mouseOverDomains.length > 0;
39
41
  hoverAt(event, hasTooltip || undefined);
40
42
  }
41
- function onMouseDown(event) {
43
+ // shift+drag selects a block; MSACanvas leaves a shifted press out of its
44
+ // pan
45
+ function onMouseDown(event, el) {
42
46
  downAt.current = { x: event.clientX, y: event.clientY };
47
+ if (event.shiftKey && event.button === 0) {
48
+ dragSelection(model, event, cellMapper(el));
49
+ }
43
50
  }
44
51
  function onClick(event, el) {
45
52
  const down = downAt.current;
@@ -1 +1 @@
1
- {"version":3,"file":"useMsaBlockMouse.js","sourceRoot":"","sources":["../../../src/components/msa/useMsaBlockMouse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMsaBlockMouse.js","sourceRoot":"","sources":["../../../src/components/msa/useMsaBlockMouse.ts"],"names":[],"mappings":"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"}
@@ -3,3 +3,5 @@ export declare const treeHoverColor = "rgba(255,165,0,0.2)";
3
3
  export declare const multiRowHoverColor = "rgba(255,165,0,0.15)";
4
4
  export declare const hoverColor = "rgba(0,0,0,0.15)";
5
5
  export declare const clickColor = "rgba(128,128,0,0.2)";
6
+ export declare const selectionFill = "rgba(25,118,210,0.22)";
7
+ export declare const selectionBorder = "rgba(25,118,210,0.95)";
@@ -13,4 +13,7 @@ export const multiRowHoverColor = 'rgba(255,165,0,0.15)';
13
13
  // match or the crosshair appears to change color as it crosses the tracks.
14
14
  export const hoverColor = 'rgba(0,0,0,0.15)';
15
15
  export const clickColor = 'rgba(128,128,0,0.2)';
16
+ // the selected block, a blue that reads apart from the orange highlights
17
+ export const selectionFill = 'rgba(25,118,210,0.22)';
18
+ export const selectionBorder = 'rgba(25,118,210,0.95)';
16
19
  //# sourceMappingURL=overlayColors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"overlayColors.js","sourceRoot":"","sources":["../../src/components/overlayColors.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,gFAAgF;AAChF,gEAAgE;AAEhE,yEAAyE;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,qBAAqB,CAAA;AAEnD,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG,qBAAqB,CAAA;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAA;AAExD,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,MAAM,CAAC,MAAM,UAAU,GAAG,kBAAkB,CAAA;AAC5C,MAAM,CAAC,MAAM,UAAU,GAAG,qBAAqB,CAAA"}
1
+ {"version":3,"file":"overlayColors.js","sourceRoot":"","sources":["../../src/components/overlayColors.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,gFAAgF;AAChF,gEAAgE;AAEhE,yEAAyE;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,qBAAqB,CAAA;AAEnD,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG,qBAAqB,CAAA;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAA;AAExD,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,MAAM,CAAC,MAAM,UAAU,GAAG,kBAAkB,CAAA;AAC5C,MAAM,CAAC,MAAM,UAAU,GAAG,qBAAqB,CAAA;AAE/C,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,uBAAuB,CAAA;AACpD,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CAAA"}
@@ -0,0 +1,17 @@
1
+ import type { MsaViewModel } from '../model.ts';
2
+ export declare const maxClickTravel = 3;
3
+ export interface ClientPoint {
4
+ clientX: number;
5
+ clientY: number;
6
+ }
7
+ /**
8
+ * Follows a press through the window until its release, selecting the block
9
+ * between the cell it started on and the cell under the pointer. The selection
10
+ * starts once the pointer travels past `maxClickTravel`, so a press that stays
11
+ * put reaches the click handlers unchanged. `cellAt` maps a client point to a
12
+ * visible column and row index, or a column alone to select across every row.
13
+ */
14
+ export declare function dragSelection(model: MsaViewModel, start: ClientPoint, cellAt: (point: ClientPoint) => {
15
+ col: number;
16
+ row?: number;
17
+ }): void;
@@ -0,0 +1,30 @@
1
+ import { isAlive } from '@jbrowse/mobx-state-tree';
2
+ // a press that travels further than this, in px, is a drag and not a click
3
+ export const maxClickTravel = 3;
4
+ /**
5
+ * Follows a press through the window until its release, selecting the block
6
+ * between the cell it started on and the cell under the pointer. The selection
7
+ * starts once the pointer travels past `maxClickTravel`, so a press that stays
8
+ * put reaches the click handlers unchanged. `cellAt` maps a client point to a
9
+ * visible column and row index, or a column alone to select across every row.
10
+ */
11
+ export function dragSelection(model, start, cellAt) {
12
+ const anchor = cellAt(start);
13
+ const { clientX, clientY } = start;
14
+ let dragging = false;
15
+ function onMove(event) {
16
+ dragging ||=
17
+ Math.hypot(event.clientX - clientX, event.clientY - clientY) >
18
+ maxClickTravel;
19
+ if (dragging && isAlive(model)) {
20
+ model.selectBlock(anchor, cellAt(event));
21
+ }
22
+ }
23
+ function onUp() {
24
+ window.removeEventListener('mousemove', onMove);
25
+ window.removeEventListener('mouseup', onUp);
26
+ }
27
+ window.addEventListener('mousemove', onMove);
28
+ window.addEventListener('mouseup', onUp);
29
+ }
30
+ //# sourceMappingURL=selectionDrag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectionDrag.js","sourceRoot":"","sources":["../../src/components/selectionDrag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAIlD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAO/B;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAmB,EACnB,KAAkB,EAClB,MAA6D;IAE7D,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAClC,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,SAAS,MAAM,CAAC,KAAiB;QAC/B,QAAQ;YACN,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;gBAC5D,cAAc,CAAA;QAChB,IAAI,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IACD,SAAS,IAAI;QACX,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAC/C,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IACD,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IAC5C,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AAC1C,CAAC"}
@@ -3,7 +3,8 @@ import type React from 'react';
3
3
  /**
4
4
  * Translates pointer events over a track's row into the hovered column and a
5
5
  * tooltip anchor. The track shares the alignment's columns, so hovering it sets
6
- * the model's mouse column too and the alignment's hover band follows along.
6
+ * the model's mouse column too and the alignment's hover band follows along. A
7
+ * drag along the row selects the columns it covers across every row.
7
8
  *
8
9
  * `tooltip` off skips the anchor, so a track whose tooltip is turned off still
9
10
  * drives the hover band without re-rendering on every mouse move.
@@ -14,5 +15,6 @@ export declare function useTrackHover({ model, tooltip, }: {
14
15
  }): {
15
16
  anchor: import("../useHoverAnchor.ts").HoverAnchor<number> | undefined;
16
17
  onMouseMove: (event: React.MouseEvent, el: HTMLElement) => void;
18
+ onMouseDown: (event: React.MouseEvent, el: HTMLElement) => void;
17
19
  onMouseLeave: () => void;
18
20
  };
@@ -1,8 +1,10 @@
1
+ import { dragSelection } from '../selectionDrag.js';
1
2
  import { useHoverAnchor } from '../useHoverAnchor.js';
2
3
  /**
3
4
  * Translates pointer events over a track's row into the hovered column and a
4
5
  * tooltip anchor. The track shares the alignment's columns, so hovering it sets
5
- * the model's mouse column too and the alignment's hover band follows along.
6
+ * the model's mouse column too and the alignment's hover band follows along. A
7
+ * drag along the row selects the columns it covers across every row.
6
8
  *
7
9
  * `tooltip` off skips the anchor, so a track whose tooltip is turned off still
8
10
  * drives the hover band without re-rendering on every mouse move.
@@ -11,20 +13,38 @@ export function useTrackHover({ model, tooltip, }) {
11
13
  const { anchor, hoverAt, clearAnchor } = useHoverAnchor();
12
14
  // the blocks are laid out in column space and scrolled by a transform on
13
15
  // their container, so the pointer's column comes off the untransformed row
16
+ function colAt(clientX, left) {
17
+ return Math.floor((clientX - left - model.scrollX) / model.colWidth);
18
+ }
14
19
  function onMouseMove(event, el) {
15
- const { colWidth, scrollX, numColumns } = model;
16
- const { left } = el.getBoundingClientRect();
17
- const col = Math.floor((event.clientX - left - scrollX) / colWidth);
18
- const hit = col >= 0 && col < numColumns;
20
+ const col = colAt(event.clientX, el.getBoundingClientRect().left);
21
+ const hit = col >= 0 && col < model.numColumns;
19
22
  model.setMousePos(hit ? col : undefined, undefined);
20
23
  if (tooltip) {
21
24
  hoverAt(event, hit ? col : undefined);
22
25
  }
23
26
  }
27
+ // a press on a track's canvas, which leaves out the resize divider under it.
28
+ // The row takes the focus, so Escape reaches onMsaKey from there too
29
+ function onMouseDown(event, el) {
30
+ if (event.button === 0 && event.target instanceof HTMLCanvasElement) {
31
+ event.preventDefault();
32
+ el.focus({ preventScroll: true });
33
+ const { left } = el.getBoundingClientRect();
34
+ dragSelection(model, event, ({ clientX }) => ({
35
+ col: colAt(clientX, left),
36
+ }));
37
+ }
38
+ }
24
39
  function onMouseLeave() {
25
40
  clearAnchor();
26
41
  model.setMousePos(undefined, undefined);
27
42
  }
28
- return { anchor: tooltip ? anchor : undefined, onMouseMove, onMouseLeave };
43
+ return {
44
+ anchor: tooltip ? anchor : undefined,
45
+ onMouseMove,
46
+ onMouseDown,
47
+ onMouseLeave,
48
+ };
29
49
  }
30
50
  //# sourceMappingURL=useTrackHover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTrackHover.js","sourceRoot":"","sources":["../../../src/components/tracks/useTrackHover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAKrD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,GAIR;IACC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,cAAc,EAAU,CAAA;IAEjE,yEAAyE;IACzE,2EAA2E;IAC3E,SAAS,WAAW,CAAC,KAAuB,EAAE,EAAe;QAC3D,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;QAC/C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAA;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAA;QACnE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,UAAU,CAAA;QACxC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QACnD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,SAAS,YAAY;QACnB,WAAW,EAAE,CAAA;QACb,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACzC,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA;AAC5E,CAAC"}
1
+ {"version":3,"file":"useTrackHover.js","sourceRoot":"","sources":["../../../src/components/tracks/useTrackHover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAKrD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,GAIR;IACC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,cAAc,EAAU,CAAA;IAEjE,yEAAyE;IACzE,2EAA2E;IAC3E,SAAS,KAAK,CAAC,OAAe,EAAE,IAAY;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IACtE,CAAC;IAED,SAAS,WAAW,CAAC,KAAuB,EAAE,EAAe;QAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAA;QACjE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,CAAA;QAC9C,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QACnD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,qEAAqE;IACrE,SAAS,WAAW,CAAC,KAAuB,EAAE,EAAe;QAC3D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,YAAY,iBAAiB,EAAE,CAAC;YACpE,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;YACjC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAA;YAC3C,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5C,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;aAC1B,CAAC,CAAC,CAAA;QACL,CAAC;IACH,CAAC;IAED,SAAS,YAAY;QACnB,WAAW,EAAE,CAAA;QACb,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACzC,CAAC;IAED,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACpC,WAAW;QACX,WAAW;QACX,YAAY;KACb,CAAA;AACH,CAAC"}
@@ -1,9 +1,8 @@
1
1
  import React from 'react';
2
- import Attributes from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/Attributes';
3
- import BaseCard from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/BaseCard';
4
2
  import { Dialog } from '@jbrowse/core/ui';
5
- import { DialogContent } from '@mui/material';
3
+ import { DialogContent, Typography } from '@mui/material';
6
4
  import { observer } from 'mobx-react';
5
+ import MetadataTable from '../../MetadataTable.js';
7
6
  import SequenceTextArea from '../../SequenceTextArea.js';
8
7
  const TreeNodeInfoDialog = observer(function ({ info, model, nodeName, onClose, }) {
9
8
  const { rows } = model;
@@ -13,11 +12,13 @@ const TreeNodeInfoDialog = observer(function ({ info, model, nodeName, onClose,
13
12
  onClose();
14
13
  }, open: true, title: "Tree node info", maxWidth: "xl" },
15
14
  React.createElement(DialogContent, null,
16
- React.createElement(BaseCard, { title: "Attributes" },
17
- React.createElement(Attributes, { attributes: { nodeName, ...info } })),
18
- React.createElement(BaseCard, { title: "Sequence" }, res ? (React.createElement(SequenceTextArea, { str: [res] })) : (React.createElement("div", null, "Sequence not found"))),
19
- metadata ? (React.createElement(BaseCard, { title: "Extra metadata" },
20
- React.createElement(Attributes, { attributes: metadata }))) : null)));
15
+ React.createElement(Typography, { variant: "h6" }, "Attributes"),
16
+ React.createElement(MetadataTable, { record: { nodeName, ...info } }),
17
+ React.createElement(Typography, { variant: "h6" }, "Sequence"),
18
+ res ? (React.createElement(SequenceTextArea, { str: [res] })) : (React.createElement(Typography, null, "Sequence not found")),
19
+ metadata ? (React.createElement(React.Fragment, null,
20
+ React.createElement(Typography, { variant: "h6" }, "Extra metadata"),
21
+ React.createElement(MetadataTable, { record: metadata }))) : null)));
21
22
  });
22
23
  export default TreeNodeInfoDialog;
23
24
  //# sourceMappingURL=TreeNodeInfoDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNodeInfoDialog.js","sourceRoot":"","sources":["../../../../src/components/tree/dialogs/TreeNodeInfoDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,UAAU,MAAM,8DAA8D,CAAA;AACrF,OAAO,QAAQ,MAAM,4DAA4D,CAAA;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,gBAAgB,MAAM,2BAA4B,CAAA;AAIzD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,UAAU,EAC5C,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,OAAO,GAMR;IACC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA;IAC7C,OAAO,CACL,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,EAAE,CAAA;QACX,CAAC,EACD,IAAI,QACJ,KAAK,EAAC,gBAAgB,EACtB,QAAQ,EAAC,IAAI;QAEb,oBAAC,aAAa;YACZ,oBAAC,QAAQ,IAAC,KAAK,EAAC,YAAY;gBAC1B,oBAAC,UAAU,IAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAI,CACxC;YACX,oBAAC,QAAQ,IAAC,KAAK,EAAC,UAAU,IACvB,GAAG,CAAC,CAAC,CAAC,CACL,oBAAC,gBAAgB,IAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAI,CACjC,CAAC,CAAC,CAAC,CACF,sDAA6B,CAC9B,CACQ;YACV,QAAQ,CAAC,CAAC,CAAC,CACV,oBAAC,QAAQ,IAAC,KAAK,EAAC,gBAAgB;gBAC9B,oBAAC,UAAU,IAAC,UAAU,EAAE,QAAQ,GAAI,CAC3B,CACZ,CAAC,CAAC,CAAC,IAAI,CACM,CACT,CACV,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,kBAAkB,CAAA"}
1
+ {"version":3,"file":"TreeNodeInfoDialog.js","sourceRoot":"","sources":["../../../../src/components/tree/dialogs/TreeNodeInfoDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,aAAa,MAAM,wBAAyB,CAAA;AACnD,OAAO,gBAAgB,MAAM,2BAA4B,CAAA;AAIzD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,UAAU,EAC5C,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,OAAO,GAMR;IACC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA;IAC7C,OAAO,CACL,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,EAAE,CAAA;QACX,CAAC,EACD,IAAI,QACJ,KAAK,EAAC,gBAAgB,EACtB,QAAQ,EAAC,IAAI;QAEb,oBAAC,aAAa;YACZ,oBAAC,UAAU,IAAC,OAAO,EAAC,IAAI,iBAAwB;YAChD,oBAAC,aAAa,IAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAI;YAChD,oBAAC,UAAU,IAAC,OAAO,EAAC,IAAI,eAAsB;YAC7C,GAAG,CAAC,CAAC,CAAC,CACL,oBAAC,gBAAgB,IAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAI,CACjC,CAAC,CAAC,CAAC,CACF,oBAAC,UAAU,6BAAgC,CAC5C;YACA,QAAQ,CAAC,CAAC,CAAC,CACV;gBACE,oBAAC,UAAU,IAAC,OAAO,EAAC,IAAI,qBAA4B;gBACpD,oBAAC,aAAa,IAAC,MAAM,EAAE,QAAQ,GAAI,CAClC,CACJ,CAAC,CAAC,CAAC,IAAI,CACM,CACT,CACV,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,kBAAkB,CAAA"}
@@ -45,7 +45,7 @@ export declare const maxNeighborJoiningRows = 500;
45
45
  export declare const rowTintAlpha = 0.25;
46
46
  export declare const cladeHighlightColor = "#fff3c4";
47
47
  export declare const cladeHighlightAlpha = 0.6;
48
- export declare const maxInlineSnapshotBytes = 15000;
48
+ export declare const maxInlineSnapshotBytes = 50000;
49
49
  export declare const rowPanelHeaderHeight = 56;
50
50
  export declare const treeScaleBarHeight = 22;
51
51
  export declare const defaultFeaturePanelWidth = 200;
package/dist/constants.js CHANGED
@@ -90,12 +90,12 @@ export const rowTintAlpha = 0.25;
90
90
  // and the opacity a producer's own color takes when it carries none.
91
91
  export const cladeHighlightColor = '#fff3c4';
92
92
  export const cladeHighlightAlpha = 0.6;
93
- // The largest inline document the snapshot carries. A larger pasted or
94
- // locally-opened file stays in the live model and out of the snapshot, and
95
- // `unshareableData` warns using the same number. The demo app gzips the
96
- // snapshot into `?data=`, where 15 kB of the hosted protein alignments encodes
97
- // to 6,300-7,600 characters, under the 8,192 gmod.org accepts.
98
- export const maxInlineSnapshotBytes = 15_000;
93
+ // The largest inline document a snapshot carries by default, which keeps a
94
+ // jbrowse session small. A larger pasted or locally-opened file stays in the
95
+ // live model and out of the snapshot, and `unshareableData` warns using the
96
+ // same number. `MSAModelF({ maxInlineSnapshotBytes })` sets another; the demo
97
+ // app's links hold far more.
98
+ export const maxInlineSnapshotBytes = 50_000;
99
99
  // Height of the band the `rowPanels` headers draw in, above the strips in the
100
100
  // top area beside the tree ruler and the minimap. A panel wider than the band
101
101
  // is tall writes its header across, where it has more room.
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
package/dist/element.d.ts CHANGED
@@ -1,9 +1,13 @@
1
1
  /**
2
2
  * Registers a custom element that renders MSAViewer, for pages with no React.
3
3
  * Attributes: msa-url, tree-url, gff-url, color-scheme, height, hide-header,
4
- * theme, tree-area-width and reference-row. Properties: msa, tree and gff text, highlights,
5
- * columnTracks and residueMappings. Events: cell-hover, cell-click and
6
- * viewport-change, each with the MSAViewer callback's value as detail.
4
+ * theme, tree-area-width and reference-row. Properties: msa, tree and gff text,
5
+ * features, colorScheme, highlights, columnTracks, residueMappings and
6
+ * selection. The
7
+ * colorScheme property takes a `{map}` the color-scheme attribute cannot hold,
8
+ * and wins over the attribute while set. Events: cell-hover, cell-click,
9
+ * viewport-change and selection-change, each with the MSAViewer callback's
10
+ * value as detail.
7
11
  *
8
12
  * Inside a <nightingale-manager>, the element registers with it and speaks its
9
13
  * protocol: it follows the display-start, display-end and highlight attributes
package/dist/element.js CHANGED
@@ -48,9 +48,13 @@ function residueRange(model, row, viewport) {
48
48
  /**
49
49
  * Registers a custom element that renders MSAViewer, for pages with no React.
50
50
  * Attributes: msa-url, tree-url, gff-url, color-scheme, height, hide-header,
51
- * theme, tree-area-width and reference-row. Properties: msa, tree and gff text, highlights,
52
- * columnTracks and residueMappings. Events: cell-hover, cell-click and
53
- * viewport-change, each with the MSAViewer callback's value as detail.
51
+ * theme, tree-area-width and reference-row. Properties: msa, tree and gff text,
52
+ * features, colorScheme, highlights, columnTracks, residueMappings and
53
+ * selection. The
54
+ * colorScheme property takes a `{map}` the color-scheme attribute cannot hold,
55
+ * and wins over the attribute while set. Events: cell-hover, cell-click,
56
+ * viewport-change and selection-change, each with the MSAViewer callback's
57
+ * value as detail.
54
58
  *
55
59
  * Inside a <nightingale-manager>, the element registers with it and speaks its
56
60
  * protocol: it follows the display-start, display-end and highlight attributes
@@ -89,6 +93,18 @@ export function defineMsaElement(tagName = 'jbrowse-msa') {
89
93
  set gff(value) {
90
94
  this.#setData({ gff: value });
91
95
  }
96
+ get features() {
97
+ return this.#data.features;
98
+ }
99
+ set features(value) {
100
+ this.#setData({ features: value });
101
+ }
102
+ get colorScheme() {
103
+ return this.#data.colorScheme;
104
+ }
105
+ set colorScheme(value) {
106
+ this.#setData({ colorScheme: value });
107
+ }
92
108
  get highlights() {
93
109
  return this.#data.highlights;
94
110
  }
@@ -107,6 +123,13 @@ export function defineMsaElement(tagName = 'jbrowse-msa') {
107
123
  set residueMappings(value) {
108
124
  this.#setData({ residueMappings: value });
109
125
  }
126
+ // the viewer's selection, which the reader's drags change
127
+ get selection() {
128
+ return this.#model ? this.#model.selection : this.#data.selection;
129
+ }
130
+ set selection(value) {
131
+ this.#setData({ selection: value });
132
+ }
110
133
  get #referenceRow() {
111
134
  return this.getAttribute('reference-row') ?? undefined;
112
135
  }
@@ -121,7 +144,9 @@ export function defineMsaElement(tagName = 'jbrowse-msa') {
121
144
  msaFilehandle: location(this.getAttribute('msa-url')),
122
145
  treeFilehandle: location(this.getAttribute('tree-url')),
123
146
  gffFilehandle: location(this.getAttribute('gff-url')),
124
- colorScheme: this.getAttribute('color-scheme') ?? undefined,
147
+ colorScheme: this.#data.colorScheme ??
148
+ this.getAttribute('color-scheme') ??
149
+ undefined,
125
150
  height: numberAttribute(this.getAttribute('height')),
126
151
  treeAreaWidth: numberAttribute(this.getAttribute('tree-area-width')),
127
152
  hideHeader: this.hasAttribute('hide-header'),
@@ -137,6 +162,9 @@ export function defineMsaElement(tagName = 'jbrowse-msa') {
137
162
  this.#emit('viewport-change', viewport);
138
163
  this.#reportRange(viewport);
139
164
  },
165
+ onSelectionChange: selection => {
166
+ this.#emit('selection-change', selection);
167
+ },
140
168
  onModel: model => {
141
169
  this.#model = model;
142
170
  this.#followRange();
@@ -1 +1 @@
1
- {"version":3,"file":"element.js","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"element.js","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Annotation, Feature } from './types.ts';
2
+ /**
3
+ * The `features` layer as the annotations a GFF would parse to. Every field
4
+ * but the placement is also an attribute, as a string like a GFF value, so an
5
+ * encoding reads `type` or a host's own field the way it reads a GFF column 9
6
+ * key.
7
+ */
8
+ export declare function featuresToAnnotations(features: Feature[]): Annotation[];
@@ -0,0 +1,42 @@
1
+ const placement = new Set(['row', 'start', 'end']);
2
+ // The colors and labels are maps keyed by annotation, and a getter read
3
+ // outside a reaction recomputes on every read. Caching on the frozen feature
4
+ // gives it one annotation however often the layer converts.
5
+ const converted = new WeakMap();
6
+ /**
7
+ * The `features` layer as the annotations a GFF would parse to. Every field
8
+ * but the placement is also an attribute, as a string like a GFF value, so an
9
+ * encoding reads `type` or a host's own field the way it reads a GFF column 9
10
+ * key.
11
+ */
12
+ export function featuresToAnnotations(features) {
13
+ return features.map(feature => {
14
+ const cached = converted.get(feature);
15
+ if (cached) {
16
+ return cached;
17
+ }
18
+ const annotation = featureAnnotation(feature);
19
+ converted.set(feature, annotation);
20
+ return annotation;
21
+ });
22
+ }
23
+ function featureAnnotation(feature) {
24
+ const { row, start, end, name, description, type, strand, color } = feature;
25
+ const accession = name ?? `${row}:${start}-${end}`;
26
+ const attributes = Object.fromEntries(Object.entries(feature)
27
+ .filter(([key, value]) => !placement.has(key) && value !== undefined)
28
+ .map(([key, value]) => [key, String(value)]));
29
+ return {
30
+ id: row,
31
+ accession,
32
+ name: name ?? accession,
33
+ description: description ?? name ?? accession,
34
+ featureType: type,
35
+ start,
36
+ end,
37
+ strand: strand === '+' ? 1 : strand === '-' ? -1 : undefined,
38
+ color,
39
+ attributes,
40
+ };
41
+ }
42
+ //# sourceMappingURL=featuresLayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"featuresLayer.js","sourceRoot":"","sources":["../src/featuresLayer.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;AAElD,wEAAwE;AACxE,6EAA6E;AAC7E,4DAA4D;AAC5D,MAAM,SAAS,GAAG,IAAI,OAAO,EAAuB,CAAA;AAEpD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAmB;IACvD,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAA;QACf,CAAC;QACD,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAC7C,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;QAClC,OAAO,UAAU,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAgB;IACzC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAC3E,MAAM,SAAS,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE,CAAA;IAClD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACnC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC;SACpE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/C,CAAA;IACD,OAAO;QACL,EAAE,EAAE,GAAG;QACP,SAAS;QACT,IAAI,EAAE,IAAI,IAAI,SAAS;QACvB,WAAW,EAAE,WAAW,IAAI,IAAI,IAAI,SAAS;QAC7C,WAAW,EAAE,IAAI;QACjB,KAAK;QACL,GAAG;QACH,MAAM,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5D,KAAK;QACL,UAAU;KACX,CAAA;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -19,4 +19,4 @@ export type { InterProScanResults } from 'msa-parsers';
19
19
  export type { ColumnCounts } from './columnCounts.ts';
20
20
  export type { ColumnStats } from './columnStats.ts';
21
21
  export type { ResolvedScale, ScaleSpec } from './scales.ts';
22
- export type { Accession, Annotation, Arc, ArcSpec, ArcTrackModel, BasicTrack, BasicTrackModel, Cell, Clade, CladeMark, ColumnTrackSpec, DomainBand, Encoding, EncodingChannel, Highlight, Legend, LegendEntry, Node, MappedStructure, NodeWithIds, NodeWithIdsAndLength, Region, ResidueEncoding, ResidueMapping, ResidueMappingProblem, ResidueSegment, ResolvedClade, ResolvedEncoding, ResolvedHighlight, ResolvedRowPanel, RowPanelSpec, RowResidue, StructureResidue, TextTrackModel, TidyDomainAnnotation, TrackKind, TreeOrder, TreeRoot, UnshareableData, Viewport, } from './types.ts';
22
+ 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';
@@ -5,7 +5,7 @@
5
5
  * data will not be persisted in saved session snapshots, it will be fetched
6
6
  * from msaFilehandle at startup
7
7
  */
8
- export declare function DataModelF(): import("@jbrowse/mobx-state-tree").IModelType<{
8
+ export declare function DataModelF(maxInlineBytes?: number): import("@jbrowse/mobx-state-tree").IModelType<{
9
9
  /**
10
10
  * #property
11
11
  */
@@ -7,7 +7,7 @@ import { maxInlineSnapshotBytes } from '../constants.js';
7
7
  * data will not be persisted in saved session snapshots, it will be fetched
8
8
  * from msaFilehandle at startup
9
9
  */
10
- export function DataModelF() {
10
+ export function DataModelF(maxInlineBytes = maxInlineSnapshotBytes) {
11
11
  return types
12
12
  .model({
13
13
  /**
@@ -54,11 +54,11 @@ export function DataModelF() {
54
54
  },
55
55
  }))
56
56
  .postProcessSnapshot(snap =>
57
- // drops any field over maxInlineSnapshotBytes; the parent model's
57
+ // drops any field over maxInlineBytes; the parent model's
58
58
  // `unshareableData` reports what was dropped
59
59
  Object.fromEntries(Object.entries(snap).map(([key, text]) => [
60
60
  key,
61
- text && text.length > maxInlineSnapshotBytes ? undefined : text,
61
+ text && text.length > maxInlineBytes ? undefined : text,
62
62
  ])));
63
63
  }
64
64
  //# sourceMappingURL=DataModel.js.map