react-msaview 5.7.3 → 5.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/index.js +99 -99
- package/bundle/index.js.map +4 -4
- package/dist/components/SequenceTextArea.js +2 -2
- package/dist/components/SequenceTextArea.js.map +1 -1
- package/dist/components/dialogs/UserProvidedDomainsDialog.js +6 -1
- package/dist/components/dialogs/UserProvidedDomainsDialog.js.map +1 -1
- package/dist/components/header/getDomainsMenu.js +1 -1
- package/dist/components/header/getDomainsMenu.js.map +1 -1
- package/dist/components/import/ImportForm.js +7 -11
- package/dist/components/import/ImportForm.js.map +1 -1
- package/dist/components/import/ImportFormExamples.js +7 -11
- package/dist/components/import/ImportFormExamples.js.map +1 -1
- package/dist/components/import/util.d.ts +1 -1
- package/dist/components/import/util.js +1 -1
- package/dist/components/import/util.js.map +1 -1
- package/dist/components/msa/DomainLegend.js +4 -5
- package/dist/components/msa/DomainLegend.js.map +1 -1
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js +2 -2
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
- package/dist/components/tree/renderTreeCanvas.d.ts +9 -9
- package/dist/components/tree/renderTreeCanvas.js +36 -24
- package/dist/components/tree/renderTreeCanvas.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/flatToTree.d.ts +3 -1
- package/dist/flatToTree.js +16 -9
- package/dist/flatToTree.js.map +1 -1
- package/dist/hierarchy.d.ts +12 -17
- package/dist/hierarchy.js +12 -145
- package/dist/hierarchy.js.map +1 -1
- package/dist/model.d.ts +17 -1
- package/dist/model.js +34 -4
- package/dist/model.js.map +1 -1
- package/dist/neighborJoining.js +11 -2
- package/dist/neighborJoining.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -3
- package/src/colSpace.test.ts +40 -0
- package/src/components/SequenceTextArea.tsx +2 -2
- package/src/components/dialogs/UserProvidedDomainsDialog.tsx +8 -1
- package/src/components/header/getDomainsMenu.ts +1 -1
- package/src/components/import/ImportForm.tsx +6 -9
- package/src/components/import/ImportFormExamples.tsx +11 -14
- package/src/components/import/util.ts +1 -1
- package/src/components/msa/DomainLegend.tsx +4 -3
- package/src/components/msa/renderBoxFeatureCanvasBlock.ts +3 -2
- package/src/components/tree/renderTreeCanvas.test.ts +54 -1
- package/src/components/tree/renderTreeCanvas.ts +41 -28
- package/src/constants.ts +1 -0
- package/src/flatToTree.test.ts +21 -0
- package/src/flatToTree.ts +21 -10
- package/src/hierarchy.ts +44 -179
- package/src/largeTree.test.ts +32 -0
- package/src/model.ts +34 -3
- package/src/neighborJoining.test.ts +21 -6
- package/src/neighborJoining.ts +12 -2
- package/src/parseAsn1.test.ts +16 -0
- package/src/stripDefaultSnapshot.test.ts +30 -0
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neighborJoining.js","sourceRoot":"","sources":["../src/neighborJoining.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,6DAA6D;AAE7D,kBAAkB;AAClB,MAAM,aAAa,GAAG,0BAA0B,CAAA;AAChD,kBAAkB;AAClB,MAAM,aAAa,GAAG;IACpB,CAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC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"}
|
|
1
|
+
{"version":3,"file":"neighborJoining.js","sourceRoot":"","sources":["../src/neighborJoining.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,6DAA6D;AAE7D,kBAAkB;AAClB,MAAM,aAAa,GAAG,0BAA0B,CAAA;AAChD,kBAAkB;AAClB,MAAM,aAAa,GAAG;IACpB,CAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CAC1E,CAAA;AAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAA;AACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;IAC9C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAA;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAE,EAAE,aAAa,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,CAAA;IACnD,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAE,EAAE,GAAG,CAAC,CAAA;AACtC,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAS,EAAE,CAAS;IAC5C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;AAClE,CAAC;AAED,gFAAgF;AAChF,6EAA6E;AAC7E,+EAA+E;AAC/E,gBAAgB;AAChB,SAAS,KAAK,CAAC,CAAS;IACtB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA;AAC/B,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY,EAAE,IAAY;IACzD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,gBAAgB,GAAG,CAAC,CAAA;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAA;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAA;QAElB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,UAAU,EAAE,CAAA;YACZ,SAAQ;QACV,CAAC;QAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACpC,UAAU,IAAI,KAAK,CAAA;QACnB,gBAAgB,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAE5E,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACxC,OAAO,EAAE,CAAA;QACX,CAAC;aAAM,CAAC;YACN,UAAU,EAAE,CAAA;QACd,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,GAAG,UAAU,CAAA;IAClC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,CAAC,CAAA;IACV,CAAC;IAED,iEAAiE;IACjE,gDAAgD;IAChD,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,eAAe,GAAG,UAAU,GAAG,gBAAgB,CAAA;IACrD,+CAA+C;IAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAA;IAEjE,kDAAkD;IAClD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAiC;IAC9D,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;IACrB,MAAM,SAAS,GAAe,EAAE,CAAA;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACtB,CAAC;iBAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjB,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAA;YACtC,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAUD,SAAS,eAAe,CAAC,SAAqB,EAAE,KAAe;IAC7D,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAA;IAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACV,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3B,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAA;QAC3B,OAAO;YACL,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;YACxB,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;YACzB,UAAU,EAAE,CAAC,GAAG,CAAC;YACjB,WAAW,EAAE,CAAC,GAAG,CAAC;SACnB,CAAA;IACH,CAAC;IAED,qCAAqC;IACrC,MAAM,CAAC,GAAe,EAAE,CAAA;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC,CAAA;IAC3B,CAAC;IACD,MAAM,KAAK,GAA2B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAEnE,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,OAAO,SAAS,GAAG,CAAC,EAAE,CAAC;QACrB,sBAAsB;QACtB,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAChB,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,MAAM,CAAC,GAAG,IAAI,GAAG,EAAkB,CAAA;QACnC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,GAAG,GAAG,CAAC,CAAA;YACX,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACZ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAA;gBAClB,CAAC;YACH,CAAC;YACD,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACf,CAAC;QAED,iCAAiC;QACjC,IAAI,IAAI,GAAG,QAAQ,CAAA;QACnB,IAAI,IAAI,GAAG,CAAC,CAAC,CAAA;QACb,IAAI,IAAI,GAAG,CAAC,CAAC,CAAA;QAEb,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YAC1C,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;gBAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAE,CAAA;gBACrB,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAE,CAAA;gBACrB,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,CAAA;gBAE7D,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;oBACb,IAAI,GAAG,CAAC,CAAA;oBACR,IAAI,GAAG,CAAC,CAAA;oBACR,IAAI,GAAG,CAAC,CAAA;gBACV,CAAC;YACH,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAE,CAAC,IAAI,CAAE,CAAA;QAC3B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;QACvB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;QAEvB,oEAAoE;QACpE,qBAAqB;QACrB,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAA;QACvD,IAAI,KAAK,GAAG,GAAG,GAAG,KAAK,CAAA;QAEvB,qCAAqC;QACrC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QAC1B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QAE1B,kBAAkB;QAClB,MAAM,OAAO,GAAW;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;YACjB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;YAClB,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;SACnB,CAAA;QAED,kEAAkE;QAClE,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,IAAI,CAAE,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;gBACvD,CAAC,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;gBAClC,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;QACvB,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAA;QAErB,SAAS,EAAE,CAAA;IACb,CAAC;IAED,0BAA0B;IAC1B,MAAM,WAAW,GAAa,EAAE,CAAA;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrB,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAE,CAAA;QACzB,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAE,CAAA;QACzB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAA;QACnB,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACf,UAAU,EAAE,CAAC,GAAG,CAAC;YACjB,WAAW,EAAE,CAAC,GAAG,CAAC;SACnB,CAAA;IACH,CAAC;IAED,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,CAAE,CAAE,CAAA;AAChC,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc,EAAE,YAAqB;IAC7D,OAAO,YAAY,KAAK,SAAS;QAC/B,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,GAAG,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;AAC5C,CAAC;AAED,8EAA8E;AAC9E,6EAA6E;AAC7E,4EAA4E;AAC5E,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,MAAM,KAAK,GAAa,CAAC,IAAI,CAAC,CAAA;IAC9B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAG,CAAA;QACzB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC9C,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAE,CAAA;QAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACzD,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QAChE,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;gBACpB,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAE,EAAE,IAAI,CAAC,UAAU,CAAC;gBACjE,CAAC,CAAC,EAAE,CAAA;YACN,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;gBACtB,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAE,EAAE,IAAI,CAAC,WAAW,CAAC;gBACnE,CAAC,CAAC,EAAE,CAAA;YACN,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,IAAiC;IAEjC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;IAC9D,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,IAAI,GAAG,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAE9C,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;AACjC,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "5.
|
|
1
|
+
export declare const version = "5.9.0";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '5.
|
|
1
|
+
export const version = '5.9.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-msaview",
|
|
3
3
|
"author": "Colin",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.9.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|
|
@@ -40,10 +40,11 @@
|
|
|
40
40
|
"esbuild": "^0.28.1"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
+
"@gmod/newick": "^1.0.0",
|
|
43
44
|
"colord": "^2.9.3",
|
|
44
45
|
"flatbush": "^4.6.2",
|
|
45
|
-
"@jbrowse/svgcanvas": "5.
|
|
46
|
-
"msa-parsers": "5.
|
|
46
|
+
"@jbrowse/svgcanvas": "5.9.0",
|
|
47
|
+
"msa-parsers": "5.9.0"
|
|
47
48
|
},
|
|
48
49
|
"scripts": {
|
|
49
50
|
"clean": "rimraf dist bundle",
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
import { expect, test } from 'vitest'
|
|
3
|
+
|
|
4
|
+
import MSAModelF from './model.ts'
|
|
5
|
+
|
|
6
|
+
// a ragged alignment: row `a` stops early, so the alignment is as wide as `b`.
|
|
7
|
+
// Column space has to follow the widest row -- the gap analysis already does --
|
|
8
|
+
// or every column past the first row's end becomes unreachable: unscrollable,
|
|
9
|
+
// unhoverable, and missing from the minimap.
|
|
10
|
+
const msa = `>a
|
|
11
|
+
ACGT
|
|
12
|
+
>b
|
|
13
|
+
ACGTACGTAC`
|
|
14
|
+
|
|
15
|
+
function makeModel() {
|
|
16
|
+
const model = MSAModelF().create({
|
|
17
|
+
id: 'col-space-test',
|
|
18
|
+
type: 'MsaView',
|
|
19
|
+
msaFormat: 'fasta',
|
|
20
|
+
data: { msa },
|
|
21
|
+
})
|
|
22
|
+
model.setWidth(800)
|
|
23
|
+
return model
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
test('column space spans the widest row', () => {
|
|
27
|
+
const model = makeModel()
|
|
28
|
+
expect(model.numColumns).toBe(10)
|
|
29
|
+
expect(model.totalWidth).toBe(10 * model.colWidth)
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
test('the last column agrees with the column statistics', () => {
|
|
33
|
+
const model = makeModel()
|
|
34
|
+
expect(model.colStats.numColumns).toBe(model.numColumns)
|
|
35
|
+
expect(model.conservation).toHaveLength(model.numColumns)
|
|
36
|
+
|
|
37
|
+
model.setMousePos(model.numColumns - 1, 1)
|
|
38
|
+
expect(model.mouseOverColumnStats?.col).toBe(9)
|
|
39
|
+
expect(model.visibleColToRowLetter('b', 9)).toBe('C')
|
|
40
|
+
})
|
|
@@ -2,6 +2,7 @@ import React, { useState } from 'react'
|
|
|
2
2
|
|
|
3
3
|
import { makeStyles } from '@jbrowse/core/util/tss-react'
|
|
4
4
|
import { Button, TextField } from '@mui/material'
|
|
5
|
+
import { getUngappedSequence } from 'msa-parsers'
|
|
5
6
|
|
|
6
7
|
import copy from '../vendor/copyToClipboard.ts'
|
|
7
8
|
import Checkbox2 from './Checkbox2.tsx'
|
|
@@ -24,9 +25,8 @@ export default function SequenceTextArea({ str }: { str: [string, string][] }) {
|
|
|
24
25
|
const [showGaps, setShowGaps] = useState(false)
|
|
25
26
|
const [showEmpty, setShowEmpty] = useState(false)
|
|
26
27
|
|
|
27
|
-
const removeGaps = (s: string) => s.replaceAll('-', '').replaceAll('.', '')
|
|
28
28
|
const disp = str
|
|
29
|
-
.map(([s1, s2]) => [s1, showGaps ? s2 :
|
|
29
|
+
.map(([s1, s2]) => [s1, showGaps ? s2 : getUngappedSequence(s2)] as const)
|
|
30
30
|
.filter(([, s2]) => showEmpty || !!s2)
|
|
31
31
|
.map(([s1, s2]) => `>${s1}\n${s2}`)
|
|
32
32
|
.join('\n')
|
|
@@ -112,8 +112,15 @@ const UserProvidedDomainsDialog = observer(function ({
|
|
|
112
112
|
? JSON.parse(await file.text())
|
|
113
113
|
: await jsonfetch(interProURL)
|
|
114
114
|
|
|
115
|
+
// key each result by its xref id; a result without one has no
|
|
116
|
+
// row to attach to, and keying it `undefined` would draw a
|
|
117
|
+
// phantom row's worth of domains
|
|
115
118
|
model.setDomains(
|
|
116
|
-
Object.fromEntries(
|
|
119
|
+
Object.fromEntries(
|
|
120
|
+
ret.results
|
|
121
|
+
.map(r => [r.xref[0]?.id, r] as const)
|
|
122
|
+
.filter(e => e[0] !== undefined),
|
|
123
|
+
),
|
|
117
124
|
)
|
|
118
125
|
getSession(model).notify(
|
|
119
126
|
'Loaded interproscan results',
|
|
@@ -49,7 +49,7 @@ export function getDomainMenu({ model }: { model: MsaViewModel }) {
|
|
|
49
49
|
label: `Show domains${noDomains ? ' (no domains loaded)' : ''}`,
|
|
50
50
|
disabled: noDomains,
|
|
51
51
|
icon: Visibility,
|
|
52
|
-
checked: actuallyShowDomains
|
|
52
|
+
checked: actuallyShowDomains,
|
|
53
53
|
type: 'checkbox' as const,
|
|
54
54
|
onClick: () => {
|
|
55
55
|
model.setShowDomains(!showDomains)
|
|
@@ -57,15 +57,12 @@ const ImportForm = observer(function ({ model }: { model: MsaViewModel }) {
|
|
|
57
57
|
<div>
|
|
58
58
|
<Button
|
|
59
59
|
onClick={() => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
model.setError(e)
|
|
67
|
-
}
|
|
68
|
-
})()
|
|
60
|
+
try {
|
|
61
|
+
load(model, msaFile, treeFile, gffFile)
|
|
62
|
+
} catch (e) {
|
|
63
|
+
console.error(e)
|
|
64
|
+
model.setError(e)
|
|
65
|
+
}
|
|
69
66
|
}}
|
|
70
67
|
variant="contained"
|
|
71
68
|
color="primary"
|
|
@@ -49,20 +49,17 @@ const ImportFormExamples = observer(function ({
|
|
|
49
49
|
tree?: string
|
|
50
50
|
gff?: string
|
|
51
51
|
}) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
model.setError(e)
|
|
64
|
-
}
|
|
65
|
-
})()
|
|
52
|
+
try {
|
|
53
|
+
load(
|
|
54
|
+
model,
|
|
55
|
+
msa ? { uri: msa, locationType: 'UriLocation' } : undefined,
|
|
56
|
+
tree ? { uri: tree, locationType: 'UriLocation' } : undefined,
|
|
57
|
+
gff ? { uri: gff, locationType: 'UriLocation' } : undefined,
|
|
58
|
+
)
|
|
59
|
+
} catch (e) {
|
|
60
|
+
console.error(e)
|
|
61
|
+
model.setError(e)
|
|
62
|
+
}
|
|
66
63
|
}
|
|
67
64
|
return (
|
|
68
65
|
<ul>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
|
|
3
3
|
import ExpandLess from '@mui/icons-material/ExpandLess'
|
|
4
4
|
import ExpandMore from '@mui/icons-material/ExpandMore'
|
|
@@ -8,11 +8,11 @@ import { observer } from 'mobx-react'
|
|
|
8
8
|
import type { MsaViewModel } from '../../model.ts'
|
|
9
9
|
|
|
10
10
|
const DomainLegend = observer(function ({ model }: { model: MsaViewModel }) {
|
|
11
|
-
const [expanded, setExpanded] = useState(true)
|
|
12
11
|
const {
|
|
13
12
|
actuallyShowDomains,
|
|
14
13
|
visibleDomainTypes: visible,
|
|
15
14
|
fillPalette,
|
|
15
|
+
showDomainLegend: expanded,
|
|
16
16
|
} = model
|
|
17
17
|
const ExpandIcon = expanded ? ExpandLess : ExpandMore
|
|
18
18
|
|
|
@@ -41,8 +41,9 @@ const DomainLegend = observer(function ({ model }: { model: MsaViewModel }) {
|
|
|
41
41
|
>
|
|
42
42
|
<IconButton
|
|
43
43
|
size="small"
|
|
44
|
+
title={expanded ? 'Collapse domain key' : 'Expand domain key'}
|
|
44
45
|
onClick={() => {
|
|
45
|
-
|
|
46
|
+
model.setShowDomainLegend(!expanded)
|
|
46
47
|
}}
|
|
47
48
|
>
|
|
48
49
|
<ExpandIcon fontSize="small" />
|
|
@@ -23,8 +23,9 @@ export function renderBoxFeatureCanvasBlock({
|
|
|
23
23
|
blockSizeXOverride?: number
|
|
24
24
|
blockSizeYOverride?: number
|
|
25
25
|
}) {
|
|
26
|
-
const { blockSize, rowHeight, highResScaleFactor,
|
|
27
|
-
|
|
26
|
+
const { blockSize, rowHeight, highResScaleFactor, actuallyShowDomains } =
|
|
27
|
+
model
|
|
28
|
+
if (actuallyShowDomains) {
|
|
28
29
|
const k = highResScaleFactorOverride ?? highResScaleFactor
|
|
29
30
|
const bx = blockSizeXOverride ?? blockSize
|
|
30
31
|
const by = blockSizeYOverride ?? blockSize
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest'
|
|
2
2
|
|
|
3
3
|
import { calcDepthToLeaf, findMaxBranchLen } from '../../hierarchy.ts'
|
|
4
|
-
import
|
|
4
|
+
import stateModelFactory from '../../model.ts'
|
|
5
|
+
import { getNodeX, renderTreeCanvas } from './renderTreeCanvas.ts'
|
|
5
6
|
|
|
6
7
|
import type { HierarchyNode } from '../../hierarchy.ts'
|
|
8
|
+
import type { RenderCtx } from '../renderCtx.ts'
|
|
9
|
+
import type { Theme } from '@mui/material'
|
|
7
10
|
|
|
8
11
|
function leaf(id: string, len?: number): HierarchyNode {
|
|
9
12
|
return {
|
|
@@ -113,3 +116,53 @@ describe('getNodeX cladogram positioning', () => {
|
|
|
113
116
|
expect(getNodeX(leaf('a', 2.5), true, 100, 1)).toBe(2.5)
|
|
114
117
|
})
|
|
115
118
|
})
|
|
119
|
+
|
|
120
|
+
// the x values the tree pass actually strokes, for a model built from newick
|
|
121
|
+
function drawnTreeXs(newick: string) {
|
|
122
|
+
const model = stateModelFactory().create({
|
|
123
|
+
type: 'MsaView',
|
|
124
|
+
data: { msa: '>a\nA\n>b\nA\n>c\nA\n>d\nA', tree: newick },
|
|
125
|
+
})
|
|
126
|
+
model.setWidth(1000)
|
|
127
|
+
// labels would need a canvas to measure; the branch geometry is the subject
|
|
128
|
+
model.setDrawLabels(false)
|
|
129
|
+
model.setDrawNodeBubbles(false)
|
|
130
|
+
|
|
131
|
+
const xs: number[] = []
|
|
132
|
+
const ctx = {
|
|
133
|
+
font: '12px sans-serif',
|
|
134
|
+
beginPath() {},
|
|
135
|
+
stroke() {},
|
|
136
|
+
resetTransform() {},
|
|
137
|
+
scale() {},
|
|
138
|
+
translate() {},
|
|
139
|
+
moveTo(x: number) {
|
|
140
|
+
xs.push(x)
|
|
141
|
+
},
|
|
142
|
+
lineTo(x: number) {
|
|
143
|
+
xs.push(x)
|
|
144
|
+
},
|
|
145
|
+
} as unknown as RenderCtx
|
|
146
|
+
|
|
147
|
+
renderTreeCanvas({
|
|
148
|
+
model,
|
|
149
|
+
ctx,
|
|
150
|
+
offsetY: 0,
|
|
151
|
+
theme: { palette: { text: { primary: '#000' } } } as Theme,
|
|
152
|
+
})
|
|
153
|
+
return xs
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
describe('renderTreeCanvas horizontal extent', () => {
|
|
157
|
+
it('spreads a cladogram across the tree area when branch lengths are absent', () => {
|
|
158
|
+
// a lengthless newick forces cladogram mode; scaling it by the (zero) max
|
|
159
|
+
// branch length would stack every node on x=0 as one vertical line
|
|
160
|
+
const xs = drawnTreeXs('((a,b),(c,d));')
|
|
161
|
+
expect(Math.max(...xs)).toBe(300)
|
|
162
|
+
})
|
|
163
|
+
|
|
164
|
+
it('scales a phylogram by branch length', () => {
|
|
165
|
+
const xs = drawnTreeXs('((a:0.1,b:0.2):0.3,(c:0.4,d:0.5):0.6);')
|
|
166
|
+
expect(Math.max(...xs)).toBeCloseTo(300)
|
|
167
|
+
})
|
|
168
|
+
})
|
|
@@ -24,14 +24,15 @@ function inYBlock(y: number, offsetY: number, by: number) {
|
|
|
24
24
|
return y > offsetY - extendBounds && y < offsetY + by + extendBounds
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
// Calculate node x-coordinate for both phylogram (with branch lengths) and
|
|
28
|
-
//
|
|
29
|
-
//
|
|
27
|
+
// Calculate node x-coordinate for both phylogram (with branch lengths) and
|
|
28
|
+
// cladogram (topology only) modes. tipX is the pixel x the tips sit at.
|
|
29
|
+
// For cladograms: x = (maxDepthToLeaf - nodeDepthToLeaf) / maxDepthToLeaf * tipX
|
|
30
|
+
// This positions: leaves at tipX (rightmost), root at 0 (leftmost), internal nodes proportionally in between
|
|
30
31
|
// Matches ape's: xx <- max(xx) - xx (where xx is depth from each node to tips)
|
|
31
32
|
export function getNodeX(
|
|
32
33
|
node: HierarchyNode,
|
|
33
34
|
showBranchLen: boolean,
|
|
34
|
-
|
|
35
|
+
tipX: number,
|
|
35
36
|
maxDepthToLeaf: number,
|
|
36
37
|
): number | undefined {
|
|
37
38
|
if (showBranchLen) {
|
|
@@ -41,7 +42,7 @@ export function getNodeX(
|
|
|
41
42
|
return 0
|
|
42
43
|
}
|
|
43
44
|
const depthToLeaf = calcDepthToLeaf(node)
|
|
44
|
-
return ((maxDepthToLeaf - depthToLeaf) / maxDepthToLeaf) *
|
|
45
|
+
return ((maxDepthToLeaf - depthToLeaf) / maxDepthToLeaf) * tipX
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
export function renderTree({
|
|
@@ -49,7 +50,7 @@ export function renderTree({
|
|
|
49
50
|
ctx,
|
|
50
51
|
model,
|
|
51
52
|
theme,
|
|
52
|
-
|
|
53
|
+
tipX,
|
|
53
54
|
maxDepthToLeaf,
|
|
54
55
|
blockSizeYOverride,
|
|
55
56
|
}: {
|
|
@@ -57,7 +58,7 @@ export function renderTree({
|
|
|
57
58
|
ctx: RenderCtx
|
|
58
59
|
model: MsaViewModel
|
|
59
60
|
theme: Theme
|
|
60
|
-
|
|
61
|
+
tipX: number
|
|
61
62
|
maxDepthToLeaf: number
|
|
62
63
|
blockSizeYOverride?: number
|
|
63
64
|
}) {
|
|
@@ -67,8 +68,8 @@ export function renderTree({
|
|
|
67
68
|
forEachLink(hierarchy, (source, target) => {
|
|
68
69
|
const sy = source.x!
|
|
69
70
|
const ty = target.x!
|
|
70
|
-
const tx = getNodeX(target, showBranchLen,
|
|
71
|
-
const sx = getNodeX(source, showBranchLen,
|
|
71
|
+
const tx = getNodeX(target, showBranchLen, tipX, maxDepthToLeaf)
|
|
72
|
+
const sx = getNodeX(source, showBranchLen, tipX, maxDepthToLeaf)
|
|
72
73
|
if (tx === undefined || sx === undefined) {
|
|
73
74
|
return
|
|
74
75
|
}
|
|
@@ -94,7 +95,7 @@ export function renderCollapsedTriangles({
|
|
|
94
95
|
offsetY,
|
|
95
96
|
model,
|
|
96
97
|
theme,
|
|
97
|
-
|
|
98
|
+
tipX,
|
|
98
99
|
maxDepthToLeaf,
|
|
99
100
|
blockSizeYOverride,
|
|
100
101
|
}: {
|
|
@@ -103,7 +104,7 @@ export function renderCollapsedTriangles({
|
|
|
103
104
|
offsetY: number
|
|
104
105
|
model: MsaViewModel
|
|
105
106
|
theme: Theme
|
|
106
|
-
|
|
107
|
+
tipX: number
|
|
107
108
|
maxDepthToLeaf: number
|
|
108
109
|
blockSizeYOverride?: number
|
|
109
110
|
}) {
|
|
@@ -116,19 +117,23 @@ export function renderCollapsedTriangles({
|
|
|
116
117
|
fontSize,
|
|
117
118
|
marginLeft: ml,
|
|
118
119
|
} = model
|
|
120
|
+
// nothing collapsed is the common case, and the traversal below visits every
|
|
121
|
+
// node in the tree on every block of every redraw
|
|
122
|
+
if (collapsed.length === 0) {
|
|
123
|
+
return
|
|
124
|
+
}
|
|
125
|
+
const collapsedSet = new Set(collapsed)
|
|
119
126
|
const by = blockSizeYOverride ?? blockSize
|
|
120
127
|
const halfHeight = Math.max(2, rowHeight * 0.42)
|
|
121
128
|
forEachDescendant(hierarchy, node => {
|
|
122
129
|
const { id, name } = node.data
|
|
123
|
-
if (
|
|
124
|
-
const apexX = getNodeX(node, showBranchLen,
|
|
130
|
+
if (collapsedSet.has(id)) {
|
|
131
|
+
const apexX = getNodeX(node, showBranchLen, tipX, maxDepthToLeaf)
|
|
125
132
|
const y = node.x!
|
|
126
133
|
const inBlock = inYBlock(y, offsetY, by)
|
|
127
134
|
// in cladogram mode the hidden tips align at the right edge, otherwise use
|
|
128
135
|
// the branch-length extent recorded in the model's hierarchy getter
|
|
129
|
-
const baseX = showBranchLen
|
|
130
|
-
? (node.collapsedTipXFar ?? maxBranchLen)
|
|
131
|
-
: maxBranchLen
|
|
136
|
+
const baseX = showBranchLen ? (node.collapsedTipXFar ?? tipX) : tipX
|
|
132
137
|
if (apexX !== undefined && inBlock && baseX > apexX) {
|
|
133
138
|
ctx.beginPath()
|
|
134
139
|
ctx.moveTo(apexX, y)
|
|
@@ -171,7 +176,7 @@ export function renderNodeBubbles({
|
|
|
171
176
|
clickMap,
|
|
172
177
|
offsetY,
|
|
173
178
|
model,
|
|
174
|
-
|
|
179
|
+
tipX,
|
|
175
180
|
maxDepthToLeaf,
|
|
176
181
|
blockSizeYOverride,
|
|
177
182
|
}: {
|
|
@@ -179,7 +184,7 @@ export function renderNodeBubbles({
|
|
|
179
184
|
clickMap?: ClickMapIndex
|
|
180
185
|
offsetY: number
|
|
181
186
|
model: MsaViewModel
|
|
182
|
-
|
|
187
|
+
tipX: number
|
|
183
188
|
maxDepthToLeaf: number
|
|
184
189
|
blockSizeYOverride?: number
|
|
185
190
|
}) {
|
|
@@ -191,8 +196,9 @@ export function renderNodeBubbles({
|
|
|
191
196
|
marginLeft: ml,
|
|
192
197
|
} = model
|
|
193
198
|
const by = blockSizeYOverride ?? blockSize
|
|
199
|
+
const collapsedSet = new Set(collapsed)
|
|
194
200
|
forEachDescendant(hierarchy, node => {
|
|
195
|
-
const x = getNodeX(node, showBranchLen,
|
|
201
|
+
const x = getNodeX(node, showBranchLen, tipX, maxDepthToLeaf)
|
|
196
202
|
if (x === undefined) {
|
|
197
203
|
return
|
|
198
204
|
}
|
|
@@ -200,7 +206,7 @@ export function renderNodeBubbles({
|
|
|
200
206
|
const y = node.x!
|
|
201
207
|
const { id, name } = data
|
|
202
208
|
if (node.height >= 1 && inYBlock(y, offsetY, by)) {
|
|
203
|
-
const isCollapsed =
|
|
209
|
+
const isCollapsed = collapsedSet.has(id)
|
|
204
210
|
ctx.strokeStyle = 'black'
|
|
205
211
|
ctx.fillStyle = isCollapsed ? 'black' : 'white'
|
|
206
212
|
ctx.beginPath()
|
|
@@ -231,7 +237,7 @@ export function renderTreeLabels({
|
|
|
231
237
|
offsetY,
|
|
232
238
|
ctx,
|
|
233
239
|
clickMap,
|
|
234
|
-
|
|
240
|
+
tipX,
|
|
235
241
|
maxDepthToLeaf,
|
|
236
242
|
blockSizeYOverride,
|
|
237
243
|
}: {
|
|
@@ -240,7 +246,7 @@ export function renderTreeLabels({
|
|
|
240
246
|
ctx: RenderCtx
|
|
241
247
|
clickMap?: ClickMapIndex
|
|
242
248
|
theme: Theme
|
|
243
|
-
|
|
249
|
+
tipX: number
|
|
244
250
|
maxDepthToLeaf: number
|
|
245
251
|
blockSizeYOverride?: number
|
|
246
252
|
}) {
|
|
@@ -289,7 +295,7 @@ export function renderTreeLabels({
|
|
|
289
295
|
const yp = y + fontSize / 4
|
|
290
296
|
let xp = 0
|
|
291
297
|
if (!noTree) {
|
|
292
|
-
xp = getNodeX(node, showBranchLen,
|
|
298
|
+
xp = getNodeX(node, showBranchLen, tipX, maxDepthToLeaf) ?? 0
|
|
293
299
|
}
|
|
294
300
|
|
|
295
301
|
const width =
|
|
@@ -375,7 +381,14 @@ export function renderTreeCanvas({
|
|
|
375
381
|
|
|
376
382
|
// memoized on the model and shared across the tree/bubble/label passes (and
|
|
377
383
|
// across all tree blocks) rather than re-traversing the hierarchy in each
|
|
378
|
-
const { maxBranchLength
|
|
384
|
+
const { maxBranchLength, maxDepthToLeaf, showBranchLenEffective, treeWidth } =
|
|
385
|
+
model
|
|
386
|
+
// pixel x of the tips. A phylogram scales branch lengths so the longest
|
|
387
|
+
// root-to-tip path lands at maxBranchLength; a cladogram ignores lengths and
|
|
388
|
+
// spreads topological depth across the whole tree area instead. Reusing
|
|
389
|
+
// maxBranchLength for the cladogram would pin every node to x=0 for a tree
|
|
390
|
+
// with no branch lengths -- which is exactly what forces cladogram mode.
|
|
391
|
+
const tipX = showBranchLenEffective ? maxBranchLength : treeWidth
|
|
379
392
|
|
|
380
393
|
if (!noTree && drawTree) {
|
|
381
394
|
renderTree({
|
|
@@ -383,7 +396,7 @@ export function renderTreeCanvas({
|
|
|
383
396
|
offsetY,
|
|
384
397
|
model,
|
|
385
398
|
theme,
|
|
386
|
-
|
|
399
|
+
tipX,
|
|
387
400
|
maxDepthToLeaf,
|
|
388
401
|
blockSizeYOverride,
|
|
389
402
|
})
|
|
@@ -394,7 +407,7 @@ export function renderTreeCanvas({
|
|
|
394
407
|
offsetY,
|
|
395
408
|
model,
|
|
396
409
|
theme,
|
|
397
|
-
|
|
410
|
+
tipX,
|
|
398
411
|
maxDepthToLeaf,
|
|
399
412
|
blockSizeYOverride,
|
|
400
413
|
})
|
|
@@ -405,7 +418,7 @@ export function renderTreeCanvas({
|
|
|
405
418
|
offsetY,
|
|
406
419
|
clickMap,
|
|
407
420
|
model,
|
|
408
|
-
|
|
421
|
+
tipX,
|
|
409
422
|
maxDepthToLeaf,
|
|
410
423
|
blockSizeYOverride,
|
|
411
424
|
})
|
|
@@ -419,7 +432,7 @@ export function renderTreeCanvas({
|
|
|
419
432
|
model,
|
|
420
433
|
clickMap,
|
|
421
434
|
theme,
|
|
422
|
-
|
|
435
|
+
tipX,
|
|
423
436
|
maxDepthToLeaf,
|
|
424
437
|
blockSizeYOverride,
|
|
425
438
|
})
|
package/src/constants.ts
CHANGED
|
@@ -6,6 +6,7 @@ export const defaultScrollX = 0
|
|
|
6
6
|
export const defaultScrollY = 0
|
|
7
7
|
export const defaultCurrentAlignment = 0
|
|
8
8
|
export const defaultShowDomains = false
|
|
9
|
+
export const defaultShowDomainLegend = true
|
|
9
10
|
export const defaultHideGaps = true
|
|
10
11
|
export const defaultAllowedGappyness = 100
|
|
11
12
|
export const defaultSubFeatureRows = false
|
package/src/flatToTree.test.ts
CHANGED
|
@@ -15,6 +15,27 @@ describe('flatToTree', () => {
|
|
|
15
15
|
expect(root.children[0]!.children.map(c => c.id)).toEqual(['3'])
|
|
16
16
|
})
|
|
17
17
|
|
|
18
|
+
test('carries the label and branch length of a BioTreeContainer node', () => {
|
|
19
|
+
const root = flatToTree([
|
|
20
|
+
{ id: 0, label: 'Multiple organisms' },
|
|
21
|
+
{
|
|
22
|
+
id: 1,
|
|
23
|
+
parent: 0,
|
|
24
|
+
label: 'sodium/glucose cotransporter 4',
|
|
25
|
+
dist: '0.5',
|
|
26
|
+
},
|
|
27
|
+
{ id: 2, parent: 0 },
|
|
28
|
+
])
|
|
29
|
+
expect(root.name).toBe('Multiple organisms')
|
|
30
|
+
expect(root.children[0]).toMatchObject({
|
|
31
|
+
name: 'sodium/glucose cotransporter 4',
|
|
32
|
+
length: 0.5,
|
|
33
|
+
})
|
|
34
|
+
// no label falls back to the id, and no dist leaves the length unset
|
|
35
|
+
expect(root.children[1]!.name).toBe('2')
|
|
36
|
+
expect(root.children[1]!.length).toBeUndefined()
|
|
37
|
+
})
|
|
38
|
+
|
|
18
39
|
test('throws on empty input rather than returning undefined', () => {
|
|
19
40
|
expect(() => flatToTree([])).toThrow(/no root/)
|
|
20
41
|
})
|