@@ -51,6 +51,7 @@ import {
51
51
getNextMonomerInChain ,
52
52
getPhosphateFromSugar ,
53
53
isAmbiguousMonomerLibraryItem ,
54
+ isRnaBaseOrAmbiguousRnaBase ,
54
55
isValidNucleoside ,
55
56
isValidNucleotide ,
56
57
} from 'domain/helpers/monomers' ;
@@ -85,7 +86,7 @@ type RnaPresetAdditionParams = {
85
86
type NucleotideOrNucleoside = {
86
87
sugar : Sugar ;
87
88
phosphate ?: Phosphate ;
88
- rnaBase : RNABase ;
89
+ rnaBase : RNABase | AmbiguousMonomer ;
89
90
baseMonomer : Sugar | Phosphate ;
90
91
} ;
91
92
@@ -938,27 +939,38 @@ export class DrawingEntitiesManager {
938
939
let previousMonomer : BaseMonomer | undefined ;
939
940
const sugarMonomer = node . monomers . find (
940
941
( monomer ) => monomer instanceof Sugar ,
941
- ) as Sugar ;
942
+ ) as Sugar | AmbiguousMonomer ;
942
943
const phosphateMonomer = node . monomers . find (
943
944
( monomer ) => monomer instanceof Phosphate ,
944
- ) as Phosphate ;
945
- const rnaBaseMonomer = node . monomers . find (
946
- ( monomer ) => monomer instanceof RNABase ,
947
- ) as RNABase ;
945
+ ) as Phosphate | AmbiguousMonomer ;
946
+ const rnaBaseMonomer = node . monomers . find ( ( monomer ) =>
947
+ isRnaBaseOrAmbiguousRnaBase ( monomer ) ,
948
+ ) as RNABase | AmbiguousMonomer ;
948
949
const monomers = [ rnaBaseMonomer , sugarMonomer , phosphateMonomer ] . filter (
949
950
( monomer ) => monomer !== undefined ,
950
951
) as BaseMonomer [ ] ;
951
952
952
953
monomers . forEach ( ( monomer ) => {
953
- const monomerAddOperation = new MonomerAddOperation (
954
- this . addMonomerChangeModel . bind (
955
- this ,
956
- monomer . monomerItem ,
957
- monomer . position ,
958
- monomer ,
959
- ) ,
960
- this . deleteMonomerChangeModel . bind ( this ) ,
961
- ) ;
954
+ const monomerAddOperation =
955
+ monomer instanceof AmbiguousMonomer
956
+ ? new MonomerAddOperation (
957
+ this . addAmbiguousMonomerChangeModel . bind (
958
+ this ,
959
+ monomer . variantMonomerItem ,
960
+ monomer . position ,
961
+ monomer ,
962
+ ) ,
963
+ this . deleteMonomerChangeModel . bind ( this ) ,
964
+ )
965
+ : new MonomerAddOperation (
966
+ this . addMonomerChangeModel . bind (
967
+ this ,
968
+ monomer . monomerItem ,
969
+ monomer . position ,
970
+ monomer ,
971
+ ) ,
972
+ this . deleteMonomerChangeModel . bind ( this ) ,
973
+ ) ;
962
974
963
975
command . addOperation ( monomerAddOperation ) ;
964
976
if ( previousMonomer ) {
@@ -1513,7 +1525,7 @@ export class DrawingEntitiesManager {
1513
1525
this . monomers . forEach ( ( monomer ) => {
1514
1526
const monomerAddCommand =
1515
1527
monomer instanceof AmbiguousMonomer
1516
- ? targetDrawingEntitiesManager . addVariantMonomer (
1528
+ ? targetDrawingEntitiesManager . addAmbiguousMonomer (
1517
1529
{
1518
1530
...monomer . variantMonomerItem ,
1519
1531
} ,
@@ -1848,7 +1860,7 @@ export class DrawingEntitiesManager {
1848
1860
return command ;
1849
1861
}
1850
1862
1851
- private addVariantMonomerChangeModel (
1863
+ private addAmbiguousMonomerChangeModel (
1852
1864
variantMonomerItem : AmbiguousMonomerType ,
1853
1865
position : Vec2 ,
1854
1866
_monomer ?: BaseMonomer ,
@@ -1866,13 +1878,13 @@ export class DrawingEntitiesManager {
1866
1878
return monomer ;
1867
1879
}
1868
1880
1869
- public addVariantMonomer (
1881
+ public addAmbiguousMonomer (
1870
1882
variantMonomerItem : AmbiguousMonomerType ,
1871
1883
position : Vec2 ,
1872
1884
) {
1873
1885
const command = new Command ( ) ;
1874
1886
const operation = new MonomerAddOperation (
1875
- this . addVariantMonomerChangeModel . bind (
1887
+ this . addAmbiguousMonomerChangeModel . bind (
1876
1888
this ,
1877
1889
variantMonomerItem ,
1878
1890
position ,
0 commit comments