diff --git a/packages/ketcher-core/src/application/render/restruct/resgroup.ts b/packages/ketcher-core/src/application/render/restruct/resgroup.ts index fa19f640c7..67273d4ebd 100644 --- a/packages/ketcher-core/src/application/render/restruct/resgroup.ts +++ b/packages/ketcher-core/src/application/render/restruct/resgroup.ts @@ -20,7 +20,6 @@ import { Pile, SGroup, Vec2, - Bond, Struct, } from 'domain/entities'; import { SgContexts } from 'application/editor/shared/constants'; @@ -40,7 +39,7 @@ interface SGroupdrawBracketsOptions { set: any; render: Render; sgroup: SGroup; - crossBonds: { [key: number]: Array }; + crossBonds: { [key: number]: Array }; atomSet: Pile; bracketBox: Box2Abs; direction: Vec2; @@ -460,8 +459,8 @@ function drawAttachedDat(restruct: ReStruct, sgroup: SGroup): any { function getBracketParameters( atomSet: Pile, - crossBondsPerAtom: Array>, - crossBondsValues: Array, + crossBondsPerAtom: Array>, + crossBondsValues: Array, attachmentPoints: number[], bracketBox: Box2Abs, direction: Vec2, @@ -490,7 +489,7 @@ function getBracketParameters( ); } else if (crossBondsValues.length === 2 && crossBondsPerAtom.length === 1) { getBracketParamersWithCrossBondsMoreThan2OnOneAtom( - crossBondsValues, + crossBondsValues as [number, number], mol, attachmentPoints, render, @@ -514,7 +513,7 @@ function getBracketParameters( } function getBracketParamersWithCrossBondsMoreThan2OnOneAtom( - crossBondsValues: Bond[], + crossBondsValues: [number, number], mol: Struct, attachmentPoints: number[], render: Render, @@ -528,10 +527,12 @@ function getBracketParamersWithCrossBondsMoreThan2OnOneAtom( // if bonds direction is clockwise, then negated const needNegated = Vec2.crossProduct(bondDirections[0], bondDirections[1]) > 0; - crossBondsValues = crossBondsValues.sort((id1, id2) => { - notTemplateShapeFirstAtom = Math.abs(Number(id1) - Number(id2)) === 1; - return notTemplateShapeFirstAtom && !needNegated ? -1 : 0; - }); + notTemplateShapeFirstAtom = + Math.abs(Number(crossBondsValues[0]) - Number(crossBondsValues[1])) === 1; + if (notTemplateShapeFirstAtom && !needNegated) { + crossBondsValues.reverse(); + } + for (let i = 0; i < crossBondsValues.length; ++i) { const bond = mol.bonds.get(Number(crossBondsValues[i])); let bondDirection = bond?.getDir(mol) || new Vec2(); @@ -577,7 +578,7 @@ function getBracketParamersWithCrossBondsMoreThan2OnOneAtom( function getBracketParamersWithCrossBondsEquals2( mol: Struct, - crossBondsValues: Bond[], + crossBondsValues: number[], id: number, render: Render, attachmentPoints: number[], diff --git a/packages/ketcher-core/src/domain/entities/sgroup.ts b/packages/ketcher-core/src/domain/entities/sgroup.ts index d3c1f0467e..2b25042e38 100644 --- a/packages/ketcher-core/src/domain/entities/sgroup.ts +++ b/packages/ketcher-core/src/domain/entities/sgroup.ts @@ -440,9 +440,9 @@ export class SGroup { static getCrossBonds( mol: any, parentAtomSet: Pile, - ): { [key: number]: Array } { - const crossBonds: { [key: number]: Array } = {}; - mol.bonds.forEach((bond, bid) => { + ): { [key: number]: Array } { + const crossBonds: { [key: number]: Array } = {}; + mol.bonds.forEach((bond, bid: number) => { if (parentAtomSet.has(bond.begin) && !parentAtomSet.has(bond.end)) { if (!crossBonds[bond.begin]) { crossBonds[bond.begin] = []; @@ -464,7 +464,7 @@ export class SGroup { static bracketPos( sGroup, mol, - crossBondsPerAtom?: { [key: number]: Array }, + crossBondsPerAtom?: { [key: number]: Array }, remol?: ReStruct, render?, ): void {