react-msaview 3.1.5 → 3.1.7

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 (40) hide show
  1. package/bundle/index.js +30 -39
  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/renderMSAMouseover.js +14 -4
  11. package/dist/components/MSAPanel/renderMSAMouseover.js.map +1 -1
  12. package/dist/components/TreePanel/TreeNodeMenu.js +65 -55
  13. package/dist/components/TreePanel/TreeNodeMenu.js.map +1 -1
  14. package/dist/components/TreePanel/renderTreeCanvas.js +4 -3
  15. package/dist/components/TreePanel/renderTreeCanvas.js.map +1 -1
  16. package/dist/components/dialogs/SettingsDialog.js +41 -31
  17. package/dist/components/dialogs/SettingsDialog.js.map +1 -1
  18. package/dist/measureTextCanvas.d.ts +1 -1
  19. package/dist/measureTextCanvas.js +1 -1
  20. package/dist/measureTextCanvas.js.map +1 -1
  21. package/dist/model.d.ts +113 -108
  22. package/dist/model.js +61 -93
  23. package/dist/model.js.map +1 -1
  24. package/dist/util.d.ts +0 -1
  25. package/dist/util.js +0 -7
  26. package/dist/util.js.map +1 -1
  27. package/dist/version.d.ts +1 -1
  28. package/dist/version.js +1 -1
  29. package/package.json +1 -2
  30. package/src/DataModel.ts +46 -0
  31. package/src/SelectedStructuresMixin.ts +59 -0
  32. package/src/components/MSAPanel/MSABlock.tsx +33 -18
  33. package/src/components/MSAPanel/renderMSAMouseover.ts +16 -3
  34. package/src/components/TreePanel/TreeNodeMenu.tsx +93 -84
  35. package/src/components/TreePanel/renderTreeCanvas.ts +3 -2
  36. package/src/components/dialogs/SettingsDialog.tsx +128 -116
  37. package/src/measureTextCanvas.ts +1 -1
  38. package/src/model.ts +72 -109
  39. package/src/util.ts +0 -11
  40. 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":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,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,aAAa,EACb,aAAa,EACb,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,OAAO,GAAG;YACR,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;gBACX,cAAc,CAAC;oBACb,GAAG;oBACH,KAAK;oBACL,OAAO;oBACP,OAAO;oBACP,cAAc;oBACd,KAAK;iBACN,CAAC,CAAA;YACJ,CAAC,CAAC;YACJ,CAAC,CAAC,SAAS,CAAA;IACf,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,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;YAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;YACxC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACzB,CAAC,EACD,OAAO,EAAE,KAAK,CAAC,EAAE;YACf,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,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;YAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;YACxC,IAAI,CAAC,KAAK,aAAa,IAAI,CAAC,KAAK,aAAa,EAAE,CAAC;gBAC/C,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YAC9C,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC9B,CAAC;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,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,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":"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"}
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,SAAS;AACT,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,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IACvE,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAElE,OAAO,CACL,oBAAC,IAAI,IACH,eAAe,EAAC,gBAAgB,EAChC,cAAc,EAAE;YACd,GAAG,EAAE,IAAI,CAAC,CAAC;YACX,IAAI,EAAE,IAAI,CAAC,CAAC;SACb,EACD,kBAAkB,EAAE,CAAC,EACrB,WAAW,QACX,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EACnB,OAAO,EAAE,OAAO;QAEhB,oBAAC,QAAQ,IAAC,KAAK,QAAC,QAAQ,UACrB,IAAI,CAAC,IAAI,CACD;QAEX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,kBAAkB;oBAClB;wBACE,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;wBACjC,KAAK;wBACL,QAAQ,EAAE,IAAI,CAAC,IAAI;wBACnB,OAAO;qBACR;iBACF,CAAC,CAAA;gBACF,OAAO,EAAE,CAAA;YACX,CAAC,mBAGQ;QACX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;oBAChC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAChC,CAAC;qBAAM,CAAC;oBACN,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBAClC,KAAK,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;oBACtC,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,EAAE,WAAW,CAAC,CAAA;oBAC/C,CAAC;gBACH,CAAC;gBACD,OAAO,EAAE,CAAA;YACX,CAAC,IAEA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,WAAW,CACN;QAEV,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAClC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAClD,oBAAC,QAAQ,IACP,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAC1B,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,uBAAuB,CAAC;oBAC5B,SAAS,EAAE,KAAK;oBAChB,EAAE,EAAE,IAAI,CAAC,IAAI;iBACd,CAAC,CAAA;gBACF,OAAO,EAAE,CAAA;YACX,CAAC;;YAEsB,KAAK,CAAC,GAAG;gBACvB,CACZ,CAAC,CAAC,CAAC,CACF,oBAAC,QAAQ,IACP,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAC1B,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,4BAA4B,CAAC;oBACjC,SAAS,EAAE,KAAK;oBAChB,EAAE,EAAE,IAAI,CAAC,IAAI;iBACd,CAAC,CAAA;gBACF,OAAO,EAAE,CAAA;YACX,CAAC;;YAE2B,KAAK,CAAC,GAAG;gBAC5B,CACZ,CACF,EAEA,mBAAmB;QACpB,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;gBACZ,KAAK,CAAC,eAAe,CAAC;oBACpB,mBAAmB;oBACnB,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI;oBAC5B,SAAS;iBACV,CAAC,CAAA;gBACF,OAAO,EAAE,CAAA;YACX,CAAC;;YAEoB,SAAS;gBACrB,CACZ,CAAC,CACG,CACR,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,QAAQ,CAAA"}
@@ -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';
@@ -107,8 +108,8 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, blockSi
107
108
  }
108
109
  ctx.fillText(displayName, offset, yp);
109
110
  clickMap?.insert({
110
- minX: treeAreaWidth - width + ml,
111
- maxX: treeAreaWidth + ml,
111
+ minX: treeAreaWidth - width,
112
+ maxX: treeAreaWidth,
112
113
  minY: yp - height,
113
114
  maxY: yp,
114
115
  name,
@@ -1 +1 @@
1
- {"version":3,"file":"renderTreeCanvas.js","sourceRoot":"","sources":["../../../src/components/TreePanel/renderTreeCanvas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderTreeCanvas.js","sourceRoot":"","sources":["../../../src/components/TreePanel/renderTreeCanvas.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAA;AAC1B,MAAM,YAAY,GAAG,CAAC,CAAA;AACtB,MAAM,MAAM,GAAG,GAAG,CAAA;AAClB,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,CAAA;AAYpB,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,GAAG,EACH,KAAK,EACL,KAAK,EACL,kBAAkB,GAOnB;IACC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IACrD,MAAM,EAAE,GAAG,kBAAkB,IAAI,SAAS,CAAA;IAC1C,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAA;IAC5C,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA;QACrC,mBAAmB;QACnB,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAA;QACjC,mBAAmB;QACnB,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAA;QAEjC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAC3B,sEAAsE;QACtE,iEAAiE;QACjE,oBAAoB;QACpB,IAAI,OAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;YACxC,GAAG,CAAC,SAAS,EAAE,CAAA;YACf,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YAClB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YAClB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YAClB,GAAG,CAAC,MAAM,EAAE,CAAA;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,GAAG,EACH,QAAQ,EACR,OAAO,EACP,KAAK,EACL,kBAAkB,GAQnB;IACC,MAAM,EACJ,SAAS,EACT,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EAAE,EAAE,GACf,GAAG,KAAK,CAAA;IACT,MAAM,EAAE,GAAG,kBAAkB,IAAI,SAAS,CAAA;IAC1C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA;QACvC,MAAM;QACJ,mBAAmB;QACnB,CAAC,EAAE,CAAC;QACJ,mBAAmB;QACnB,CAAC,GAAG,CAAC,EAAE,CAAC,EACR,IAAI,GACL,GAAG,IAAI,CAAA;QACR,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,CAAA;QAC9C,IACE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;YACzB,SAAS,CAAC,MAAM;YAChB,CAAC,GAAG,OAAO,GAAG,YAAY;YAC1B,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,YAAY,EAC/B,CAAC;YACD,GAAG,CAAC,WAAW,GAAG,OAAO,CAAA;YACzB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAA;YAC1D,GAAG,CAAC,SAAS,EAAE,CAAA;YACf,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;YACrC,GAAG,CAAC,IAAI,EAAE,CAAA;YACV,GAAG,CAAC,MAAM,EAAE,CAAA;YAEZ,QAAQ,EAAE,MAAM,CAAC;gBACf,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,EAAE;gBACrB,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE;gBACzB,IAAI,EAAE,CAAC,GAAG,MAAM;gBAChB,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC;gBACpB,MAAM,EAAE,IAAI;gBACZ,EAAE;gBACF,IAAI;aACL,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,KAAK,EACL,OAAO,EACP,GAAG,EACH,QAAQ,EACR,kBAAkB,GAQnB;IACC,MAAM,EACJ,SAAS,EACT,aAAa,EACb,YAAY,EACZ,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,aAAa,EACb,wBAAwB,EACxB,UAAU,EAAE,EAAE,EACd,MAAM,GACP,GAAG,KAAK,CAAA;IACT,MAAM,EAAE,GAAG,kBAAkB,IAAI,SAAS,CAAA;IAC1C,IAAI,gBAAgB,EAAE,CAAC;QACrB,GAAG,CAAC,SAAS,GAAG,OAAO,CAAA;QACvB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACzB,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,SAAS,GAAG,OAAO,CAAA;IACzB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,MAAM;QACJ,mBAAmB;QACnB,CAAC,EAAE,CAAC;QACJ,mBAAmB;QACnB,CAAC,EAAE,CAAC,EACJ,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAClB,mBAAmB;QACnB,GAAG,GACJ,GAAG,IAAI,CAAA;QAER,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,IAAI,CAAA;QAEtD,IAAI,CAAC,GAAG,OAAO,GAAG,YAAY,IAAI,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;YAClE,sDAAsD;YACtD,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAA;YAC5B,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YAElC,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAA,CAAC,yBAAyB;YAEnE,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YACrC,GAAG,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAA;YAElE,IAAI,CAAC,QAAQ,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACnC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;gBAChC,QAAQ,EAAE,MAAM,CAAC;oBACf,IAAI,EAAE,CAAC,GAAG,EAAE;oBACZ,IAAI,EAAE,KAAK,GAAG,EAAE;oBAChB,IAAI,EAAE,EAAE,GAAG,MAAM;oBACjB,IAAI,EAAE,EAAE;oBACR,IAAI;oBACJ,EAAE;iBACH,CAAC,CAAA;YACJ,CAAC;iBAAM,IAAI,gBAAgB,EAAE,CAAC;gBAC5B,MAAM,YAAY,GAAG,CAAC,CAAA;gBACtB,MAAM,MAAM,GAAG,wBAAwB,GAAG,YAAY,CAAA;gBACtD,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;oBACxB,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;oBAC9C,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;oBAC9B,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,GAAG,KAAK,EAAE,CAAC,CAAC,CAAA;oBAC5C,GAAG,CAAC,MAAM,EAAE,CAAA;gBACd,CAAC;gBACD,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;gBACrC,QAAQ,EAAE,MAAM,CAAC;oBACf,IAAI,EAAE,aAAa,GAAG,KAAK;oBAC3B,IAAI,EAAE,aAAa;oBACnB,IAAI,EAAE,EAAE,GAAG,MAAM;oBACjB,IAAI,EAAE,EAAE;oBACR,IAAI;oBACJ,EAAE;iBACH,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;gBACrC,QAAQ,EAAE,MAAM,CAAC;oBACf,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE;oBACjB,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE;oBACzB,IAAI,EAAE,EAAE,GAAG,MAAM;oBACjB,IAAI,EAAE,EAAE;oBACR,IAAI;oBACJ,EAAE;iBACH,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,GAAG,EACH,OAAO,EACP,KAAK,EACL,0BAA0B,EAC1B,kBAAkB,GASnB;IACC,QAAQ,EAAE,KAAK,EAAE,CAAA;IACjB,MAAM,EACJ,MAAM,EACN,QAAQ,EACR,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,SAAS,EACT,UAAU,EACV,IAAI,GACL,GAAG,KAAK,CAAA;IACT,MAAM,EAAE,GAAG,kBAAkB,IAAI,SAAS,CAAA;IAE1C,GAAG,CAAC,cAAc,EAAE,CAAA;IAEpB,6EAA6E;IAC7E,yEAAyE;IACzE,2EAA2E;IAC3E,yEAAyE;IACzE,qCAAqC;IACrC,MAAM,CAAC,GACL,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,0BAA0B,IAAI,kBAAkB,CAAA;IACzE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACf,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,EAAE,EAAE,CAAC,CAAA;IAC5C,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAA;IAEnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;IACrB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,QAAQ,IAAI,CAAC,CAAA;IAEjD,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;QACxB,UAAU,CAAC;YACT,GAAG;YACH,OAAO;YACP,KAAK;YACL,KAAK;YACL,kBAAkB;SACnB,CAAC,CAAA;QAEF,IAAI,eAAe,EAAE,CAAC;YACpB,iBAAiB,CAAC;gBAChB,GAAG;gBACH,OAAO;gBACP,QAAQ;gBACR,KAAK;gBACL,KAAK;gBACL,kBAAkB;aACnB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,gBAAgB,CAAC;YACf,GAAG;YACH,OAAO;YACP,KAAK;YACL,QAAQ;YACR,KAAK;YACL,kBAAkB;SACnB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
@@ -16,41 +16,51 @@ function FormControlLabel2(rest) {
16
16
  return (React.createElement("div", null,
17
17
  React.createElement(FormControlLabel, { ...rest })));
18
18
  }
19
+ function Checkbox2({ checked, label, onChange, }) {
20
+ return (React.createElement(FormControlLabel2, { control: React.createElement(Checkbox, { checked: checked, onChange: onChange }), label: label }));
21
+ }
19
22
  const SettingsContent = observer(function ({ model }) {
20
- const { classes } = useStyles();
21
- const { bgColor, colWidth, colorSchemeName, drawTree, drawNodeBubbles, labelsAlignRight, noTree, rowHeight, showBranchLen, treeWidthMatchesArea, treeWidth, } = model;
22
23
  return (React.createElement(React.Fragment, null,
23
- React.createElement("div", null,
24
- React.createElement(Button, { onClick: () => model.clearHidden() }, "Clear hidden"),
25
- React.createElement("h1", null, "Tree options"),
26
- React.createElement(FormControlLabel2, { control: React.createElement(Checkbox, { checked: showBranchLen, onChange: () => model.setShowBranchLen(!showBranchLen) }), label: "Show branch length?" }),
27
- React.createElement(FormControlLabel2, { control: React.createElement(Checkbox, { checked: drawNodeBubbles, onChange: () => model.setDrawNodeBubbles(!drawNodeBubbles) }), label: "Draw clickable bubbles on tree branches?" }),
28
- React.createElement(FormControlLabel2, { control: React.createElement(Checkbox, { checked: drawTree, onChange: () => model.setDrawTree(!drawTree) }), label: "Show tree?" }),
29
- React.createElement(FormControlLabel2, { control: React.createElement(Checkbox, { checked: labelsAlignRight, onChange: () => model.setLabelsAlignRight(!labelsAlignRight) }), label: "Tree labels align right?" }),
30
- !noTree ? (React.createElement("div", null,
31
- React.createElement(FormControlLabel2, { control: React.createElement(Checkbox, { checked: treeWidthMatchesArea, onChange: () => model.setTreeWidthMatchesArea(!treeWidthMatchesArea) }), label: "Make tree width fit to tree area?" }),
32
- !treeWidthMatchesArea ? (React.createElement("div", { className: classes.flex },
33
- React.createElement(Typography, null,
34
- "Tree width (",
35
- treeWidth,
36
- "px)"),
37
- React.createElement(Slider, { className: classes.field, min: 50, max: 600, value: treeWidth, onChange: (_, val) => model.setTreeWidth(val) }))) : null)) : null),
38
- React.createElement("div", null,
39
- React.createElement("h1", null, "MSA options"),
40
- React.createElement(FormControlLabel2, { control: React.createElement(Checkbox, { checked: bgColor, onChange: () => model.setBgColor(!bgColor) }), label: "Color background tiles of MSA?" }),
41
- React.createElement("div", { className: classes.flex },
42
- React.createElement(Typography, null,
43
- "Column width (",
44
- colWidth,
45
- "px)"),
46
- React.createElement(Slider, { className: classes.field, min: 1, max: 50, value: colWidth, onChange: (_, val) => model.setColWidth(val) })),
47
- React.createElement("div", { className: classes.flex },
24
+ React.createElement(TreeSettings, { model: model }),
25
+ React.createElement(MSASettings, { model: model })));
26
+ });
27
+ const TreeSettings = observer(function TreeSettings({ model, }) {
28
+ const { classes } = useStyles();
29
+ const { drawTree, drawNodeBubbles, labelsAlignRight, noTree, showBranchLen, treeWidthMatchesArea, treeWidth, } = model;
30
+ return (React.createElement("div", null,
31
+ React.createElement("h1", null, "Tree options"),
32
+ React.createElement(Checkbox2, { checked: showBranchLen, onChange: () => model.setShowBranchLen(!showBranchLen), label: "Show branch length?" }),
33
+ React.createElement(Checkbox2, { checked: drawNodeBubbles, onChange: () => model.setDrawNodeBubbles(!drawNodeBubbles), label: "Draw clickable bubbles on tree branches?" }),
34
+ React.createElement(Checkbox2, { checked: drawTree, onChange: () => model.setDrawTree(!drawTree), label: "Show tree?" }),
35
+ React.createElement(Checkbox2, { checked: labelsAlignRight, onChange: () => model.setLabelsAlignRight(!labelsAlignRight), label: "Tree labels align right?" }),
36
+ !noTree ? (React.createElement("div", null,
37
+ React.createElement(Checkbox2, { checked: treeWidthMatchesArea, onChange: () => model.setTreeWidthMatchesArea(!treeWidthMatchesArea), label: "Make tree width fit to tree area?" }),
38
+ !treeWidthMatchesArea ? (React.createElement("div", { className: classes.flex },
48
39
  React.createElement(Typography, null,
49
- "Row height (",
50
- rowHeight,
40
+ "Tree width (",
41
+ treeWidth,
51
42
  "px)"),
52
- React.createElement(Slider, { className: classes.field, min: 1, max: 50, value: rowHeight, onChange: (_, val) => model.setRowHeight(val) })),
53
- React.createElement(TextField, { select: true, label: "Color scheme", value: colorSchemeName, onChange: event => model.setColorSchemeName(event.target.value) }, Object.keys(colorSchemes).map(option => (React.createElement(MenuItem, { key: option, value: option }, option)))))));
43
+ React.createElement(Slider, { className: classes.field, min: 50, max: 600, value: treeWidth, onChange: (_, val) => model.setTreeWidth(val) }))) : null)) : null));
44
+ });
45
+ const MSASettings = observer(function MSASettings({ model, }) {
46
+ const { classes } = useStyles();
47
+ const { bgColor, colWidth, colorSchemeName, rowHeight } = model;
48
+ return (React.createElement("div", null,
49
+ React.createElement("h1", null, "MSA options"),
50
+ React.createElement(Checkbox2, { checked: bgColor, onChange: () => model.setBgColor(!bgColor), label: "Color background tiles of MSA?" }),
51
+ React.createElement("div", { className: classes.flex },
52
+ React.createElement(Typography, null,
53
+ "Column width (",
54
+ colWidth,
55
+ "px)"),
56
+ React.createElement(Slider, { className: classes.field, min: 1, max: 50, value: colWidth, onChange: (_, val) => model.setColWidth(val) })),
57
+ React.createElement("div", { className: classes.flex },
58
+ React.createElement(Typography, null,
59
+ "Row height (",
60
+ rowHeight,
61
+ "px)"),
62
+ React.createElement(Slider, { className: classes.field, min: 1, max: 50, value: rowHeight, onChange: (_, val) => model.setRowHeight(val) })),
63
+ React.createElement(TextField, { select: true, label: "Color scheme", value: colorSchemeName, onChange: event => model.setColorSchemeName(event.target.value) }, Object.keys(colorSchemes).map(option => (React.createElement(MenuItem, { key: option, value: option }, option))))));
54
64
  });
55
65
  const SettingsDialog = observer(function ({ model, onClose, }) {
56
66
  return (React.createElement(Dialog, { open: true, onClose: () => onClose(), title: "Settings" },