Skip to content

Tony/update 3.14 - #92

Open
tonyd33 wants to merge 957 commits into
masterfrom
tony/update-3.14
Open

tonyd33 wants to merge 957 commits into
masterfrom
tony/update-3.14

Conversation

@tonyd33

@tonyd33 tonyd33 commented Mar 15, 2026

Copy link
Copy Markdown

How the feature works? / How did you fix the issue?

(Screenshots, videos, or GIFs, if applicable)

Check list

  • unit-tests written
  • e2e-tests written
  • documentation updated
  • PR name follows the pattern #1234 – issue name
  • branch name doesn't contain '#'
  • PR is linked with the issue
  • base branch (master or release/xx) is correct
  • task status changed to "Code review"
  • reviewers are notified about the pull request

svvald and others added 30 commits November 19, 2025 12:42
…A and LGA (epam#8491)

* epam#8254 – Support having stereo bonds as bonds between AA and LGA

* epam#8254 – Support stereo bonds for automatically assigned leaving atoms

* epam#8254 – Convert bonds between monomers to stereo when expanding monomers

* epam#8254 – Some refactoring

* epam#8254 – Implement proper handling of cases when monomer bond goes TO stereo bonded LGA

* epam#8254 – Implement stereo bonds support in between monomers when loading/switching modes

* epam#8254 – Update autotests

* - updated screenshots

* - updated tests

---------

Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>
…hange the type of the expression (part 10) (epam#8545)

* Initial plan

* Remove redundant non-null assertions in struct.ts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
…ingly (epam#8577)

* Initial plan

* Fix array mutation issue by using spread syntax before reverse()

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
…uldReactionRelayout) function to reduce its Cognitive Complexity from 53 to the 15 allowed. (epam#8570)

* Initial plan

* Refactor rxnMerge function to reduce cognitive complexity

- Extract bond length calculation into calculateAverageBondLength()
- Extract molecule rescaling into rescaleMolecules()
- Extract fragment type determination into getFragmentType()
- Extract molecule categorization into categorizeMolecules()
- Move shiftMol helper to module level
- Extract layout logic into layoutReactionFragments()
- Extract merge logic into mergeWithoutLayout()
- Extract plus sign addition into addPlusSigns()
- Extract bounding box aggregation into aggregateBoundingBoxes()
- Extract arrow creation logic into createReactionArrow()

The main rxnMerge function now orchestrates these helper functions,
making the code flow easier to read and reducing cognitive complexity.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
…hown as % symbol instead of @ symbol (epam#8580)

* Initial plan

* Fix: Add Phosphate class to ambiguous monomer @ symbol check

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7372 "Ghost image" doesn't satisfy the UX design (#8309)

* Initial plan

* Fix ghost image styling to match UX design

- Changed GhostMonomer and GhostRnaPreset components to use white fill with stroke instead of solid gray fill
- Updated all monomer shapes (sugar, phosphate, base) to have white background with #CAD3DD border
- Added strokeWidth of 2px to maintain proper visibility
- All tests pass and linting is clean

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - use numeric strokeWidth

Changed strokeWidth from string "2" to numeric 2 for better SVG attribute handling

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Initial plan

* f2

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* Initial plan

* Initial plan

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>
Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>
Co-authored-by: Ivan Maslov <165396466+ivanmasl…
…nt point (epam#8585)

* Initial plan

* Fix tooltip positioning for attachment points using getShiftedSegmentPosition

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix tooltip positioning to account for canvas offset in popup mode

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Revert reatom.ts changes - keep only InfoTooltip fix for popup mode

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix tooltip positioning for attachment points in popup mode

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* epam#8544 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 10) (epam#8545)

* Initial plan

* Remove redundant non-null assertions in struct.ts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Initial plan

* Fix tooltip positioning for attachment points using getShiftedSegmentPosition

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix tooltip positioning to account for canvas offset in popup mode

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>
* feat: Include 'Arrange as a Ring' button for Flex mode

* fix: fix position Arrange as a Ring in context menu

* fix: add 'Arrange as a Ring' button only in flex mode

* test: update snapshots

* fix: fix data attribute

* fix: fix selected monomer function

* test: update snapshots
…rewrite JS to TS) 12 (epam#8550)

* Initial plan

* Convert Check.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8556 System losts Modification types values while save it KET (#8557)

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7372 "Ghost image" doesn't satisfy the UX design (#8309)

* Initial plan

* Fix ghost image styling to match UX design

- Changed GhostMonomer and GhostRnaPreset components to use white fill with stroke instead of solid gray fill
- Updated all monomer shapes (sugar, phosphate, base) to have white background with #CAD3DD border
- Added strokeWidth of 2px to maintain proper visibility
- All tests pass and linting is clean

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - use numeric strokeWidth

Changed strokeWidth from string "2" to numeric 2 for better SVG attribute handling

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGir…
…s rewrite JS to TS) 10 (epam#8519)

* Initial plan

* Convert Analyse.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Display values in Decimal places dropdowns

Changed from `.toString()` to pass numeric values directly to Select component. The Select component expects values that match the option values, which are numbers (0-7), not strings. Converting to string caused a type mismatch preventing the selected value from being displayed.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
…rewrite JS to TS) 4 (epam#8514)

* Initial plan

* Convert ElementsTable.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
…rewrite JS to TS) 2 (epam#8512)

* Initial plan

* Convert PeriodTable.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
* - fixed build

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>
…monomers (epam#8604)

* Initial plan

* Disable Change direction and Attach S-Group for bonds between monomers

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8509 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 12 (#8550)

* Initial plan

* Convert Check.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8556 System losts Modification types values while save it KET (#8557)

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7372 "Ghost image" doesn't satisfy the UX design (#8309)

* Initial plan

* Fix ghost image styling to match UX design

- Changed GhostMonomer and GhostRnaPreset components to use white fill with stroke instead of solid gray fill
- Updated all monomer shapes (sugar, phosphate, base) to have white background with #CAD3DD border
- Added strokeWidth of 2px to maintain proper visibility
- All tests pass and linting is clean

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - use numeric strokeWidth

Changed strokeWidth from string "2" to numeric 2 for better SVG attribute handling

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to …
* Initial plan

* Create file structure and update first batch of test files

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Update remaining test files and remove fileFormats.ts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove extraneous quotes from mol file

* Clean up quotation marks in mol file

Removed unnecessary quotation marks from the file.

* Remove unnecessary characters from MOL file

* Update one-unknown-superatom-contracted.mol

* Update one-unknown-superatom-expanded.mol

* Remove unnecessary quotes from mol file

* Update functional-groups-expanded-contracted.mol

* Clean up quotation marks in mol file

Removed unnecessary quotation marks from the file.

* Remove extra quotes from one-functional-group-expanded.mol

* Remove extraneous quotes from mol file

* Clean up quotation marks in mol file

Removed unnecessary quotation marks at the beginning and end of the file.

* Update unknown-superatom-expanded-contracted.mol

* #8509 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 12 (#8550)

* Initial plan

* Convert Check.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8556 System losts Modification types values while save it KET (#8557)

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7372 "Ghost image" doesn't satisfy the UX design (#8309)

* Initial plan

* Fix ghost image styling to match UX design

- Changed GhostMonomer and GhostRnaPreset components to use white fill with stroke instead of solid gray fill
- Updated all monomer shapes (sugar, phosphate, base) to have white background with #CAD3DD border
- Added strokeWidth of 2px to maintain proper visibility
- All tests pass and linting is clean

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - use numeric strokeWidth

Changed strokeWidth from string "2" to numeric 2 for better SVG attribute handling

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: impl…
…ept one - isContainsCoordinates (epam#8610)

* Initial plan

* Refactor SmilesFormatter: remove all methods except isContainsCoordinates

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove unused SmiSerializer and Smiles serialization code

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
…#8569)

* Initial plan

* Fix deprecated event global usage in templatePreview.ts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* Initial plan

* Fix deprecated event global usage in templatePreview.ts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f2

* Fixed build (#8607)

* - fixed build

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* Disable "Change direction" and "Attach S-Group..." for bonds between monomers (#8604)

* Initial plan

* Disable Change direction and Attach S-Group for bonds between monomers

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8509 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 12 (#8550)

* Initial plan

* Convert Check.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8556 System losts Modification types values while save it KET (#8557)

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8500 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 3 (#8513)

* Initial plan

* Refactor AtomInfo from JSX to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8503 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 6 (#8515)

* Initial plan

* Refactor OutinerRow.jsx to TypeScript with proper props validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Complete OutinerRow TypeScript migration

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8506 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 9 (#8518)

* Initial plan

* Convert About.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8508 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 11 (#8520)

* Initial plan

* Convert FrozenInput from JSX to TSX with proper TypeScript types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Variables are missing in props validation (let's rewrite JS to TS) 14 (#8522)

* Initial plan

* Refactor: Convert Recognize.jsx to TypeScript with proper prop types validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8510 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 13 (#8523)

* Initial plan

* Convert ErrorsCheck.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8502 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 5 (#8524)

* Initial plan

* Refactor MainRow.jsx to TypeScript with prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8538 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 7) (#8539)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8540 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 8) (#8541)

* Initial plan

* Remove redundant type assertions and casts

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8542 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 9) (#8543)

* Initial plan

* Remove redundant type assertions from DrawingEntitiesManager and sgroup

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8546 Refactor: This assertion is unnecessary since it does not change the type of the expression (part 11) (#8547)

* Initial plan

* Remove redundant type assertions and non-null assertions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Autotests: 8553 autotests update the monomer preview (#8558)

* draft

* Final

* f2

* #8554 System losts AxoLabs alias while save it KET (#8555)

* Initial plan

* Add aliasAxoLabs to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* Create page object for Abbreviation Preview Tooltip (#8552)

* Initial plan

* Create AbbreviationPreviewTooltip page object and refactor tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Initial plan

* Add modificationTypes and naturalAnalog to KET serialization

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove naturalAnalog assignment for CHEM monomers

Remove naturalAnalog property assignment for non-CHEM monomers.

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7372 "Ghost image" doesn't satisfy the UX design (#8309)

* Initial plan

* Fix ghost image styling to match UX design

- Changed GhostMonomer and GhostRnaPreset components to use white fill with stroke instead of solid gray fill
- Updated all monomer shapes (sugar, phosphate, base) to have white background with #CAD3DD border
- Added strokeWidth of 2px to maintain proper visibility
- All tests pass and linting is clean

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - use numeric strokeWidth

Changed strokeWidth from string "2" to numeric 2 for better SVG attribute handling

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #8351 Autotests for Ketcher 3.9.0 bugs (#8391)

* First draft

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* f7

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module (#8388)

* #8385 – Migrate to Indigo v1.38.0-rc.1 in-browser module

* fixes

* f2

* f3

---------

Co-authored-by: Alexey Girin <agirin@mail.ru>

* draft

* 2

* 3

* 4

* 5

* 6

* 7

* #8281 - Adjust subscription to library update event of Ketcher API  (#8382)

* #8212 - Refactor: Extract this nested ternary operation into an independent statement (part 4) (#8225)

* Initial plan

* Refactor nested ternary in Analyse.jsx into separate method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8211 - Refactor: Extract this nested ternary operation into an independent statement (part 3) (#8224)

* Initial plan

* Refactor: Extract nested ternary operation in MainRow.jsx into renderCell function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8210 - Refactor: Extract this nested ternary operation into an independent statement (part 2) (#8223)

* Initial plan

* Refactor: Extract nested ternary operations into independent functions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8209 - Refactor: Extract this nested ternary operation into an independent statement (part 1) (#8222)

* Initial plan

* Refactor nested ternary operations into if-else statements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7905 – Selection logic change and toolbar icons enabling for the monomer creation wizard (#8371)

* #7905 – Change selection logic

* #7905 – Enable Indigo functions

* #7905 – Support undo/redo for assigning attachment point via leaving atom and removing as assigned attachment point

* #7905 – Support undo/redo for reassign attachment point operation

* #7905 – Support undo/redo for reassign leaving atom operation

* #7905 – Support undo/redo for assign attachment atom operation

* #7905 – Fix build failure

* #7905 – Do not apply toggle explicit hydrogens for leaving group atoms in monomer creation wizard

* #7905 – Enable layout and clenaup tools, add label to HELM alias input

* #7905 – Revert initial notification change

* #7905 – Update screenshots

* #7905 – Update screenshots

* #7905 – Remove outdated test cases

* #5520 - Percentages for mixed bases ain't sorted from biggest to smallest in tooltip (#8288)

* Initial plan

* Fix sorting of mixed base percentages in tooltip

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode (#8336)

* #7970 - Include 'Create cyclic structure' option in the context menu for Flex mode

* #8366 – Preview: Wrong name in context menu - “Circular layout” should be “Create cyclic structure”

* #8369 – Preview: Circular layout option is active even when structure does not meet minimal closure requirements

* #8368 - Preview: Context menu incorrectly allows “Circular layout” even when selection criteria are not met

* #8367 - Preview: Undo does not revert Circular layout - structure disappears, ghost bonds remain and cause console errors 

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>

* #4188 - Choosing wedged/hashed bond direction doesn't work from right-clicking context menu (#8233)

* Initial plan

* Fix bond direction change in context menu for stereo bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify bond type check logic

* Fix return statement formatting in useBondTypeChange

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* fixes

* f2

* f3

* f4

---------

Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: KukushkinDmi1riy <42671583+KukushkinDmi1riy@users.noreply.github.com>
Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: #8153 - Deprecated APIs should not be used (part 2)  (#8154)

* Initial plan

* Replace deprecated APIs with modern alternatives

- Replace all substr() calls with slice() in v3000.js
- Replace readAsBinaryString() with readAsArrayBuffer() in fileOpener.js
- Replace document.execCommand() and document.queryCommandSupported() with Clipboard API checks in cliparea.jsx

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7958 - autotests get rid of clickonbond function and replace it with getbondlocatorclick (#8409)

* The function clickOnBond is replaced with getBondLocator.click()
The function declaration of clickOnBond is removed

* The BondType and getBondByIndex are removed from import

* #7148 - Number of selected elements in context menu is wrong for sense/antisense chain (#8317)

* Initial plan

* Fix selection count for sense/antisense chains

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix ESLint error in test

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review: Use proper type assertion instead of any

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7735 - System shows inner circles of aromatized benzene rings from collapsed monomers on Molecules canvas (#8197)

* Initial plan

* Fix aromatic circle rendering for collapsed monomers

Added check in ReLoop.show() to skip rendering aromatic circles when all atoms in the loop belong to a contracted MonomerMicromolecule. This prevents internal benzene ring circles from showing when collapsed monomers are displayed in Molecules mode.

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* #7500 - Update the monomer preview   (#8134)

* feat: update the monomer preview

* fix: fix code after review

* test:update snapshots

* test:update snapshots

* test:update spanshots

* test:update spanshots

* test:update spanshots

* test: update snapshots

* Refactor: #8130 - Fix for many sonar issues (#8131)

* Fix accessibility and spacing issues from Sonar reports

* fixes

* f2

* f3

* f4

* Fix accessibility and spacing issues from Sonar reports

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* Refactor: #8093 - Unexpected unknown property "user-focus"  (#8094)

* Initial plan

* Remove invalid CSS property 'user-focus' from RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Apply prettier formatting to RulerArea.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8103 - Use 'String#startsWith' method instead (#8119)

* Initial plan

* Refactor: #8103 - Use 'String#startsWith' method instead

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: Add readonly modifiers to fields only assigned in constructors (part 2) (#8146)

* Initial plan

* Add readonly modifiers to fields that are only assigned in constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8151 - Type constituents of unions and intersections should not be redundant (#8152)

* Initial plan

* Fix redundant types in unions and intersections

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8160 - Unnecessary constructors should be removed (#8161)

* Initial plan

* Refactor: Remove unnecessary empty constructors

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8162 - Make this public static property readonly (#8163)

* Initial plan

* Add readonly qualifier to public static viewName properties

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8164 - Duplicated font names should be removed  (#8165)

* Initial plan

* Remove duplicated font names in globals.css

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8156 - Promises should not be misused (#8170)

* Initial plan

* Fix promise misuse in fullscreen APIs and async event handler

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor: #8099 - Remove this redundant type alias and replace its occurrences with "any" (#8171)

* Initial plan

* Remove redundant type aliases and replace with underlying types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #4467 - Macro: Ket label should be renamed to Ket Format (#8191)

* Initial plan

* Rename Ket label to Ket Format in macromolecule editor

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7746 - System replace few spaces in monomer name to one space on monomer preview (#8192)

* Initial plan

* Fix monomer name spacing in preview tooltip by adding white-space: pre-wrap

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Also fix spacing in AmbiguousMonomerPreview ContentLine

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7421 - "Ghost image" of CHEM is white (different from "ghost image" of other monomer types) (#8196)

* Initial plan

* Fix CHEM ghost image color issue

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8067 - Do not save added or updated monomer in local storage (#8135) (#8140)

(cherry picked from commit 3474573d9e92d3a64ed305161e126b99f2a0eb76)

* #7740 - System should not allow to fill Symbol and Name fields if Type is not selected on Monomer creation wizard (#8194)

* Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #5570 - PNG and SVG exported images should be identical to how the canvas looks like in case of Chiral label  (#8266)

* fix: send render-stereo-style per settings; align PNG/SVG with canvas

* fix: replace nested ternary with if/else in getSerilizedServerOptions (renderStereoStyle) for readability

* Backmerge: #8040 – R2 attachment point is missing for vinU monomer (#8272)

* Backmerge: #7978 – Create monomer process changes atom of not related part of the molecule (#8277)

* Backmerge: #8002 – No validation message shown for minimal monomer structure in Monomer Wizard (#8280)

* Backmerge: #8070 – Existing Presets in the library disappear after adding new preset via API (#8275)

* The function moveOnBond is replaced with getBondLocator.hover() (#8298)

The functions declaration of moveOnBond and waitForElementInCanvas are removed

* #7984 autotests allow for modification of the attachment points in the monomer creation wizard part 2 (#8252)

* First draft

* f22

* f3

* f4

* * Initial plan

* Disable Symbol and Name fields when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add test to verify Symbol and Name fields are disabled when Type is not selected

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #3742 - Macro: Wrong tooltip for "minimize window" button (shows "expand window") (#8190)

* Initial plan

* Fix: Update tooltip to show 'minimize window' when expanded

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* f4

* f5

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8158 - Replace this union type with a type alias (#8159)

* Initial plan

* Refactor: Replace union types with type aliases

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused imports after type alias refactoring

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix: Remove unused BackBoneSequenceNode import

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Refactor: #8168 - Selectors should not be duplicated  (#8169)

* Initial plan

* Fix duplicate CSS/LESS selectors in globals.css and Accordion.module.less

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* feat(PO): add ReactionAutoMappingDialog page object (#8244)

- Added `ReactionAutoMappingDialog.ts` PO for reaction auto-mapping dialog.
- Introduced `constants.ts` with `AutoMapModeOption` enum.
- Removed `applyAutoMapMode` function from `index.ts`.
- Updated tests (`image-files.spec.ts`, `reaction-am-tool-veryfing-button.spec.ts`) to use PO instead of old function.
- Updated screenshots accordingly.

* Autotests: #7996 - autotests tests for expanding the snap functionality to monomer groups inside of a structure (#8238)

* - add test;
- add test file;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add test file;
- add screenshots

* - add tests for API switching from molecules mode to macromolecules;
- add screenshots

* - delete exeptions

* - add test;
- add screenshot

* #7373 - "Grabbing hand" mouse cursor is absent on grabbing monomers from the library (#8232)

* Initial plan

* Add grabbing cursor when dragging monomers from library

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Ivan Maslov <165396466+ivanmaslow@users.noreply.github.com>
Co-authored-by: Mikhail Zhirnov <62464241+Zhirnoff@users.noreply.github.com>

* Backmerge: #8000 – Monomer Wizard allows creation of monomer with Functional Group (#8279)

* #8294 - Do allow to collapse s-groups (superatom type) without name (#8297)

* Initial plan

* Disable Contract Abbreviation for s-groups without name

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Use optional chaining to safely check name property

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify empty name check using optional chaining

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7936 - Add tooltips to some attachment points in the monomer creation wizard

* Autotests: #8268 autotests continuation of attachment points editing in the monomer creation wizard (#8321)

* first

* 2

* 3

* 10

* 11

* 12

* 13

* 14

* 1111

* Final

* f2

* Autotests: #8239 - autotests tests for improving snake layout logic to include small molecules (#8320)

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add test files;
- add screenshots

* - add tests;
- add screenshots

* Backmerge: #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271) (#8324)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module (#8271)

* #8270 – Migrate to Indigo v1.37.0-rc.2 in-browser module

* Update autotests

* Update more autotests

* Skip failing tests

(cherry picked from commit b060f735c154dbb2b8c292f78c8409e6199000a7)

* fix

---------

Co-authored-by: Nikita Chistousov <nikita_chistousov@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms (#8038)

* Autotests: 8322 autotests axolabs format support (#8329)

* first

* Final

* Backmerge: #7979 – Pressing right Command key on Mac causes errors in DevTool Console (left Command works fine) (#8278)

* Backmerge: #8005 – Changing name for attachment points works wrong (#8282)

* #7932 - Add warning messages to the monomer creation wizard in case of unusual leaving group atoms  (#8343)

* fix: fix buttons logic

* fix: fix primary button logic

* #8296 - Make Create Monomer tool disableable (#8346) (#8348)

- made create-monomer functionality disableable using buttons config
- bumped ketcher to 3.9.0-rc.3

(cherry picked from commit aff299e32b9aee2dd502ca82ad4ab70e607aac9b)

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator for safer default values (#8148)

* Initial plan

* Refactor: Replace logical OR (||) with nullish coalescing (??) operator

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8214 - Refactor: Expected the Promise rejection reason to be an Error (part 1) (#8218)

* Initial plan

* Fix Promise rejection to use Error object in FileInputForm

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8215 - Refactor: Expected the Promise rejection reason to be an Error (part 2) (#8219)

* Initial plan

* Fix Promise rejections to use Error objects in remoteStructService

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #8216 - Refactor: Expected the Promise rejection reason to be an Error (part 3) (#8220)

* Initial plan

* Refactor: Wrap FileReader error event in Error object for Promise rejection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* #7997 - For non-potential-AAs the related context menu option (Mark as connection point,) should be disabled (#8349)

* fix: menu option mark as connection point disabled

* test: fix test

* fix: prevent modification list overflow in monomer preview tooltip (#8350)

* #8328 - Modification drop-down list is not ordered as required (Natural Amino Acid first, others alphabetically) (#8342)

* fix: fix Modification drop-down list

* fix: fix add-modification-type option

* fix: fix error message

* fix: add limit on the modififcations fields

* #8334 -Preview: Ketcher crashes completely when switching from Wizard mode to Macro mode

* Autotests: 8345 autotests sdf files for librarymonomer information (#8347)

* getTopBondByAttributes removal

* mapTwoAtoms update

* getBottomBondByAttributes removal

* fix

* Some functions removed

* Removing getBottomAtomByAttributes

* removing getFirstAtomCoordinatesByAttributes

* arrow and plus corrections

* removing clickOnPlus

* f

* f2

* f3

* f4

* Some clean up

* fix

* а2

* f3

* f4

* some clean up

* scu2

* f5

* f6

* f7

* draft

* draft2

* Final

* fix

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* f11

* f12

* f13

* f14

* f15

* f16

* f17

* f18

* f19

* f20

* f21

* f22

* f23

* f24

* f25

* f26

* f27

* f28

* Autotests: 8361 autotests some refactoring (#8362)

* first

* f2

* f3

* f4

* f5

* f6

* f7

* f8

* f9

* f10

* #7928 - Allow for setting of HELM alias in the monomer creation wizard (#8360)

* - added helm alias field to monomer wizard

* - added helm alias field validation

* - removed helm alias field from chems

* Autotests: #8341 - autotests tests for add ability to update monomers library api in sdf format (#8372)

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - add tests;
- add screenshots

* - update tests;
- add test files;
- delete unused 'testData.ts'

* Autotests: #7960 - autotests get rid of doubleclickonbond function and replace it with getbondlocatordblclick (#8370)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 1)

* The function doubleClickOnBond is replaced with getBondLocator.dblclick(part 2)
The function declaration of doubleClickOnBond is removed

* #8377 - Add data-topology and data-reacting-center attributes for bonds (#8378)

* Initial plan

* Add data-topology and data-reacting-center attributes for bonds

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve error handling in getBondFromMoleculeStruct with descriptive comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Improve code quality based on review feedback - simplify null checks and enhance comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#8375)

* Autotests: #7964 - add LabelEditDialog page object and update atom editing tests (#7964)

- Added new PO `LabelEditDialog.ts` for label editing modal (opened via long left click)
- Updated tests:
  - `atom-properties.spec.ts`
  - `Template-manipulations.spec.ts`
  - `right-click.spec.ts`
- Replaced direct `getByLabel` usage with `fillLabel` calls:
  - via new `LabelEditDialog` for long-click cases
  - via existing `AtomPropertiesDialog` for double-click or context-menu cases

* autotests(#7964): add longClickOnAtom and setLabel, refactor label editing tests

- Implemented longClickOnAtom helper in index.ts
- Added setLabel method in LabelEditDialog
- Updated atom-properties.spec.ts and view-only-mode.spec.ts to reuse it
- Used setOptions instead of fillLabel+apply in template-manipulations.spec.ts (per review)

* Removed no used import pressButton from is-query-structure-selected.spec.ts, because of git push failure

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im monomer wizart in popup

* fix: fix styles

* Autotests: 8376 autotests some refactoring (#8381)

* First

* f2

* f3

* f4

* f5

* f6

* #8200 - Add parameter to Editor to disable saving new monomers to local storage   (#8364)

* fix: add parameter to Editor to disable saving new monomers to local storage

* fix:make monomer library persistence opt‑in via shouldPersist

* #7971 - Update the help document (3.9.) (#8384)

* Delete documentation/images/FG_chain.gif

* Delete documentation/images/Macro-canvas-3.8..png

* Delete documentation/images/Library-Tabs-3.8..png

* Delete documentation/images/Selection-for-Creating-a-Monomer-3.7..png

* Delete documentation/images/Entering-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/Exiting-the-Monomer-Creation-Wizard-3.7..png

* Delete documentation/images/New-Monomer-Micro-3.7..png

* Delete documentation/images/New-Monomer-Macro-3.7..png

* Delete documentation/images/New-Monomer-Library-3.7..png

* Delete documentation/images/Open-Structure-Macro-2-3.0..png

* Add files via upload

* Update help.md

* Update help.md

typos

* #7553 - Dropdown for switching between Macro and Micro modes does not appear in fullscreen mode (#7892)

* #7553 fix fullscreen mode switching dropdown

* #7553 fex: implement popup fullscreen mode with proper top-layer targeting

* #7553 fix test

* fix test

* #7553 Remove ref to custom class

* #7553 Refactor

* #8337 - Preview: No limit on the number of added modification fields; new fields extend beyond the visible wizard area and shift action buttons  (#8365)

* fix: add scroll im m…
… on a bond in macro mode (epam#8636)

* fix: Delete option is available when right-clicking on a bond in macro mode

* test: update snapshots
* Initial plan

* Replace div role="button" with semantic button elements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove redundant aria-disabled attribute in favor of native disabled

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>
…rewrite JS to TS) 7 (epam#8616)

* Initial plan

* Convert TypeChoice.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add explanatory comments for type compatibility and required props

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
… this simple iteration (part 4) (epam#8620)

* Initial plan

* Refactor for loops to for-of loops in utils.js

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
…m#8622)

* Initial plan

* Mark component props as read-only using Readonly utility type

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
…rewrite JS to TS) 18 (epam#8632)

* Initial plan

* Refactor buttonlist.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix parameter naming: rename 'multipl' to 'multiple' in oneOrMore function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
…rewrite JS to TS) 19 (epam#8633)

* Initial plan

* Convert ComboBox component from JSX to TypeScript with proper prop types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - improve type safety and JSX rendering

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
…rewrite JS to TS) 20 (epam#8634)

* Initial plan

* Convert errorPopover.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
…rewrite JS to TS) 16 (epam#8630)

* Initial plan

* Refactor cliparea.jsx to TypeScript with proper prop type validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fix: Context menu remains visible after creating cyclic structure via right-click menu (epam#8601)

* epam#7326 - Preview: Delete option is unavailable when right-clicking on a bond in macro mode (epam#8636)

* fix: Delete option is available when right-clicking on a bond in macro mode

* test: update snapshots

* fix: Selection tool icon open dropdown menu as in Micro mode (epam#8621)

* epam#8612 Refactor: Prefer tag over ARIA role (part 4) (epam#8615)

* Initial plan

* Replace div role="button" with semantic button elements

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Remove redundant aria-disabled attribute in favor of native disabled

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* f1

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>

* epam#8504 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 7 (epam#8616)

* Initial plan

* Convert TypeChoice.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add explanatory comments for type compatibility and required props

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* epam#8619 Refactor: Expected a for-of loop instead of a for loop with this simple iteration (part 4) (epam#8620)

* Initial plan

* Refactor for loops to for-of loops in utils.js

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* epam#8563 Refactor: Mark the props of the component as read-only (epam#8622)

* Initial plan

* Mark component props as read-only using Readonly utility type

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* epam#8626 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 18 (epam#8632)

* Initial plan

* Refactor buttonlist.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix parameter naming: rename 'multipl' to 'multiple' in oneOrMore function

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* epam#8627 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 19 (epam#8633)

* Initial plan

* Convert ComboBox component from JSX to TypeScript with proper prop types

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback - improve type safety and JSX rendering

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* epam#8628 Refactor: Variables are missing in props validation (let's rewrite JS to TS) 20 (epam#8634)

* Initial plan

* Convert errorPopover.jsx to TypeScript with proper type definitions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Initial plan

* f1

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Kristina <kristina_kasyanovskaya@epam.com>
Co-authored-by: Alexey Girin <agirin@mail.ru>
…buttons “Yes” and “Cancel” in the “Update Sequence” window, tooltips are displayed (epam#8714)

* fix: in the “Modify RNA Builder” mode, when hovering over the buttons “Yes” and “Cancel” in the “Update Sequence” window, tooltips are displayed

* test: update test logic & add data test-id
umutzd-alt and others added 21 commits February 24, 2026 18:07
…ed within the loop body (epam#9237)

* Refactor loop structures to use while instead of for for improved readability in utils.js and v3000.js

* Refactor spacebarsplit function for improved readability and maintainability
* 9160/refactor:remove unused assignments

* 9160/refactor:remove unused assignments

* 9160/refactor:try to pass test in github

* remove ubused assignments

* fix:remove unnnessacary changes from structeditor

* fix:revert

* remove  unused assigments

* refactor:use lodash for form and structeditor
* Initial plan

* fix: reject empty monomer group template names

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fix: keep preset template updates while validating names

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* test: cover whitespace-only preset names

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fix: clarify empty preset name error text

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
…rals should not be used for promise rejection (epam#9277)

* 9276: fix promise rejection for literal usage

* normalizeError utility added

* added normalizeError utility into all necessary files
…pam#9095)

* Initial plan

* Add stereoLabel support to CoreAtom and AtomRenderer for macromolecules mode

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix magic number in positionStereoLabel method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixed size of stereolabel

* fixed displaying abs stereoflags

* fixed moving stereolabel after moving second bonds atom

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Aleksei Proskurnov <proskurn@gmail.com>
…m#9284)

* Fix empty collection access in sequence tests and sgroup action

* Fix: Always initialize `attachmentPoints` as an empty array, disregarding `attrs.attachmentPoints`.
…m#9221)

* refactor analyse dialog to remove unused class methods

* refactor: move analyseItems constant outside of Analyse component to prevent re-declaration
…e accessor (epam#9213)

* Fix EditorHistory constructor return by using static accessor

* fix: Disable `no-use-before-define` ESLint rule for the `_instance` property.

* style: format EditorHistory.update arguments for improved readability.

* refactor: improve type safety of EditorHistory singleton by adding an instance type guard.
Removed developers and QA groups from auto assign configuration.
…erations (epam#9296)

* Initial plan

* refactor: move async monomers library init out of CoreEditor constructor

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* epam#9260 - undo the changes on package-lock

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>
* Initial plan

* Add rotation and flip functionality for monomers in Macromolecules mode

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add interactive rotation handle functionality with 15° snapping

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback: extract constants, improve comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>


---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>
* Fixed flaky tests

* fixes

* f2

* Update Node.js baseline to 22 (epam#9026)

* Initial plan

* update node version references

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* epam#8999 Refactor: Polynomial regular expression used on uncontrolled data (epam#9000)

* Initial plan

* Replace regex trimRight with trimEnd

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* epam#9003 Refactor: React Router vulnerable to XSS via Open Redirects (epam#9004)

* Initial plan

* chore: update react-router to 7.13.0

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* epam#9005 Refactor: Next library has a Denial of Service with Server Components - Incomplete Fix Follow-Up (epam#9006)

* Initial plan

* chore: upgrade next/react for example-ssr

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* epam#8987 Labels for monomer natural analog category is missing if filter applied (epam#8992)

* Initial plan

* fix: always show monomer group titles in RNA accordion

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* limit natural analog titles to relevant monomer groups

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <alexey_girin@epam.com>

* epam#9011 Refactor: qs arrayLimit bypass mitigation via parent dependency updates (epam#9015)

* Initial plan

* Update qs and body-parser overrides

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Update body-parser via parent dependency

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* epam#9016 Refactor: update js-yaml dependencies to patched versions without overrides (epam#9019)

* Initial plan

* chore: override js-yaml to patched versions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* chore: bump js-yaml patch versions

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* chore: remove js-yaml overrides and update lock

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Align S-Group subtype combobox width and default option visibility (epam#8979)

* Initial plan

* Align S-Group subtype combobox width with other selects

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fix: show selected empty subtype option

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* - fixed non specified value

* - fixed unit tests

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <alexey_girin@epam.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Refactor: Potential fix for code scanning alert no. 22: Unvalidated dynamic method call (epam#9001)

* Potential fix for code scanning alert no. 22: Unvalidated dynamic method call

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Fix unvalidated dynamic method call in parseSGroup.js (epam#9002)

* Initial plan

* Fix unvalidated dynamic method call in parseSGroup.js

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Optimize security fix by moving constants outside function scope

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* epam#9022 Refactor: PostCSS line return parsing error (epam#9023)

* Initial plan

* chore: fix package.json trailing comma

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* chore: remove postcss override

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Update CI to Node.js 22.11 (epam#9037)

* epam#9032 - Flex mode icon is active after ketcher close and open again (epam#9049) (epam#9052)

* epam#9032 - Flex mode icon is active after ketcher close and open again

- added reset mode button state to default on destroy

* - updated ketcher version to 3.12.0-rc.2

(cherry picked from commit d721b77)

* epam#9047 - Leaving group atom position is incorrect for nucleotides created in monomer wizard (epam#9048) (epam#9051)

- fixed leaving group atom position for nucleotides in monomer creation wizard

(cherry picked from commit 34ad31d)

* epam#7153 - Molecule from expanded monomer disappars on switching to Macromolecules mode (epam#8989)

* fix dissapearing molecule from expanded monomer

* fixed build

* create fragment after removing s group

* fixed build

* removed redundant

* added comment

* epam#8974 autotests for ketcher 3110 bugs (epam#9031)

* add cases

* add cases and files

* update code and screenshoots

* remove step about screenshoot

* changes after review

* some changes for wariningMessageDialog

* add changes

* add changes after review

* Autotests: 8331 autotests axolabs format support (epam#8339)

* First

* second

* epam#9065 System shows natural analog category for phosphates (epam#9066)

* Initial plan

* chore: plan phosphate category fix

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fix: hide phosphate natural analogue groups

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

* f3

* revert: restore RNA phosphate grouping

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* chore: revert package-lock.json

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <alexey_girin@epam.com>

* Add fragment selection tool and rename structure selection tooltip (epam#8973)

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* Backmerge: epam#9078 - Update the help document (3.12.) (epam#9079)

* Delete documentation/images/S-Group-Properties-3.6.png

* Add files via upload

* Update help.md

* epam#9084 - Ketcher saves incorrect attachment points configuration for new nucleotides (epam#9086) (epam#9088)

(cherry picked from commit 5177c79)

* - fixed vulnerability (epam#9100)

* epam#7915 autotests enable flipping of all expanded monomers in a structure (epam#9083)

* add test cases

* add description for tests

* epam#8254 Allow for stereo-bonds (up and down) to be a bond between AA and LGA (epam#9080)

* add test cases

* add changes

* add svg format for macro

* add description for the tests

* Update the layout method

* # 8383 Introduce library searching using HELM aliases, AxoLabs aliases, and modification types (epam#9059)

* add test cases

* update screenshoots

* add description for tests

* update code and screenshot

* epam#9098 autotests alignment of sense and antisense strings in axolabs format (epam#9101)

* add cases

* add screenshots and tests

* Changed call for page to the BeforeAll fixture. Stabled some flacky tests (epam#9107)

* add cases (epam#9112)

* epam#9113 The Copolymer S-Group type should not be displayed unless there are at least two structural repeating units (SRUs) in selection (epam#9117)

* Initial plan

* Plan for copolymer s-group availability

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Restrict copolymer s-group option

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refine copolymer option checks

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify copolymer option logic

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Polish copolymer option filtering

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Tighten copolymer availability check

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Trim sgroup memo dependencies

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Simplify copolymer scheme selection

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Type annotate sgroup test helper

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Memoize schemes and count SRUs

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* epam#7492 - autotests transform isolated test execution to clear canvas test execution for undo redo actionsspects (epam#9131)

* Isolated test execution has been transformed to clear canvas test execution for undo redo actions.

* Screenshots updated

* epam#7493 Transformed isolated test execution to clear canvas test execution for right-click.spec.ts (epam#9133)

* epam#9119 add expects and change repeating code (epam#9128)

* add expects and change repeating code

* add changes for failed test

* epam#9108 Incorrect valence for nitrogen (epam#9124)

* Initial plan

* Allow nitrogen valence 5

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <alexey_girin@epam.com>

* epam#9126 Some keyboard shortcuts don't work on Macromolecules canvas (epam#9127)

* Initial plan

* Fix macromolecules hotkeys

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Adjust macromolecule hotkey tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Clarify sequence-mode hotkey comment

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Document bond hotkey options

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Refactor bond hotkey helper

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Tidy hotkey comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Revert macromolecule hotkey tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <alexey_girin@epam.com>

* refactor: reEmage and resimpleObject toggle points logic (epam#9222)

* 9151:constructor should have readonly (epam#9241)

* refactor:use nullish coeliscine (epam#9242)

* Fix attachment point sorting comparator (epam#9281)

* Fix reduce call in DistanceSnapView with initial value (epam#9268)

* test: document intentional noop helper (epam#9264)

* fix(core): avoid unused ClearTool instantiation in test (epam#9206)

* Fix dialog keyboard handler accessibility issue (epam#9200)

* fix(core): make EmptySnakeLayoutNode non-empty (epam#9265)

* epam#9227 - The return value of "useState" should be destructured and named symmetrically (epam#9228)

* Initial plan

* Fix useState asymmetric naming: rename isStuctureChecking to isStructureChecking

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* epam#9223- Redundant casts and non-null assertions should be avoided  (epam#9224)

* Initial plan

* Remove redundant TypeScript casts and non-null assertions

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* Fix type errors: properly handle false values and keep necessary cast

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* epam#9223- remove redundant type assertion for actionmenu

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* epam#9217 - React props should be read-only (epam#9219)

* Initial plan

* Make React props read-only in 5 components

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* Remove package-lock.json from commit

* Remove package-lock.json from commit

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* Restore package-lock.json to original state

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* epam#9211 - Switch cases should end with an unconditional "break" statement (epam#9212)

* Initial plan

* Initial analysis - identify switch case fall-through issues

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* Fix switch case fall-through in action/index.js and state/index.js

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* Refactor to reduce code duplication in switch cases

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* Add JSDoc and improve variable naming

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* Revert "Initial analysis - identify switch case fall-through issues"

This reverts commit 2286028.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* epam#9259 -  If statements should not be the only statement in else blocks  (epam#9261)

* Initial plan

* Refactor: Replace nested if in else block with else if in CoreAtom.ts

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* epam#9293 Autotests: Cyclic imports in autotests (epam#9294)

* Initial plan

* fix(autotests): remove circular imports in tests utilities and monomer dialog

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* refactor(autotests): eliminate remaining cyclic imports in tests

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* refactor(autotests): rollback requested files and replace delay helper calls

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixes

* f2

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <alexey_girin@epam.com>

* epam#9251 - Redundant React fragments should be removed (epam#9252)

* Initial plan

* Remove redundant React fragment in ErrorsCheck component

Co-authored-by: oguzhanduran <86467364+oguzhanduran@users.noreply.github.com>

* Remove package-lock.json changes from PR

Co-authored-by: oguzhanduran <86467364+oguzhanduran@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: oguzhanduran <86467364+oguzhanduran@users.noreply.github.com>

* epam#9236 - Ternary operators should not be nested  (epam#9247)

* Initial plan

* Refactor nested ternary operators in 4 files

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* 9236 - undo changes for package-lock

* 9236 - refactor nested arrays for period table

* 9236 - extract modification type attribute logic to reusable utility

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* 9167:fixed all branches in a conditional structure should not have exactly same implementation issue (epam#9230)

* epam#9193:Refactor:(TypeScript) Objects and classes converted or coerced t… (epam#9196)

* 9183:Refactor:(TypeScript) Objects and classes converted or coerced to strings should define

* 9183/fix:delete unnecessary  file

* 9183/refactor:fix according to copilot review comment

* fix:remove unused function

* 9279: create cross-platform script for app build and run (epam#9280)

* epam#9298: (TypeScript) Two branches in a conditional structure should not have exactly the same implementation (epam#9300)

* refactor:implement duplicate branch cleanup in 2 reported lications

* Revert "refactor:implement duplicate branch cleanup in 2 reported lications"

This reverts commit 95dabd1.

* refactor two branches same implementations

* epam#9207- Unused React typed props should be removed (epam#9214)

* 9207/fix:remove unused props

* fix:refactor accroding comments

* fix:rename current to diaog element

* epam#9195 - Refactor: Use optional chaining instead of manual null checks (epam#9201)

* Initial plan

* Refactor: Use optional chaining instead of manual null checks

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* Fix prettier formatting issues

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* Fix code review issues: correct atom lookup and improve if statement logic

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* epam#9195 fix test issues

* epam#9195 fix undo changes for package-lock

* 9195 - replace undefineds with null

* epam#9195 - replace null with undefined

* epam#9195 - replace some undefineds with null

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* epam#9238 - Refactor: (TypeScript) Non-interactive DOM elements should not have interactive ARIA roles (epam#9262)

* Enhance accessibility by adding ARIA roles and attributes to various components

* Refactor ARIA roles to improve accessibility and semantic structure in ColorPicker, Form components, and SpecialSymbolsButton

* Refactor ColorPicker to streamline ID generation for palette

* fix snapshots

* 9174: fix selector duplicated issue (epam#9302)

* epam#9255 - Spacing between inline elements should be explicit (epam#9256)

* Initial plan

* Fix ambiguous JSX whitespace in RnaPresetTabs.tsx

Co-authored-by: oguzhanduran <86467364+oguzhanduran@users.noreply.github.com>

* Use explicit JSX space expression {' '} as per lint rule

Co-authored-by: oguzhanduran <86467364+oguzhanduran@users.noreply.github.com>

* Format JSX space expression on single line as per image

Co-authored-by: oguzhanduran <86467364+oguzhanduran@users.noreply.github.com>

* Use regular space instead of {' '} JSX expression

Co-authored-by: oguzhanduran <86467364+oguzhanduran@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: oguzhanduran <86467364+oguzhanduran@users.noreply.github.com>

* 9162 used collection contents (epam#9208)

* epam#9209 - Refactor: (JavaScript) Loop counters should not be assigned within the loop body (epam#9237)

* Refactor loop structures to use while instead of for for improved readability in utils.js and v3000.js

* Refactor spacebarsplit function for improved readability and maintainability

* refactor: update according to Sonar errors (epam#9272)

* epam#9160-(TypeScript) Unused assignments should be removed (epam#9226)

* 9160/refactor:remove unused assignments

* 9160/refactor:remove unused assignments

* 9160/refactor:try to pass test in github

* remove ubused assignments

* fix:remove unnnessacary changes from structeditor

* fix:revert

* remove  unused assigments

* refactor:use lodash for form and structeditor

* epam#8187 It is possible to create preset with empty name (epam#9075)

* Initial plan

* fix: reject empty monomer group template names

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fix: keep preset template updates while validating names

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* test: cover whitespace-only preset names

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fix: clarify empty preset name error text

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* epam#9276- Literals should not be used for promise rejection #9276iterals should not be used for promise rejection  (epam#9277)

* 9276: fix promise rejection for literal usage

* normalizeError utility added

* added normalizeError utility into all necessary files

* epam#9269: add anput references to labels for iframe in examples (epam#9275)

* refactor: simplify async handling in cut and keydown event methods (epam#9305)

* Support for enhanced stereochemistry markings in macromolecules mode (epam#9095)

* Initial plan

* Add stereoLabel support to CoreAtom and AtomRenderer for macromolecules mode

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fix magic number in positionStereoLabel method

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* fixed size of stereolabel

* fixed displaying abs stereoflags

* fixed moving stereolabel after moving second bonds atom

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Aleksei Proskurnov <proskurn@gmail.com>

* epam#9282 - Empty collections should not be accessed or iterated (epam#9284)

* Fix empty collection access in sequence tests and sgroup action

* Fix: Always initialize `attachmentPoints` as an empty array, disregarding `attrs.attachmentPoints`.

* epam#9218 - Unused methods of React components should be removed (epam#9221)

* refactor analyse dialog to remove unused class methods

* refactor: move analyseItems constant outside of Analyse component to prevent re-declaration

* epam#9202 - Make EditorHistory constructor private and add getInstance accessor (epam#9213)

* Fix EditorHistory constructor return by using static accessor

* fix: Disable `no-use-before-define` ESLint rule for the `_instance` property.

* style: format EditorHistory.update arguments for improved readability.

* refactor: improve type safety of EditorHistory singleton by adding an instance type guard.

* Update auto_assign.yml to simplify assignee groups (epam#9270)

Removed developers and QA groups from auto assign configuration.

* epam#8896- fix assertion error when adding ket file to canvas (epam#9315)

* epam#9260 - Refactor: Constructors should not contain asynchronous operations  (epam#9296)

* Initial plan

* refactor: move async monomers library init out of CoreEditor constructor

Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* epam#9260 - undo the changes on package-lock

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>

* Introducing rotation of monomers in Macromolecules mode (epam#9094)

* Initial plan

* Add rotation and flip functionality for monomers in Macromolecules mode

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Add interactive rotation handle functionality with 15° snapping

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Address code review feedback: extract constants, improve comments

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>


---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>

* fixes

* f2

* f3

* f5

* f6

---------

Co-authored-by: Ieva Bendikiene <bendikiene16@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Roman Rodionov <roman_rodionov@epam.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: aproskurnov <proskurn@gmail.com>
Co-authored-by: AnnaKosol <annakosolapova24@gmail.com>
Co-authored-by: Ljubica Milovic <ljubica_milovic@epam.com>
Co-authored-by: Pavel Lukin <124054458+zefiris87@users.noreply.github.com>
Co-authored-by: Yaroslav Kovalsky <71060724+YatsekTest@users.noreply.github.com>
Co-authored-by: SergeiBakirov <sergei_bakirov@epam.com>
Co-authored-by: Yurii Danylenko <Givchik228@gmail.com>
Co-authored-by: Gulia <83670176+guliaisaeva@users.noreply.github.com>
Co-authored-by: azamatalt <108387789+azamatalt@users.noreply.github.com>
Co-authored-by: beyzaevcen <95762073+beyzaevcen@users.noreply.github.com>
Co-authored-by: oguzhanduran <86467364+oguzhanduran@users.noreply.github.com>
Co-authored-by: Yurii Danylenko <yurii_danylenko@epam.com>
Co-authored-by: umutzd-alt <umutozdemir997@outlook.com>
* epam#9328 - Migrate to Indigo v1.42.0-rc.1 in-browser module

* - updated tests
* Add files via upload

* Delete documentation/images/3_lasso_menu.png

* Delete documentation/images/Selection-tools-micro-3.13..png

* Add files via upload

* Add files via upload

* Update help.md

* Update help.md
…ixtures (epam#9326)

* Initial plan

* test: migrate clear-canvas lifecycle hooks to canvas fixtures

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* chore: finalize fixture migration validation

Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>

* Fixes

* f2

* f3

* f4

* f5

* f6

* www

* f7

* f8

* f9

* f10

* f11

* f12

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: AlexeyGirin <26869421+AlexeyGirin@users.noreply.github.com>
Co-authored-by: Alexey Girin <alexey_girin@epam.com>
* fix(macromolecules): use semantic button for favorite toggle

* refactor: replace div elements with native buttons for favorite toggles and update component snapshots.

* f1

* f2

---------

Co-authored-by: Alexey Girin <alexey_girin@epam.com>
@tonyd33
tonyd33 force-pushed the tony/update-3.14 branch 2 times, most recently from e50ace6 to 2ea7b80 Compare March 15, 2026 03:44
@tonyd33
tonyd33 force-pushed the tony/update-3.14 branch 2 times, most recently from 0d51cc8 to 4e4a53c Compare March 15, 2026 04:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.