react-msaview 3.1.4 → 3.1.6

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 (50) hide show
  1. package/bundle/index.js +31 -40
  2. package/dist/DataModel.d.ts +34 -0
  3. package/dist/DataModel.js +46 -0
  4. package/dist/DataModel.js.map +1 -0
  5. package/dist/SelectedStructuresMixin.d.ts +46 -0
  6. package/dist/SelectedStructuresMixin.js +52 -0
  7. package/dist/SelectedStructuresMixin.js.map +1 -0
  8. package/dist/components/MSAPanel/MSABlock.js +32 -16
  9. package/dist/components/MSAPanel/MSABlock.js.map +1 -1
  10. package/dist/components/MSAPanel/renderMSABlock.js +1 -1
  11. package/dist/components/MSAPanel/renderMSABlock.js.map +1 -1
  12. package/dist/components/MSAPanel/renderMSAMouseover.js +14 -4
  13. package/dist/components/MSAPanel/renderMSAMouseover.js.map +1 -1
  14. package/dist/components/MSAView.js +2 -2
  15. package/dist/components/MSAView.js.map +1 -1
  16. package/dist/components/TreePanel/TreeNodeMenu.js +65 -55
  17. package/dist/components/TreePanel/TreeNodeMenu.js.map +1 -1
  18. package/dist/components/TreePanel/renderTreeCanvas.js +13 -12
  19. package/dist/components/TreePanel/renderTreeCanvas.js.map +1 -1
  20. package/dist/components/dialogs/SettingsDialog.js +42 -32
  21. package/dist/components/dialogs/SettingsDialog.js.map +1 -1
  22. package/dist/measureTextCanvas.d.ts +1 -1
  23. package/dist/measureTextCanvas.js +1 -1
  24. package/dist/measureTextCanvas.js.map +1 -1
  25. package/dist/model.d.ts +121 -108
  26. package/dist/model.js +72 -94
  27. package/dist/model.js.map +1 -1
  28. package/dist/parsers/ClustalMSA.d.ts +1 -11
  29. package/dist/parsers/ClustalMSA.js +1 -15
  30. package/dist/parsers/ClustalMSA.js.map +1 -1
  31. package/dist/util.d.ts +0 -1
  32. package/dist/util.js +0 -7
  33. package/dist/util.js.map +1 -1
  34. package/dist/version.d.ts +1 -1
  35. package/dist/version.js +1 -1
  36. package/package.json +1 -2
  37. package/src/DataModel.ts +46 -0
  38. package/src/SelectedStructuresMixin.ts +59 -0
  39. package/src/components/MSAPanel/MSABlock.tsx +33 -18
  40. package/src/components/MSAPanel/renderMSABlock.ts +0 -1
  41. package/src/components/MSAPanel/renderMSAMouseover.ts +16 -3
  42. package/src/components/MSAView.tsx +3 -3
  43. package/src/components/TreePanel/TreeNodeMenu.tsx +93 -84
  44. package/src/components/TreePanel/renderTreeCanvas.ts +19 -9
  45. package/src/components/dialogs/SettingsDialog.tsx +121 -117
  46. package/src/measureTextCanvas.ts +1 -1
  47. package/src/model.ts +88 -110
  48. package/src/parsers/ClustalMSA.ts +1 -15
  49. package/src/util.ts +0 -11
  50. package/src/version.ts +1 -1
@@ -0,0 +1,34 @@
1
+ /**
2
+ * #stateModel DataModel
3
+ * the data stored for the model. this is sometimes temporary in the case that
4
+ * e.g. msaFilehandle is available on the parent model, because then the msa
5
+ * data will not be persisted in saved session snapshots, it will be fetched
6
+ * from msaFilehandle at startup
7
+ */
8
+ export declare function DataModelF(): import("mobx-state-tree").IModelType<{
9
+ /**
10
+ * #property
11
+ */
12
+ tree: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
13
+ /**
14
+ * #property
15
+ */
16
+ msa: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
17
+ /**
18
+ * #property
19
+ */
20
+ treeMetadata: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
21
+ }, {
22
+ /**
23
+ * #action
24
+ */
25
+ setTree(tree?: string): void;
26
+ /**
27
+ * #action
28
+ */
29
+ setMSA(msa?: string): void;
30
+ /**
31
+ * #action
32
+ */
33
+ setTreeMetadata(treeMetadata?: string): void;
34
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
@@ -0,0 +1,46 @@
1
+ import { types } from 'mobx-state-tree';
2
+ /**
3
+ * #stateModel DataModel
4
+ * the data stored for the model. this is sometimes temporary in the case that
5
+ * e.g. msaFilehandle is available on the parent model, because then the msa
6
+ * data will not be persisted in saved session snapshots, it will be fetched
7
+ * from msaFilehandle at startup
8
+ */
9
+ export function DataModelF() {
10
+ return types
11
+ .model({
12
+ /**
13
+ * #property
14
+ */
15
+ tree: types.maybe(types.string),
16
+ /**
17
+ * #property
18
+ */
19
+ msa: types.maybe(types.string),
20
+ /**
21
+ * #property
22
+ */
23
+ treeMetadata: types.maybe(types.string),
24
+ })
25
+ .actions(self => ({
26
+ /**
27
+ * #action
28
+ */
29
+ setTree(tree) {
30
+ self.tree = tree;
31
+ },
32
+ /**
33
+ * #action
34
+ */
35
+ setMSA(msa) {
36
+ self.msa = msa;
37
+ },
38
+ /**
39
+ * #action
40
+ */
41
+ setTreeMetadata(treeMetadata) {
42
+ self.treeMetadata = treeMetadata;
43
+ },
44
+ }));
45
+ }
46
+ //# sourceMappingURL=DataModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataModel.js","sourceRoot":"","sources":["../src/DataModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC;;;;;;GAMG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,KAAK;SACT,KAAK,CAAC;QACL;;WAEG;QACH,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAC/B;;WAEG;QACH,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAC9B;;WAEG;QACH,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;KACxC,CAAC;SACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB;;WAEG;QACH,OAAO,CAAC,IAAa;YACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAClB,CAAC;QACD;;WAEG;QACH,MAAM,CAAC,GAAY;YACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QAChB,CAAC;QACD;;WAEG;QACH,eAAe,CAAC,YAAqB;YACnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAClC,CAAC;KACF,CAAC,CAAC,CAAA;AACP,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { SnapshotIn } from 'mobx-state-tree';
2
+ import { StructureModel } from './StructureModel';
3
+ export type StructureSnap = SnapshotIn<typeof StructureModel>;
4
+ export declare function SelectedStructuresMixin(): import("mobx-state-tree").IModelType<{
5
+ /**
6
+ * #property
7
+ * currently "selected" structures, generally PDB 3-D protein structures
8
+ */
9
+ selectedStructures: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
10
+ id: import("mobx-state-tree").ISimpleType<string>;
11
+ structure: import("mobx-state-tree").IModelType<{
12
+ pdb: import("mobx-state-tree").ISimpleType<string>;
13
+ startPos: import("mobx-state-tree").ISimpleType<number>;
14
+ endPos: import("mobx-state-tree").ISimpleType<number>;
15
+ }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
16
+ range: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
17
+ }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
18
+ }, {
19
+ /**
20
+ * #action
21
+ * add to the selected structures
22
+ */
23
+ addStructureToSelection(elt: StructureSnap): void;
24
+ /**
25
+ * #action
26
+ * remove from the selected structures
27
+ */
28
+ removeStructureFromSelection(elt: StructureSnap): void;
29
+ /**
30
+ * #action
31
+ * toggle a structure from the selected structures list
32
+ */
33
+ toggleStructureSelection(elt: {
34
+ id: string;
35
+ structure: {
36
+ startPos: number;
37
+ endPos: number;
38
+ pdb: string;
39
+ };
40
+ }): void;
41
+ /**
42
+ * #action
43
+ * clear all selected structures
44
+ */
45
+ clearSelectedStructures(): void;
46
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
@@ -0,0 +1,52 @@
1
+ import { cast, types } from 'mobx-state-tree';
2
+ import { StructureModel } from './StructureModel';
3
+ export function SelectedStructuresMixin() {
4
+ return types
5
+ .model({
6
+ /**
7
+ * #property
8
+ * currently "selected" structures, generally PDB 3-D protein structures
9
+ */
10
+ selectedStructures: types.array(StructureModel),
11
+ })
12
+ .actions(self => ({
13
+ /**
14
+ * #action
15
+ * add to the selected structures
16
+ */
17
+ addStructureToSelection(elt) {
18
+ self.selectedStructures.push(elt);
19
+ },
20
+ /**
21
+ * #action
22
+ * remove from the selected structures
23
+ */
24
+ removeStructureFromSelection(elt) {
25
+ const r = self.selectedStructures.find(node => node.id === elt.id);
26
+ if (r) {
27
+ self.selectedStructures.remove(r);
28
+ }
29
+ },
30
+ /**
31
+ * #action
32
+ * toggle a structure from the selected structures list
33
+ */
34
+ toggleStructureSelection(elt) {
35
+ const r = self.selectedStructures.find(node => node.id === elt.id);
36
+ if (r) {
37
+ self.selectedStructures.remove(r);
38
+ }
39
+ else {
40
+ self.selectedStructures.push(elt);
41
+ }
42
+ },
43
+ /**
44
+ * #action
45
+ * clear all selected structures
46
+ */
47
+ clearSelectedStructures() {
48
+ self.selectedStructures = cast([]);
49
+ },
50
+ }));
51
+ }
52
+ //# sourceMappingURL=SelectedStructuresMixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectedStructuresMixin.js","sourceRoot":"","sources":["../src/SelectedStructuresMixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,IAAI,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAIjD,MAAM,UAAU,uBAAuB;IACrC,OAAO,KAAK;SACT,KAAK,CAAC;QACL;;;WAGG;QACH,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;KAChD,CAAC;SACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB;;;WAGG;QACH,uBAAuB,CAAC,GAAkB;YACxC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC;QAED;;;WAGG;QACH,4BAA4B,CAAC,GAAkB;YAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAA;YAClE,IAAI,CAAC,EAAE,CAAC;gBACN,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QAED;;;WAGG;QACH,wBAAwB,CAAC,GAGxB;YACC,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAA;YAClE,IAAI,CAAC,EAAE,CAAC;gBACN,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACnC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QAED;;;WAGG;QACH,uBAAuB;YACrB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;QACpC,CAAC;KACF,CAAC,CAAC,CAAA;AACP,CAAC"}
@@ -1,30 +1,29 @@
1
1
  import React, { useEffect, useRef, useMemo } from 'react';
2
- import { autorun } from 'mobx';
3
2
  import { useTheme } from '@mui/material';
3
+ import { autorun } from 'mobx';
4
4
  import { observer } from 'mobx-react';
5
5
  // locals
6
6
  import { renderMSABlock } from './renderMSABlock';
7
7
  import { colorContrast } from '../../util';
8
8
  const MSABlock = observer(function ({ model, offsetX, offsetY, }) {
9
- const { colWidth, rowHeight, scrollY, scrollX, colorScheme, blockSize, highResScaleFactor, } = model;
9
+ const { colWidth, rowHeight, scrollY, scrollX, colorScheme, blockSize, mouseClickCol, mouseClickRow, highResScaleFactor, } = model;
10
10
  const theme = useTheme();
11
11
  const contrastScheme = useMemo(() => colorContrast(colorScheme, theme), [colorScheme, theme]);
12
12
  const ref = useRef(null);
13
13
  useEffect(() => {
14
14
  const ctx = ref.current?.getContext('2d');
15
- if (!ctx) {
16
- return;
17
- }
18
- return autorun(() => {
19
- renderMSABlock({
20
- ctx,
21
- theme,
22
- offsetX,
23
- offsetY,
24
- contrastScheme,
25
- model,
26
- });
27
- });
15
+ return ctx
16
+ ? autorun(() => {
17
+ renderMSABlock({
18
+ ctx,
19
+ theme,
20
+ offsetX,
21
+ offsetY,
22
+ contrastScheme,
23
+ model,
24
+ });
25
+ })
26
+ : undefined;
28
27
  }, [model, offsetX, offsetY, theme, contrastScheme]);
29
28
  return (React.createElement("canvas", { ref: ref, onMouseMove: event => {
30
29
  if (!ref.current) {
@@ -33,7 +32,24 @@ const MSABlock = observer(function ({ model, offsetX, offsetY, }) {
33
32
  const { left, top } = ref.current.getBoundingClientRect();
34
33
  const mouseX = event.clientX - left + offsetX;
35
34
  const mouseY = event.clientY - top + offsetY;
36
- model.setMousePos(Math.floor(mouseX / colWidth) + 1, Math.floor(mouseY / rowHeight));
35
+ const x = Math.floor(mouseX / colWidth) + 1;
36
+ const y = Math.floor(mouseY / rowHeight);
37
+ model.setMousePos(x, y);
38
+ }, onClick: event => {
39
+ if (!ref.current) {
40
+ return;
41
+ }
42
+ const { left, top } = ref.current.getBoundingClientRect();
43
+ const mouseX = event.clientX - left + offsetX;
44
+ const mouseY = event.clientY - top + offsetY;
45
+ const x = Math.floor(mouseX / colWidth) + 1;
46
+ const y = Math.floor(mouseY / rowHeight);
47
+ if (x === mouseClickCol && y === mouseClickRow) {
48
+ model.setMouseClickPos(undefined, undefined);
49
+ }
50
+ else {
51
+ model.setMouseClickPos(x, y);
52
+ }
37
53
  }, onMouseLeave: () => model.setMousePos(), width: blockSize * highResScaleFactor, height: blockSize * highResScaleFactor, style: {
38
54
  position: 'absolute',
39
55
  top: scrollY + offsetY,
@@ -1 +1 @@
1
- {"version":3,"file":"MSABlock.js","sourceRoot":"","sources":["../../../src/components/MSAPanel/MSABlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,SAAS;AACT,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAClC,KAAK,EACL,OAAO,EACP,OAAO,GAKR;IACC,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,OAAO,EACP,WAAW,EACX,SAAS,EACT,kBAAkB,GACnB,GAAG,KAAK,CAAA;IACT,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IAExB,MAAM,cAAc,GAAG,OAAO,CAC5B,GAAG,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,EACvC,CAAC,WAAW,EAAE,KAAK,CAAC,CACrB,CAAA;IAED,MAAM,GAAG,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IAC3C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;QACzC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAM;QACR,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,EAAE;YAClB,cAAc,CAAC;gBACb,GAAG;gBACH,KAAK;gBACL,OAAO;gBACP,OAAO;gBACP,cAAc;gBACd,KAAK;aACN,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAA;IACpD,OAAO,CACL,gCACE,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,KAAK,CAAC,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAM;YACR,CAAC;YACD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAA;YACzD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,OAAO,CAAA;YAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,OAAO,CAAA;YAC5C,KAAK,CAAC,WAAW,CACf,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,EACjC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAC/B,CAAA;QACH,CAAC,EACD,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EACvC,KAAK,EAAE,SAAS,GAAG,kBAAkB,EACrC,MAAM,EAAE,SAAS,GAAG,kBAAkB,EACtC,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,OAAO,GAAG,OAAO;YACtB,IAAI,EAAE,OAAO,GAAG,OAAO;YACvB,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,SAAS;SAClB,GACD,CACH,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,QAAQ,CAAA"}
1
+ {"version":3,"file":"MSABlock.js","sourceRoot":"","sources":["../../../src/components/MSAPanel/MSABlock.tsx"],"names":[],"mappings":"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"}
@@ -59,7 +59,7 @@ function drawTiles({ model, offsetX, ctx, visibleLeaves, theme, xStart, xEnd, })
59
59
  }
60
60
  }
61
61
  }
62
- function drawText({ model, offsetX, contrastScheme, theme, ctx, visibleLeaves, xStart, xEnd, }) {
62
+ function drawText({ model, offsetX, contrastScheme, ctx, visibleLeaves, xStart, xEnd, }) {
63
63
  const { bgColor, colorScheme, columns, colWidth, rowHeight } = model;
64
64
  if (rowHeight >= 5 && colWidth > rowHeight / 2) {
65
65
  for (const node of visibleLeaves) {
@@ -1 +1 @@
1
- {"version":3,"file":"renderMSABlock.js","sourceRoot":"","sources":["../../../src/components/MSAPanel/renderMSABlock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderMSABlock.js","sourceRoot":"","sources":["../../../src/components/MSAPanel/renderMSABlock.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,29 @@
1
+ const hoverColor = 'rgba(0,0,0,0.15)';
2
+ const highlightColor = 'rgba(128,128,0,0.2)';
1
3
  export function renderMouseover({ ctx, model, }) {
2
4
  const { mouseCol, colWidth, width, height, rowHeight, scrollX, scrollY, mouseRow,
3
5
  // @ts-expect-error
4
- mouseCol2, } = model;
6
+ mouseCol2, mouseClickRow, mouseClickCol, } = model;
5
7
  ctx.resetTransform();
6
8
  ctx.clearRect(0, 0, width, height);
7
9
  if (mouseCol !== undefined) {
8
- ctx.fillStyle = 'rgba(0,0,0,0.15)';
10
+ ctx.fillStyle = hoverColor;
9
11
  ctx.fillRect((mouseCol - 1) * colWidth + scrollX, 0, colWidth, height);
10
12
  }
11
13
  if (mouseRow !== undefined) {
12
- ctx.fillStyle = 'rgba(0,0,0,0.15)';
14
+ ctx.fillStyle = hoverColor;
13
15
  ctx.fillRect(0, mouseRow * rowHeight + scrollY, width, rowHeight);
14
16
  }
17
+ if (mouseClickCol !== undefined) {
18
+ ctx.fillStyle = highlightColor;
19
+ ctx.fillRect((mouseClickCol - 1) * colWidth + scrollX, 0, colWidth, height);
20
+ }
21
+ if (mouseClickRow !== undefined) {
22
+ ctx.fillStyle = highlightColor;
23
+ ctx.fillRect(0, mouseClickRow * rowHeight + scrollY, width, rowHeight);
24
+ }
15
25
  if (mouseCol2 !== undefined) {
16
- ctx.fillStyle = 'rgba(255,255,0,0.2)';
26
+ ctx.fillStyle = highlightColor;
17
27
  ctx.fillRect((mouseCol2 - 1) * colWidth + scrollX, 0, colWidth, height);
18
28
  }
19
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"renderMSAMouseover.js","sourceRoot":"","sources":["../../../src/components/MSAPanel/renderMSAMouseover.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,EAC9B,GAAG,EACH,KAAK,GAIN;IACC,MAAM,EACJ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,QAAQ;IACR,mBAAmB;IACnB,SAAS,GACV,GAAG,KAAK,CAAA;IACT,GAAG,CAAC,cAAc,EAAE,CAAA;IACpB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,GAAG,CAAC,SAAS,GAAG,kBAAkB,CAAA;QAClC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IACxE,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,GAAG,CAAC,SAAS,GAAG,kBAAkB,CAAA;QAClC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,GAAG,CAAC,SAAS,GAAG,qBAAqB,CAAA;QACrC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IACzE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"renderMSAMouseover.js","sourceRoot":"","sources":["../../../src/components/MSAPanel/renderMSAMouseover.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,kBAAkB,CAAA;AACrC,MAAM,cAAc,GAAG,qBAAqB,CAAA;AAE5C,MAAM,UAAU,eAAe,CAAC,EAC9B,GAAG,EACH,KAAK,GAIN;IACC,MAAM,EACJ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,QAAQ;IACR,mBAAmB;IACnB,SAAS,EACT,aAAa,EACb,aAAa,GACd,GAAG,KAAK,CAAA;IACT,GAAG,CAAC,cAAc,EAAE,CAAA;IACpB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,GAAG,CAAC,SAAS,GAAG,UAAU,CAAA;QAC1B,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IACxE,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,GAAG,CAAC,SAAS,GAAG,UAAU,CAAA;QAC1B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,SAAS,GAAG,cAAc,CAAA;QAC9B,GAAG,CAAC,QAAQ,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC7E,CAAC;IACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,SAAS,GAAG,cAAc,CAAA;QAC9B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACxE,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,GAAG,CAAC,SAAS,GAAG,cAAc,CAAA;QAC9B,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IACzE,CAAC;AACH,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import React, { Suspense } from 'react';
2
2
  import { observer } from 'mobx-react';
3
3
  // locals
4
+ import { HorizontalResizeHandle, VerticalResizeHandle } from './ResizeHandles';
4
5
  import TreeRuler from './TreePanel/TreeRuler';
5
6
  import Header from './Header';
6
7
  import Track from './Track';
7
- import { HorizontalResizeHandle, VerticalResizeHandle } from './ResizeHandles';
8
8
  import MSAPanel from './MSAPanel';
9
9
  import TreePanel from './TreePanel';
10
10
  import Minimap from './Minimap';
@@ -21,7 +21,7 @@ function MainArea({ model }) {
21
21
  }
22
22
  const View = observer(function ({ model }) {
23
23
  const { turnedOnTracks } = model;
24
- return (React.createElement("div", { style: { paddingLeft: 20, position: 'relative' } },
24
+ return (React.createElement("div", { style: { position: 'relative' } },
25
25
  React.createElement(TopArea, { model: model }),
26
26
  turnedOnTracks?.map(track => (React.createElement(Track, { key: track.model.id, model: model, track: track }))),
27
27
  React.createElement(MainArea, { model: model })));
@@ -1 +1 @@
1
- {"version":3,"file":"MSAView.js","sourceRoot":"","sources":["../../src/components/MSAView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,SAAS;AACT,OAAO,SAAS,MAAM,uBAAuB,CAAA;AAC7C,OAAO,MAAM,MAAM,UAAU,CAAA;AAC7B,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAE9E,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,SAAS,MAAM,aAAa,CAAA;AACnC,OAAO,OAAO,MAAM,WAAW,CAAA;AAE/B,SAAS,OAAO,CAAC,EAAE,KAAK,EAA2B;IACjD,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC7B,oBAAC,SAAS,IAAC,KAAK,EAAE,KAAK,GAAI;QAC3B,oBAAC,OAAO,IAAC,KAAK,EAAE,KAAK,GAAI,CACrB,CACP,CAAA;AACH,CAAC;AACD,SAAS,QAAQ,CAAC,EAAE,KAAK,EAA2B;IAClD,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC7B,oBAAC,SAAS,IAAC,KAAK,EAAE,KAAK,GAAI;QAC3B,oBAAC,oBAAoB,IAAC,KAAK,EAAE,KAAK,GAAI;QACtC,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,GAAI,CACtB,CACP,CAAA;AACH,CAAC;AAED,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IAChE,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;IAChC,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;QACnD,oBAAC,OAAO,IAAC,KAAK,EAAE,KAAK,GAAI;QACxB,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAC5B,oBAAC,KAAK,IAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,CAC3D,CAAC;QACF,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,GAAI,CACtB,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACnE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IACtD,OAAO,CACL;QACE,6BAAK,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;YACxC,oBAAC,MAAM,IAAC,KAAK,EAAE,KAAK,GAAI;YACxB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,GAAI,CAClB;QACN,oBAAC,sBAAsB,IAAC,KAAK,EAAE,KAAK,GAAI;QAEvC,eAAe,CAAC,CAAC,CAAC,CACjB,oBAAC,QAAQ,IAAC,QAAQ,EAAE,IAAI;YACtB,oBAAC,eAAe,OAAK,WAAW,GAAI,CAC3B,CACZ,CAAC,CAAC,CAAC,IAAI,CACJ,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,OAAO,CAAA"}
1
+ {"version":3,"file":"MSAView.js","sourceRoot":"","sources":["../../src/components/MSAView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,SAAS;AACT,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAE9E,OAAO,SAAS,MAAM,uBAAuB,CAAA;AAC7C,OAAO,MAAM,MAAM,UAAU,CAAA;AAC7B,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,SAAS,MAAM,aAAa,CAAA;AACnC,OAAO,OAAO,MAAM,WAAW,CAAA;AAE/B,SAAS,OAAO,CAAC,EAAE,KAAK,EAA2B;IACjD,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC7B,oBAAC,SAAS,IAAC,KAAK,EAAE,KAAK,GAAI;QAC3B,oBAAC,OAAO,IAAC,KAAK,EAAE,KAAK,GAAI,CACrB,CACP,CAAA;AACH,CAAC;AACD,SAAS,QAAQ,CAAC,EAAE,KAAK,EAA2B;IAClD,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC7B,oBAAC,SAAS,IAAC,KAAK,EAAE,KAAK,GAAI;QAC3B,oBAAC,oBAAoB,IAAC,KAAK,EAAE,KAAK,GAAI;QACtC,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,GAAI,CACtB,CACP,CAAA;AACH,CAAC;AAED,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IAChE,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;IAChC,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;QAClC,oBAAC,OAAO,IAAC,KAAK,EAAE,KAAK,GAAI;QACxB,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAC5B,oBAAC,KAAK,IAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,CAC3D,CAAC;QACF,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,GAAI,CACtB,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACnE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IACtD,OAAO,CACL;QACE,6BAAK,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;YACxC,oBAAC,MAAM,IAAC,KAAK,EAAE,KAAK,GAAI;YACxB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,GAAI,CAClB;QACN,oBAAC,sBAAsB,IAAC,KAAK,EAAE,KAAK,GAAI;QAEvC,eAAe,CAAC,CAAC,CAAC,CACjB,oBAAC,QAAQ,IAAC,QAAQ,EAAE,IAAI;YACtB,oBAAC,eAAe,OAAK,WAAW,GAAI,CAC3B,CACZ,CAAC,CAAC,CAAC,IAAI,CACJ,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,OAAO,CAAA"}
@@ -1,64 +1,74 @@
1
1
  import React, { lazy } from 'react';
2
2
  import { Menu, MenuItem } from '@mui/material';
3
3
  import { observer } from 'mobx-react';
4
+ // lazies
4
5
  const TreeNodeInfoDialog = lazy(() => import('./dialogs/TreeNodeInfoDialog'));
5
6
  const TreeMenu = observer(function ({ node, onClose, model, }) {
6
- const { structures } = model;
7
+ const { selectedStructures, collapsed, collapsed2, structures } = model;
7
8
  const nodeDetails = node ? model.getRowData(node.name) : undefined;
8
- return (React.createElement(React.Fragment, null,
9
- React.createElement(Menu, { anchorReference: "anchorPosition", anchorPosition: {
10
- top: node.y,
11
- left: node.x,
12
- }, transitionDuration: 0, keepMounted: true, open: Boolean(node), onClose: onClose },
13
- React.createElement(MenuItem, { dense: true, disabled: true }, node.name),
14
- React.createElement(MenuItem, { dense: true, onClick: () => {
15
- model.queueDialog(onClose => [
16
- TreeNodeInfoDialog,
17
- {
18
- info: model.getRowData(node.name),
19
- model,
20
- nodeName: node.name,
21
- onClose,
22
- },
23
- ]);
24
- onClose();
25
- } }, "More info..."),
26
- React.createElement(MenuItem, { dense: true, onClick: () => {
27
- model.hideNode(node.id);
28
- onClose();
29
- } }, "Hide node"),
30
- structures[node.name]?.map(entry => {
31
- return !model.selectedStructures.some(n => n.id === node.name) ? (React.createElement(MenuItem, { key: JSON.stringify(entry), dense: true, onClick: () => {
32
- model.addStructureToSelection({
33
- structure: entry,
34
- id: node.name,
35
- });
36
- onClose();
37
- } },
38
- "Add PDB to selection (",
39
- entry.pdb,
40
- ")")) : (React.createElement(MenuItem, { key: JSON.stringify(entry), dense: true, onClick: () => {
41
- model.removeStructureFromSelection({
42
- structure: entry,
43
- id: node.name,
44
- });
45
- onClose();
46
- } },
47
- "Remove PDB from selection (",
48
- entry.pdb,
49
- ")"));
50
- }), // @ts-expect-error
51
- nodeDetails?.data.accession?.map(accession => (React.createElement(MenuItem, { dense: true, key: accession, onClick: () => {
52
- model.addUniprotTrack({
53
- // @ts-expect-error
54
- name: nodeDetails?.data.name,
55
- accession,
56
- });
57
- onClose();
58
- } },
59
- "Open UniProt track (",
60
- accession,
61
- ")"))))));
9
+ return (React.createElement(Menu, { anchorReference: "anchorPosition", anchorPosition: {
10
+ top: node.y,
11
+ left: node.x,
12
+ }, transitionDuration: 0, keepMounted: true, open: Boolean(node), onClose: onClose },
13
+ React.createElement(MenuItem, { dense: true, disabled: true }, node.name),
14
+ React.createElement(MenuItem, { dense: true, onClick: () => {
15
+ model.queueDialog(onClose => [
16
+ TreeNodeInfoDialog,
17
+ {
18
+ info: model.getRowData(node.name),
19
+ model,
20
+ nodeName: node.name,
21
+ onClose,
22
+ },
23
+ ]);
24
+ onClose();
25
+ } }, "More info..."),
26
+ React.createElement(MenuItem, { dense: true, onClick: () => {
27
+ if (collapsed.includes(node.id)) {
28
+ model.toggleCollapsed(node.id);
29
+ }
30
+ else {
31
+ if (node.id.endsWith('-leafnode')) {
32
+ model.toggleCollapsed2(`${node.id}`);
33
+ }
34
+ else {
35
+ model.toggleCollapsed2(`${node.id}-leafnode`);
36
+ }
37
+ }
38
+ onClose();
39
+ } }, collapsed.includes(node.id) || collapsed2.includes(node.id)
40
+ ? 'Show node'
41
+ : 'Hide node'),
42
+ structures[node.name]?.map(entry => !selectedStructures.some(n => n.id === node.name) ? (React.createElement(MenuItem, { key: JSON.stringify(entry), dense: true, onClick: () => {
43
+ model.addStructureToSelection({
44
+ structure: entry,
45
+ id: node.name,
46
+ });
47
+ onClose();
48
+ } },
49
+ "Add PDB to selection (",
50
+ entry.pdb,
51
+ ")")) : (React.createElement(MenuItem, { key: JSON.stringify(entry), dense: true, onClick: () => {
52
+ model.removeStructureFromSelection({
53
+ structure: entry,
54
+ id: node.name,
55
+ });
56
+ onClose();
57
+ } },
58
+ "Remove PDB from selection (",
59
+ entry.pdb,
60
+ ")"))), // @ts-expect-error
61
+ nodeDetails?.data.accession?.map(accession => (React.createElement(MenuItem, { dense: true, key: accession, onClick: () => {
62
+ model.addUniprotTrack({
63
+ // @ts-expect-error
64
+ name: nodeDetails?.data.name,
65
+ accession,
66
+ });
67
+ onClose();
68
+ } },
69
+ "Open UniProt track (",
70
+ accession,
71
+ ")")))));
62
72
  });
63
73
  export default TreeMenu;
64
74
  //# sourceMappingURL=TreeNodeMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNodeMenu.js","sourceRoot":"","sources":["../../../src/components/TreePanel/TreeNodeMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAKrC,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAA;AAE7E,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAClC,IAAI,EACJ,OAAO,EACP,KAAK,GAKN;IACC,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAElE,OAAO,CACL;QACE,oBAAC,IAAI,IACH,eAAe,EAAC,gBAAgB,EAChC,cAAc,EAAE;gBACd,GAAG,EAAE,IAAI,CAAC,CAAC;gBACX,IAAI,EAAE,IAAI,CAAC,CAAC;aACb,EACD,kBAAkB,EAAE,CAAC,EACrB,WAAW,QACX,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EACnB,OAAO,EAAE,OAAO;YAEhB,oBAAC,QAAQ,IAAC,KAAK,QAAC,QAAQ,UACrB,IAAI,CAAC,IAAI,CACD;YAEX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC3B,kBAAkB;wBAClB;4BACE,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;4BACjC,KAAK;4BACL,QAAQ,EAAE,IAAI,CAAC,IAAI;4BACnB,OAAO;yBACR;qBACF,CAAC,CAAA;oBACF,OAAO,EAAE,CAAA;gBACX,CAAC,mBAGQ;YACX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBACvB,OAAO,EAAE,CAAA;gBACX,CAAC,gBAGQ;YAEV,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE;gBAClC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC/D,oBAAC,QAAQ,IACP,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAC1B,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;wBACZ,KAAK,CAAC,uBAAuB,CAAC;4BAC5B,SAAS,EAAE,KAAK;4BAChB,EAAE,EAAE,IAAI,CAAC,IAAI;yBACd,CAAC,CAAA;wBACF,OAAO,EAAE,CAAA;oBACX,CAAC;;oBAEsB,KAAK,CAAC,GAAG;wBACvB,CACZ,CAAC,CAAC,CAAC,CACF,oBAAC,QAAQ,IACP,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAC1B,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;wBACZ,KAAK,CAAC,4BAA4B,CAAC;4BACjC,SAAS,EAAE,KAAK;4BAChB,EAAE,EAAE,IAAI,CAAC,IAAI;yBACd,CAAC,CAAA;wBACF,OAAO,EAAE,CAAA;oBACX,CAAC;;oBAE2B,KAAK,CAAC,GAAG;wBAC5B,CACZ,CAAA;YACH,CAAC,CAAC,EAED,mBAAmB;YACpB,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAC5C,oBAAC,QAAQ,IACP,KAAK,QACL,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,CAAC,eAAe,CAAC;wBACpB,mBAAmB;wBACnB,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI;wBAC5B,SAAS;qBACV,CAAC,CAAA;oBACF,OAAO,EAAE,CAAA;gBACX,CAAC;;gBAEoB,SAAS;oBACrB,CACZ,CAAC,CACG,CACN,CACJ,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,QAAQ,CAAA"}
1
+ {"version":3,"file":"TreeNodeMenu.js","sourceRoot":"","sources":["../../../src/components/TreePanel/TreeNodeMenu.tsx"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ export function renderTree({ offsetY, ctx, model, theme, blockSizeYOverride, })
27
27
  }
28
28
  }
29
29
  export function renderNodeBubbles({ ctx, clickMap, offsetY, model, blockSizeYOverride, }) {
30
- const { hierarchy, showBranchLen, collapsed, blockSize } = model;
30
+ const { hierarchy, showBranchLen, collapsed, blockSize, marginLeft: ml, } = model;
31
31
  const by = blockSizeYOverride || blockSize;
32
32
  for (const node of hierarchy.descendants()) {
33
33
  const val = showBranchLen ? 'len' : 'y';
@@ -37,7 +37,8 @@ export function renderNodeBubbles({ ctx, clickMap, offsetY, model, blockSizeYOve
37
37
  // @ts-expect-error
38
38
  [val]: x, data, } = node;
39
39
  const { branchset, id = '', name = '' } = data;
40
- if (branchset.length &&
40
+ if (!id.endsWith('-leafnode') &&
41
+ branchset.length &&
41
42
  y > offsetY - extendBounds &&
42
43
  y < offsetY + by + extendBounds) {
43
44
  ctx.strokeStyle = 'black';
@@ -47,8 +48,8 @@ export function renderNodeBubbles({ ctx, clickMap, offsetY, model, blockSizeYOve
47
48
  ctx.fill();
48
49
  ctx.stroke();
49
50
  clickMap?.insert({
50
- minX: x - radius,
51
- maxX: x - radius + d,
51
+ minX: x - radius + ml,
52
+ maxX: x - radius + d + ml,
52
53
  minY: y - radius,
53
54
  maxY: y - radius + d,
54
55
  branch: true,
@@ -59,7 +60,7 @@ export function renderNodeBubbles({ ctx, clickMap, offsetY, model, blockSizeYOve
59
60
  }
60
61
  }
61
62
  export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, blockSizeYOverride, }) {
62
- const { rowHeight, showBranchLen, treeMetadata, hierarchy, blockSize, labelsAlignRight, drawTree, structures, treeAreaWidth, noTree, } = model;
63
+ const { rowHeight, showBranchLen, treeMetadata, hierarchy, blockSize, labelsAlignRight, drawTree, structures, treeAreaWidth, treeAreaWidthMinusMargin, marginLeft: ml, noTree, } = model;
63
64
  const by = blockSizeYOverride || blockSize;
64
65
  if (labelsAlignRight) {
65
66
  ctx.textAlign = 'right';
@@ -88,8 +89,8 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, blockSi
88
89
  if (!drawTree && !labelsAlignRight) {
89
90
  ctx.fillText(displayName, 0, yp);
90
91
  clickMap?.insert({
91
- minX: 0,
92
- maxX: width,
92
+ minX: 0 + ml,
93
+ maxX: width + ml,
93
94
  minY: yp - height,
94
95
  maxY: yp,
95
96
  name,
@@ -98,7 +99,7 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, blockSi
98
99
  }
99
100
  else if (labelsAlignRight) {
100
101
  const smallPadding = 2;
101
- const offset = treeAreaWidth - smallPadding;
102
+ const offset = treeAreaWidthMinusMargin - smallPadding;
102
103
  if (drawTree && !noTree) {
103
104
  const { width } = ctx.measureText(displayName);
104
105
  ctx.moveTo(xp + radius + 2, y);
@@ -118,8 +119,8 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, blockSi
118
119
  else {
119
120
  ctx.fillText(displayName, xp + d, yp);
120
121
  clickMap?.insert({
121
- minX: xp + d,
122
- maxX: xp + d + width,
122
+ minX: xp + d + ml,
123
+ maxX: xp + d + width + ml,
123
124
  minY: yp - height,
124
125
  maxY: yp,
125
126
  name,
@@ -132,7 +133,7 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, blockSi
132
133
  }
133
134
  export function renderTreeCanvas({ model, clickMap, ctx, offsetY, theme, highResScaleFactorOverride, blockSizeYOverride, }) {
134
135
  clickMap?.clear();
135
- const { noTree, drawTree, drawNodeBubbles, treeWidth, highResScaleFactor, blockSize, fontSize, rowHeight, nref, } = model;
136
+ const { noTree, drawTree, drawNodeBubbles, treeWidth, highResScaleFactor, blockSize, fontSize, rowHeight, marginLeft, nref, } = model;
136
137
  const by = blockSizeYOverride || blockSize;
137
138
  ctx.resetTransform();
138
139
  // this is a bogus use of nref, it is never less than 0. we just are using it
@@ -143,7 +144,7 @@ export function renderTreeCanvas({ model, clickMap, ctx, offsetY, theme, highRes
143
144
  const k = nref < 0 ? -Infinity : highResScaleFactorOverride || highResScaleFactor;
144
145
  ctx.scale(k, k);
145
146
  ctx.clearRect(0, 0, treeWidth + padding, by);
146
- ctx.translate(0, -offsetY);
147
+ ctx.translate(marginLeft, -offsetY);
147
148
  const font = ctx.font;
148
149
  ctx.font = font.replace(/\d+px/, `${fontSize}px`);
149
150
  if (!noTree && drawTree) {