ketcher-react 2.8.0-rc.3 → 2.8.0-rc.3-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/dist/Editor.d.ts +0 -29
- package/dist/constants.d.ts +0 -17
- package/dist/contexts/appContext.d.ts +0 -22
- package/dist/contexts/errorsContext.d.ts +0 -21
- package/dist/contexts/formContext.d.ts +0 -18
- package/dist/contexts/index.d.ts +0 -21
- package/dist/contexts/settingsContext.d.ts +0 -21
- package/dist/hooks/index.d.ts +0 -21
- package/dist/hooks/useAppContext.d.ts +0 -16
- package/dist/hooks/useFormContext.d.ts +0 -16
- package/dist/hooks/useInterval.d.ts +0 -16
- package/dist/hooks/useResizeObserver.d.ts +0 -26
- package/dist/hooks/useSettingsContext.d.ts +0 -16
- package/dist/hooks/useSubscribtionOnEvents.d.ts +0 -16
- package/dist/icons/index.d.ts +0 -16
- package/dist/index.css +0 -2
- package/dist/index.css.map +0 -1
- package/dist/index.d.ts +0 -18
- package/dist/index.js +0 -23769
- package/dist/index.js.map +0 -1
- package/dist/index.modern.js +0 -23706
- package/dist/index.modern.js.map +0 -1
- package/dist/script/api.d.ts +0 -19
- package/dist/script/builders/index.d.ts +0 -16
- package/dist/script/builders/ketcher/ButtonConfig.d.ts +0 -18
- package/dist/script/builders/ketcher/ButtonName.d.ts +0 -16
- package/dist/script/builders/ketcher/ButtonsConfig.d.ts +0 -20
- package/dist/script/builders/ketcher/KetcherBuilder.d.ts +0 -29
- package/dist/script/builders/ketcher/index.d.ts +0 -17
- package/dist/script/editor/Editor.d.ts +0 -96
- package/dist/script/editor/highlighter.d.ts +0 -32
- package/dist/script/editor/index.d.ts +0 -18
- package/dist/script/editor/shared/closest.d.ts +0 -25
- package/dist/script/editor/shared/utils.d.ts +0 -19
- package/dist/script/editor/tool/apoint.d.ts +0 -23
- package/dist/script/editor/tool/atom.d.ts +0 -31
- package/dist/script/editor/tool/attach.d.ts +0 -24
- package/dist/script/editor/tool/bond.d.ts +0 -32
- package/dist/script/editor/tool/chain.d.ts +0 -27
- package/dist/script/editor/tool/charge.d.ts +0 -24
- package/dist/script/editor/tool/enhanced-stereo.d.ts +0 -24
- package/dist/script/editor/tool/eraser.d.ts +0 -31
- package/dist/script/editor/tool/hand.d.ts +0 -30
- package/dist/script/editor/tool/helper/lasso.d.ts +0 -59
- package/dist/script/editor/tool/helper/locate.d.ts +0 -40
- package/dist/script/editor/tool/index.d.ts +0 -47
- package/dist/script/editor/tool/paste.d.ts +0 -29
- package/dist/script/editor/tool/reactionarrow.d.ts +0 -27
- package/dist/script/editor/tool/reactionmap.d.ts +0 -28
- package/dist/script/editor/tool/reactionplus.d.ts +0 -26
- package/dist/script/editor/tool/reactionunmap.d.ts +0 -23
- package/dist/script/editor/tool/rgroupatom.d.ts +0 -23
- package/dist/script/editor/tool/rgroupfragment.d.ts +0 -24
- package/dist/script/editor/tool/rotate.d.ts +0 -28
- package/dist/script/editor/tool/select.d.ts +0 -38
- package/dist/script/editor/tool/sgroup.d.ts +0 -31
- package/dist/script/editor/tool/simpleobject.d.ts +0 -26
- package/dist/script/editor/tool/template.d.ts +0 -30
- package/dist/script/editor/tool/text.d.ts +0 -26
- package/dist/script/editor/utils/customOnChangeHandler.d.ts +0 -16
- package/dist/script/editor/utils/elementOffset.d.ts +0 -17
- package/dist/script/editor/utils/index.d.ts +0 -17
- package/dist/script/index.d.ts +0 -27
- package/dist/script/ui/App/App.container.d.ts +0 -20
- package/dist/script/ui/App/App.d.ts +0 -23
- package/dist/script/ui/App/AppHidden/AppHidden.container.d.ts +0 -19
- package/dist/script/ui/App/AppHidden/AppHidden.d.ts +0 -23
- package/dist/script/ui/App/AppHidden/index.d.ts +0 -16
- package/dist/script/ui/App/index.d.ts +0 -16
- package/dist/script/ui/App/initApp.d.ts +0 -18
- package/dist/script/ui/Portal/Portal.d.ts +0 -37
- package/dist/script/ui/Portal/index.d.ts +0 -16
- package/dist/script/ui/action/action.types.d.ts +0 -44
- package/dist/script/ui/action/atoms.d.ts +0 -40
- package/dist/script/ui/action/copyAs.d.ts +0 -1
- package/dist/script/ui/action/copyImageToClipboard.d.ts +0 -2
- package/dist/script/ui/action/debug.d.ts +0 -13
- package/dist/script/ui/action/flips.d.ts +0 -1
- package/dist/script/ui/action/fullscreen.d.ts +0 -23
- package/dist/script/ui/action/functionalGroups.d.ts +0 -31
- package/dist/script/ui/action/help.d.ts +0 -8
- package/dist/script/ui/action/index.d.ts +0 -650
- package/dist/script/ui/action/isHidden.d.ts +0 -16
- package/dist/script/ui/action/server.d.ts +0 -117
- package/dist/script/ui/action/templates.d.ts +0 -13
- package/dist/script/ui/action/tools.d.ts +0 -358
- package/dist/script/ui/action/zoom.d.ts +0 -25
- package/dist/script/ui/component/ContextMenu/ContextMenu.d.ts +0 -3
- package/dist/script/ui/component/actionmenu.d.ts +0 -9
- package/dist/script/ui/component/cliparea/cliparea.d.ts +0 -20
- package/dist/script/ui/component/form/MeasureInput/measure-input.d.ts +0 -8
- package/dist/script/ui/component/form/Select/Select.d.ts +0 -30
- package/dist/script/ui/component/form/Select/Select.test.d.ts +0 -1
- package/dist/script/ui/component/form/Select/index.d.ts +0 -17
- package/dist/script/ui/component/form/buttonlist.d.ts +0 -9
- package/dist/script/ui/component/form/colorPicker/ColorPicker.d.ts +0 -28
- package/dist/script/ui/component/form/colorPicker/ColorPicker.test.d.ts +0 -1
- package/dist/script/ui/component/form/combobox/combobox.d.ts +0 -12
- package/dist/script/ui/component/form/form/errorPopover.d.ts +0 -5
- package/dist/script/ui/component/form/form/form.d.ts +0 -25
- package/dist/script/ui/component/form/input.d.ts +0 -43
- package/dist/script/ui/component/form/select-checkbox.d.ts +0 -5
- package/dist/script/ui/component/form/select-list.d.ts +0 -26
- package/dist/script/ui/component/form/systemfonts.d.ts +0 -2
- package/dist/script/ui/component/structrender.d.ts +0 -33
- package/dist/script/ui/component/view/Atom/Atom.d.ts +0 -7
- package/dist/script/ui/component/view/Atom/index.d.ts +0 -16
- package/dist/script/ui/component/view/Tabs/Tabs.d.ts +0 -9
- package/dist/script/ui/component/view/Tabs/index.d.ts +0 -16
- package/dist/script/ui/component/view/icon.d.ts +0 -5
- package/dist/script/ui/component/view/openbutton.d.ts +0 -9
- package/dist/script/ui/component/view/savebutton.d.ts +0 -32
- package/dist/script/ui/data/convert/keynorm.d.ts +0 -6
- package/dist/script/ui/data/convert/structConverter.d.ts +0 -17
- package/dist/script/ui/data/convert/structconv.d.ts +0 -24
- package/dist/script/ui/data/schema/options-schema.d.ts +0 -26
- package/dist/script/ui/data/schema/schema-helper.d.ts +0 -2
- package/dist/script/ui/data/schema/sdata-schema.d.ts +0 -58
- package/dist/script/ui/data/schema/struct-schema.d.ts +0 -301
- package/dist/script/ui/data/templates.d.ts +0 -2
- package/dist/script/ui/dialog/index.d.ts +0 -17
- package/dist/script/ui/dialog/template/EmptySearchResult.d.ts +0 -20
- package/dist/script/ui/dialog/template/TemplateDialog.d.ts +0 -43
- package/dist/script/ui/dialog/template/TemplateTable.d.ts +0 -39
- package/dist/script/ui/dialog/template/template-attach.d.ts +0 -28
- package/dist/script/ui/dialog/template/useSaltsAndSolvets.d.ts +0 -2
- package/dist/script/ui/dialog/toolbox/enhancedStereo/enhancedStereo.d.ts +0 -44
- package/dist/script/ui/dialog/toolbox/labeledit.d.ts +0 -3
- package/dist/script/ui/dialog/toolbox/rgroup/rgroup.d.ts +0 -15
- package/dist/script/ui/dialog/toolbox/sdata.d.ts +0 -19
- package/dist/script/ui/dialog/toolbox/sgroup.d.ts +0 -9
- package/dist/script/ui/index.d.ts +0 -16
- package/dist/script/ui/state/action/index.d.ts +0 -7
- package/dist/script/ui/state/constants.d.ts +0 -7
- package/dist/script/ui/state/editor/index.d.ts +0 -27
- package/dist/script/ui/state/functionalGroups/index.d.ts +0 -25
- package/dist/script/ui/state/functionalGroups/selectors/index.d.ts +0 -18
- package/dist/script/ui/state/handleHotkeysOverAtom.d.ts +0 -7
- package/dist/script/ui/state/hotkeys.d.ts +0 -23
- package/dist/script/ui/state/index.d.ts +0 -6
- package/dist/script/ui/state/modal/atoms.d.ts +0 -13
- package/dist/script/ui/state/modal/form.d.ts +0 -164
- package/dist/script/ui/state/modal/index.d.ts +0 -3
- package/dist/script/ui/state/modal/sdata.d.ts +0 -16
- package/dist/script/ui/state/options/index.d.ts +0 -68
- package/dist/script/ui/state/request/index.d.ts +0 -22
- package/dist/script/ui/state/request/reducer.test.d.ts +0 -16
- package/dist/script/ui/state/request/request.types.d.ts +0 -27
- package/dist/script/ui/state/saltsAndSolvents/index.d.ts +0 -23
- package/dist/script/ui/state/saltsAndSolvents/selectors/index.d.ts +0 -16
- package/dist/script/ui/state/server/index.d.ts +0 -7
- package/dist/script/ui/state/shared.d.ts +0 -19
- package/dist/script/ui/state/templates/index.d.ts +0 -77
- package/dist/script/ui/state/templates/init-lib.d.ts +0 -8
- package/dist/script/ui/state/toolbar/index.d.ts +0 -33
- package/dist/script/ui/storage-ext.d.ts +0 -9
- package/dist/script/ui/utils/fileOpener.d.ts +0 -16
- package/dist/script/ui/utils/index.d.ts +0 -7
- package/dist/script/ui/utils/renderStruct.d.ts +0 -9
- package/dist/script/ui/utils/settingsManager.d.ts +0 -25
- package/dist/script/ui/views/AppClipArea.d.ts +0 -18
- package/dist/script/ui/views/Editor.d.ts +0 -3
- package/dist/script/ui/views/components/ContextMenu/ContextMenu.d.ts +0 -20
- package/dist/script/ui/views/components/ContextMenu/ContextMenuTrigger.d.ts +0 -18
- package/dist/script/ui/views/components/ContextMenu/contextMenu.types.d.ts +0 -8
- package/dist/script/ui/views/components/ContextMenu/index.d.ts +0 -2
- package/dist/script/ui/views/components/ContextMenu/items/AtomBatchOperations.d.ts +0 -20
- package/dist/script/ui/views/components/ContextMenu/items/AtomSingleOperations.d.ts +0 -19
- package/dist/script/ui/views/components/ContextMenu/items/BatchDelete.d.ts +0 -3
- package/dist/script/ui/views/components/ContextMenu/items/BondBatchOperations.d.ts +0 -20
- package/dist/script/ui/views/components/ContextMenu/items/BondSingleOperations.d.ts +0 -19
- package/dist/script/ui/views/components/ContextMenu/items/utils.d.ts +0 -27
- package/dist/script/ui/views/components/Cursor.d.ts +0 -6
- package/dist/script/ui/views/components/Dialog/Dialog.d.ts +0 -44
- package/dist/script/ui/views/components/Dialog/index.d.ts +0 -16
- package/dist/script/ui/views/components/Spinner/LoadingCircles.d.ts +0 -17
- package/dist/script/ui/views/components/Spinner/index.d.ts +0 -16
- package/dist/script/ui/views/components/StructEditor/InfoPanel.d.ts +0 -29
- package/dist/script/ui/views/components/StructEditor/StructEditor.d.ts +0 -19
- package/dist/script/ui/views/components/StructEditor/index.d.ts +0 -16
- package/dist/script/ui/views/components/index.d.ts +0 -19
- package/dist/script/ui/views/modal/Modal.container.d.ts +0 -19
- package/dist/script/ui/views/modal/Modal.d.ts +0 -28
- package/dist/script/ui/views/modal/components/Confirm/Confirm.d.ts +0 -7
- package/dist/script/ui/views/modal/components/Confirm/index.d.ts +0 -1
- package/dist/script/ui/views/modal/components/ExtendedTable/ExtendedTable.d.ts +0 -2
- package/dist/script/ui/views/modal/components/ExtendedTable/components/GenericGroups/BoxWithLines.d.ts +0 -18
- package/dist/script/ui/views/modal/components/ExtendedTable/components/GenericGroups/GenGroup.d.ts +0 -24
- package/dist/script/ui/views/modal/components/ExtendedTable/components/GenericGroups/GenSet.d.ts +0 -26
- package/dist/script/ui/views/modal/components/ExtendedTable/components/GenericGroups/GenericGroups.d.ts +0 -22
- package/dist/script/ui/views/modal/components/ExtendedTable/components/GenericGroups/index.d.ts +0 -27
- package/dist/script/ui/views/modal/components/ExtendedTable/helpers.d.ts +0 -1
- package/dist/script/ui/views/modal/components/ExtendedTable/index.d.ts +0 -1
- package/dist/script/ui/views/modal/components/PeriodTable/PeriodTable.d.ts +0 -37
- package/dist/script/ui/views/modal/components/PeriodTable/components/AtomInfo/AtomInfo.d.ts +0 -5
- package/dist/script/ui/views/modal/components/PeriodTable/components/AtomInfo/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/PeriodTable/components/ElementsTable/ElementsTable.d.ts +0 -9
- package/dist/script/ui/views/modal/components/PeriodTable/components/ElementsTable/components/Header.d.ts +0 -2
- package/dist/script/ui/views/modal/components/PeriodTable/components/ElementsTable/components/MainRow.d.ts +0 -11
- package/dist/script/ui/views/modal/components/PeriodTable/components/ElementsTable/components/OutinerRow.d.ts +0 -10
- package/dist/script/ui/views/modal/components/PeriodTable/components/ElementsTable/components/index.d.ts +0 -19
- package/dist/script/ui/views/modal/components/PeriodTable/components/ElementsTable/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/PeriodTable/components/TypeChoice/TypeChoice.d.ts +0 -6
- package/dist/script/ui/views/modal/components/PeriodTable/components/TypeChoice/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/PeriodTable/components/index.d.ts +0 -20
- package/dist/script/ui/views/modal/components/PeriodTable/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/Text/FontControl/FontControl.d.ts +0 -22
- package/dist/script/ui/views/modal/components/Text/FontControl/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/Text/SpecialSymbols/SpecialSymbolsButton.d.ts +0 -22
- package/dist/script/ui/views/modal/components/Text/SpecialSymbolsList/SpecialSymbolsList.d.ts +0 -20
- package/dist/script/ui/views/modal/components/Text/Text.d.ts +0 -26
- package/dist/script/ui/views/modal/components/Text/TextButton/TextButton.d.ts +0 -30
- package/dist/script/ui/views/modal/components/Text/TextButton/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/Text/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/document/Open/Open.container.d.ts +0 -26
- package/dist/script/ui/views/modal/components/document/Open/Open.d.ts +0 -29
- package/dist/script/ui/views/modal/components/document/Open/components/AnalyzingFile.d.ts +0 -20
- package/dist/script/ui/views/modal/components/document/Open/components/DialogActionButton.d.ts +0 -25
- package/dist/script/ui/views/modal/components/document/Open/components/FileDrop.d.ts +0 -26
- package/dist/script/ui/views/modal/components/document/Open/components/OpenOptions.d.ts +0 -24
- package/dist/script/ui/views/modal/components/document/Open/components/TextEditor.d.ts +0 -22
- package/dist/script/ui/views/modal/components/document/Open/components/ViewSwitcher.d.ts +0 -31
- package/dist/script/ui/views/modal/components/document/Open/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/document/Save/Save.d.ts +0 -44
- package/dist/script/ui/views/modal/components/document/Save/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/document/index.d.ts +0 -18
- package/dist/script/ui/views/modal/components/meta/About/About.d.ts +0 -3
- package/dist/script/ui/views/modal/components/meta/About/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/meta/Settings/Accordion/Accordion.d.ts +0 -22
- package/dist/script/ui/views/modal/components/meta/Settings/Accordion/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/meta/Settings/Settings.d.ts +0 -38
- package/dist/script/ui/views/modal/components/meta/Settings/fieldGroups.d.ts +0 -41
- package/dist/script/ui/views/modal/components/meta/Settings/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/meta/index.d.ts +0 -18
- package/dist/script/ui/views/modal/components/process/Analyse/Analyse.d.ts +0 -10
- package/dist/script/ui/views/modal/components/process/Analyse/components/FormulaInput/FormulaInput.d.ts +0 -5
- package/dist/script/ui/views/modal/components/process/Analyse/components/FormulaInput/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/process/Analyse/components/FrozenInput/FrozenInput.d.ts +0 -19
- package/dist/script/ui/views/modal/components/process/Analyse/components/FrozenInput/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/process/Analyse/components/index.d.ts +0 -18
- package/dist/script/ui/views/modal/components/process/Analyse/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/process/Check/Check.d.ts +0 -3
- package/dist/script/ui/views/modal/components/process/Check/components/ErrorsCheck.d.ts +0 -17
- package/dist/script/ui/views/modal/components/process/Check/components/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/process/Check/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/process/Miew/Miew.d.ts +0 -31
- package/dist/script/ui/views/modal/components/process/Miew/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/process/Recognize/Recognize.d.ts +0 -3
- package/dist/script/ui/views/modal/components/process/Recognize/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/process/index.d.ts +0 -20
- package/dist/script/ui/views/modal/components/toolbox/Atom/Atom.container.d.ts +0 -24
- package/dist/script/ui/views/modal/components/toolbox/Atom/Atom.d.ts +0 -38
- package/dist/script/ui/views/modal/components/toolbox/Atom/ElementNumber/ElementNumber.d.ts +0 -22
- package/dist/script/ui/views/modal/components/toolbox/Atom/ElementNumber/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/toolbox/Atom/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/toolbox/Attach/Attach.container.d.ts +0 -18
- package/dist/script/ui/views/modal/components/toolbox/Attach/Attach.d.ts +0 -25
- package/dist/script/ui/views/modal/components/toolbox/Attach/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/toolbox/Automap/Automap.container.d.ts +0 -19
- package/dist/script/ui/views/modal/components/toolbox/Automap/Automap.d.ts +0 -33
- package/dist/script/ui/views/modal/components/toolbox/Automap/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/toolbox/Bond/Bond.container.d.ts +0 -18
- package/dist/script/ui/views/modal/components/toolbox/Bond/Bond.d.ts +0 -26
- package/dist/script/ui/views/modal/components/toolbox/Bond/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/toolbox/FG/RemoveFG.d.ts +0 -24
- package/dist/script/ui/views/modal/components/toolbox/RgroupLogic/RgroupLogic.container.d.ts +0 -18
- package/dist/script/ui/views/modal/components/toolbox/RgroupLogic/RgroupLogic.d.ts +0 -30
- package/dist/script/ui/views/modal/components/toolbox/RgroupLogic/components/IfThenSelect/IfThenSelect.d.ts +0 -20
- package/dist/script/ui/views/modal/components/toolbox/RgroupLogic/components/IfThenSelect/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/toolbox/RgroupLogic/components/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/toolbox/RgroupLogic/index.d.ts +0 -16
- package/dist/script/ui/views/modal/components/toolbox/index.d.ts +0 -21
- package/dist/script/ui/views/modal/index.d.ts +0 -16
- package/dist/script/ui/views/modal/mediaSizes.d.ts +0 -20
- package/dist/script/ui/views/modal/modal.types.d.ts +0 -28
- package/dist/script/ui/views/toolbars/ArrowScroll/ArrowScroll.d.ts +0 -24
- package/dist/script/ui/views/toolbars/ArrowScroll/index.d.ts +0 -2
- package/dist/script/ui/views/toolbars/BottomToolbar/BottomToolbar.container.d.ts +0 -20
- package/dist/script/ui/views/toolbars/BottomToolbar/BottomToolbar.d.ts +0 -29
- package/dist/script/ui/views/toolbars/BottomToolbar/TemplatesList/TemplatesList.d.ts +0 -34
- package/dist/script/ui/views/toolbars/BottomToolbar/TemplatesList/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/BottomToolbar/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/LeftToolbar/Bond/Bond.d.ts +0 -25
- package/dist/script/ui/views/toolbars/LeftToolbar/Bond/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/LeftToolbar/Bond/options.d.ts +0 -24
- package/dist/script/ui/views/toolbars/LeftToolbar/LeftToolbar.container.d.ts +0 -19
- package/dist/script/ui/views/toolbars/LeftToolbar/LeftToolbar.d.ts +0 -25
- package/dist/script/ui/views/toolbars/LeftToolbar/RGroup/RGroup.d.ts +0 -25
- package/dist/script/ui/views/toolbars/LeftToolbar/RGroup/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/LeftToolbar/Shape/Shape.d.ts +0 -25
- package/dist/script/ui/views/toolbars/LeftToolbar/Shape/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/LeftToolbar/Transform/Transform.d.ts +0 -25
- package/dist/script/ui/views/toolbars/LeftToolbar/Transform/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/LeftToolbar/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/LeftToolbar/leftToolbarOptions.d.ts +0 -9
- package/dist/script/ui/views/toolbars/RightToolbar/AtomsList/AtomsList.d.ts +0 -32
- package/dist/script/ui/views/toolbars/RightToolbar/AtomsList/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/RightToolbar/RightToolbar.container.d.ts +0 -21
- package/dist/script/ui/views/toolbars/RightToolbar/RightToolbar.d.ts +0 -30
- package/dist/script/ui/views/toolbars/RightToolbar/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/ActionButton/ActionButton.d.ts +0 -36
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/ActionButton/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/ToolbarGroupItem.d.ts +0 -36
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/ToolbarMultiToolItem.d.ts +0 -41
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/usePortalOpening.d.ts +0 -19
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/usePortalStyle.d.ts +0 -19
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/variants/DefaultMultiTool/DefaultMultiTool.d.ts +0 -23
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/variants/DefaultMultiTool/index.d.ts +0 -18
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/variants/GroupedMultiTool/GroupedMultiTool.d.ts +0 -23
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/variants/GroupedMultiTool/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/variants/chooseMultiTool.d.ts +0 -18
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/variants/variants.types.d.ts +0 -35
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/utils/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/utils/makeItems.d.ts +0 -18
- package/dist/script/ui/views/toolbars/TopToolbar/ClipboardControls.d.ts +0 -31
- package/dist/script/ui/views/toolbars/TopToolbar/Divider.d.ts +0 -17
- package/dist/script/ui/views/toolbars/TopToolbar/ElementWithDropdown.d.ts +0 -23
- package/dist/script/ui/views/toolbars/TopToolbar/ExternalFuncControls.d.ts +0 -35
- package/dist/script/ui/views/toolbars/TopToolbar/FileControls.d.ts +0 -26
- package/dist/script/ui/views/toolbars/TopToolbar/IconButton.d.ts +0 -26
- package/dist/script/ui/views/toolbars/TopToolbar/ScaleTransformer.d.ts +0 -24
- package/dist/script/ui/views/toolbars/TopToolbar/SystemControls.d.ts +0 -28
- package/dist/script/ui/views/toolbars/TopToolbar/TopToolbar.container.d.ts +0 -18
- package/dist/script/ui/views/toolbars/TopToolbar/TopToolbar.d.ts +0 -55
- package/dist/script/ui/views/toolbars/TopToolbar/UndoRedo.d.ts +0 -27
- package/dist/script/ui/views/toolbars/TopToolbar/ZoomControls.d.ts +0 -29
- package/dist/script/ui/views/toolbars/TopToolbar/ZoomInput.d.ts +0 -26
- package/dist/script/ui/views/toolbars/TopToolbar/ZoomList.d.ts +0 -23
- package/dist/script/ui/views/toolbars/TopToolbar/ZoomSlider.d.ts +0 -22
- package/dist/script/ui/views/toolbars/TopToolbar/index.d.ts +0 -16
- package/dist/script/ui/views/toolbars/index.d.ts +0 -19
- package/dist/script/ui/views/toolbars/mediaSizes.d.ts +0 -23
- package/dist/script/ui/views/toolbars/shortcutStr.d.ts +0 -1
- package/dist/script/ui/views/toolbars/toolbar.types.d.ts +0 -32
package/dist/index.modern.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/script/api.ts","../src/contexts/appContext.tsx","../src/contexts/errorsContext.tsx","../src/contexts/settingsContext.tsx","../src/contexts/formContext.tsx","../src/script/ui/action/atoms.js","../src/script/ui/action/copyAs.js","../src/script/ui/action/copyImageToClipboard.js","../src/script/ui/action/isHidden.ts","../src/script/ui/action/debug.js","../src/script/ui/component/cliparea/cliparea.jsx","../src/script/ui/data/schema/options-schema.ts","../src/script/ui/storage-ext.js","../src/script/ui/state/options/index.js","../src/script/ui/data/schema/schema-helper.js","../src/script/ui/data/schema/sdata-schema.js","../src/script/ui/state/modal/sdata.js","../src/script/ui/state/modal/form.js","../src/script/ui/state/request/request.types.ts","../src/script/ui/state/request/index.ts","../src/script/ui/state/constants.js","../src/script/ui/data/schema/struct-schema.js","../src/script/ui/data/convert/structconv.js","../src/script/ui/action/flips.ts","../src/script/ui/action/tools.js","../src/constants.ts","../src/script/ui/utils/settingsManager.ts","../src/script/ui/state/shared.ts","../src/script/ui/state/server/index.js","../src/script/ui/action/server.js","../src/script/ui/data/templates.js","../src/script/ui/action/templates.js","../src/script/ui/action/zoom.js","../src/script/ui/action/help.js","../src/script/ui/action/functionalGroups.ts","../src/script/ui/action/fullscreen.ts","../src/script/ui/action/index.js","../src/icons/index.tsx","../src/script/ui/component/view/icon.jsx","../src/script/ui/views/toolbars/shortcutStr.ts","../src/script/ui/views/toolbars/ToolbarGroupItem/ActionButton/ActionButton.tsx","../src/script/ui/Portal/Portal.tsx","../src/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/variants/DefaultMultiTool/DefaultMultiTool.tsx","../src/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/variants/GroupedMultiTool/GroupedMultiTool.tsx","../src/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/variants/chooseMultiTool.ts","../src/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/usePortalOpening.ts","../src/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/usePortalStyle.ts","../src/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/ToolbarMultiToolItem.tsx","../src/script/ui/views/toolbars/ToolbarGroupItem/ToolbarGroupItem.tsx","../src/script/ui/views/toolbars/BottomToolbar/TemplatesList/TemplatesList.tsx","../src/script/ui/views/toolbars/BottomToolbar/BottomToolbar.tsx","../src/script/ui/state/templates/init-lib.js","../src/script/ui/state/modal/index.js","../src/script/ui/state/templates/index.js","../src/script/ui/state/action/index.js","../src/script/ui/state/functionalGroups/index.ts","../src/script/ui/utils/renderStruct.ts","../src/script/ui/utils/fileOpener.js","../src/script/ui/utils/index.ts","../src/script/ui/state/saltsAndSolvents/index.ts","../src/script/ui/state/toolbar/index.js","../src/script/ui/state/index.js","../src/script/ui/views/toolbars/BottomToolbar/BottomToolbar.container.ts","../src/script/ui/views/toolbars/ToolbarGroupItem/utils/makeItems.ts","../src/script/ui/views/toolbars/LeftToolbar/Bond/options.ts","../src/script/ui/views/toolbars/LeftToolbar/leftToolbarOptions.ts","../src/hooks/useSettingsContext.ts","../src/hooks/useResizeObserver.ts","../src/hooks/useFormContext.tsx","../src/hooks/useAppContext.ts","../src/hooks/useInterval.ts","../src/hooks/useSubscribtionOnEvents.ts","../src/script/ui/views/toolbars/ArrowScroll/ArrowScroll.tsx","../src/script/ui/views/toolbars/mediaSizes.ts","../src/script/ui/views/toolbars/LeftToolbar/Bond/Bond.tsx","../src/script/ui/views/toolbars/LeftToolbar/RGroup/RGroup.tsx","../src/script/ui/views/toolbars/LeftToolbar/Shape/Shape.tsx","../src/script/ui/views/toolbars/LeftToolbar/Transform/Transform.tsx","../src/script/ui/views/toolbars/LeftToolbar/LeftToolbar.tsx","../src/script/ui/views/toolbars/LeftToolbar/LeftToolbar.container.ts","../src/script/ui/component/view/Atom/Atom.jsx","../../../node_modules/color-name/index.js","../../../node_modules/color-parse/index.mjs","../../../node_modules/color-alpha/index.mjs","../src/script/ui/views/toolbars/RightToolbar/AtomsList/AtomsList.tsx","../src/script/ui/views/toolbars/RightToolbar/RightToolbar.tsx","../src/script/ui/views/toolbars/RightToolbar/RightToolbar.container.ts","../src/script/ui/views/toolbars/TopToolbar/IconButton.tsx","../src/script/ui/views/toolbars/TopToolbar/FileControls.tsx","../src/script/ui/views/toolbars/TopToolbar/ElementWithDropdown.tsx","../src/script/ui/views/toolbars/TopToolbar/ClipboardControls.tsx","../src/script/ui/views/toolbars/TopToolbar/Divider.tsx","../src/script/ui/views/toolbars/TopToolbar/UndoRedo.tsx","../src/script/ui/views/toolbars/TopToolbar/ZoomInput.tsx","../src/script/ui/views/toolbars/TopToolbar/ZoomControls.tsx","../src/script/ui/views/toolbars/TopToolbar/SystemControls.tsx","../src/script/ui/views/toolbars/TopToolbar/ExternalFuncControls.tsx","../src/script/ui/views/toolbars/TopToolbar/TopToolbar.tsx","../src/script/ui/views/toolbars/TopToolbar/TopToolbar.container.ts","../src/script/ui/data/convert/keynorm.js","../src/script/editor/tool/apoint.ts","../src/script/editor/shared/utils.js","../src/script/editor/tool/atom.ts","../src/script/editor/tool/attach.ts","../src/script/editor/tool/bond.ts","../src/script/editor/tool/chain.ts","../src/script/editor/tool/charge.ts","../src/script/editor/tool/enhanced-stereo.ts","../src/script/editor/tool/helper/locate.ts","../src/script/editor/tool/helper/lasso.ts","../src/script/editor/tool/sgroup.ts","../src/script/ui/state/modal/atoms.ts","../src/script/editor/tool/select.ts","../src/script/editor/tool/eraser.ts","../src/script/editor/tool/hand.ts","../src/script/editor/tool/paste.ts","../src/script/editor/tool/rgroupatom.ts","../src/script/editor/tool/rgroupfragment.ts","../src/script/editor/tool/reactionarrow.ts","../src/script/editor/tool/reactionmap.ts","../src/script/editor/tool/reactionplus.ts","../src/script/editor/tool/reactionunmap.ts","../src/script/editor/tool/rotate.ts","../src/script/editor/tool/simpleobject.ts","../src/script/editor/tool/template.ts","../src/script/editor/tool/text.ts","../src/script/editor/tool/index.js","../src/script/ui/state/handleHotkeysOverAtom.ts","../src/script/ui/state/hotkeys.ts","../src/script/ui/views/AppClipArea.tsx","../src/script/ui/App/AppHidden/AppHidden.tsx","../src/script/ui/App/AppHidden/AppHidden.container.ts","../src/script/ui/views/modal/mediaSizes.ts","../src/script/ui/views/components/Dialog/Dialog.tsx","../src/script/ui/views/components/Spinner/LoadingCircles.tsx","../src/script/editor/shared/closest.js","../src/script/editor/utils/customOnChangeHandler.ts","../src/script/editor/highlighter.ts","../src/script/editor/Editor.ts","../src/script/ui/component/ContextMenu/ContextMenu.tsx","../src/script/ui/views/components/Cursor.jsx","../src/script/ui/views/components/ContextMenu/items/utils.ts","../src/script/ui/views/components/ContextMenu/items/AtomBatchOperations.tsx","../src/script/ui/views/components/ContextMenu/items/AtomSingleOperations.tsx","../src/script/ui/views/components/ContextMenu/items/BatchDelete.tsx","../src/script/ui/views/components/ContextMenu/items/BondBatchOperations.tsx","../src/script/ui/views/components/ContextMenu/items/BondSingleOperations.tsx","../src/script/ui/views/components/ContextMenu/ContextMenu.tsx","../src/script/ui/views/components/ContextMenu/ContextMenuTrigger.tsx","../src/script/ui/component/structrender.tsx","../src/script/ui/state/functionalGroups/selectors/index.ts","../src/script/ui/views/components/StructEditor/InfoPanel.tsx","../src/script/ui/views/components/StructEditor/StructEditor.jsx","../src/script/ui/views/modal/components/meta/About/About.jsx","../src/script/ui/component/form/form/errorPopover.jsx","../src/script/ui/component/form/input.tsx","../src/script/ui/component/form/Select/Select.tsx","../src/script/ui/component/form/form/form.jsx","../src/script/ui/component/form/colorPicker/ColorPicker.tsx","../src/script/ui/component/form/MeasureInput/measure-input.jsx","../src/script/ui/component/view/openbutton.jsx","../src/script/ui/component/view/savebutton.tsx","../src/script/ui/views/modal/components/meta/Settings/Accordion/Accordion.tsx","../src/script/ui/component/form/systemfonts.jsx","../src/script/ui/views/modal/components/meta/Settings/fieldGroups.js","../src/script/ui/views/modal/components/meta/Settings/Settings.tsx","../src/script/ui/views/modal/components/process/Check/components/ErrorsCheck.jsx","../src/script/ui/views/modal/components/process/Check/Check.jsx","../src/script/ui/views/modal/components/process/Analyse/components/FormulaInput/FormulaInput.jsx","../src/script/ui/views/modal/components/process/Analyse/components/FrozenInput/FrozenInput.jsx","../src/script/ui/views/modal/components/process/Analyse/Analyse.jsx","../src/script/ui/views/modal/components/document/Open/components/DialogActionButton.tsx","../src/script/ui/views/modal/components/process/Recognize/Recognize.jsx","../src/script/ui/views/modal/components/process/Miew/Miew.tsx","../src/script/ui/views/modal/components/toolbox/Atom/ElementNumber/ElementNumber.tsx","../src/script/ui/views/modal/components/toolbox/Atom/Atom.tsx","../src/script/ui/views/modal/components/toolbox/Atom/Atom.container.ts","../src/script/ui/views/modal/components/toolbox/Attach/Attach.tsx","../src/script/ui/views/modal/components/toolbox/Attach/Attach.container.ts","../src/script/ui/views/modal/components/toolbox/Automap/Automap.tsx","../src/script/ui/views/modal/components/toolbox/Automap/Automap.container.ts","../src/script/ui/views/modal/components/toolbox/Bond/Bond.tsx","../src/script/ui/views/modal/components/toolbox/Bond/Bond.container.ts","../src/script/ui/views/modal/components/toolbox/RgroupLogic/components/IfThenSelect/IfThenSelect.tsx","../src/script/ui/views/modal/components/toolbox/RgroupLogic/RgroupLogic.tsx","../src/script/ui/views/modal/components/toolbox/RgroupLogic/RgroupLogic.container.ts","../src/script/ui/views/modal/components/document/Open/components/AnalyzingFile.tsx","../src/script/ui/views/modal/components/document/Open/components/FileDrop.tsx","../src/script/ui/views/modal/components/document/Open/components/OpenOptions.tsx","../src/script/ui/views/modal/components/document/Open/components/TextEditor.tsx","../src/script/ui/views/modal/components/document/Open/components/ViewSwitcher.tsx","../src/script/ui/views/modal/components/document/Open/Open.tsx","../src/script/ui/views/modal/components/document/Open/Open.container.ts","../src/script/ui/data/convert/structConverter.ts","../src/script/ui/component/view/Tabs/Tabs.jsx","../src/script/ui/views/modal/components/document/Save/Save.jsx","../src/script/ui/dialog/toolbox/enhancedStereo/enhancedStereo.tsx","../src/script/ui/dialog/toolbox/labeledit.jsx","../src/script/ui/views/modal/components/PeriodTable/components/AtomInfo/AtomInfo.jsx","../src/script/ui/views/modal/components/PeriodTable/components/ElementsTable/components/Header.jsx","../src/script/ui/views/modal/components/PeriodTable/components/ElementsTable/components/MainRow.jsx","../src/script/ui/views/modal/components/PeriodTable/components/ElementsTable/components/OutinerRow.jsx","../src/script/ui/views/modal/components/PeriodTable/components/ElementsTable/ElementsTable.jsx","../src/script/ui/views/modal/components/ExtendedTable/components/GenericGroups/BoxWithLines.tsx","../src/script/ui/views/modal/components/ExtendedTable/helpers.js","../src/script/ui/views/modal/components/ExtendedTable/components/GenericGroups/GenSet.tsx","../src/script/ui/views/modal/components/ExtendedTable/components/GenericGroups/GenGroup.tsx","../src/script/ui/views/modal/components/ExtendedTable/components/GenericGroups/GenericGroups.tsx","../src/script/ui/views/modal/components/ExtendedTable/components/GenericGroups/index.ts","../src/script/ui/views/modal/components/PeriodTable/components/TypeChoice/TypeChoice.jsx","../src/script/ui/views/modal/components/PeriodTable/PeriodTable.jsx","../src/script/ui/views/modal/components/ExtendedTable/ExtendedTable.jsx","../src/script/ui/views/modal/components/toolbox/FG/RemoveFG.tsx","../src/script/ui/component/form/buttonlist.jsx","../src/script/ui/dialog/toolbox/rgroup/rgroup.jsx","../src/script/ui/dialog/toolbox/sdata.jsx","../src/script/ui/dialog/toolbox/sgroup.jsx","../src/script/ui/dialog/template/template-attach.jsx","../src/script/ui/dialog/template/TemplateTable.tsx","../src/script/ui/state/saltsAndSolvents/selectors/index.ts","../src/script/ui/dialog/template/EmptySearchResult.tsx","../src/script/ui/dialog/template/useSaltsAndSolvets.ts","../src/script/ui/dialog/template/TemplateDialog.tsx","../src/script/ui/views/modal/components/Text/FontControl/FontControl.tsx","../src/script/ui/views/modal/components/Text/SpecialSymbolsList/SpecialSymbolsList.tsx","../src/script/ui/views/modal/components/Text/SpecialSymbols/SpecialSymbolsButton.tsx","../src/script/ui/views/modal/components/Text/TextButton/TextButton.tsx","../src/script/ui/views/modal/components/Text/Text.tsx","../src/script/ui/views/modal/components/Confirm/Confirm.tsx","../src/script/ui/dialog/index.ts","../src/script/ui/views/modal/Modal.tsx","../src/script/ui/views/modal/Modal.container.ts","../src/script/ui/state/editor/index.js","../src/script/ui/views/Editor.jsx","../src/script/ui/App/App.tsx","../src/script/ui/App/App.container.ts","../src/script/ui/App/initApp.tsx","../src/script/builders/ketcher/KetcherBuilder.ts","../src/script/index.ts","../src/Editor.tsx"],"sourcesContent":["/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n InfoResult,\n StructService,\n StructServiceOptions,\n StructServiceProvider\n} from 'ketcher-core'\n\ntype Api = StructService & Promise<InfoResult>\n\n// todo: remove - ?? should we? it's in use\nfunction createApi(\n structServiceProvider: StructServiceProvider,\n defaultOptions: StructServiceOptions\n): Api {\n const structService =\n structServiceProvider.createStructService(defaultOptions)\n const info = structService.info()\n\n return Object.assign(info, {\n info: structService.info.bind(structService),\n convert: structService.convert.bind(structService),\n layout: structService.layout.bind(structService),\n clean: structService.clean.bind(structService),\n aromatize: structService.aromatize.bind(structService),\n dearomatize: structService.dearomatize.bind(structService),\n calculateCip: structService.calculateCip.bind(structService),\n automap: structService.automap.bind(structService),\n check: structService.check.bind(structService),\n calculate: structService.calculate.bind(structService),\n recognize: structService.recognize.bind(structService),\n generateImageAsBase64:\n structService.generateImageAsBase64.bind(structService),\n generateInchIKey: structService.generateInchIKey.bind(structService)\n })\n}\n\nexport default createApi\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Ketcher } from 'ketcher-core'\nimport React from 'react'\n\nexport interface IAppContext {\n getKetcherInstance: () => Ketcher\n}\n\nconst appContext = React.createContext<IAppContext>({} as IAppContext)\n\nexport default appContext\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport React from 'react'\n\nexport interface IErrorsContext {\n errorHandler: (message: string) => void\n}\n\nconst errorsContext = React.createContext<IErrorsContext>({} as IErrorsContext)\n\nexport default errorsContext\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport React from 'react'\n\nexport interface ISettingsContext {\n staticResourcesUrl: string\n}\n\nconst settingsContext = React.createContext<ISettingsContext>(\n {} as ISettingsContext\n)\n\nexport default settingsContext\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport React from 'react'\n\nconst formContext = React.createContext(null)\n\nexport default formContext\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nexport const basicAtoms = ['H', 'C', 'N', 'O', 'S', 'P', 'F', 'Cl', 'Br', 'I']\n\nexport const atomCuts = {\n H: 'h',\n C: 'c',\n N: 'n',\n O: 'o',\n S: 's',\n P: 'p',\n F: 'f',\n Cl: 'Shift+c',\n Br: 'b',\n I: 'i',\n A: 'a',\n Q: 'q',\n R: 'r',\n K: 'k',\n M: 'm',\n Si: 'Shift+s',\n Na: 'Shift+n',\n X: 'x',\n D: 'd',\n B: 'Shift+b'\n}\n\nexport default Object.keys(atomCuts).reduce((res, label) => {\n res[`atom-${label.toLowerCase()}`] = {\n title: `Atom ${label}`,\n shortcut: atomCuts[label],\n action: {\n tool: 'atom',\n opts: { label }\n }\n }\n return res\n}, {})\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { KetSerializer, MolSerializer, SupportedFormat } from 'ketcher-core'\n\nexport default function copyAs(type) {\n const state = global.currentState\n const editor = state.editor\n const struct = editor.structSelected()\n const errorHandler = editor.errorHandler\n let serializer\n try {\n switch (type) {\n case 'mol': {\n serializer = new MolSerializer()\n break\n }\n case 'ket': {\n serializer = new KetSerializer()\n break\n }\n default: {\n serializer = new KetSerializer()\n break\n }\n }\n\n const simpleObjectOrText = Boolean(\n struct.simpleObjects.size || struct.texts.size\n )\n\n if (simpleObjectOrText && serializer instanceof MolSerializer) {\n errorHandler(\n 'This feature is not available for Simple objects and Text objects'\n )\n return null\n }\n\n const structData = serializer.serialize(struct)\n\n if (window.clipboardData) {\n window.clipboardData.setData('text', structData)\n } else {\n navigator.clipboard.writeText(structData)\n }\n } catch {\n errorHandler('This feature is not available in your browser')\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { FormatterFactory, Ketcher } from 'ketcher-core'\n\nasync function copyImageToClipboard() {\n const state = global.currentState\n const editor = state.editor\n const server = state.server\n const options = state.options\n const struct = editor.structSelected()\n const errorHandler = editor.errorHandler\n\n try {\n const factory = new FormatterFactory(server)\n const service = factory.create('ket', options)\n const structStr = await service.getStructureFromStructAsync(struct)\n const ketcher = new Ketcher(editor, server, {}, factory)\n const image = await ketcher.generateImage(structStr, {\n outputFormat: 'png',\n backgroundColor: '255, 255, 255'\n })\n const item = new ClipboardItem({ [image.type]: image }) // eslint-disable-line no-undef\n await navigator.clipboard.write([item])\n } catch {\n errorHandler('This feature is not available in your browser')\n }\n}\n\nexport default copyImageToClipboard\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nexport default function isHidden(options: any, buttonName: string): boolean {\n return Boolean(options.buttons?.[buttonName]?.hidden)\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { MolSerializer } from 'ketcher-core'\nimport isHidden from './isHidden'\n\nconst debugObj = {\n // original: for dev purposes\n 'force-update': {\n shortcut: 'Ctrl+Shift+r',\n action: (editor) => {\n editor.update(true)\n },\n hidden: (options) => isHidden(options, 'force-update')\n },\n 'qs-serialize': {\n shortcut: 'Alt+Shift+r',\n action: (editor) => {\n const molSerializer = new MolSerializer()\n const molStr = molSerializer.serialize(editor.struct())\n const molQs = 'mol=' + encodeURIComponent(molStr).replace(/%20/g, '+')\n const qs = document.location.search\n document.location.search = !qs\n ? '?' + molQs // eslint-disable-line\n : qs.search('mol=') === -1\n ? qs + '&' + molQs\n : qs.replace(/mol=[^&$]*/, molQs)\n }\n },\n hidden: (options) => isHidden(options, 'qs-serialize')\n}\n\nexport default debugObj\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Component, createRef } from 'react'\nimport clsx from 'clsx'\nimport classes from './cliparea.module.less'\n\nconst ieCb = window.clipboardData\n\nclass ClipArea extends Component {\n constructor(props) {\n super(props)\n this.textAreaRef = createRef()\n }\n\n componentDidMount() {\n const el = this.textAreaRef.current\n this.target = this.props.target || el.parentNode\n\n this.listeners = {\n mouseup: (event) => {\n if (\n el === event.target ||\n (!isActiveElement(event.target) && this.props.focused())\n ) {\n autoselect(el)\n }\n },\n mousedown: (event) => {\n if (event.shiftKey && !isActiveElement(event.target))\n event.preventDefault()\n },\n copy: (event) => {\n if (this.props.focused() && this.props.onCopy) {\n const data = this.props.onCopy()\n\n if (data) copy(event.clipboardData, data)\n\n event.preventDefault()\n }\n },\n cut: (event) => {\n if (this.props.focused() && this.props.onCut) {\n const data = this.props.onCut()\n\n if (data) copy(event.clipboardData, data)\n\n event.preventDefault()\n }\n },\n paste: (event) => {\n if (this.props.focused() && this.props.onPaste) {\n const data = paste(event.clipboardData, this.props.formats)\n\n if (data) this.props.onPaste(data)\n\n event.preventDefault()\n }\n }\n }\n\n Object.keys(this.listeners).forEach((en) => {\n this.target.addEventListener(en, this.listeners[en])\n })\n }\n\n shouldComponentUpdate() {\n return false\n }\n\n componentWillUnmount() {\n Object.keys(this.listeners).forEach((en) => {\n this.target.removeEventListener(en, this.listeners[en])\n })\n }\n\n render() {\n return (\n <textarea\n ref={this.textAreaRef}\n className={clsx('cliparea', classes.cliparea)}\n contentEditable\n autoFocus // eslint-disable-line jsx-a11y/no-autofocus\n suppressContentEditableWarning={true}\n />\n )\n }\n}\n\nfunction isActiveElement(el) {\n if (el.tagName === 'INPUT' && el.type === 'button') return false\n return ['INPUT', 'SELECT', 'TEXTAREA', 'OPTION', 'LABEL'].includes(el.tagName)\n}\n\nfunction autoselect(cliparea) {\n cliparea.value = ' '\n cliparea.select()\n}\n\nfunction copy(cb, data) {\n if (!cb && ieCb) {\n ieCb.setData('text', data['text/plain'])\n } else {\n let curFmt = null\n cb.setData('text/plain', data['text/plain'])\n try {\n Object.keys(data).forEach((fmt) => {\n curFmt = fmt\n cb.setData(fmt, data[fmt])\n })\n } catch (ex) {\n console.info(`Could not write exact type ${curFmt}`)\n }\n }\n}\n\nfunction paste(cb, formats) {\n let data = {}\n if (!cb && ieCb) {\n data['text/plain'] = ieCb.getData('text')\n } else {\n data['text/plain'] = cb.getData('text/plain')\n data = formats.reduce((res, fmt) => {\n const d = cb.getData(fmt)\n if (d) res[fmt] = d\n return res\n }, data)\n }\n return data\n}\n\nexport const actions = ['cut', 'copy', 'paste']\n\nexport function exec(action) {\n let enabled = document.queryCommandSupported(action)\n if (enabled) {\n try {\n enabled = document.execCommand(action) || window.ClipboardEvent || ieCb\n } catch (ex) {\n // FF < 41\n enabled = false\n }\n }\n return enabled\n}\n\nexport default ClipArea\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { StereLabelStyleType, StereoColoringType } from 'ketcher-core'\nimport Ajv, { SchemaObject } from 'ajv'\n\ntype ExtendedSchema = SchemaObject & {\n enumNames?: Array<string>\n default?: any\n}\n\nconst editor: {\n resetToSelect: ExtendedSchema\n rotationStep: ExtendedSchema\n} = {\n resetToSelect: {\n title: 'Reset to Select Tool',\n enum: [true, 'paste', false],\n enumNames: ['on', 'After Paste', 'off'],\n default: 'paste'\n },\n rotationStep: {\n title: 'Rotation Step, º',\n type: 'integer',\n minimum: 1,\n maximum: 90,\n default: 15\n }\n}\n\nconst render: {\n showValenceWarnings: ExtendedSchema\n atomColoring: ExtendedSchema\n showStereoFlags: ExtendedSchema\n stereoLabelStyle: ExtendedSchema\n colorOfAbsoluteCenters: ExtendedSchema\n colorOfAndCenters: ExtendedSchema\n colorOfOrCenters: ExtendedSchema\n colorStereogenicCenters: ExtendedSchema\n autoFadeOfStereoLabels: ExtendedSchema\n absFlagLabel: ExtendedSchema\n andFlagLabel: ExtendedSchema\n mixedFlagLabel: ExtendedSchema\n orFlagLabel: ExtendedSchema\n font: ExtendedSchema\n fontsz: ExtendedSchema\n fontszsub: ExtendedSchema\n carbonExplicitly: ExtendedSchema\n showCharge: ExtendedSchema\n showValence: ExtendedSchema\n showHydrogenLabels: ExtendedSchema\n aromaticCircle: ExtendedSchema\n doubleBondWidth: ExtendedSchema\n bondThickness: ExtendedSchema\n stereoBondWidth: ExtendedSchema\n} = {\n showValenceWarnings: {\n title: 'Show valence warnings',\n type: 'boolean',\n description: 'slider',\n default: true\n },\n atomColoring: {\n title: 'Atom coloring',\n type: 'boolean',\n description: 'slider',\n default: true\n },\n showStereoFlags: {\n title: 'Show the Stereo flags',\n type: 'boolean',\n description: 'slider',\n default: true\n },\n stereoLabelStyle: {\n title: 'Label display at\\u00A0stereogenic\\u00A0centers',\n enum: [\n StereLabelStyleType.IUPAC,\n StereLabelStyleType.Classic,\n StereLabelStyleType.On,\n StereLabelStyleType.Off\n ],\n enumNames: ['IUPAC style', 'Classic', 'On', 'Off'],\n default: StereLabelStyleType.IUPAC\n },\n colorOfAbsoluteCenters: {\n title: ' Absolute Center color',\n type: 'string',\n default: '#ff0000'\n },\n colorOfAndCenters: {\n title: 'AND Centers color',\n type: 'string',\n default: '#0000cd'\n },\n colorOfOrCenters: {\n title: 'OR Centers color',\n type: 'string',\n default: '#228b22'\n },\n colorStereogenicCenters: {\n title: 'Color stereogenic centers',\n enum: [\n StereoColoringType.LabelsOnly,\n StereoColoringType.BondsOnly,\n StereoColoringType.LabelsAndBonds,\n StereoColoringType.Off\n ],\n enumNames: ['Labels Only', 'Bonds Only', 'Labels And Bonds', 'Off'],\n default: StereoColoringType.LabelsOnly\n },\n autoFadeOfStereoLabels: {\n title: 'Auto fade And/Or center labels',\n type: 'boolean',\n description: 'slider',\n default: true\n },\n absFlagLabel: {\n title: 'Text of Absolute flag',\n type: 'string',\n default: 'ABS'\n },\n andFlagLabel: {\n title: 'Text of AND flag',\n type: 'string',\n default: 'AND Enantiomer'\n },\n mixedFlagLabel: {\n title: 'Text of Mixed flag',\n type: 'string',\n default: 'Mixed'\n },\n orFlagLabel: {\n title: 'Text of OR flag',\n type: 'string',\n default: 'OR Enantiomer'\n },\n font: {\n title: 'Font',\n type: 'string',\n default: '30px Arial'\n },\n fontsz: {\n title: 'Font size',\n type: 'integer',\n default: 13,\n minimum: 1,\n maximum: 96\n },\n fontszsub: {\n title: 'Sub font size',\n type: 'integer',\n default: 13,\n minimum: 1,\n maximum: 96\n },\n // Atom\n carbonExplicitly: {\n title: 'Display carbon explicitly',\n type: 'boolean',\n description: 'slider',\n default: false\n },\n showCharge: {\n title: 'Display charge',\n type: 'boolean',\n description: 'slider',\n default: true\n },\n showValence: {\n title: 'Display valence',\n type: 'boolean',\n description: 'slider',\n default: true\n },\n showHydrogenLabels: {\n title: 'Show hydrogen labels',\n enum: ['off', 'Hetero', 'Terminal', 'Terminal and Hetero', 'on'],\n default: 'on'\n },\n // Bonds\n aromaticCircle: {\n title: 'Aromatic Bonds as circle',\n type: 'boolean',\n description: 'slider',\n default: true\n },\n doubleBondWidth: {\n title: 'Double bond width',\n type: 'integer',\n default: 6,\n minimum: 1,\n maximum: 96\n },\n bondThickness: {\n title: 'Bond thickness',\n type: 'integer',\n default: 2,\n minimum: 1,\n maximum: 96\n },\n stereoBondWidth: {\n title: 'Stereo (Wedge) bond width',\n type: 'integer',\n default: 6,\n minimum: 1,\n maximum: 96\n }\n}\n\nconst server: {\n 'smart-layout': ExtendedSchema\n 'ignore-stereochemistry-errors': ExtendedSchema\n 'mass-skip-error-on-pseudoatoms': ExtendedSchema\n 'gross-formula-add-rsites': ExtendedSchema\n 'gross-formula-add-isotopes': ExtendedSchema\n 'dearomatize-on-load': ExtendedSchema\n} = {\n 'dearomatize-on-load': {\n title: 'dearomatize-on-load',\n type: 'boolean',\n description: 'slider',\n default: false\n },\n 'smart-layout': {\n title: 'Smart-layout',\n type: 'boolean',\n description: 'slider',\n default: true\n },\n 'ignore-stereochemistry-errors': {\n title: 'Ignore stereochemistry errors',\n type: 'boolean',\n description: 'slider',\n default: true\n },\n 'mass-skip-error-on-pseudoatoms': {\n title: 'Ignore pseudoatoms at mass',\n type: 'boolean',\n description: 'slider',\n default: false\n },\n 'gross-formula-add-rsites': {\n title: 'Add Rsites at mass calculation',\n type: 'boolean',\n description: 'slider',\n default: true\n },\n 'gross-formula-add-isotopes': {\n title: 'Add Isotopes at\\u00A0mass\\u00A0calculation',\n type: 'boolean',\n description: 'slider',\n default: true\n }\n}\n\nexport const SERVER_OPTIONS = Object.keys(server)\n\nconst debug: {\n showAtomIds: ExtendedSchema\n showBondIds: ExtendedSchema\n showHalfBondIds: ExtendedSchema\n showLoopIds: ExtendedSchema\n} = {\n showAtomIds: {\n title: 'Show atom Ids',\n type: 'boolean',\n description: 'slider',\n default: false\n },\n showBondIds: {\n title: 'Show bonds Ids',\n type: 'boolean',\n description: 'slider',\n default: false\n },\n showHalfBondIds: {\n title: 'Show half bonds Ids',\n type: 'boolean',\n description: 'slider',\n default: false\n },\n showLoopIds: {\n title: 'Show loop Ids',\n type: 'boolean',\n description: 'slider',\n default: false\n }\n}\n\nconst miew: {\n miewMode: ExtendedSchema\n miewTheme: ExtendedSchema\n miewAtomLabel: ExtendedSchema\n} = {\n miewMode: {\n title: 'Display mode',\n enum: ['LN', 'BS', 'LC'],\n enumNames: ['Lines', 'Balls and Sticks', 'Licorice'],\n default: 'LN'\n },\n miewTheme: {\n title: 'Background color',\n enum: ['light', 'dark'],\n enumNames: ['Light', 'Dark'],\n default: 'light'\n },\n miewAtomLabel: {\n title: 'Label coloring',\n enum: ['no', 'bright', 'blackAndWhite', 'black'],\n enumNames: ['No', 'Bright', 'Black and White', 'Black'],\n default: 'bright'\n }\n}\n\nexport const MIEW_OPTIONS = Object.keys(miew)\n\nconst optionsSchema: ExtendedSchema = {\n title: 'Settings',\n type: 'object',\n required: [],\n properties: {\n ...editor,\n ...render,\n ...server,\n ...debug,\n ...miew\n }\n}\n\nexport default optionsSchema\n\nexport function getDefaultOptions(): Record<string, any> {\n if (!optionsSchema.properties) return {}\n\n return Object.keys(optionsSchema.properties).reduce((res, prop) => {\n res[prop] = (optionsSchema.properties[prop] as ExtendedSchema).default\n return res\n }, {})\n}\n\nexport function validation(settings): Record<string, string> | null {\n if (typeof settings !== 'object' || settings === null) return null\n\n const ajv = new Ajv({\n allErrors: true,\n keywords: [{ keyword: 'enumNames', schemaType: 'array' }]\n })\n\n const validate = ajv.compile(optionsSchema)\n validate(settings)\n const errors = validate.errors || []\n const errorsProps = errors.map((el) => el.instancePath.slice(1))\n\n return Object.keys(settings).reduce((res, prop) => {\n if (!optionsSchema.properties) return res\n\n if (optionsSchema.properties[prop] && errorsProps.indexOf(prop) === -1)\n res[prop] = settings[prop]\n\n return res\n }, {})\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\n/* local storage */\nexport const storage = {\n warningMessage:\n 'Your changes will be lost after the tab closing. See Help (Note 2).',\n isAvailable() {\n try {\n const storage = global.localStorage\n return storage\n } catch (ex) {\n return false\n }\n },\n getItem(key) {\n let item = null\n try {\n item = JSON.parse(localStorage.getItem(key))\n } catch (ex) {\n console.info('LocalStorage:', ex.name)\n }\n return item\n },\n setItem(key, data) {\n let isSet = null\n try {\n localStorage.setItem(key, JSON.stringify(data))\n isSet = true\n } catch (ex) {\n console.info('LocalStorage:', ex.name)\n isSet = false\n }\n return isSet\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n SERVER_OPTIONS,\n getDefaultOptions,\n validation\n} from '../../data/schema/options-schema'\n\nimport { pick } from 'lodash/fp'\nimport { storage } from '../../storage-ext'\n\nexport const initOptionsState = {\n app: {\n server: false,\n templates: false,\n functionalGroups: false,\n saltsAndSolvents: false\n },\n analyse: {\n values: null,\n roundWeight: 3,\n roundMass: 3,\n roundElAnalysis: 1\n },\n check: {\n checkOptions: [\n 'valence',\n 'radicals',\n 'pseudoatoms',\n 'stereo',\n 'query',\n 'overlapping_atoms',\n 'overlapping_bonds',\n 'rgroups',\n 'chiral',\n '3d',\n 'chiral_flag'\n ]\n },\n recognize: {\n file: null,\n structStr: null,\n fragment: false,\n version: null\n },\n settings: Object.assign(\n getDefaultOptions(),\n validation(storage.getItem('ketcher-opts'))\n ),\n getServerSettings() {\n return pick(SERVER_OPTIONS, this.settings)\n }\n}\n\nexport function appUpdate(data) {\n return (dispatch) => {\n dispatch({ type: 'APP_OPTIONS', data })\n dispatch({ type: 'UPDATE' })\n }\n}\n\n/* SETTINGS */\nexport function saveSettings(newSettings) {\n storage.setItem('ketcher-opts', newSettings)\n return {\n type: 'SAVE_SETTINGS',\n data: newSettings\n }\n}\n\n/* ANALYZE */\nexport function changeRound(roundName, value) {\n return {\n type: 'CHANGE_ANALYSE',\n data: { [roundName]: value }\n }\n}\n\n/* RECOGNIZE */\nconst recognizeActions = [\n 'SET_RECOGNIZE_STRUCT',\n 'CHANGE_RECOGNIZE_FILE',\n 'CHANGE_IMAGO_VERSION',\n 'IS_FRAGMENT_RECOGNIZE'\n]\n\nexport function setStruct(str) {\n return {\n type: 'SET_RECOGNIZE_STRUCT',\n data: { structStr: str }\n }\n}\n\nexport function changeVersion(version) {\n return {\n type: 'CHANGE_IMAGO_VERSION',\n data: { version }\n }\n}\n\nexport function changeImage(file) {\n return {\n type: 'CHANGE_RECOGNIZE_FILE',\n data: {\n file,\n structStr: null\n }\n }\n}\n\nexport function shouldFragment(isFrag) {\n return {\n type: 'IS_FRAGMENT_RECOGNIZE',\n data: { fragment: isFrag }\n }\n}\n\n/* CHECK */\nexport function checkOpts(data) {\n return {\n type: 'SAVE_CHECK_OPTS',\n data\n }\n}\n\n/* REDUCER */\nfunction optionsReducer(state = {}, action) {\n const { type, data } = action\n\n if (type === 'APP_OPTIONS')\n return { ...state, app: { ...state.app, ...data } }\n\n if (type === 'SAVE_SETTINGS') return { ...state, settings: data }\n\n if (type === 'SAVE_CHECK_OPTS') return { ...state, check: data }\n\n if (type === 'CHANGE_ANALYSE')\n return { ...state, analyse: { ...state.analyse, ...data, loading: false } }\n\n if (type === 'ANALYSE_LOADING')\n return { ...state, analyse: { ...state.analyse, loading: true } }\n\n if (recognizeActions.includes(type))\n return { ...state, recognize: { ...state.recognize, ...data } }\n return state\n}\n\nexport default optionsReducer\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\n/* schema utils */\nfunction constant(schema, prop) {\n const desc = schema.properties[prop]\n return desc.constant || desc.enum[0] // see https://git.io/v6hyP\n}\n\nexport function mapOf(schema, prop) {\n console.assert(schema.oneOf)\n return schema.oneOf.reduce((res, desc) => {\n res[constant(desc, prop)] = desc\n return res\n }, {})\n}\n\nexport function selectListOf(schema, prop) {\n const desc = schema.properties && schema.properties[prop]\n if (desc) {\n return desc.enum.map((value, i) => {\n const title = desc.enumNames && desc.enumNames[i]\n return title ? { title, value } : value\n })\n }\n return schema.oneOf.map((ds) =>\n !ds.title\n ? constant(ds, prop)\n : {\n title: ds.title,\n value: constant(ds, prop)\n }\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { mapOf } from './schema-helper'\n\nconst radioButtonsSchema = {\n enum: ['Absolute', 'Relative', 'Attached'],\n default: 'Absolute'\n}\n\nconst contextSchema = {\n title: 'Context',\n enum: ['Fragment', 'Multifragment', 'Bond', 'Atom', 'Group'],\n default: 'Fragment'\n}\n\nconst sData = {\n Fragment: {\n title: 'Fragment',\n type: 'Object',\n oneOf: [\n {\n key: 'FRG_STR',\n title: 'MDLBG_FRAGMENT_STEREO',\n type: 'object',\n properties: {\n type: { enum: ['DAT'] },\n fieldName: {\n title: 'Field name',\n enum: ['MDLBG_FRAGMENT_STEREO'],\n default: 'MDLBG_FRAGMENT_STEREO'\n },\n fieldValue: {\n title: 'Field value',\n enum: [\n 'abs',\n '(+)-enantiomer',\n '(-)-enantiomer',\n 'racemate',\n 'steric',\n 'rel',\n 'R(a)',\n 'S(a)',\n 'R(p)',\n 'S(p)'\n ],\n default: 'abs'\n },\n radiobuttons: radioButtonsSchema\n },\n required: ['fieldName', 'fieldValue', 'radiobuttons']\n },\n {\n key: 'FRG_COEFF',\n title: 'MDLBG_FRAGMENT_COEFFICIENT',\n type: 'object',\n properties: {\n type: { enum: ['DAT'] },\n fieldName: {\n title: 'Field name',\n enum: ['MDLBG_FRAGMENT_COEFFICIENT'],\n default: 'MDLBG_FRAGMENT_COEFFICIENT'\n },\n fieldValue: {\n title: 'Field value',\n type: 'string',\n default: '',\n minLength: 1,\n invalidMessage: 'Please, specify field value'\n },\n radiobuttons: radioButtonsSchema\n },\n required: ['fieldName', 'fieldValue', 'radiobuttons']\n },\n {\n key: 'FRG_CHRG',\n title: 'MDLBG_FRAGMENT_CHARGE',\n type: 'object',\n properties: {\n type: { enum: ['DAT'] },\n fieldName: {\n title: 'Field name',\n enum: ['MDLBG_FRAGMENT_CHARGE'],\n default: 'MDLBG_FRAGMENT_CHARGE'\n },\n fieldValue: {\n title: 'Field value',\n type: 'string',\n default: '',\n minLength: 1,\n invalidMessage: 'Please, specify field value'\n },\n radiobuttons: radioButtonsSchema\n },\n required: ['fieldName', 'fieldValue', 'radiobuttons']\n },\n {\n key: 'FRG_RAD',\n title: 'MDLBG_FRAGMENT_RADICALS',\n type: 'object',\n properties: {\n type: { enum: ['DAT'] },\n fieldName: {\n title: 'Field name',\n enum: ['MDLBG_FRAGMENT_RADICALS'],\n default: 'MDLBG_FRAGMENT_RADICALS'\n },\n fieldValue: {\n title: 'Field value',\n type: 'string',\n default: '',\n minLength: 1,\n invalidMessage: 'Please, specify field value'\n },\n radiobuttons: radioButtonsSchema\n },\n required: ['fieldName', 'fieldValue', 'radiobuttons']\n }\n ]\n },\n Multifragment: {\n title: 'Multifragment',\n type: 'Object',\n oneOf: [\n {\n key: 'MLT_FRG',\n title: 'KETCHER_MULTIPLE_FRAGMENT',\n type: 'object',\n properties: {\n type: { enum: ['DAT'] },\n fieldName: {\n title: 'Field name',\n enum: ['KETCHER_MULTIPLE_FRAGMENT'],\n default: 'KETCHER_MULTIPLE_FRAGMENT'\n },\n fieldValue: {\n title: 'Field value',\n enum: [\n 'aerosol',\n 'alloy',\n 'catenane',\n 'complex',\n 'composite',\n 'co-polymer',\n 'emulsion',\n 'host-guest complex',\n 'mixture',\n 'rotaxane',\n 'suspension'\n ],\n default: 'aerosol'\n },\n radiobuttons: radioButtonsSchema\n },\n required: ['fieldName', 'fieldValue', 'radiobuttons']\n }\n ]\n },\n Bond: {\n title: 'Bond',\n type: 'Object',\n oneOf: [\n {\n key: 'SB_STR',\n title: 'MDLBG_STEREO_KEY',\n type: 'object',\n properties: {\n type: { enum: ['DAT'] },\n fieldName: {\n title: 'Field name',\n enum: ['MDLBG_STEREO_KEY'],\n default: 'MDLBG_STEREO_KEY'\n },\n fieldValue: {\n title: 'Field value',\n enum: [\n 'erythro',\n 'threo',\n 'alpha',\n 'beta',\n 'endo',\n 'exo',\n 'anti',\n 'syn',\n 'ECL',\n 'STG'\n ],\n default: 'erythro'\n },\n radiobuttons: radioButtonsSchema\n },\n required: ['fieldName', 'fieldValue', 'radiobuttons']\n },\n {\n key: 'SB_BND',\n title: 'MDLBG_BOND_KEY',\n type: 'object',\n properties: {\n type: { enum: ['DAT'] },\n fieldName: {\n title: 'Field name',\n enum: ['MDLBG_BOND_KEY'],\n default: 'MDLBG_BOND_KEY'\n },\n fieldValue: {\n title: 'Field value',\n enum: ['Value=4'],\n default: 'Value=4'\n },\n radiobuttons: radioButtonsSchema\n },\n required: ['fieldName', 'fieldValue', 'radiobuttons']\n }\n ]\n },\n Atom: {\n title: 'Atom',\n type: 'Object',\n oneOf: [\n {\n key: 'AT_STR',\n title: 'MDLBG_STEREO_KEY',\n type: 'object',\n properties: {\n type: { enum: ['DAT'] },\n fieldName: {\n title: 'Field name',\n enum: ['MDLBG_STEREO_KEY'],\n default: 'MDLBG_STEREO_KEY'\n },\n fieldValue: {\n title: 'Field value',\n enum: [\n 'RS',\n 'SR',\n 'P-3',\n 'P-3-PI',\n 'SP-4',\n 'SP-4-PI',\n 'T-4',\n 'T-4-PI',\n 'SP-5',\n 'SP-5-PI',\n 'TB-5',\n 'TB-5-PI',\n 'OC-6',\n 'TP-6',\n 'PB-7',\n 'CU-8',\n 'SA-8',\n 'DD-8',\n 'HB-9',\n 'TPS-9'\n ],\n default: 'RS'\n },\n radiobuttons: radioButtonsSchema\n },\n required: ['fieldName', 'fieldValue', 'radiobuttons']\n }\n ]\n },\n Group: {\n title: 'Group',\n type: 'Object',\n oneOf: [\n {\n key: 'GRP_STR',\n title: 'MDLBG_STEREO_KEY',\n type: 'object',\n properties: {\n type: { enum: ['DAT'] },\n fieldName: {\n title: 'Field name',\n enum: ['MDLBG_STEREO_KEY'],\n default: 'MDLBG_STEREO_KEY'\n },\n fieldValue: {\n title: 'Field value',\n enum: ['cis', 'trans'],\n default: 'cis'\n },\n radiobuttons: radioButtonsSchema\n },\n required: ['fieldName', 'fieldValue', 'radiobuttons']\n }\n ]\n }\n}\n\nexport const sdataCustomSchema = {\n key: 'Custom',\n type: 'object',\n properties: {\n type: { enum: ['DAT'] },\n context: {\n title: 'Context',\n enum: ['Atom', 'Bond', 'Fragment', 'Group', 'Multifragment'],\n default: 'Fragment'\n },\n fieldName: {\n title: 'Field name',\n type: 'string',\n default: '',\n minLength: 1,\n invalidMessage: 'Please, specify field name'\n },\n fieldValue: {\n title: 'Field value',\n type: 'string',\n default: '',\n minLength: 1,\n invalidMessage: 'Please, specify field value'\n },\n radiobuttons: {\n enum: ['Absolute', 'Relative', 'Attached'],\n default: 'Absolute'\n }\n },\n required: ['context', 'fieldName', 'fieldValue', 'radiobuttons']\n}\n\nexport const sdataSchema = Object.keys(sData).reduce((acc, title) => {\n acc[title] = mapOf(sData[title], 'fieldName')\n Object.keys(acc[title]).forEach((fieldName) => {\n acc[title][fieldName].properties.context = contextSchema\n })\n return acc\n}, {})\n\n/**\n * Returns first key of passed object\n * @param obj { object }\n */\nfunction firstKeyOf(obj) {\n return Object.keys(obj)[0]\n}\n\n/**\n * Returns schema default values. Depends on passed arguments:\n * pass schema only -> returns default context\n * pass schema & context -> returns default fieldName\n * pass schema & context & fieldName -> returns default fieldValue\n * @param context? { string }\n * @param fieldName? { string }\n * @returns { string }\n */\nexport function getSdataDefault(schema = sdataSchema, context, fieldName) {\n if (schema.key === 'Custom') {\n return schema.properties[context]?.default\n }\n\n if (!context && !fieldName) return firstKeyOf(schema)\n\n if (!fieldName) return firstKeyOf(schema[context])\n\n return schema[context][fieldName]\n ? schema[context][fieldName].properties.fieldValue.default\n : ''\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n getSdataDefault,\n sdataSchema,\n sdataCustomSchema\n} from '../../data/schema/sdata-schema'\n\nexport const initSdata = (schema) => {\n const isCustomShema = schema.key === 'Custom'\n\n const context = isCustomShema\n ? getSdataDefault(sdataCustomSchema, 'context')\n : getSdataDefault(sdataSchema)\n const fieldName = isCustomShema\n ? getSdataDefault(sdataCustomSchema, 'fieldName')\n : getSdataDefault(sdataSchema, context)\n const fieldValue = isCustomShema\n ? getSdataDefault(sdataCustomSchema, 'fieldValue')\n : getSdataDefault(sdataSchema, context, fieldName)\n const radiobuttons = 'Absolute'\n\n return {\n errors: {},\n valid: true,\n result: {\n context,\n fieldName,\n fieldValue,\n radiobuttons,\n type: 'DAT'\n }\n }\n}\n\nexport function sdataReducer(state, action) {\n if (action.data.result.init) {\n return correctErrors(\n {\n ...state,\n result: Object.assign({}, state.result, action.data.result)\n },\n action.data\n )\n }\n\n const actionContext = action.data.result.context\n const actionFieldName = action.data.result.fieldName\n\n let newstate = null\n\n if (actionContext !== state.result.context)\n newstate = onContextChange(state, action.data.result)\n else if (actionFieldName !== state.result.fieldName)\n newstate = onFieldNameChange(state, action.data.result)\n\n newstate = newstate || {\n ...state,\n result: Object.assign({}, state.result, action.data.result)\n }\n\n return correctErrors(newstate, action.data)\n}\n\nconst correctErrors = (state, payload) => {\n const { valid, errors } = payload\n const { fieldName, fieldValue } = state.result\n\n return {\n result: state.result,\n valid: valid && !!fieldName && !!fieldValue,\n errors\n }\n}\n\nconst onContextChange = (state, payload) => {\n const { context, fieldValue } = payload\n\n const fieldName = getSdataDefault(sdataCustomSchema, 'fieldName')\n\n let fValue = fieldValue\n if (fValue === state.result.fieldValue)\n fValue = getSdataDefault(sdataCustomSchema, 'fieldValue')\n\n return {\n result: {\n ...payload,\n context,\n fieldName,\n fieldValue: fValue\n }\n }\n}\n\nconst onFieldNameChange = (state, payload) => {\n const { fieldName } = payload\n\n const context = state.result.context\n\n let fieldValue = payload.fieldValue\n\n if (sdataSchema[context][fieldName])\n fieldValue = getSdataDefault(sdataSchema, context, fieldName)\n\n if (\n fieldValue === state.result.fieldValue &&\n sdataSchema[context][state.result.fieldName]\n )\n fieldValue = ''\n\n return {\n result: {\n ...payload,\n fieldName,\n fieldValue\n }\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { initSdata, sdataReducer } from './sdata'\n\nimport { getDefaultOptions } from '../../data/schema/options-schema'\nimport { sdataCustomSchema } from '../../data/schema/sdata-schema'\n\nexport const formsState = {\n // TODO: create from schema.{smth}.defaultValue\n // TODO: change validation method, no 'valid:true' props as default\n atomProps: {\n errors: {},\n valid: true,\n result: {\n label: '',\n charge: 0,\n explicitValence: -1,\n hCount: 0,\n invRet: 0,\n isotope: 0,\n radical: 0,\n ringBondCount: 0,\n substitutionCount: 0\n }\n },\n attachmentPoints: {\n errors: {},\n valid: true,\n result: {\n primary: false,\n secondary: false\n }\n },\n automap: {\n errors: {},\n valid: true,\n result: {\n mode: 'discard'\n }\n },\n bondProps: {\n errors: {},\n valid: true,\n result: {\n type: 'single',\n topology: 0,\n center: 0\n }\n },\n check: {\n errors: {},\n moleculeErrors: {}\n },\n labelEdit: {\n errors: {},\n valid: true,\n result: {\n label: ''\n }\n },\n rgroup: {\n errors: {},\n valid: true,\n result: {\n values: []\n }\n },\n rgroupLogic: {\n errors: {},\n valid: true,\n result: {\n ifthen: 0,\n range: '>0',\n resth: false\n }\n },\n save: {\n errors: {},\n valid: true,\n result: {\n filename: 'ketcher',\n format: 'mol'\n }\n },\n settings: {\n errors: {},\n valid: true,\n result: getDefaultOptions()\n },\n sgroup: {\n errors: {},\n valid: true,\n result: {\n type: 'GEN'\n }\n },\n text: {\n errors: {},\n valid: true,\n result: {}\n },\n attach: {\n errors: {},\n valid: true,\n result: {}\n },\n sdata: initSdata(sdataCustomSchema)\n}\n\nexport function updateFormState(data) {\n return {\n type: 'UPDATE_FORM',\n data\n }\n}\n\nexport function checkErrors(errors) {\n return {\n type: 'UPDATE_FORM',\n data: { moleculeErrors: errors }\n }\n}\n\nexport function setDefaultSettings() {\n return {\n type: 'UPDATE_FORM',\n data: {\n result: getDefaultOptions(sdataCustomSchema),\n valid: true,\n errors: {}\n }\n }\n}\n\nexport function formReducer(state, action, formName) {\n if (formName === 'sdata') return sdataReducer(state, action)\n\n return Object.assign({}, state, action.data)\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nexport const INDIGO_VERIFICATION = 'INDIGO_VERIFICATION'\nexport const ANALYZING_FILE = 'ANALYZING_FILE'\n\nexport interface RequestState {\n indigoVerification: boolean\n isAnalyzingFile: boolean\n}\n\ninterface IndigoVerificationAction {\n type: string\n data: boolean\n}\n\nexport type RequestActionTypes = IndigoVerificationAction\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n INDIGO_VERIFICATION,\n ANALYZING_FILE,\n RequestActionTypes,\n RequestState\n} from './request.types'\n\nexport function indigoVerification(data: boolean): RequestActionTypes {\n return {\n type: INDIGO_VERIFICATION,\n data\n }\n}\n\nexport function setAnalyzingFile(data: boolean): RequestActionTypes {\n return {\n type: ANALYZING_FILE,\n data\n }\n}\n\nconst initialState = {\n indigoVerification: false,\n isAnalyzingFile: false\n}\n\nexport default function (\n state = initialState,\n action: RequestActionTypes\n): RequestState {\n const { type, data } = action\n\n switch (type) {\n case INDIGO_VERIFICATION: {\n return {\n ...state,\n indigoVerification: data\n }\n }\n case ANALYZING_FILE: {\n return {\n ...state,\n isAnalyzingFile: data\n }\n }\n default:\n return state\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nexport const supportedSGroupTypes = {\n MUL: 'MUL',\n SRU: 'SRU',\n SUP: 'SUP',\n DAT: 'DAT',\n GEN: 'GEN'\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { mapOf } from './schema-helper'\nimport { range } from 'lodash/fp'\n\nexport const atom = {\n title: 'Atom',\n type: 'object',\n required: ['label'],\n properties: {\n label: {\n title: 'Label',\n type: 'string', // TODO:should really be enum of elements\n maxLength: 3,\n invalidMessage: 'Wrong label'\n },\n alias: {\n title: 'Alias',\n type: 'string',\n invalidMessage: 'Leading and trailing spaces are not allowed'\n },\n charge: {\n title: 'Charge',\n type: 'string',\n pattern: '^([+-]?)([0-9]{1,3}|1000)([+-]?)$',\n maxLength: 5,\n default: '0',\n invalidMessage: 'Invalid charge value'\n },\n explicitValence: {\n title: 'Valence',\n enum: [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8],\n enumNames: ['', '0', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII'],\n default: -1\n },\n isotope: {\n title: 'Isotope',\n type: 'integer',\n minimum: 0,\n default: 0,\n invalidMessage: 'There must be integer'\n },\n radical: {\n title: 'Radical',\n enum: [0, 2, 1, 3],\n enumNames: [\n '',\n 'Monoradical',\n 'Diradical (singlet)',\n 'Diradical (triplet)'\n ],\n default: 0\n },\n ringBondCount: {\n title: 'Ring bond count',\n enum: [0, -2, -1, 2, 3, 4],\n enumNames: ['', 'As drawn', '0', '2', '3', '4'],\n default: 0\n },\n hCount: {\n title: 'H count',\n enum: [0, 1, 2, 3, 4, 5],\n enumNames: ['', '0', '1', '2', '3', '4'],\n default: 0\n },\n substitutionCount: {\n title: 'Substitution count',\n enum: [0, -2, -1, 1, 2, 3, 4, 5, 6],\n enumNames: ['', 'As drawn', '0', '1', '2', '3', '4', '5', '6'],\n default: 0\n },\n unsaturatedAtom: {\n title: 'Unsaturated',\n type: 'boolean',\n default: false\n },\n invRet: {\n title: 'Inversion',\n enum: [0, 1, 2],\n enumNames: ['', 'Inverts', 'Retains'],\n default: 0\n },\n exactChangeFlag: {\n title: 'Exact change',\n type: 'boolean',\n default: false\n }\n }\n}\n\nexport const rgroupSchema = {\n title: 'R-group',\n type: 'object',\n properties: {\n values: {\n type: 'array',\n items: {\n type: 'string',\n enum: range(1, 33),\n enumNames: range(1, 33).map((item) => 'R' + item)\n }\n }\n }\n}\n\nexport const labelEdit = {\n title: 'Label Edit',\n type: 'object',\n required: ['label'],\n properties: {\n label: {\n title: 'Atom',\n default: '',\n invalidMessage: 'Wrong atom symbol',\n type: 'string'\n }\n }\n}\n\nexport const attachmentPoints = {\n title: 'Attachment Points',\n type: 'object',\n properties: {\n primary: {\n title: 'Primary attachment point',\n type: 'boolean'\n },\n secondary: {\n title: 'Secondary attachment point',\n type: 'boolean'\n }\n }\n}\n\nexport const bond = {\n title: 'Bond',\n type: 'object',\n required: ['type'],\n properties: {\n type: {\n title: 'Type',\n enum: [\n 'single',\n 'up',\n 'down',\n 'updown',\n 'double',\n 'crossed',\n 'triple',\n 'aromatic',\n 'any',\n 'hydrogen',\n 'singledouble',\n 'singlearomatic',\n 'doublearomatic',\n 'dative'\n ],\n enumNames: [\n 'Single',\n 'Single Up',\n 'Single Down',\n 'Single Up/Down',\n 'Double',\n 'Double Cis/Trans',\n 'Triple',\n 'Aromatic',\n 'Any',\n 'Hydrogen',\n 'Single/Double',\n 'Single/Aromatic',\n 'Double/Aromatic',\n 'Dative'\n ],\n default: 'single'\n },\n topology: {\n title: 'Topology',\n enum: [0, 1, 2],\n enumNames: ['Either', 'Ring', 'Chain'],\n default: 0\n },\n center: {\n title: 'Reacting Center',\n enum: [0, -1, 1, 2, 4, 8, 12], // 5, 9, 13\n enumNames: [\n 'Unmarked',\n 'Not center',\n 'Center',\n 'No change',\n 'Made/broken',\n 'Order changes',\n 'Made/broken and changes'\n ], // \"Order changes\" x 3\n default: 0\n }\n }\n}\n\nconst sgroup = {\n title: 'SGroup',\n type: 'object',\n required: ['type'],\n oneOf: [\n {\n key: 'GEN',\n title: 'Generic',\n type: 'object',\n properties: {\n type: { enum: ['GEN'] }\n }\n },\n {\n key: 'MUL',\n title: 'Multiple group',\n type: 'object',\n properties: {\n type: { enum: ['MUL'] },\n mul: {\n title: 'Repeat count',\n type: 'integer',\n default: 1,\n minimum: 1\n }\n },\n required: ['mul']\n },\n {\n key: 'SRU',\n title: 'SRU polymer',\n type: 'object',\n properties: {\n type: { enum: ['SRU'] },\n subscript: {\n title: 'Polymer label',\n type: 'string',\n default: 'n',\n pattern: '^[a-zA-Z]$',\n invalidMessage: 'SRU subscript should consist of a single letter'\n },\n connectivity: {\n title: 'Repeat Pattern',\n enum: ['ht', 'hh', 'eu'],\n enumNames: ['Head-to-tail', 'Head-to-head', 'Either unknown'],\n default: 'ht'\n }\n },\n required: ['subscript', 'connectivity']\n },\n {\n key: 'SUP',\n title: 'Superatom',\n type: 'object',\n properties: {\n type: { enum: ['SUP'] },\n name: {\n title: 'Name',\n type: 'string',\n default: '',\n minLength: 1,\n invalidMessage: 'Please, provide a name for the superatom'\n }\n },\n required: ['name']\n }\n ]\n}\nexport const sgroupMap = mapOf(sgroup, 'type')\n\nexport const rgroupLogic = {\n title: 'R-Group',\n type: 'object',\n properties: {\n range: {\n title: 'Occurrence',\n type: 'string',\n maxLength: 50,\n invalidMessage: 'Wrong value'\n },\n resth: {\n title: 'RestH',\n type: 'boolean'\n },\n ifthen: {\n title: 'Condition',\n type: 'integer',\n minium: 0\n }\n }\n}\n\nexport const textSchema = {\n title: 'Text Edit',\n type: 'object',\n required: ['label'],\n properties: {\n label: {\n default: '',\n type: 'string'\n }\n }\n}\n\nexport const attachSchema = {\n title: 'Template edit',\n type: 'object',\n required: ['name'],\n properties: {\n name: {\n title: 'Molecule name',\n type: 'string',\n minLength: 1,\n maxLength: 128,\n invalidMessage:\n 'Template must have a unique name and no more than 128 symbols in length'\n }\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { AtomList, Bond, Elements, StereoLabel } from 'ketcher-core'\n\nimport { atom as atomSchema } from '../schema/struct-schema'\nimport { capitalize } from 'lodash/fp'\nimport { sdataSchema } from '../schema/sdata-schema'\n\nconst DefaultStereoGroupNumber = 1\n\nexport function fromElement(selem) {\n if (selem.label === 'R#') {\n return {\n type: 'rlabel',\n values: fromRlabel(selem.rglabel),\n ...selem\n }\n }\n if (selem.label === 'L#') return fromAtomList(selem)\n\n if (Elements.get(selem.label)) return fromAtom(selem)\n\n if (!selem.label && 'attpnt' in selem) return { ap: fromApoint(selem.attpnt) }\n\n return selem // probably generic\n}\n\nexport function toElement(elem) {\n if (elem.type === 'rlabel') {\n return {\n label: elem.values.length ? 'R#' : 'C',\n rglabel: elem.values.length === 0 ? null : toRlabel(elem.values)\n }\n }\n if (elem.type === 'list' || elem.type === 'not-list') return toAtomList(elem)\n\n if (!elem.label && 'ap' in elem) return { attpnt: toApoint(elem.ap) }\n\n if (Elements.get(capitalize(elem.label))) return toAtom(elem)\n\n if (\n elem.label === 'A' ||\n elem.label === '*' ||\n elem.label === 'Q' ||\n elem.label === 'X' ||\n elem.label === 'R'\n ) {\n elem.pseudo = elem.label\n return toAtom(elem)\n }\n\n return elem\n}\n\nfunction fromAtom(satom) {\n const alias = satom.alias || ''\n const charge = satom.charge.toString()\n\n return {\n alias,\n label: satom.label,\n charge,\n isotope: satom.isotope,\n explicitValence: satom.explicitValence,\n radical: satom.radical,\n invRet: satom.invRet,\n exactChangeFlag: !!satom.exactChangeFlag,\n ringBondCount: satom.ringBondCount,\n substitutionCount: satom.substitutionCount,\n unsaturatedAtom: !!satom.unsaturatedAtom,\n hCount: satom.hCount,\n stereoParity: satom.stereoParity\n }\n}\n\nfunction toAtom(atom) {\n // TODO merge this to Atom.attrlist?\n // see ratomtool\n const chargeRegexp = new RegExp(atomSchema.properties.charge.pattern)\n const pch = chargeRegexp.exec(atom.charge)\n const charge = pch ? parseInt(pch[1] + pch[3] + pch[2]) : atom.charge\n\n const conv = Object.assign({}, atom, {\n label: capitalize(atom.label),\n alias: atom.alias || null,\n exactChangeFlag: +(atom.exactChangeFlag ?? false),\n unsaturatedAtom: +(atom.unsaturatedAtom ?? false)\n })\n if (charge !== undefined) conv.charge = charge\n return conv\n}\n\nfunction fromAtomList(satom) {\n return {\n type: satom.atomList.notList ? 'not-list' : 'list',\n values: satom.atomList.ids.map((i) => Elements.get(i).label)\n }\n}\n\nfunction toAtomList(atom) {\n return {\n pseudo: null,\n label: 'L#',\n atomList: new AtomList({\n notList: atom.type === 'not-list',\n ids: atom.values.map((el) => Elements.get(el).number)\n })\n }\n}\n\nexport function fromStereoLabel(stereoLabel) {\n if (stereoLabel === null) return { type: null }\n const type = stereoLabel.match(/\\D+/g)[0]\n const number = +stereoLabel.replace(type, '')\n\n if (type === StereoLabel.Abs) {\n return {\n type: stereoLabel,\n orNumber: DefaultStereoGroupNumber,\n andNumber: DefaultStereoGroupNumber\n }\n }\n\n if (type === StereoLabel.And) {\n return {\n type: type,\n orNumber: DefaultStereoGroupNumber,\n andNumber: number\n }\n }\n\n if (type === StereoLabel.Or) {\n return {\n type: type,\n orNumber: number,\n andNumber: DefaultStereoGroupNumber\n }\n }\n}\n\nexport function toStereoLabel(stereoLabel) {\n switch (stereoLabel.type) {\n case StereoLabel.And:\n return `${StereoLabel.And}${stereoLabel.andNumber || 1}`\n\n case StereoLabel.Or:\n return `${StereoLabel.Or}${stereoLabel.orNumber || 1}`\n\n default:\n return stereoLabel.type\n }\n}\n\nfunction fromApoint(sap) {\n return {\n primary: ((sap || 0) & 1) > 0,\n secondary: ((sap || 0) & 2) > 0\n }\n}\n\nfunction toApoint(ap) {\n return (ap.primary && 1) + (ap.secondary && 2)\n}\n\nfunction fromRlabel(rg) {\n const res = []\n let rgi\n let val\n for (rgi = 0; rgi < 32; rgi++) {\n if (rg & (1 << rgi)) {\n val = rgi + 1\n res.push(val) // push the string\n }\n }\n return res\n}\n\nfunction toRlabel(values) {\n let res = 0\n values.forEach((val) => {\n const rgi = val - 1\n res |= 1 << rgi\n })\n return res\n}\n\nexport function fromBond(sbond) {\n const type = sbond.type\n const stereo = sbond.stereo\n return {\n type: fromBondType(type, stereo),\n topology: sbond.topology || 0,\n center: sbond.reactingCenterStatus || 0\n }\n}\n\nexport function toBond(bond) {\n return {\n topology: bond.topology,\n reactingCenterStatus: bond.center,\n ...toBondType(bond.type)\n }\n}\n\nexport function toBondType(caption) {\n return Object.assign({}, bondCaptionMap[caption])\n}\n\nfunction fromBondType(type, stereo) {\n for (const caption in bondCaptionMap) {\n if (\n bondCaptionMap[caption].type === type &&\n bondCaptionMap[caption].stereo === stereo\n )\n return caption\n }\n throw Error('No such bond caption')\n}\n\nconst bondCaptionMap = {\n single: {\n type: Bond.PATTERN.TYPE.SINGLE,\n stereo: Bond.PATTERN.STEREO.NONE\n },\n up: {\n type: Bond.PATTERN.TYPE.SINGLE,\n stereo: Bond.PATTERN.STEREO.UP\n },\n down: {\n type: Bond.PATTERN.TYPE.SINGLE,\n stereo: Bond.PATTERN.STEREO.DOWN\n },\n updown: {\n type: Bond.PATTERN.TYPE.SINGLE,\n stereo: Bond.PATTERN.STEREO.EITHER\n },\n double: {\n type: Bond.PATTERN.TYPE.DOUBLE,\n stereo: Bond.PATTERN.STEREO.NONE\n },\n crossed: {\n type: Bond.PATTERN.TYPE.DOUBLE,\n stereo: Bond.PATTERN.STEREO.CIS_TRANS\n },\n triple: {\n type: Bond.PATTERN.TYPE.TRIPLE,\n stereo: Bond.PATTERN.STEREO.NONE\n },\n aromatic: {\n type: Bond.PATTERN.TYPE.AROMATIC,\n stereo: Bond.PATTERN.STEREO.NONE\n },\n singledouble: {\n type: Bond.PATTERN.TYPE.SINGLE_OR_DOUBLE,\n stereo: Bond.PATTERN.STEREO.NONE\n },\n singlearomatic: {\n type: Bond.PATTERN.TYPE.SINGLE_OR_AROMATIC,\n stereo: Bond.PATTERN.STEREO.NONE\n },\n doublearomatic: {\n type: Bond.PATTERN.TYPE.DOUBLE_OR_AROMATIC,\n stereo: Bond.PATTERN.STEREO.NONE\n },\n any: {\n type: Bond.PATTERN.TYPE.ANY,\n stereo: Bond.PATTERN.STEREO.NONE\n },\n hydrogen: {\n type: Bond.PATTERN.TYPE.HYDROGEN,\n stereo: Bond.PATTERN.STEREO.NONE\n },\n dative: {\n type: Bond.PATTERN.TYPE.DATIVE,\n stereo: Bond.PATTERN.STEREO.NONE\n }\n}\n\nexport function fromSgroup(ssgroup) {\n const type = ssgroup.type || 'GEN'\n const { context, fieldName, fieldValue, absolute, attached } = ssgroup.attrs\n\n if (absolute === false && attached === false)\n ssgroup.attrs.radiobuttons = 'Relative'\n else ssgroup.attrs.radiobuttons = attached ? 'Attached' : 'Absolute'\n\n if (\n sdataSchema[context][fieldName] &&\n sdataSchema[context][fieldName].properties.fieldValue.items\n )\n ssgroup.attrs.fieldValue = fieldValue.split('\\n')\n\n return Object.assign({ type }, ssgroup.attrs)\n}\n\nexport function toSgroup(sgroup) {\n const { type, radiobuttons, ...props } = sgroup\n const attrs = { ...props }\n\n const absolute = 'absolute'\n const attached = 'attached'\n\n switch (radiobuttons) {\n case 'Absolute':\n attrs[absolute] = true\n attrs[attached] = false\n break\n case 'Attached':\n attrs[absolute] = false\n attrs[attached] = true\n break\n case 'Relative':\n attrs[absolute] = false\n attrs[attached] = false\n break\n default:\n break\n }\n\n if (attrs.fieldName) attrs.fieldName = attrs.fieldName.trim()\n\n if (attrs.fieldValue) {\n attrs.fieldValue =\n typeof attrs.fieldValue === 'string'\n ? attrs.fieldValue.trim()\n : attrs.fieldValue\n }\n\n return {\n type,\n attrs\n }\n}\n","import { ReBond, ReStruct, isAttachmentBond } from 'ketcher-core'\n\nexport function isFlipDisabled(editor): boolean {\n const selection: { atoms: number[]; bonds: number[] } = editor.selection()\n const restruct: ReStruct = editor.render.ctab\n\n if (!selection) {\n return false\n }\n\n const { bonds = [], atoms = [] } = selection\n const getBondIdsForAtom = (atomId: number) => {\n const result: number[] = []\n for (const [bondId, bond] of restruct.bonds.entries()) {\n if (bond.b.begin === atomId || bond.b.end === atomId) {\n result.push(bondId)\n }\n }\n return result\n }\n const getBondIdsForAttachmentAtoms = () => {\n const result: number[] = []\n for (const atomId of atoms) {\n const atomBondIds = getBondIdsForAtom(atomId)\n for (const atomBondId of atomBondIds) {\n const bond: ReBond | undefined = restruct.bonds.get(atomBondId)\n if (bond && isAttachmentBond(bond.b, selection)) {\n result.push(atomBondId)\n }\n }\n }\n return result\n }\n const getAmountOfAttachmentBonds = (): number => {\n let amountOfAttachmentBonds = 0\n const totalBondIds = new Set([...bonds, ...getBondIdsForAttachmentAtoms()])\n for (const bondId of totalBondIds) {\n const bond: ReBond | undefined = restruct.bonds.get(bondId)\n if (bond && isAttachmentBond(bond.b, selection)) {\n amountOfAttachmentBonds++\n }\n }\n\n return amountOfAttachmentBonds\n }\n\n return getAmountOfAttachmentBonds() > 1\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { RxnArrowMode, SimpleObjectMode, findStereoAtoms } from 'ketcher-core'\n\nimport { bond as bondSchema } from '../data/schema/struct-schema'\nimport isHidden from './isHidden'\nimport { toBondType } from '../data/convert/structconv'\nimport { isFlipDisabled } from './flips'\n\nconst toolActions = {\n hand: {\n title: 'Hand tool',\n shortcut: 'Mod+Alt+h',\n action: { tool: 'hand' },\n hidden: (options) => isHidden(options, 'hand')\n },\n 'select-lasso': {\n title: 'Lasso Selection',\n shortcut: 'Escape',\n action: { tool: 'select', opts: 'lasso' }\n },\n 'select-rectangle': {\n title: 'Rectangle Selection',\n shortcut: 'Escape',\n action: { tool: 'select', opts: 'rectangle' },\n hidden: (options) => isHidden(options, 'select-rectangle')\n },\n 'select-fragment': {\n title: 'Fragment Selection',\n shortcut: 'Escape',\n action: { tool: 'select', opts: 'fragment' },\n hidden: (options) => isHidden(options, 'select-fragment')\n },\n erase: {\n title: 'Erase',\n shortcut: ['Delete', 'Backspace'],\n action: { tool: 'eraser', opts: 1 }, // TODO last selector mode is better\n hidden: (options) => isHidden(options, 'erase')\n },\n chain: {\n title: 'Chain',\n action: { tool: 'chain' },\n hidden: (options) => isHidden(options, 'chain')\n },\n 'enhanced-stereo': {\n shortcut: 'Alt+e',\n title: 'Stereochemistry',\n action: { tool: 'enhancedStereo' },\n disabled: (editor) =>\n findStereoAtoms(\n editor?.struct(),\n Array.from(editor?.struct().atoms.keys())\n ).length === 0,\n hidden: (options) => isHidden(options, 'enhanced-stereo')\n },\n 'charge-plus': {\n shortcut: '5',\n title: 'Charge Plus',\n action: { tool: 'charge', opts: 1 },\n hidden: (options) => isHidden(options, 'charge-plus')\n },\n 'charge-minus': {\n shortcut: '5',\n title: 'Charge Minus',\n action: { tool: 'charge', opts: -1 },\n hidden: (options) => isHidden(options, 'charge-minus')\n },\n transforms: {\n hidden: (options) => isHidden(options, 'transforms')\n },\n 'transform-rotate': {\n shortcut: 'Alt+r',\n title: 'Rotate Tool',\n action: { tool: 'rotate' },\n hidden: (options) => isHidden(options, 'transform-rotate')\n },\n 'transform-flip-h': {\n shortcut: 'Alt+h',\n title: 'Horizontal Flip',\n action: { tool: 'rotate', opts: 'horizontal' },\n disabled: isFlipDisabled,\n hidden: (options) => isHidden(options, 'transform-flip-h')\n },\n 'transform-flip-v': {\n shortcut: 'Alt+v',\n title: 'Vertical Flip',\n action: { tool: 'rotate', opts: 'vertical' },\n disabled: isFlipDisabled,\n hidden: (options) => isHidden(options, 'transform-flip-v')\n },\n sgroup: {\n shortcut: 'Mod+g',\n title: 'S-Group',\n action: { tool: 'sgroup' },\n hidden: (options) => isHidden(options, 'sgroup')\n },\n 'sgroup-data': {\n shortcut: 'Mod+g',\n title: 'Data S-Group',\n action: { tool: 'sgroup', opts: 'DAT' },\n hidden: (options) => isHidden(options, 'sgroup-data')\n },\n arrows: {\n hidden: (options) => isHidden(options, 'arrows')\n },\n 'reaction-arrow-open-angle': {\n title: 'Arrow Open Angle Tool',\n action: { tool: 'reactionarrow', opts: RxnArrowMode.OpenAngle },\n hidden: (options) => isHidden(options, 'reaction-arrow-open-angle')\n },\n 'reaction-arrow-filled-triangle': {\n title: 'Arrow Filled Triangle',\n action: { tool: 'reactionarrow', opts: RxnArrowMode.FilledTriangle },\n hidden: (options) => isHidden(options, 'reaction-arrow-filled-triangle')\n },\n 'reaction-arrow-filled-bow': {\n title: 'Arrow Filled Bow Tool',\n action: { tool: 'reactionarrow', opts: RxnArrowMode.FilledBow },\n hidden: (options) => isHidden(options, 'reaction-arrow-filled-bow')\n },\n 'reaction-arrow-dashed-open-angle': {\n title: 'Arrow Dashed Open Angle Tool',\n action: { tool: 'reactionarrow', opts: RxnArrowMode.DashedOpenAngle },\n hidden: (options) => isHidden(options, 'reaction-arrow-dashed-open-angle')\n },\n 'reaction-arrow-failed': {\n title: 'Failed Arrow Tool',\n action: { tool: 'reactionarrow', opts: RxnArrowMode.Failed },\n hidden: (options) => isHidden(options, 'reaction-arrow-failed')\n },\n 'reaction-arrow-both-ends-filled-triangle': {\n title: 'Arrow Both Ends Filled Triangle Tool',\n action: {\n tool: 'reactionarrow',\n opts: RxnArrowMode.BothEndsFilledTriangle\n },\n hidden: (options) =>\n isHidden(options, 'reaction-arrow-both-ends-filled-triangle')\n },\n 'reaction-arrow-equilibrium-filled-half-bow': {\n title: 'Arrow Equilibrium Filled Half Bow Tool',\n action: {\n tool: 'reactionarrow',\n opts: RxnArrowMode.EquilibriumFilledHalfBow\n },\n hidden: (options) =>\n isHidden(options, 'reaction-arrow-equilibrium-filled-half-bow')\n },\n 'reaction-arrow-equilibrium-filled-triangle': {\n title: 'Arrow Equilibrium Filled Triangle Tool',\n action: {\n tool: 'reactionarrow',\n opts: RxnArrowMode.EquilibriumFilledTriangle\n },\n hidden: (options) =>\n isHidden(options, 'reaction-arrow-equilibrium-filled-triangle')\n },\n 'reaction-arrow-equilibrium-open-angle': {\n title: 'Arrow Equilibrium Open Angle Tool',\n action: { tool: 'reactionarrow', opts: RxnArrowMode.EquilibriumOpenAngle },\n hidden: (options) =>\n isHidden(options, 'reaction-arrow-equilibrium-open-angle')\n },\n 'reaction-arrow-unbalanced-equilibrium-filled-half-bow': {\n title: 'Arrow Unbalanced Equilibrium Filled Half Bow Tool',\n action: {\n tool: 'reactionarrow',\n opts: RxnArrowMode.UnbalancedEquilibriumFilledHalfBow\n },\n hidden: (options) =>\n isHidden(options, 'reaction-arrow-unbalanced-equilibrium-filled-half-bow')\n },\n 'reaction-arrow-unbalanced-equilibrium-open-half-angle': {\n title: 'Arrow Unbalanced Equilibrium Open Half Angle Tool',\n action: {\n tool: 'reactionarrow',\n opts: RxnArrowMode.UnbalancedEquilibriumOpenHalfAngle\n },\n hidden: (options) =>\n isHidden(options, 'reaction-arrow-unbalanced-equilibrium-open-half-angle')\n },\n 'reaction-arrow-unbalanced-equilibrium-large-filled-half-bow': {\n title: 'Arrow Unbalanced Equilibrium Large Filled Half Bow Tool',\n action: {\n tool: 'reactionarrow',\n opts: RxnArrowMode.UnbalancedEquilibriumLargeFilledHalfBow\n },\n hidden: (options) =>\n isHidden(\n options,\n 'reaction-arrow-unbalanced-equilibrium-large-filled-half-bow'\n )\n },\n 'reaction-arrow-unbalanced-equilibrium-filled-half-triangle': {\n title: 'Arrow Unbalanced Equilibrium Filled Half Triangle Tool',\n action: {\n tool: 'reactionarrow',\n opts: RxnArrowMode.UnbalancedEquilibriumFilledHalfTriangle\n },\n hidden: (options) =>\n isHidden(\n options,\n 'reaction-arrow-unbalanced-equilibrium-filled-half-triangle'\n )\n },\n 'reaction-arrow-elliptical-arc-arrow-filled-bow': {\n title: 'Arrow Elliptical Arc Filled Bow Tool',\n action: {\n tool: 'reactionarrow',\n opts: RxnArrowMode.EllipticalArcFilledBow\n },\n hidden: (options) =>\n isHidden(options, 'reaction-arrow-elliptical-arc-arrow-filled-bow')\n },\n 'reaction-arrow-elliptical-arc-arrow-filled-triangle': {\n title: 'Arrow Elliptical Arc Filled Triangle Tool',\n action: {\n tool: 'reactionarrow',\n opts: RxnArrowMode.EllipticalArcFilledTriangle\n },\n hidden: (options) =>\n isHidden(options, 'reaction-arrow-elliptical-arc-arrow-filled-triangle')\n },\n 'reaction-arrow-elliptical-arc-arrow-open-angle': {\n title: 'Arrow Elliptical Arc Open Angle Tool',\n action: {\n tool: 'reactionarrow',\n opts: RxnArrowMode.EllipticalArcOpenAngle\n },\n hidden: (options) =>\n isHidden(options, 'reaction-arrow-elliptical-arc-arrow-open-angle')\n },\n 'reaction-arrow-elliptical-arc-arrow-open-half-angle': {\n title: 'Arrow Elliptical Arc Open Half Angle Tool',\n action: {\n tool: 'reactionarrow',\n opts: RxnArrowMode.EllipticalArcOpenHalfAngle\n },\n hidden: (options) =>\n isHidden(options, 'reaction-arrow-elliptical-arc-arrow-open-half-angle')\n },\n 'reaction-plus': {\n title: 'Reaction Plus Tool',\n action: { tool: 'reactionplus' },\n hidden: (options) => isHidden(options, 'reaction-plus')\n },\n 'reaction-mapping-tools': {\n hidden: (options) => isHidden(options, 'reaction-mapping-tools')\n },\n 'reaction-map': {\n title: 'Reaction Mapping Tool',\n action: { tool: 'reactionmap' },\n hidden: (options) => isHidden(options, 'reaction-map')\n },\n 'reaction-unmap': {\n title: 'Reaction Unmapping Tool',\n action: { tool: 'reactionunmap' },\n hidden: (options) => isHidden(options, 'reaction-unmap')\n },\n rgroup: {\n hidden: (options) => isHidden(options, 'rgroup')\n },\n 'rgroup-label': {\n shortcut: 'Mod+r',\n title: 'R-Group Label Tool',\n action: { tool: 'rgroupatom' },\n hidden: (options) => isHidden(options, 'rgroup-label')\n },\n 'rgroup-fragment': {\n shortcut: ['Mod+Shift+r', 'Mod+r'],\n title: 'R-Group Fragment Tool',\n action: { tool: 'rgroupfragment' },\n hidden: (options) => isHidden(options, 'rgroup-fragment')\n },\n 'rgroup-attpoints': {\n shortcut: 'Mod+r',\n title: 'Attachment Point Tool',\n action: { tool: 'apoint' },\n hidden: (options) => isHidden(options, 'rgroup-attpoints')\n },\n shapes: {\n hidden: (options) => isHidden(options, 'shapes')\n },\n 'shape-ellipse': {\n title: 'Shape Ellipse',\n action: { tool: 'simpleobject', opts: SimpleObjectMode.ellipse },\n hidden: (options) => isHidden(options, 'shape-ellipse')\n },\n 'shape-rectangle': {\n title: 'Shape Rectangle',\n action: { tool: 'simpleobject', opts: SimpleObjectMode.rectangle },\n hidden: (options) => isHidden(options, 'shape-rectangle')\n },\n 'shape-line': {\n title: 'Shape Line',\n action: { tool: 'simpleobject', opts: SimpleObjectMode.line },\n hidden: (options) => isHidden(options, 'shape-line')\n },\n text: {\n title: 'Add text',\n action: { tool: 'text' },\n hidden: (options) => isHidden(options, 'text')\n },\n bonds: {\n hidden: (options) => isHidden(options, 'bonds')\n }\n}\n\nconst bondCuts = {\n single: '1',\n double: '2',\n triple: '3',\n up: '1',\n down: '1',\n updown: '1',\n crossed: '2',\n any: '0',\n aromatic: '4'\n}\n\nconst typeSchema = bondSchema.properties.type\n\nexport default typeSchema.enum.reduce((res, type, i) => {\n res[`bond-${type}`] = {\n title: `${typeSchema.enumNames[i]} Bond`,\n shortcut: bondCuts[type],\n action: {\n tool: 'bond',\n opts: toBondType(type)\n },\n hidden: (options) => isHidden(options, `bond-${type}`)\n }\n return res\n}, toolActions)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nexport const KETCHER_INIT_EVENT_NAME = 'ketcher-init'\n\nexport const KETCHER_SAVED_SETTINGS_KEY = 'ketcher_editor_saved_settings'\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { KETCHER_SAVED_SETTINGS_KEY } from '../../../constants'\n\ninterface SavedSettings {\n selectionTool?: any\n}\n\nexport class SettingsManager {\n static getSettings(): SavedSettings {\n try {\n return JSON.parse(\n localStorage.getItem(KETCHER_SAVED_SETTINGS_KEY) || '{}'\n )\n } catch (e) {\n return {} as SavedSettings\n }\n }\n\n static saveSettings(settings: SavedSettings) {\n if (!settings) {\n return\n }\n localStorage.setItem(KETCHER_SAVED_SETTINGS_KEY, JSON.stringify(settings))\n }\n\n static get selectionTool() {\n const { selectionTool } = this.getSettings()\n\n return selectionTool\n }\n\n static set selectionTool(selectionTool) {\n const settings = this.getSettings()\n\n this.saveSettings({\n ...settings,\n selectionTool\n })\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n FormatterFactory,\n Pile,\n SGroup,\n getStereoAtomsMap,\n identifyStructFormat,\n Struct,\n SupportedFormat\n} from 'ketcher-core'\n\nimport { supportedSGroupTypes } from './constants'\nimport { setAnalyzingFile } from './request'\nimport tools from '../action/tools'\nimport { SettingsManager } from '../utils/settingsManager'\n\nexport function onAction(action) {\n if (action && action.dialog) {\n return {\n type: 'MODAL_OPEN',\n data: { name: action.dialog, prop: action.prop }\n }\n }\n if (action && action.thunk) {\n return action.thunk\n }\n\n return {\n type: 'ACTION',\n action\n }\n}\n\nexport function loadStruct(struct) {\n return (_dispatch, getState) => {\n const editor = getState().editor\n editor.struct(struct)\n }\n}\n\nfunction parseStruct(\n struct: string | Struct,\n server,\n options?\n): Promise<Struct> {\n if (typeof struct === 'string') {\n options = options || {}\n const { rescale, fragment, ...formatterOptions } = options\n\n const format = identifyStructFormat(struct)\n if (format === SupportedFormat.cdx) {\n struct = `base64::${struct.replace(/\\s/g, '')}`\n }\n const factory = new FormatterFactory(server)\n\n const service = factory.create(format, formatterOptions)\n return service.getStructureFromStringAsync(struct)\n } else {\n return Promise.resolve(struct)\n }\n}\n\nexport function load(struct: Struct, options?) {\n return async (dispatch, getState) => {\n const state = getState()\n const editor = state.editor\n const server = state.server\n const errorHandler = editor.errorHandler\n\n options = options || {}\n options = {\n ...options,\n 'dearomatize-on-load': editor.options()['dearomatize-on-load']\n }\n\n dispatch(setAnalyzingFile(true))\n\n try {\n const parsedStruct = await parseStruct(struct, server, options)\n const { fragment } = options\n const hasUnsupportedGroups = parsedStruct.sgroups.some(\n (sGroup) => !supportedSGroupTypes[sGroup.type]\n )\n\n if (hasUnsupportedGroups) {\n await editor.event.confirm.dispatch()\n parsedStruct.sgroups = parsedStruct.sgroups.filter(\n (_key, sGroup) => supportedSGroupTypes[sGroup.type]\n )\n }\n\n parsedStruct.rescale() // TODO: move out parsing?\n\n if (editor.struct().atoms.size) {\n // NB: reset id\n const oldStruct = editor.struct().clone()\n parsedStruct.sgroups.forEach((sg, sgId) => {\n const offset = SGroup.getOffset(oldStruct.sgroups.get(sgId))\n const atomSet = new Pile(sg.atoms)\n const crossBonds = SGroup.getCrossBonds(parsedStruct, atomSet)\n SGroup.bracketPos(sg, parsedStruct, crossBonds)\n if (offset) sg.updateOffset(offset)\n })\n }\n\n parsedStruct.findConnectedComponents()\n parsedStruct.setImplicitHydrogen()\n\n const stereAtomsMap = getStereoAtomsMap(\n parsedStruct,\n Array.from(parsedStruct.bonds.values())\n )\n\n parsedStruct.atoms.forEach((atom, id) => {\n if (parsedStruct?.atomGetNeighbors(id)?.length === 0) {\n atom.stereoLabel = null\n atom.stereoParity = 0\n } else {\n const stereoProp = stereAtomsMap.get(id)\n if (stereoProp) {\n atom.stereoLabel = stereoProp.stereoLabel\n atom.stereoParity = stereoProp.stereoParity\n }\n }\n })\n\n parsedStruct.markFragments()\n\n if (fragment) {\n if (parsedStruct.isBlank()) {\n const savedSelectedTool = SettingsManager.selectionTool\n dispatch({\n type: 'ACTION',\n action: savedSelectedTool || tools['select-rectangle'].action\n })\n } else {\n dispatch(onAction({ tool: 'paste', opts: parsedStruct }))\n }\n } else {\n editor.struct(parsedStruct)\n }\n dispatch(setAnalyzingFile(false))\n dispatch({ type: 'MODAL_CLOSE' })\n } catch (err: any) {\n dispatch(setAnalyzingFile(false))\n err && errorHandler(err.message)\n }\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { ChemicalMimeType, KetSerializer } from 'ketcher-core'\nimport { appUpdate, setStruct } from '../options'\nimport { omit, without } from 'lodash/fp'\n\nimport { checkErrors } from '../modal/form'\nimport { indigoVerification } from '../request'\nimport { load } from '../shared'\n\nexport function checkServer() {\n return (dispatch, getState) => {\n const { editor, server } = getState()\n\n server.then(\n (res) =>\n dispatch(\n appUpdate({\n indigoVersion: res?.indigoVersion,\n imagoVersions: res?.imagoVersions,\n server: res?.isAvailable\n })\n ),\n (e) => editor.errorHandler(e)\n )\n }\n}\n\nexport function recognize(file, version) {\n return (dispatch, getState) => {\n const rec = getState().server.recognize\n const editor = getState().editor\n\n const process = rec(file, version).then(\n (res) => {\n dispatch(setStruct(res.struct))\n },\n (e) => {\n dispatch(setStruct(null))\n editor.errorHandler(e)\n }\n )\n dispatch(setStruct(process))\n }\n}\n\nfunction ketcherCheck(struct, checkParams) {\n const errors = {}\n\n if (checkParams.includes('chiral_flag')) {\n const isAbs = Array.from(struct.frags.values()).some((fr) =>\n fr ? fr.enhancedStereoFlag === 'abs' : false\n )\n if (isAbs) errors.chiral_flag = 'Chiral flag is present on the canvas'\n }\n\n if (checkParams.includes('valence')) {\n let badVal = 0\n struct.atoms.forEach((atom) => atom.badConn && badVal++)\n if (badVal > 0)\n errors.valence = `Structure contains ${badVal} atom${\n badVal !== 1 ? 's' : ''\n } with bad valence`\n }\n\n return errors\n}\n\nexport function check(optsTypes) {\n return (dispatch, getState) => {\n const { editor, server } = getState()\n const ketcherErrors = ketcherCheck(editor.struct(), optsTypes)\n\n const options = getState().options.getServerSettings()\n options.data = { types: without(['valence', 'chiral_flag'], optsTypes) }\n\n return serverCall(editor, server, 'check', options)\n .then((res) => {\n res = Object.assign(res, ketcherErrors) // merge Indigo check with Ketcher check\n dispatch(checkErrors(res))\n })\n .catch((e) => {\n editor.errorHandler(e)\n })\n }\n}\n\nexport function automap(res) {\n return serverTransform('automap', res)\n}\n\nexport function analyse() {\n return (dispatch, getState) => {\n // reset values to initial state\n dispatch({\n type: 'ANALYSE_LOADING'\n })\n const { editor, server, options } = getState()\n const serverSettings = options.getServerSettings()\n serverSettings.data = {\n properties: [\n 'molecular-weight',\n 'most-abundant-mass',\n 'monoisotopic-mass',\n 'gross',\n 'mass-composition'\n ]\n }\n\n return serverCall(editor, server, 'calculate', serverSettings)\n .then((values) =>\n dispatch({\n type: 'CHANGE_ANALYSE',\n data: { values }\n })\n )\n .catch((e) => {\n editor.errorHandler(e)\n })\n }\n}\n\nexport function serverTransform(method, data, struct) {\n return (dispatch, getState) => {\n const state = getState()\n const opts = state.options.getServerSettings()\n\n opts.data = data\n dispatch(indigoVerification(true))\n\n serverCall(state.editor, state.server, method, opts, struct)\n .then((res) => {\n const loadedStruct = new KetSerializer().deserialize(res.struct)\n\n return dispatch(\n load(loadedStruct, {\n rescale: method === 'layout',\n reactionRelayout: method === 'clean'\n })\n )\n })\n .catch((e) => {\n state.editor.errorHandler(e)\n })\n .finally(() => {\n dispatch(indigoVerification(false))\n })\n // TODO: notification\n }\n}\n\n// TODO: serverCall function should not be exported\nexport function serverCall(editor, server, method, options, struct) {\n const selection = editor.selection()\n let selectedAtoms = []\n const aidMap = new Map()\n const currentStruct = (struct || editor.struct()).clone(\n null,\n null,\n false,\n aidMap\n )\n if (selection) {\n selectedAtoms = (\n selection.atoms ? selection.atoms : editor.explicitSelected().atoms\n ).map((aid) => aidMap.get(aid))\n }\n const ketSerializer = new KetSerializer()\n return server.then(() =>\n server[method](\n Object.assign(\n {\n struct: ketSerializer.serialize(currentStruct)\n },\n method !== 'calculate' && method !== 'check'\n ? {\n output_format: ChemicalMimeType.KET\n }\n : null,\n selectedAtoms && selectedAtoms.length > 0\n ? {\n selected: selectedAtoms\n }\n : null,\n options.data\n ),\n omit('data', options)\n )\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport isHidden from './isHidden'\nimport { serverTransform } from '../state/server'\n\nconst config = {\n layout: {\n shortcut: 'Mod+l',\n title: 'Layout',\n action: {\n thunk: serverTransform('layout')\n },\n disabled: (editor, server, options) => !options.app.server,\n hidden: (options) => isHidden(options, 'layout')\n },\n clean: {\n shortcut: 'Mod+Shift+l',\n title: 'Clean Up',\n action: {\n thunk: serverTransform('clean')\n },\n disabled: (editor, server, options) => !options.app.server,\n hidden: (options) => isHidden(options, 'clean')\n },\n arom: {\n title: 'Aromatize',\n action: {\n thunk: serverTransform('aromatize')\n },\n disabled: (editor, server, options) => !options.app.server,\n hidden: (options) => isHidden(options, 'arom')\n },\n dearom: {\n title: 'Dearomatize',\n action: {\n thunk: serverTransform('dearomatize')\n },\n disabled: (editor, server, options) => !options.app.server,\n hidden: (options) => isHidden(options, 'dearom')\n },\n cip: {\n shortcut: 'Mod+p',\n title: 'Calculate CIP',\n action: {\n thunk: serverTransform('calculateCip')\n },\n disabled: (editor, server, options) => !options.app.server,\n hidden: (options) => isHidden(options, 'cip')\n },\n check: {\n title: 'Check Structure',\n action: { dialog: 'check' },\n disabled: (editor, server, options) => !options.app.server,\n hidden: (options) => isHidden(options, 'check')\n },\n analyse: {\n title: 'Calculated Values',\n action: { dialog: 'analyse' },\n disabled: (editor, server, options) => !options.app.server,\n hidden: (options) => isHidden(options, 'analyse')\n },\n recognize: {\n title: 'Recognize Molecule',\n action: { dialog: 'recognize' },\n disabled: (editor, server, options) =>\n // TODO: provide the list of disabled functions as array\n !options.app.server || !options.app.imagoVersions?.length > 0,\n hidden: (options) => isHidden(options, 'recognize')\n },\n miew: {\n title: '3D Viewer',\n action: { dialog: 'miew' },\n hidden: (options) => isHidden(options, 'miew')\n }\n}\n\nexport default config\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { MolSerializer } from 'ketcher-core'\n\nconst molSerializer = new MolSerializer()\n\nexport default [\n `Benzene\n Ketcher 5112215552D 1 1.00000 0.00000 0\n\n 6 6 0 0 0 0 999 V2000\n 0.6548 2.2452 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.0813 2.2456 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3694 2.6575 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.0813 1.4204 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.6548 1.4167 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3712 1.0086 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3 1 2 0 0 0\n 4 2 2 0 0 0\n 1 5 1 0 0 0\n 2 3 1 0 0 0\n 5 6 2 0 0 0\n 6 4 1 0 0 0\nM END`,\n\n `Cyclopentadiene\n Ketcher 5112215552D 1 1.00000 0.00000 0\n\n 5 5 0 0 0 0 999 V2000\n 3.8091 8.2444 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.3091 6.7055 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.6181 7.6510 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.3091 6.7055 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 7.6510 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 5 1 0 0 0\n 2 3 2 0 0 0\n 3 1 1 0 0 0\n 4 2 1 0 0 0\n 5 4 2 0 0 0\nM END`,\n\n `Cyclohexane\n Ketcher 5112215552D 1 1.00000 0.00000 0\n\n 6 6 0 0 0 0 999 V2000\n 2.5500 3.6722 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5500 2.6722 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.4160 2.1722 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2820 2.6722 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2820 3.6722 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.4160 4.1722 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 6 1 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 3 4 1 0 0 0\n 4 5 1 0 0 0\n 5 6 1 0 0 0\nM END`,\n\n `Cyclopentane\n Ketcher 11161218352D 1 1.00000 0.00000 0\n\n 5 5 0 0 0 999 V2000\n 0.8090 1.5389 0.0000 C 0 0 0 0 0 0 0 0 0\n 1.6180 0.9511 0.0000 C 0 0 0 0 0 0 0 0 0\n 1.3090 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0\n 0.3090 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0\n 0.0000 0.9511 0.0000 C 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 3 4 1 0 0 0\n 4 5 1 0 0 0\n 5 1 1 0 0 0\nM END`,\n\n `Cyclopropane\n Ketcher 5112215552D 1 1.00000 0.00000 0\n\n 3 3 0 0 0 0 999 V2000\n 2.6123 1.5663 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.6098 1.5663 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1111 2.4280 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 1 3 1 0 0 0\n 2 3 1 0 0 0\nM END`,\n\n `Cyclobutane\n Ketcher 5112215552D 1 1.00000 0.00000 0\n\n 4 4 0 0 0 0 999 V2000\n 3.4956 1.8862 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.4919 2.8804 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.4846 1.8991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.4821 2.8804 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 1 3 1 0 0 0\n 2 4 1 0 0 0\n 3 4 1 0 0 0\nM END`,\n\n `Cycloheptane\n Ketcher 5112215552D 1 1.00000 0.00000 0\n\n 7 7 0 0 0 0 999 V2000\n 21.4111 6.3389 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 22.1938 6.9555 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 23.1653 6.7333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 23.5987 5.8389 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 21.4166 5.3333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 23.1660 4.9333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 22.1938 4.7111 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 3 4 1 0 0 0\n 4 6 1 0 0 0\n 1 5 1 0 0 0\n 5 7 1 0 0 0\n 6 7 1 0 0 0\nM END`,\n\n `Cyclooctane\n Ketcher 5112215552D 1 1.00000 0.00000 0\n\n 8 8 0 0 0 0 999 V2000\n 2.9268 2.2122 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9270 3.2099 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.6288 3.9118 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.6290 1.5102 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.6266 1.5102 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.3286 2.2122 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.3285 3.2099 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.6266 3.9119 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 1 4 1 0 0 0\n 4 5 1 0 0 0\n 5 6 1 0 0 0\n 6 7 1 0 0 0\n 7 8 1 0 0 0\n 8 3 1 0 0 0\nM END`\n].map((structStr) => molSerializer.deserialize(structStr))\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport templates from '../data/templates'\nimport isHidden from './isHidden'\n\nconst templateLib = {\n 'template-lib': {\n shortcut: 'Shift+t',\n title: 'Custom Templates',\n action: { dialog: 'templates' },\n selected: (editor) => editor._tool.mode === 'classic',\n disabled: (editor, server, options) => !options.app.templates,\n hidden: (options) => isHidden(options, 'template-lib')\n }\n}\n\nexport default templates.reduce((res, struct, i) => {\n res[`template-${i}`] = {\n title: `${struct.name}`,\n shortcut: 't',\n action: {\n tool: 'template',\n opts: { struct }\n }\n }\n return res\n}, templateLib)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { findIndex, findLastIndex } from 'lodash/fp'\nimport isHidden from './isHidden'\n\nexport const zoomList = [\n 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.7, 2,\n 2.5, 3, 3.5, 4\n]\n\nexport default {\n zoom: {\n selected: (editor) => editor.zoom(),\n hidden: (options) => isHidden(options, 'zoom')\n },\n 'zoom-out': {\n shortcut: ['-', '_', 'Shift+-'],\n title: 'Zoom Out',\n disabled: (editor) => editor.zoom() <= zoomList[0], // unsave\n action: (editor) => {\n const zoom = editor.zoom()\n const i = findLastIndex((z) => z <= zoom, zoomList)\n editor.zoom(zoomList[zoomList[i] === zoom && i > 0 ? i - 1 : i])\n },\n hidden: (options) => isHidden(options, 'zoom-out')\n },\n 'zoom-in': {\n shortcut: ['+', '=', 'Shift+='],\n title: 'Zoom In',\n disabled: (editor) => zoomList[zoomList.length - 1] <= editor.zoom(),\n action: (editor) => {\n const zoom = editor.zoom()\n const i = findIndex((z) => z >= zoom, zoomList)\n editor.zoom(\n zoomList[zoomList[i] === zoom && i < zoomList.length - 1 ? i + 1 : i]\n )\n },\n hidden: (options) => isHidden(options, 'zoom-in')\n },\n 'zoom-list': {\n hidden: (options) => isHidden(options, 'zoom-list')\n }\n}\n","/****************************************************************************\n * Copyright 2022 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport isHidden from './isHidden'\n\nconst openHelpLink = () =>\n window\n .open(\n `https://github.com/epam/ketcher/blob/${process.env.HELP_LINK}/documentation/help.md#ketcher-overview`\n )\n ?.focus()\n\nexport default {\n help: {\n shortcut: ['?', '&', 'Shift+/'],\n action: () => openHelpLink(),\n hidden: (options) => isHidden(options, 'help')\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport isHidden from './isHidden'\n\nconst functionalGroupsLib = {\n 'functional-groups': {\n shortcut: 'Shift+f',\n // TODO Update HELP about current tools\n title: 'Functional Groups',\n action: { dialog: 'templates', prop: { tab: 1 } },\n selected: (editor) => editor._tool.mode === 'fg',\n disabled: (_, __, options) => {\n return !options.app.functionalGroups\n },\n hidden: (options) => isHidden(options, 'functional-groups')\n }\n}\n\nexport default functionalGroupsLib\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport isHidden from './isHidden'\n\nconst requestFullscreen = (element: HTMLElement) => {\n ;(element.requestFullscreen && element.requestFullscreen()) ||\n (element.msRequestFullscreen && element.msRequestFullscreen()) ||\n (element.mozRequestFullScreen && element.mozRequestFullScreen()) ||\n (element.webkitRequestFullscreen && element.webkitRequestFullscreen())\n}\n\nconst exitFullscreen = () => {\n ;(document.exitFullscreen && document.exitFullscreen()) ||\n (document.msExitFullscreen && document.msExitFullscreen()) ||\n (document.mozCancelFullScreen && document.mozCancelFullScreen()) ||\n (document.webkitExitFullscreen && document.webkitExitFullscreen())\n}\n\nconst getIfFullScreen = () => {\n return !!(\n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement\n )\n}\n\nconst toggleFullscreen = () => {\n const fullscreenElement: HTMLElement =\n document.querySelector('.Ketcher-root') || document.documentElement\n getIfFullScreen() ? exitFullscreen() : requestFullscreen(fullscreenElement)\n}\n\nexport default {\n fullscreen: {\n title: 'Fullscreen mode',\n action: () => toggleFullscreen(),\n hidden: (options) => isHidden(options, 'fullscreen')\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport atoms from './atoms'\nimport copyAs from './copyAs'\nimport copyImageToClipboard from './copyImageToClipboard'\nimport debug from './debug'\nimport { exec } from '../component/cliparea/cliparea'\nimport isHidden from './isHidden'\nimport server from './server'\nimport templates from './templates'\nimport tools from './tools'\nimport zoom from './zoom'\nimport help from './help'\nimport functionalGroups from './functionalGroups'\nimport fullscreen from './fullscreen'\nimport { SettingsManager } from '../utils/settingsManager'\n\nexport * from './action.types'\n\nconst config = {\n clear: {\n shortcut: 'Mod+Delete',\n title: 'Clear Canvas',\n action: {\n thunk: (dispatch, getState) => {\n const editor = getState().editor\n if (!editor.struct().isBlank()) editor.struct(null)\n const savedSelectedTool = SettingsManager.selectionTool\n dispatch({\n type: 'ACTION',\n action: savedSelectedTool || tools['select-rectangle'].action\n })\n }\n },\n hidden: (options) => isHidden(options, 'clear')\n },\n open: {\n shortcut: 'Mod+o',\n title: 'Open…',\n action: { dialog: 'open' },\n hidden: (options) => isHidden(options, 'open')\n },\n save: {\n shortcut: 'Mod+s',\n title: 'Save As…',\n action: { dialog: 'save' },\n hidden: (options) => isHidden(options, 'save')\n },\n undo: {\n shortcut: 'Mod+z',\n title: 'Undo',\n action: (editor) => {\n editor.undo()\n },\n disabled: (editor) => editor.historySize().undo === 0,\n hidden: (options) => isHidden(options, 'undo')\n },\n redo: {\n shortcut: ['Mod+Shift+z', 'Mod+y'],\n title: 'Redo',\n action: (editor) => {\n editor.redo()\n },\n disabled: (editor) => editor.historySize().redo === 0,\n hidden: (options) => isHidden(options, 'redo')\n },\n cut: {\n shortcut: 'Mod+x',\n title: 'Cut',\n action: (editor) => {\n exec('cut') || dontClipMessage('Cut', editor.errorHandler) // eslint-disable-line no-unused-expressions\n },\n disabled: (editor) => !hasSelection(editor),\n hidden: (options) => isHidden(options, 'cut')\n },\n copies: {\n disabled: (editor) => !hasSelection(editor),\n hidden: (options) => isHidden(options, 'copies')\n },\n copy: {\n shortcut: 'Mod+c',\n title: 'Copy',\n action: (editor) => {\n exec('copy') || dontClipMessage('Copy', editor.errorHandler) // eslint-disable-line no-unused-expressions\n },\n disabled: (editor) => !hasSelection(editor),\n hidden: (options) => isHidden(options, 'copy')\n },\n 'copy-image': {\n shortcut: 'Mod+Shift+f',\n title: 'Copy Image',\n action: () => {\n copyImageToClipboard()\n },\n disabled: (editor) => !hasSelection(editor),\n hidden: (options) => isHidden(options, 'copy-image')\n },\n 'copy-mol': {\n shortcut: 'Mod+m',\n title: 'Copy as MOL',\n action: () => {\n copyAs('mol')\n },\n disabled: (editor) => !hasSelection(editor),\n hidden: (options) => isHidden(options, 'copy-mol')\n },\n 'copy-ket': {\n shortcut: 'Mod+Shift+k',\n title: 'Copy as KET',\n action: () => {\n copyAs('ket')\n },\n disabled: (editor) => !hasSelection(editor),\n hidden: (options) => isHidden(options, 'copy-ket')\n },\n paste: {\n shortcut: 'Mod+v',\n title: 'Paste',\n action: (editor) => {\n exec('paste') || dontClipMessage('Paste', editor.errorHandler) // eslint-disable-line no-unused-expressions\n },\n selected: ({ actions }) =>\n actions && // TMP\n actions.active &&\n actions.active.tool === 'paste',\n hidden: (options) => isHidden(options, 'paste')\n },\n settings: {\n title: 'Settings',\n action: { dialog: 'settings' },\n hidden: (options) => isHidden(options, 'settings')\n },\n about: {\n title: 'About',\n action: { dialog: 'about' },\n hidden: (options) => isHidden(options, 'about')\n },\n 'reaction-automap': {\n title: 'Reaction Auto-Mapping Tool',\n action: { dialog: 'automap' },\n hidden: (options) => isHidden(options, 'reaction-automap'),\n disabled: (editor, server, options) =>\n !options.app.server || !editor.struct().hasRxnArrow()\n },\n 'period-table': {\n title: 'Periodic Table',\n action: { dialog: 'period-table' },\n hidden: (options) => isHidden(options, 'period-table')\n },\n 'extended-table': {\n title: 'Extended Table',\n action: { dialog: 'extended-table' },\n hidden: (options) => isHidden(options, 'extended-table')\n },\n 'select-all': {\n title: 'Select All',\n shortcut: 'Mod+a',\n action: {\n thunk: (dispatch, getState) => {\n getState().editor.selection('all')\n const selectionTool = getState().toolbar.visibleTools.select\n dispatch({ type: 'ACTION', action: tools[selectionTool].action })\n }\n },\n hidden: (options) => isHidden(options, 'select-all')\n },\n 'deselect-all': {\n title: 'Deselect All',\n shortcut: 'Mod+Shift+a',\n action: (editor) => {\n editor.selection(null)\n },\n hidden: (options) => isHidden(options, 'deselect-all')\n },\n 'select-descriptors': {\n title: 'Select descriptors',\n shortcut: 'Mod+d',\n action: {\n thunk: (dispatch, getState) => {\n const selectionTool = getState().toolbar.visibleTools.select\n const editor = getState().editor\n editor.alignDescriptors()\n editor.selection('descriptors')\n dispatch({ type: 'ACTION', action: tools[selectionTool].action })\n }\n },\n hidden: (options) => isHidden(options, 'select-descriptors')\n },\n 'any-atom': {\n title: 'Any atom',\n action: {\n tool: 'atom',\n opts: {\n label: 'A',\n pseudo: 'A',\n type: 'gen'\n }\n },\n hidden: (options) => isHidden(options, 'any-atom')\n },\n ...server,\n ...debug,\n ...tools,\n ...atoms,\n ...zoom,\n ...templates,\n ...functionalGroups,\n ...fullscreen,\n ...help\n}\n\nfunction hasSelection(editor) {\n const selection = editor.selection()\n return (\n selection && // if not only sgroupData selected\n Object.keys(selection).filter((key) => !['sgroupData'].includes(key))\n .length > 0\n )\n}\n\nfunction dontClipMessage(title, errorHandler) {\n errorHandler(\n 'This action is unavailable via menu.\\n' + // eslint-disable-line no-undef\n 'Instead, use shortcut to ' +\n title +\n '.'\n )\n}\n\nexport default config\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport AboutIcon from './files/about.svg'\nimport AnalyseIcon from './files/analyse.svg'\nimport AromIcon from './files/arom.svg'\nimport ArrowUpwardIcon from './files/arrow-upward.svg'\nimport BondAnyIcon from './files/bond-any.svg'\nimport BondAromaticIcon from './files/bond-aromatic.svg'\nimport BondCrossedIcon from './files/bond-crossed.svg'\nimport BondDative from './files/bond-dative.svg'\nimport BondDoubleAromaticIcon from './files/bond-doublearomatic.svg'\nimport BondDoubleIcon from './files/bond-double.svg'\nimport BondDownIcon from './files/bond-down.svg'\nimport BondHydrogenIcon from './files/bond-hydrogen.svg'\nimport BondSingleAromaticIcon from './files/bond-singlearomatic.svg'\nimport BondSingleDoubleIcon from './files/bond-singledouble.svg'\nimport BondSingleIcon from './files/bond-single.svg'\nimport BondTripleIcon from './files/bond-triple.svg'\nimport BondUpIcon from './files/bond-up.svg'\nimport BondUpdownIcon from './files/bond-updown.svg'\nimport CapitalTIcon from './files/capital-t.svg'\nimport ChainIcon from './files/chain.svg'\nimport ChargeMinusIcon from './files/charge-minus.svg'\nimport ChargePlusIcon from './files/charge-plus.svg'\nimport CheckIcon from './files/check.svg'\nimport ChiralFlagIcon from './files/chiral-flag.svg'\nimport CipIcon from './files/cip.svg'\nimport CleanIcon from './files/clean.svg'\nimport CopyIcon from './files/copy.svg'\nimport CopyImageIcon from './files/copy-image.svg'\nimport CopyKetIcon from './files/copy-ket.svg'\nimport CopyMolIcon from './files/copy-mol.svg'\nimport CutIcon from './files/cut.svg'\nimport DearomIcon from './files/dearom.svg'\nimport DeleteIcon from './files/delete.svg'\nimport DropdownIcon from './files/dropdown.svg'\nimport EnhancedStereoIcon from './files/enhanced-stereo.svg'\nimport EditIcon from './files/edit.svg'\nimport ElementsGroupIcon from './files/elements-group.svg'\nimport EraseIcon from './files/erase.svg'\nimport ExtendedTableIcon from './files/extended-table.svg'\nimport FileThumbnailIcon from './files/file-thumbnail.svg'\nimport GenericGroupsIcon from './files/generic-groups.svg'\nimport HandIcon from './files/hand.svg'\nimport CompressedHandIcon from './files/compressed-hand.svg'\nimport HelpIcon from './files/help.svg'\nimport HistoryIcon from './files/history.svg'\nimport ImageFrameIcon from './files/image-frame.svg'\nimport LayoutIcon from './files/layout.svg'\nimport LogoIcon from './files/logo.svg'\nimport MiewIcon from './files/miew.svg'\nimport ClearIcon from './files/clear.svg'\nimport NotFoundIcon from './files/not-found.svg'\nimport OpenIcon from './files/open.svg'\nimport PasteIcon from './files/paste.svg'\nimport OpenWindowPasteIcon from './files/open-window-paste-icon.svg'\nimport OpenWindowUploadIcon from './files/open-window-upload-icon.svg'\nimport PeriodTableIcon from './files/period-table.svg'\nimport ReactionArrowBothEndsFilledTriangle from './files/reaction-arrow-both-ends-filled-triangle.svg'\nimport ReactionArrowDashedOpenAngle from './files/reaction-arrow-dashed-open-angle.svg'\nimport ReactionArrowEllipticalArcArrowFilledBow from './files/reaction-arrow-elliptical-arc-arrow-filled-bow.svg'\nimport ReactionArrowEllipticalArcArrowFilledTriangle from './files/reaction-arrow-elliptical-arc-arrow-filled-triangle.svg'\nimport ReactionArrowEllipticalArcArrowOpenAngle from './files/reaction-arrow-elliptical-arc-arrow-open-angle.svg'\nimport ReactionArrowEllipticalArcArrowOpenHalfAngle from './files/reaction-arrow-elliptical-arc-arrow-open-half-angle.svg'\nimport ReactionArrowEquilibriumFilledHalfBow from './files/reaction-arrow-equilibrium-filled-half-bow.svg'\nimport ReactionArrowEquilibriumFilledTriangle from './files/reaction-arrow-equilibrium-filled-triangle.svg'\nimport ReactionArrowEquilibriumOpenAngle from './files/reaction-arrow-equilibrium-open-angle.svg'\nimport ReactionArrowFailed from './files/reaction-arrow-failed.svg'\nimport ReactionArrowFilledBow from './files/reaction-arrow-filled-bow.svg'\nimport ReactionArrowFilledTriangle from './files/reaction-arrow-filled-triangle.svg'\nimport ReactionArrowOpenAngleIcon from './files/reaction-arrow-open-angle.svg'\nimport ReactionArrowUnbalancedEquilibriumFilledHalfBow from './files/reaction-arrow-unbalanced-equilibrium-filled-half-bow.svg'\nimport ReactionArrowUnbalancedEquilibriumFilledHalfTriangle from './files/reaction-arrow-unbalanced-equilibrium-filled-half-triangle.svg'\nimport ReactionArrowUnbalancedEquilibriumLargeFilledHalfBow from './files/reaction-arrow-unbalanced-equilibrium-large-filled-half-bow.svg'\nimport ReactionArrowUnbalancedEquilibriumOpenHalfAngle from './files/reaction-arrow-unbalanced-equilibrium-open-half-angle.svg'\nimport ReactionAutomapIcon from './files/reaction-automap.svg'\nimport ReactionMapIcon from './files/reaction-map.svg'\nimport ReactionPlusIcon from './files/reaction-plus.svg'\nimport ReactionUnmapIcon from './files/reaction-unmap.svg'\nimport RecognizeIcon from './files/recognize.svg'\nimport RedoIcon from './files/redo.svg'\nimport RgroupAttpointsIcon from './files/rgroup-attpoints.svg'\nimport RgroupFragmentIcon from './files/rgroup-fragment.svg'\nimport RgroupLabelIcon from './files/rgroup-label.svg'\nimport SaveIcon from './files/save.svg'\nimport SearchIcon from './files/search.svg'\nimport SelectFragmentIcon from './files/select-fragment.svg'\nimport SelectLassoIcon from './files/select-lasso.svg'\nimport SelectRectangleIcon from './files/select-rectangle.svg'\nimport SettingsIcon from './files/settings.svg'\nimport SgroupDataIcon from './files/sgroup-data.svg'\nimport SgroupIcon from './files/sgroup.svg'\nimport ShapeEllipseIcon from './files/shape-ellipse.svg'\nimport ShapeLineIcon from './files/shape-line.svg'\nimport ShapePolylineIcon from './files/shape-polyline.svg'\nimport ShapeRectangleIcon from './files/shape-rectangle.svg'\nimport Template0Icon from './files/template-0.svg'\nimport Template1Icon from './files/template-1.svg'\nimport Template2Icon from './files/template-2.svg'\nimport Template3Icon from './files/template-3.svg'\nimport Template4Icon from './files/template-4.svg'\nimport Template5Icon from './files/template-5.svg'\nimport Template6Icon from './files/template-6.svg'\nimport Template7Icon from './files/template-7.svg'\nimport TemplateDialogIcon from './files/template-dialog.svg'\nimport TemplateLibIcon from './files/template-lib.svg'\nimport TextBold from './files/text-bold.svg'\nimport TextIcon from './files/text.svg'\nimport TextItalic from './files/text-italic.svg'\nimport TextSubscript from './files/text-subscript.svg'\nimport TextSuperscript from './files/text-superscript.svg'\nimport TransformRotateIcon from './files/transform-rotate.svg'\nimport TransformFlipHIcon from './files/transform-flip-h.svg'\nimport TransformFlipVIcon from './files/transform-flip-v.svg'\nimport UndoIcon from './files/undo.svg'\nimport ZoomInIcon from './files/zoom-in.svg'\nimport ZoomOutIcon from './files/zoom-out.svg'\nimport TextSpecialSymbolsIcon from './files/text-special-symbols.svg'\nimport Save1Icon from './files/save-1.svg'\nimport Open1Icon from './files/open-1.svg'\nimport ResetIcon from './files/reset.svg'\nimport CloseIcon from './files/close.svg'\nimport GeneralIcon from './files/general.svg'\nimport GeneralWhiteIcon from './files/general-white.svg'\nimport StereoIcon from './files/stereo.svg'\nimport StereoWhiteIcon from './files/stereo-white.svg'\nimport AtomsIcon from './files/atoms.svg'\nimport AtomsWhiteIcon from './files/atoms-white.svg'\nimport BondsIcon from './files/bonds.svg'\nimport BondsWhiteIcon from './files/bonds-white.svg'\nimport ServerIcon from './files/server.svg'\nimport ServerWhiteIcon from './files/server-white.svg'\nimport ThreeDViewerIcon from './files/3d.svg'\nimport ThreeDViewerWhiteIcon from './files/3d-white.svg'\nimport DebuggingIcon from './files/debugging.svg'\nimport DebuggingWhiteIcon from './files/debugging-white.svg'\nimport DropdownIndicatorIcon from './files/dropdown-indicator.svg'\nimport ChevronIcon from './files/chevron.svg'\nimport FullscreenEnterIcon from './files/fullscreen-enter.svg'\nimport FullscreenExitIcon from './files/fullscreen-exit.svg'\nimport α from './files/α.svg'\nimport β from './files/β.svg'\nimport γ from './files/γ.svg'\nimport δ from './files/δ.svg'\nimport ε from './files/ε.svg'\nimport ζ from './files/ζ.svg'\nimport η from './files/η.svg'\nimport θ from './files/θ.svg'\nimport ι from './files/ι.svg'\nimport κ from './files/κ.svg'\nimport λ from './files/λ.svg'\nimport μ from './files/μ.svg'\nimport ν from './files/ν.svg'\nimport ξ from './files/ξ.svg'\nimport ο from './files/ο.svg'\nimport π from './files/π.svg'\nimport ρ from './files/ρ.svg'\nimport σ from './files/σ.svg'\nimport τ from './files/τ.svg'\nimport υ from './files/υ.svg'\nimport φ from './files/φ.svg'\nimport χ from './files/χ.svg'\nimport ψ from './files/ψ.svg'\nimport ω from './files/ω.svg'\nimport DegreeCelseusIcon from './files/degree-celseus.svg'\nimport DegreeFahreinheitIcon from './files/degree-fahreinheit.svg'\nimport AngstromIcon from './files/angstrom.svg'\nimport DegreeIcon from './files/degree-symbol.svg'\nimport PlanckDiracConstantIcon from './files/planck-dirac-constant.svg'\nimport PlusMinusIcon from './files/plus-minus.svg'\nimport PromilleIcon from './files/promille.svg'\nimport RootIcon from './files/root-symbol.svg'\nimport LeftArrowIcon from './files/left-arrow.svg'\nimport RightArrowIcon from './files/right-arrow.svg'\nimport LeftArrowCrossedOutIcon from './files/left-arrow-crossed-out.svg'\nimport RightArrowCrossedOutIcon from './files/right-arrow-crossed-out.svg'\nimport LeftAndRightArrowIcon from './files/left-and-right-arrow.svg'\nimport CapitalPiIcon from './files/capital-pi.svg'\nimport SumIcon from './files/sum-symbol.svg'\nimport InfinityIcon from './files/infinity-sign.svg'\nimport PartialDerivativeIcon from './files/partial-derivative.svg'\nimport DeltaIcon from './files/delta-sign.svg'\nimport IntegralIcon from './files/integral.svg'\nimport ApproximatelyEqualIcon from './files/approximately-equal.svg'\nimport NotEqualIcon from './files/not-equal.svg'\nimport LessOrEqualIcon from './files/less-or-equal.svg'\nimport MoreOrEqualIcon from './files/more-or-equal.svg'\nimport AnyAtomIcon from './files/any-atom.svg'\n\nconst icons = {\n α: α,\n β: β,\n γ: γ,\n δ: δ,\n ε: ε,\n ζ: ζ,\n η: η,\n θ: θ,\n ι: ι,\n κ: κ,\n λ: λ,\n μ: μ,\n ν: ν,\n ξ: ξ,\n ο: ο,\n π: π,\n ρ: ρ,\n σ: σ,\n τ: τ,\n υ: υ,\n φ: φ,\n χ: χ,\n ψ: ψ,\n ω: ω,\n Å: AngstromIcon,\n '°': DegreeIcon,\n ħ: PlanckDiracConstantIcon,\n '±': PlusMinusIcon,\n '‰': PromilleIcon,\n '√': RootIcon,\n '←': LeftArrowIcon,\n '→': RightArrowIcon,\n '←/': LeftArrowCrossedOutIcon,\n '/→': RightArrowCrossedOutIcon,\n '↔': LeftAndRightArrowIcon,\n '∏': CapitalPiIcon,\n '∑': SumIcon,\n '∞': InfinityIcon,\n '∂': PartialDerivativeIcon,\n '∆': DeltaIcon,\n '∫': IntegralIcon,\n '≈': ApproximatelyEqualIcon,\n '=/': NotEqualIcon,\n '≤': LessOrEqualIcon,\n '≥': MoreOrEqualIcon,\n '℉': DegreeFahreinheitIcon,\n '℃': DegreeCelseusIcon,\n about: AboutIcon,\n analyse: AnalyseIcon,\n 'any-atom': AnyAtomIcon,\n arom: AromIcon,\n 'arrow-upward': ArrowUpwardIcon,\n 'bond-any': BondAnyIcon,\n 'bond-aromatic': BondAromaticIcon,\n 'bond-crossed': BondCrossedIcon,\n 'bond-hydrogen': BondHydrogenIcon,\n 'bond-dative': BondDative,\n 'bond-double': BondDoubleIcon,\n 'bond-doublearomatic': BondDoubleAromaticIcon,\n 'bond-down': BondDownIcon,\n 'bond-single': BondSingleIcon,\n 'bond-singlearomatic': BondSingleAromaticIcon,\n 'bond-singledouble': BondSingleDoubleIcon,\n 'bond-triple': BondTripleIcon,\n 'bond-up': BondUpIcon,\n 'bond-updown': BondUpdownIcon,\n 'capital-t': CapitalTIcon,\n chain: ChainIcon,\n 'charge-minus': ChargeMinusIcon,\n 'charge-plus': ChargePlusIcon,\n check: CheckIcon,\n 'chiral-flag': ChiralFlagIcon,\n cip: CipIcon,\n clean: CleanIcon,\n copies: CopyIcon,\n copy: CopyIcon,\n 'copy-image': CopyImageIcon,\n 'copy-mol': CopyMolIcon,\n 'copy-ket': CopyKetIcon,\n cut: CutIcon,\n dearom: DearomIcon,\n delete: DeleteIcon,\n dropdown: DropdownIcon,\n 'enhanced-stereo': EnhancedStereoIcon,\n edit: EditIcon,\n 'elements-group': ElementsGroupIcon,\n 'extended-table': ExtendedTableIcon,\n erase: EraseIcon,\n 'file-thumbnail': FileThumbnailIcon,\n 'fullscreen-enter': FullscreenEnterIcon,\n 'fullscreen-exit': FullscreenExitIcon,\n 'generic-groups': GenericGroupsIcon,\n hand: HandIcon,\n compressedhand: CompressedHandIcon,\n help: HelpIcon,\n history: HistoryIcon,\n 'image-frame': ImageFrameIcon,\n layout: LayoutIcon,\n logo: LogoIcon,\n miew: MiewIcon,\n clear: ClearIcon,\n open: OpenIcon,\n paste: PasteIcon,\n 'period-table': PeriodTableIcon,\n 'reaction-arrow-elliptical-arc-arrow-filled-bow':\n ReactionArrowEllipticalArcArrowFilledBow,\n 'reaction-arrow-elliptical-arc-arrow-filled-triangle':\n ReactionArrowEllipticalArcArrowFilledTriangle,\n 'reaction-arrow-elliptical-arc-arrow-open-angle':\n ReactionArrowEllipticalArcArrowOpenAngle,\n 'reaction-arrow-elliptical-arc-arrow-open-half-angle':\n ReactionArrowEllipticalArcArrowOpenHalfAngle,\n 'reaction-arrow-open-angle': ReactionArrowOpenAngleIcon,\n 'reaction-arrow-filled-triangle': ReactionArrowFilledTriangle,\n 'reaction-arrow-filled-bow': ReactionArrowFilledBow,\n 'reaction-arrow-dashed-open-angle': ReactionArrowDashedOpenAngle,\n 'reaction-arrow-failed': ReactionArrowFailed,\n 'reaction-arrow-both-ends-filled-triangle':\n ReactionArrowBothEndsFilledTriangle,\n 'reaction-arrow-equilibrium-filled-half-bow':\n ReactionArrowEquilibriumFilledHalfBow,\n 'reaction-arrow-equilibrium-filled-triangle':\n ReactionArrowEquilibriumFilledTriangle,\n 'reaction-arrow-equilibrium-open-angle': ReactionArrowEquilibriumOpenAngle,\n 'reaction-arrow-unbalanced-equilibrium-filled-half-bow':\n ReactionArrowUnbalancedEquilibriumFilledHalfBow,\n 'reaction-arrow-unbalanced-equilibrium-open-half-angle':\n ReactionArrowUnbalancedEquilibriumOpenHalfAngle,\n 'reaction-arrow-unbalanced-equilibrium-large-filled-half-bow':\n ReactionArrowUnbalancedEquilibriumLargeFilledHalfBow,\n 'reaction-arrow-unbalanced-equilibrium-filled-half-triangle':\n ReactionArrowUnbalancedEquilibriumFilledHalfTriangle,\n 'reaction-automap': ReactionAutomapIcon,\n 'reaction-map': ReactionMapIcon,\n 'reaction-plus': ReactionPlusIcon,\n 'reaction-unmap': ReactionUnmapIcon,\n recognize: RecognizeIcon,\n redo: RedoIcon,\n 'rgroup-attpoints': RgroupAttpointsIcon,\n 'rgroup-fragment': RgroupFragmentIcon,\n 'rgroup-label': RgroupLabelIcon,\n save: SaveIcon,\n search: SearchIcon,\n 'select-fragment': SelectFragmentIcon,\n 'select-lasso': SelectLassoIcon,\n 'select-rectangle': SelectRectangleIcon,\n settings: SettingsIcon,\n 'sgroup-data': SgroupDataIcon,\n sgroup: SgroupIcon,\n 'template-0': Template0Icon,\n 'template-1': Template1Icon,\n 'template-2': Template2Icon,\n 'template-3': Template3Icon,\n 'template-4': Template4Icon,\n 'template-5': Template5Icon,\n 'template-6': Template6Icon,\n 'template-7': Template7Icon,\n 'template-dialog': TemplateDialogIcon,\n 'template-lib': TemplateLibIcon,\n text: TextIcon,\n 'text-bold': TextBold,\n 'text-italic': TextItalic,\n 'text-subscript': TextSubscript,\n 'text-superscript': TextSuperscript,\n 'transform-flip-h': TransformFlipHIcon,\n 'transform-flip-v': TransformFlipVIcon,\n 'transform-rotate': TransformRotateIcon,\n undo: UndoIcon,\n 'zoom-in': ZoomInIcon,\n 'zoom-out': ZoomOutIcon,\n 'shape-ellipse': ShapeEllipseIcon,\n 'shape-rectangle': ShapeRectangleIcon,\n 'shape-polyline': ShapePolylineIcon,\n 'shape-line': ShapeLineIcon,\n 'not-found': NotFoundIcon,\n 'save-1': Save1Icon,\n 'open-1': Open1Icon,\n reset: ResetIcon,\n close: CloseIcon,\n general: GeneralIcon,\n 'general-white': GeneralWhiteIcon,\n stereo: StereoIcon,\n 'stereo-white': StereoWhiteIcon,\n atoms: AtomsIcon,\n 'atoms-white': AtomsWhiteIcon,\n bonds: BondsIcon,\n 'bonds-white': BondsWhiteIcon,\n server: ServerIcon,\n 'server-white': ServerWhiteIcon,\n '3dviewer': ThreeDViewerIcon,\n '3dviewer-white': ThreeDViewerWhiteIcon,\n debugging: DebuggingIcon,\n 'debugging-white': DebuggingWhiteIcon,\n 'dropdown-indicator': DropdownIndicatorIcon,\n 'text-special-symbols': TextSpecialSymbolsIcon,\n chevron: ChevronIcon,\n 'open-window-paste-icon': OpenWindowPasteIcon,\n 'open-window-upload-icon': OpenWindowUploadIcon\n}\n\nfunction emptyIcon() {\n return null\n}\n\nexport default function findIconByName(name) {\n if (name && icons.hasOwnProperty(name)) {\n const component = icons[name]\n return component\n } else {\n return emptyIcon\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport findIconByName from './../../../../icons'\n\nfunction Icon({ name, ...props }) {\n const Component = findIconByName(name)\n return <Component {...props} />\n}\nexport default Icon\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\nimport { isMacOs } from 'react-device-detect'\n\nconst shortcutAliasMap = {\n Escape: 'Esc',\n Delete: 'Del',\n Mod: isMacOs ? '⌘' : 'Ctrl'\n}\n\nexport function shortcutStr(shortcut?: string | string[]) {\n if (!shortcut) {\n return ''\n }\n\n const shortcutKey = Array.isArray(shortcut) ? shortcut[0] : shortcut\n return shortcutKey.replace(\n /(\\b[a-z]\\b$|Mod|Escape|Delete)/g,\n (key) => shortcutAliasMap[key] || key.toUpperCase()\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { UiAction, UiActionAction } from '../../../../action'\n\nimport Icon from '../../../../component/view/icon'\nimport classes from './ActionButton.module.less'\nimport clsx from 'clsx'\nimport { shortcutStr } from '../../shortcutStr'\n\ninterface ActionButtonProps {\n name: string\n action?: UiAction\n status?: {\n disabled?: boolean\n hidden?: boolean\n }\n selected?: boolean\n disableableButtons: string[]\n indigoVerification: boolean\n className?: string\n}\n\ninterface ActionButtonCallProps {\n onAction: (action: UiActionAction) => void\n}\n\ntype Props = ActionButtonProps & ActionButtonCallProps\n\nconst ActionButton = (props: Props) => {\n const {\n name,\n action,\n status = {},\n selected = false,\n disableableButtons,\n indigoVerification,\n className,\n onAction\n } = props\n\n if (status.hidden) {\n return null\n }\n\n const shortcut = shortcutStr(action?.shortcut)\n const disabled =\n status.disabled || (indigoVerification && disableableButtons.includes(name))\n\n const handleClick = () => {\n if (action?.action) {\n onAction(action.action)\n }\n }\n\n return (\n <button\n disabled={disabled}\n onClick={handleClick}\n title={shortcut ? `${action?.title} (${shortcut})` : action?.title}\n className={clsx(\n classes.button,\n {\n [classes.selected]: selected\n },\n className\n )}\n >\n <Icon name={name} />\n <kbd>{shortcut}</kbd>\n </button>\n )\n}\n\nexport type { ActionButtonProps, ActionButtonCallProps }\nexport { ActionButton }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { CSSProperties, Component } from 'react'\n\nimport ReactDOM from 'react-dom'\n\nconst CLASSNAME_SEPARATOR = ' '\n\ninterface PortalProps {\n isOpen: boolean\n className?: string\n style?: CSSProperties\n}\n\ntype Props = PortalProps\n\nclass Portal extends Component<Props> {\n private readonly element: HTMLDivElement\n private isElementInDom: boolean\n\n constructor(props) {\n super(props)\n this.element = document.createElement('div')\n this.isElementInDom = false\n }\n\n componentDidMount() {\n if (!this.isElementInDom && this.props.isOpen) {\n this.addElementInDOM()\n }\n\n const { className, style } = this.props\n if (className) {\n this.addClassName(className)\n }\n if (style) {\n this.updateStyle(style)\n }\n }\n\n componentWillUnmount() {\n if (this.isElementInDom) {\n this.removeElementFromDOM()\n }\n }\n\n componentDidUpdate(prevProps: Readonly<Props>) {\n const { isOpen, className, style } = this.props\n if (className !== prevProps.className) {\n this.removeClassNames(prevProps.className)\n this.addClassName(className)\n }\n\n if (style !== prevProps.style) {\n this.updateStyle(style, prevProps.style)\n }\n\n if (isOpen === prevProps.isOpen) {\n return\n }\n\n if (isOpen && !this.isElementInDom) {\n this.addElementInDOM()\n } else if (this.isElementInDom) {\n this.removeElementFromDOM()\n }\n }\n\n private addElementInDOM() {\n document.querySelector('.Ketcher-root')?.appendChild(this.element)\n this.isElementInDom = true\n }\n\n private removeElementFromDOM() {\n document.querySelector('.Ketcher-root')?.removeChild(this.element)\n this.isElementInDom = false\n }\n\n private removeClassNames(classNames?: string) {\n if (!classNames) {\n return\n }\n\n classNames.split(CLASSNAME_SEPARATOR).forEach((className) => {\n this.element.classList.remove(className)\n })\n }\n\n private addClassName(classNames?: string) {\n if (!classNames) {\n return\n }\n\n classNames.split(CLASSNAME_SEPARATOR).forEach((className) => {\n this.element.classList.add(className)\n })\n }\n\n private updateStyle(style?: CSSProperties, prevStyle?: CSSProperties) {\n if (prevStyle) {\n Object.keys(prevStyle).forEach((property) => {\n this.element.style[property] = ''\n }, this)\n }\n\n if (!style) {\n return\n }\n\n Object.keys(style).forEach((property) => {\n this.element.style[property] = style[property]\n }, this)\n }\n\n render() {\n const { children } = this.props\n const component = ReactDOM.createPortal(children, this.element)\n return component as any\n }\n}\n\nexport { Portal }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { MultiToolCallProps, MultiToolProps } from '../variants.types'\n\nimport { ActionButton, ActionButtonProps } from '../../../ActionButton'\nimport action from '../../../../../../action'\n\ntype DefaultMultiToolProps = MultiToolProps\ntype DefaultMultiToolCallProps = MultiToolCallProps\n\ntype Props = DefaultMultiToolProps & DefaultMultiToolCallProps\n\nconst DefaultMultiTool = (props: Props) => {\n const { options, status, disableableButtons, indigoVerification, onAction } =\n props\n\n return (\n <>\n {options.map((toolbarItem) => {\n const currentStatus = status[toolbarItem.id]\n return (\n <ActionButton\n key={toolbarItem.id}\n name={toolbarItem.id}\n action={action[toolbarItem.id]}\n status={currentStatus as ActionButtonProps['status']}\n selected={!!currentStatus?.selected}\n disableableButtons={disableableButtons}\n indigoVerification={indigoVerification}\n onAction={onAction}\n />\n )\n })}\n </>\n )\n}\n\nexport type { DefaultMultiToolProps, DefaultMultiToolCallProps }\nexport { DefaultMultiTool }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { MultiToolCallProps, MultiToolProps } from '../variants.types'\n\nimport { ActionButton, ActionButtonProps } from '../../../ActionButton'\nimport action from '../../../../../../action'\nimport classes from './GroupedMultiTool.module.less'\n\ntype GroupedMultiToolProps = MultiToolProps\ntype GroupedMultiToolCallProps = MultiToolCallProps\n\ntype Props = GroupedMultiToolProps & GroupedMultiToolCallProps\n\nconst GroupedMultiTool = (props: Props) => {\n const {\n groups,\n options,\n status,\n disableableButtons,\n indigoVerification,\n onAction\n } = props\n\n if (!groups) {\n return null\n }\n\n return (\n <>\n {groups.map((descriptor) => (\n <div className={classes.group} key={descriptor.start}>\n {options\n .slice(descriptor.start, descriptor.end)\n .map((toolbarItem) => {\n const currentStatus = status[toolbarItem.id]\n return (\n <ActionButton\n key={toolbarItem.id}\n name={toolbarItem.id}\n action={action[toolbarItem.id]}\n status={currentStatus as ActionButtonProps['status']}\n selected={!!currentStatus?.selected}\n disableableButtons={disableableButtons}\n indigoVerification={indigoVerification}\n onAction={onAction}\n />\n )\n })}\n </div>\n ))}\n </>\n )\n}\n\nexport type { GroupedMultiToolProps, GroupedMultiToolCallProps }\nexport { GroupedMultiTool }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { DefaultMultiTool, classes as defaultClasses } from './DefaultMultiTool'\nimport {\n MultiToolCallProps,\n MultiToolProps,\n MultiToolVariant\n} from './variants.types'\n\nimport { ComponentType } from 'react'\nimport { GroupedMultiTool } from './GroupedMultiTool'\n\nexport function chooseMultiTool(\n variant: MultiToolVariant = 'default'\n): [ComponentType<MultiToolProps & MultiToolCallProps>, string?] {\n switch (variant) {\n case 'default':\n return [DefaultMultiTool, defaultClasses.default]\n\n case 'grouped':\n return [GroupedMultiTool]\n\n default:\n throw new Error(`Unsupported variant ${variant}`)\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { useEffect, useState } from 'react'\n\nimport { ToolbarItem } from '../../toolbar.types'\n\ntype HookParams = [string, string | null, ToolbarItem[]]\n\nfunction usePortalOpening([id, opened, options]: HookParams): [boolean] {\n const [isOpen, setIsOpen] = useState<boolean>(false)\n\n useEffect(() => {\n const currentId = (options.length && options![0].id) || ''\n const newState = opened === id || opened === currentId\n setIsOpen(newState)\n }, [opened, options])\n\n return [isOpen]\n}\n\nexport { usePortalOpening }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { CSSProperties, RefObject, useEffect, useState } from 'react'\n\ntype HookParams = [RefObject<HTMLDivElement>, boolean]\n\nfunction usePortalStyle([ref, isOpen]: HookParams): [CSSProperties] {\n const [portalStyle, setPortalStyle] = useState<CSSProperties>({})\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const editorRect = document\n .querySelector('.Ketcher-root')\n ?.getBoundingClientRect() || { top: 0, left: 0 }\n const menuItemRect = ref.current.getBoundingClientRect()\n\n const top = menuItemRect.top - editorRect.top\n const spaceBetween = 4\n const left =\n menuItemRect.left - editorRect.left + menuItemRect.width + spaceBetween\n\n setPortalStyle({ top: `${top}px`, left: `${left}px` })\n }, [ref, isOpen])\n\n return [portalStyle]\n}\n\nexport { usePortalStyle }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n ActionButton,\n ActionButtonCallProps,\n ActionButtonProps\n} from '../ActionButton'\nimport { GroupDescriptor, MultiToolVariant } from './variants/variants.types'\nimport { ToolbarItem, ToolbarItemVariant } from '../../toolbar.types'\nimport action, { UiAction, UiActionAction } from '../../../../action'\n\nimport { useRef } from 'react'\nimport clsx from 'clsx'\nimport Icon from '../../../../component/view/icon'\nimport { Portal } from '../../../../Portal'\nimport { chooseMultiTool } from './variants/chooseMultiTool'\nimport classes from './ToolbarMultiToolItem.module.less'\nimport { usePortalOpening } from './usePortalOpening'\nimport { usePortalStyle } from './usePortalStyle'\nimport { SettingsManager } from '../../../../utils/settingsManager'\n\ninterface ToolbarMultiToolItemProps {\n id: ToolbarItemVariant\n options: ToolbarItem[]\n groups?: GroupDescriptor[]\n variant?: MultiToolVariant\n status: {\n [key in string]?: UiAction\n }\n opened: string | null\n disableableButtons: string[]\n indigoVerification: boolean\n className?: string\n vertical?: boolean\n}\n\ninterface ToolbarMultiToolItemCallProps {\n onAction: (action: UiActionAction) => void\n onOpen: (menuName: string, isSelected: boolean) => void\n}\n\ntype Props = ToolbarMultiToolItemProps & ToolbarMultiToolItemCallProps\n\nconst ToolbarMultiToolItem = (props: Props) => {\n const {\n id,\n options,\n groups,\n variant,\n status,\n opened,\n indigoVerification,\n disableableButtons,\n className,\n vertical,\n onAction,\n onOpen\n } = props\n\n const ref = useRef<HTMLDivElement>(null)\n const [isOpen] = usePortalOpening([id, opened, options])\n const [portalStyle] = usePortalStyle([ref, isOpen])\n\n let selected = false\n let currentId = id\n\n const selectedTool = options.find(\n (toolbarItem) => status[toolbarItem.id]?.selected\n )\n if (selectedTool) {\n currentId = selectedTool.id\n selected = true\n }\n\n const currentStatus = status[currentId]\n // todo: #type find out real type, possible GetActionState is no acceptable here\n // and check this type convert is redundant\n selected = selected || Boolean(currentStatus?.selected)\n\n const allInnerItemsHidden: boolean = options.every(\n (option) => status[option.id]?.hidden\n )\n\n const displayMultiToolItem = !(allInnerItemsHidden || currentStatus?.hidden)\n\n if (!currentStatus && options.length) {\n const savedSelectionTool = SettingsManager.selectionTool\n const savedSelectionToolId =\n savedSelectionTool &&\n `${savedSelectionTool.tool}-${savedSelectionTool.opts}`\n currentId =\n savedSelectionTool &&\n savedSelectionToolId &&\n options.filter(\n (option) =>\n !status[option.id]?.hidden && option.id === savedSelectionToolId\n )[0]?.id\n\n if (!currentId) {\n currentId =\n options.filter((option) => !status[option.id]?.hidden)[0]?.id ||\n options[0].id\n }\n }\n\n const actionButtonProps: Omit<\n ActionButtonProps & ActionButtonCallProps,\n 'name' | 'status' | 'action'\n > = {\n disableableButtons,\n indigoVerification,\n onAction: selected ? () => onOpenOptions() : onAction\n }\n\n const onOpenOptions = () => {\n // todo: same as #type above\n onOpen(id, Boolean(currentStatus?.selected))\n }\n\n const [Component, portalClassName] = chooseMultiTool(variant)\n\n return displayMultiToolItem ? (\n <div ref={ref} className={classes.root}>\n <ActionButton\n {...actionButtonProps}\n className={className}\n name={currentId}\n action={action[currentId]}\n status={currentStatus as ActionButtonProps['status']}\n selected={selected}\n />\n {!isOpen && (\n <Icon\n className={`${classes.icon} ${\n currentStatus?.selected && classes.iconSelected\n }`}\n name=\"dropdown\"\n onClick={onOpenOptions}\n />\n )}\n\n {isOpen ? (\n <Portal\n isOpen={isOpen}\n className={clsx(\n classes.portal,\n vertical && classes['portal-vertical'],\n portalClassName\n )}\n style={portalStyle}\n >\n <Component\n options={options}\n groups={groups}\n status={status}\n disableableButtons={disableableButtons}\n indigoVerification={indigoVerification}\n onAction={onAction}\n />\n </Portal>\n ) : null}\n </div>\n ) : null\n}\n\nexport type { ToolbarMultiToolItemProps, ToolbarMultiToolItemCallProps }\nexport { ToolbarMultiToolItem }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport action, { UiAction, UiActionAction } from '../../../action'\n\nimport { ActionButton, ActionButtonProps } from './ActionButton'\nimport { ToolbarItem } from '../toolbar.types'\nimport { ToolbarMultiToolItem } from './ToolbarMultiToolItem'\n\ninterface ToolbarGroupItemProps extends ToolbarItem {\n status: {\n [key in string]?: UiAction\n }\n opened: string | null\n disableableButtons: string[]\n indigoVerification: boolean\n className?: string\n vertical?: boolean\n}\n\ninterface ToolbarGroupItemCallProps {\n onAction: (action: UiActionAction) => void\n onOpen: (menuName: string, isSelected: boolean) => void\n}\n\ntype Props = ToolbarGroupItemProps & ToolbarGroupItemCallProps\n\nconst ToolbarGroupItem = (props: Props) => {\n const {\n id,\n options,\n status,\n className,\n opened,\n indigoVerification,\n disableableButtons,\n vertical,\n onAction,\n onOpen\n } = props\n\n if (!options?.length) {\n return (\n <ActionButton\n className={className}\n name={id}\n action={action[id]}\n status={status[id] as ActionButtonProps['status']}\n selected={!!status[id]?.selected}\n indigoVerification={indigoVerification}\n disableableButtons={disableableButtons}\n onAction={onAction}\n />\n )\n }\n\n return (\n <ToolbarMultiToolItem\n className={className}\n id={id}\n options={options}\n status={status}\n opened={opened}\n disableableButtons={disableableButtons}\n indigoVerification={indigoVerification}\n onAction={onAction}\n onOpen={onOpen}\n vertical={vertical}\n />\n )\n}\n\nexport type { ToolbarGroupItemProps, ToolbarGroupItemCallProps }\nexport { ToolbarGroupItem }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport action, { UiAction, UiActionAction } from '../../../../action'\n\nimport { ActionButton } from '../../ToolbarGroupItem/ActionButton'\nimport templates from '../../../../data/templates'\n\ninterface TemplatesListProps {\n active?: {\n tool?: string\n opts: {\n struct: any\n }\n }\n disableableButtons: string[]\n indigoVerification: boolean\n}\n\ninterface TemplatesListCallProps {\n onAction: (action: UiActionAction) => void\n}\n\ntype Props = TemplatesListProps & TemplatesListCallProps\n\nconst TemplatesList = (props: Props) => {\n const { active, disableableButtons, indigoVerification, onAction } = props\n\n const isTemplate = active && active.tool === 'template'\n\n const makeAction = (struct, index): UiAction => ({\n shortcut: action[`template-${index}`].shortcut,\n action: { tool: 'template', opts: { struct } },\n title: struct.name\n })\n\n return (\n <>\n {templates.map((struct, index) => (\n <ActionButton\n key={`template-${index}`}\n name={`template-${index}`}\n action={makeAction(struct, index)}\n onAction={onAction}\n selected={isTemplate && active && active.opts.struct === struct}\n status={action[`template-${index}`]}\n disableableButtons={disableableButtons}\n indigoVerification={indigoVerification}\n />\n ))}\n </>\n )\n}\n\nexport type { TemplatesListProps, TemplatesListCallProps }\nexport { TemplatesList }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { FC } from 'react'\nimport {\n ToolbarGroupItem,\n ToolbarGroupItemCallProps,\n ToolbarGroupItemProps\n} from '../ToolbarGroupItem'\n\nimport { TemplatesList } from './TemplatesList'\nimport classes from './BottomToolbar.module.less'\nimport clsx from 'clsx'\n\nconst Group: FC<{ className?: string }> = ({ children, className }) => (\n <div className={clsx(classes.group, className)}>{children}</div>\n)\n\ninterface BottomToolbarProps\n extends Omit<ToolbarGroupItemProps, 'id' | 'options'> {\n className?: string\n active?: {\n opts: any\n tool: string\n }\n}\n\ntype BottomToolbarCallProps = ToolbarGroupItemCallProps\n\ntype Props = BottomToolbarProps & BottomToolbarCallProps\n\nconst BottomToolbar = (props: Props) => {\n const { className, ...rest } = props\n const { active, disableableButtons, indigoVerification, onAction } = rest\n\n return (\n <div className={clsx(classes.root, className)}>\n <Group>\n <TemplatesList\n active={active}\n indigoVerification={indigoVerification}\n disableableButtons={disableableButtons}\n onAction={onAction}\n />\n </Group>\n\n <Group>\n <ToolbarGroupItem id=\"template-lib\" {...rest} />\n </Group>\n </div>\n )\n}\n\nexport type { BottomToolbarProps, BottomToolbarCallProps }\nexport { BottomToolbar }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { KetSerializer, SdfSerializer } from 'ketcher-core'\n\nimport { appUpdate } from '../options'\nimport { storage } from '../../storage-ext'\nimport templatesRawData from '../../../../templates/library.sdf'\n\nexport function initLib(lib) {\n return {\n type: 'TMPL_INIT',\n data: { lib }\n }\n}\n\nexport default function initTmplLib(dispatch, baseUrl, cacheEl) {\n const fileName = 'library.sdf'\n return deserializeSdfTemplates(baseUrl, cacheEl, fileName).then((res) => {\n const lib = res.concat(userTmpls())\n dispatch(initLib(lib))\n dispatch(appUpdate({ templates: true }))\n })\n}\n\nconst deserializeSdfTemplates = (baseUrl, cacheEl, fileName) => {\n const sdfSerializer = new SdfSerializer()\n const tmpls = sdfSerializer.deserialize(templatesRawData)\n const prefetch = prefetchRender(tmpls, baseUrl + '/templates/', cacheEl)\n\n return prefetch.then((cachedFiles) =>\n tmpls.map((tmpl) => {\n const pr = prefetchSplit(tmpl)\n if (pr.file)\n tmpl.props.prerender =\n cachedFiles.indexOf(pr.file) !== -1 ? `#${pr.id}` : ''\n\n return tmpl\n })\n )\n}\n\nfunction userTmpls() {\n const userLib = storage.getItem('ketcher-tmpls')\n if (!Array.isArray(userLib) || userLib.length === 0) return []\n const ketSerializer = new KetSerializer()\n return userLib\n .map((tmpl) => {\n try {\n if (tmpl.props === '') tmpl.props = {}\n tmpl.props.group = 'User Templates'\n\n return {\n struct: ketSerializer.deserialize(tmpl.struct),\n props: tmpl.props\n }\n } catch (ex) {\n return null\n }\n })\n .filter((tmpl) => tmpl !== null)\n}\n\nexport function prefetchStatic(url) {\n return fetch(url, { credentials: 'same-origin' }).then((resp) => {\n if (resp.ok) return resp.text()\n throw Error('Could not fetch ' + url)\n })\n}\n\nfunction prefetchSplit(tmpl) {\n const pr = tmpl.props.prerender\n const res = pr && pr.split('#', 2)\n\n return {\n file: pr && res[0],\n id: pr && res[1]\n }\n}\n\nfunction prefetchRender(tmpls, baseUrl, cacheEl) {\n const files = tmpls.reduce((res, tmpl) => {\n const file = prefetchSplit(tmpl).file\n\n if (file && res.indexOf(file) === -1) res.push(file)\n\n return res\n }, [])\n const fetch = Promise.all(\n files.map((fn) => prefetchStatic(baseUrl + fn).catch(() => null))\n )\n\n return fetch.then((svgs) => {\n svgs.forEach((svgContent) => {\n if (svgContent) cacheEl.innerHTML += svgContent\n })\n\n return files.filter((file, i) => !!svgs[i])\n })\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { formReducer, formsState } from './form'\n\nexport function openDialog(dispatch, dialogName, props) {\n return new Promise((resolve, reject) => {\n dispatch({\n type: 'MODAL_OPEN',\n data: {\n name: dialogName,\n prop: {\n ...props,\n onResult: resolve,\n onCancel: reject\n }\n }\n })\n })\n}\n\nfunction modalReducer(state = null, action) {\n const { type, data } = action\n\n if (type === 'UPDATE_FORM') {\n // Don't update if modal has already been closed\n // TODO: refactor actions and server functions in /src/script/ui/state/server/index.js to\n // not send 'UPDATE_FORM' action to a closed modal in the first place\n if (!state) {\n return null\n }\n\n const formState = formReducer(state.form, action, state.name)\n return { ...state, form: formState }\n }\n\n switch (type) {\n case 'MODAL_CLOSE':\n return null\n case 'MODAL_OPEN':\n return {\n name: data.name,\n form: formsState[data.name] || null,\n prop: data.prop || null\n }\n default:\n return state\n }\n}\n\nexport default modalReducer\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport initTmplLib, { initLib } from './init-lib'\n\nimport { KetSerializer } from 'ketcher-core'\nimport { omit } from 'lodash/fp'\nimport { openDialog } from '../modal'\nimport { storage } from '../../storage-ext'\n\nexport { initTmplLib }\n\n/* TEMPLATES */\nexport function selectTmpl(tmpl) {\n return {\n type: 'TMPL_SELECT',\n data: { selected: tmpl }\n }\n}\n\nexport function changeGroup(group) {\n return {\n type: 'TMPL_CHANGE_GROUP',\n data: { group, selected: null }\n }\n}\n\nexport function changeFilter(filter) {\n return {\n type: 'TMPL_CHANGE_FILTER',\n data: { filter, selected: null }\n }\n}\n\nexport function changeTab(tab) {\n return {\n type: 'TMPL_CHANGE_TAB',\n data: { tab }\n }\n}\n\n/* TEMPLATE-ATTACH-EDIT */\nexport function initAttach(name, attach) {\n return {\n type: 'INIT_ATTACH',\n data: {\n name,\n atomid: attach.atomid,\n bondid: attach.bondid\n }\n }\n}\n\nexport function setAttachPoints(attach) {\n return {\n type: 'SET_ATTACH_POINTS',\n data: {\n atomid: attach.atomid,\n bondid: attach.bondid\n }\n }\n}\n\nexport function setTmplName(name) {\n return {\n type: 'SET_TMPL_NAME',\n data: { name }\n }\n}\n\nexport function editTmpl(tmpl) {\n return (dispatch, getState) => {\n openDialog(dispatch, 'attach', { tmpl })\n .then(\n (formData) => {\n tmpl.struct.name = formData ? formData.name.trim() : tmpl.struct.name\n tmpl.props = formData\n ? Object.assign({}, tmpl.props, formData.attach)\n : tmpl.props\n\n if (tmpl.props.group === 'User Templates')\n updateLocalStore(getState().templates.lib)\n },\n () => null\n )\n .then(() => openDialog(dispatch, 'templates').catch(() => null))\n }\n}\n\nexport function deleteUserTmpl(tmpl) {\n return {\n type: 'TMPL_DELETE',\n data: {\n tmpl: tmpl\n }\n }\n}\n\nexport function deleteTmpl(tmpl) {\n return (dispatch, getState) => {\n const lib = getState().templates.lib.filter((value) => value !== tmpl)\n dispatch(deleteUserTmpl(tmpl))\n updateLocalStore(lib)\n }\n}\n\n/* SAVE */\nexport function saveUserTmpl(struct) {\n // TODO: structStr can be not in mol format => structformat.toString ...\n const tmpl = { struct: struct.clone(), props: {} }\n\n return (dispatch, getState) => {\n openDialog(dispatch, 'attach', { tmpl })\n .then(({ name, attach }) => {\n tmpl.struct.name = name.trim()\n tmpl.props = { ...attach, group: 'User Templates' }\n\n const lib = getState().templates.lib.concat(tmpl)\n dispatch(initLib(lib))\n updateLocalStore(lib)\n })\n .catch(() => null)\n }\n}\n\nfunction updateLocalStore(lib) {\n const ketSerializer = new KetSerializer()\n const userLib = lib\n .filter((item) => item.props.group === 'User Templates')\n .map((item) => ({\n struct: ketSerializer.serialize(item.struct),\n props: Object.assign({}, omit(['group'], item.props))\n }))\n\n storage.setItem('ketcher-tmpls', userLib)\n}\n\n/* REDUCER */\nexport const initTmplsState = {\n lib: [],\n selected: null,\n filter: '',\n group: null,\n attach: {},\n mode: 'classic',\n tab: 0\n}\n\nconst tmplActions = [\n 'TMPL_INIT',\n 'TMPL_SELECT',\n 'TMPL_CHANGE_GROUP',\n 'TMPL_CHANGE_FILTER',\n 'TMPL_CHANGE_TAB'\n]\n\nconst attachActions = ['INIT_ATTACH', 'SET_ATTACH_POINTS', 'SET_TMPL_NAME']\n\nfunction templatesReducer(state = initTmplsState, action) {\n if (tmplActions.includes(action.type))\n return Object.assign({}, state, action.data)\n\n if (attachActions.includes(action.type)) {\n const attach = Object.assign({}, state.attach, action.data)\n return { ...state, attach }\n }\n\n if (action.type === 'TMPL_DELETE') {\n const currentState = Object.assign({}, state)\n const lib = currentState.lib.filter((value) => value !== action.data.tmpl)\n return { ...currentState, lib: lib }\n }\n\n return state\n}\n\nexport default templatesReducer\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { isEmpty, isEqual, pickBy } from 'lodash/fp'\n\nimport { SettingsManager } from '../../utils/settingsManager'\nimport actions from '../../action'\n\nfunction execute(activeTool, { action, editor, server, options }) {\n if (action.tool) {\n if (editor.tool(action.tool, action.opts)) {\n return action\n }\n } else if (typeof action === 'function') {\n action(editor, server, options)\n } else {\n console.info('no action')\n }\n return activeTool\n}\n\nfunction selected(actObj, activeTool, { editor, server }) {\n if (typeof actObj.selected === 'function')\n return actObj.selected(editor, server)\n else if (actObj.action && actObj.action.tool)\n return isEqual(activeTool, actObj.action)\n return false\n}\n\nfunction disabled(actObj, { editor, server, options }) {\n if (typeof actObj.disabled === 'function')\n return actObj.disabled(editor, server, options)\n return false\n}\n\nfunction hidden(actObj, { options }) {\n if (typeof actObj.hidden === 'function') return actObj.hidden(options)\n return false\n}\n\nfunction status(actionName, activeTool, params) {\n const actObj = actions[actionName]\n return pickBy((x) => x, {\n selected: selected(actObj, activeTool, params),\n disabled: disabled(actObj, params),\n hidden: hidden(actObj, params)\n })\n}\n\nexport default function (state = null, { type, action, ...params }) {\n let activeTool\n switch (type) {\n case 'INIT': {\n const savedSelectedTool = SettingsManager.selectionTool\n action = savedSelectedTool || actions['select-rectangle'].action\n }\n case 'ACTION':\n activeTool = execute(state && state.activeTool, {\n ...params,\n action\n })\n if (activeTool.tool === 'select') {\n SettingsManager.selectionTool = activeTool\n }\n case 'UPDATE':\n return Object.keys(actions).reduce(\n (res, actionName) => {\n const value = status(actionName, res.activeTool, params)\n if (!isEmpty(value)) res[actionName] = value\n return res\n },\n { activeTool: activeTool || state.activeTool }\n )\n default:\n return state\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { AnyAction } from 'redux'\nimport { appUpdate } from '../options'\nimport {\n FunctionalGroupsProvider,\n SdfItem,\n SdfSerializer,\n Struct\n} from 'ketcher-core'\nimport templatesRawData from '../../../../templates/fg.sdf'\n\ninterface FGState {\n lib: []\n functionalGroupInfo: any\n mode: string\n}\n\nconst initialState: FGState = {\n lib: [],\n functionalGroupInfo: null,\n mode: 'fg'\n}\n\nconst functionalGroupsReducer = (\n state = initialState,\n { type, payload }: AnyAction\n) => {\n switch (type) {\n case 'FG_INIT':\n return { ...state, ...payload }\n\n case 'FG_HIGHLIGHT':\n return { ...state, functionalGroupInfo: payload }\n\n default:\n return state\n }\n}\n\nconst initFGroups = (lib: SdfItem[]) => ({ type: 'FG_INIT', payload: { lib } })\nconst highlightFGroup = (group: any) => ({\n type: 'FG_HIGHLIGHT',\n payload: group\n})\n\nexport function highlightFG(dispatch, group: any) {\n dispatch(highlightFGroup(group))\n}\n\nexport function initFGTemplates() {\n return async (dispatch) => {\n const provider = FunctionalGroupsProvider.getInstance()\n const sdfSerializer = new SdfSerializer()\n const templates = sdfSerializer.deserialize(templatesRawData)\n const functionalGroups = templates.reduce(\n (acc: Struct[], { struct }) => [...acc, struct],\n []\n )\n provider.setFunctionalGroupsList(functionalGroups)\n dispatch(initFGroups(templates))\n dispatch(appUpdate({ functionalGroups: true }))\n }\n}\n\nexport default functionalGroupsReducer\n","import { Render, Struct } from 'ketcher-core'\n\n/**\n * Is used to improve search and opening tab performance in Template Dialog\n * Rendering a lot of structures causes great delay\n */\nconst renderCache = new Map()\n\nexport class RenderStruct {\n /**\n * for S-Groups we want to show expanded structure\n * without brackets\n */\n static prepareStruct(struct: Struct) {\n if (struct.sgroups.size > 0) {\n const newStruct = struct.clone()\n newStruct.sgroups.delete(0)\n return newStruct\n }\n return struct\n }\n\n static render(\n el: HTMLElement | null,\n struct: Struct | null,\n options: any = {}\n ) {\n if (el && struct) {\n const { cachePrefix = '' } = options\n const cacheKey = `${cachePrefix}${struct.name}`\n if (renderCache.has(cacheKey)) {\n el.innerHTML = renderCache.get(cacheKey)\n return\n }\n const preparedStruct = this.prepareStruct(struct)\n preparedStruct.initHalfBonds()\n preparedStruct.initNeighbors()\n preparedStruct.setImplicitHydrogen()\n preparedStruct.markFragments()\n const rnd = new Render(el, {\n autoScale: true,\n ...options\n })\n rnd.setMolecule(preparedStruct)\n rnd.update(true, options.viewSz)\n renderCache.set(cacheKey, rnd.clientArea.innerHTML)\n }\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nexport function fileOpener(server) {\n return new Promise((resolve, reject) => {\n // TODO: refactor return\n if (global.FileReader) {\n resolve(throughFileReader)\n } else if (global.ActiveXObject) {\n try {\n const fso = new ActiveXObject('Scripting.FileSystemObject') // eslint-disable-line no-undef\n resolve((file) => Promise.resolve(throughFileSystemObject(fso, file)))\n } catch (e) {\n reject(e)\n }\n } else if (server) {\n resolve(\n server.then(() => {\n throw Error(\"Server doesn't still support echo method\")\n // return resolve(throughForm2IframePosting);\n })\n )\n } else {\n reject(new Error('Your browser does not support opening files locally'))\n }\n })\n}\n\nfunction throughFileReader(file) {\n const isCDX = file.name.endsWith('cdx')\n return new Promise((resolve, reject) => {\n const rd = new FileReader() // eslint-disable-line no-undef\n\n rd.onload = () => {\n const content = isCDX ? rd.result.slice(37) : rd.result\n if (file.msClose) file.msClose()\n resolve(content)\n }\n\n rd.onerror = (event) => {\n reject(event)\n }\n isCDX ? rd.readAsDataURL(file) : rd.readAsText(file, 'UTF-8')\n })\n}\n\nfunction throughFileSystemObject(fso, file) {\n // IE9 and below\n const fd = fso.OpenTextFile(file.name, 1)\n const content = fd.ReadAll()\n fd.Close()\n return content\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\nimport { escapeRegExp, filter as _filter, flow, reduce } from 'lodash/fp'\nimport { Option } from '../component/form/Select'\n\nconst GREEK_SIMBOLS = {\n Alpha: 'A',\n alpha: 'α',\n Beta: 'B',\n beta: 'β',\n Gamma: 'Г',\n gamma: 'γ'\n}\n\nconst greekRe = new RegExp(\n '\\\\b' + Object.keys(GREEK_SIMBOLS).join('\\\\b|\\\\b') + '\\\\b',\n 'g'\n)\n\nexport function greekify(str: string): string {\n return str.replace(greekRe, (sym) => GREEK_SIMBOLS[sym])\n}\n\nexport function filterLib(lib, filter: string) {\n const trimmedFilter = filter.trim()\n const re = new RegExp(escapeRegExp(greekify(trimmedFilter)), 'i')\n return flow(\n _filter(\n (item: any) =>\n !trimmedFilter ||\n re.test(greekify(item.struct.name)) ||\n re.test(greekify(item.props.group))\n ),\n reduce((res, item) => {\n if (!res[item.props.group]) res[item.props.group] = [item]\n else res[item.props.group].push(item)\n return res\n }, {})\n )(lib)\n}\n\nexport function filterFGLib(lib, filter) {\n const trimmedFilter = filter.trim()\n const re = new RegExp(escapeRegExp(greekify(trimmedFilter)), 'i')\n const searchFunction = (item) => {\n const fields = [\n item.struct.name,\n item.props.abbreviation,\n item.props.name\n ].filter(Boolean)\n return fields.some((field) => re.test(greekify(field)))\n }\n return flow(\n _filter((item: any) => !trimmedFilter || searchFunction(item)),\n reduce((res, item) => {\n if (!res[item.props.group]) res[item.props.group] = [item]\n else res[item.props.group].push(item)\n return res\n }, {})\n )(lib)\n}\n\nexport const getSelectOptionsFromSchema = (schema): Array<Option> => {\n return schema.enum.reduce((options, value, index) => {\n options.push({\n value,\n label: schema?.enumNames?.[index] ?? value\n })\n\n return options\n }, [])\n}\n\nexport { RenderStruct } from './renderStruct'\nexport { fileOpener } from './fileOpener'\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { AnyAction } from 'redux'\nimport { appUpdate } from '../options'\nimport {\n SaltsAndSolventsProvider,\n FunctionalGroupsProvider,\n SdfItem,\n SdfSerializer,\n Struct\n} from 'ketcher-core'\nimport { RenderStruct } from '../../utils'\nimport templatesRawData from '../../../../templates/salts-and-solvents.sdf'\n\ninterface SaltsAndSolventsState {\n lib: []\n mode: string\n}\n\nconst initialState: SaltsAndSolventsState = {\n lib: [],\n mode: 'fg'\n}\n\nconst saltsAndSolventsReducer = (\n state = initialState,\n { type, payload }: AnyAction\n) => {\n switch (type) {\n case 'SALTS_AND_SOLVENTS_INIT':\n return { ...state, ...payload }\n\n default:\n return state\n }\n}\n\nconst initSaltsAndSolvents = (lib: SdfItem[]) => ({\n type: 'SALTS_AND_SOLVENTS_INIT',\n payload: { lib }\n})\n\n// This prerender adds part of structures to cache to speed up loading of Salts and Solvents tab\nconst prerenderPartOfStructures = (saltsAndSolvents: Struct[], settings) => {\n const part = saltsAndSolvents.slice(0, 50)\n part.forEach((struct) => {\n const div = document.createElement('div')\n div.style.width = '100px'\n div.style.height = '100px'\n div.style.display = 'none'\n document.body.appendChild(div)\n RenderStruct.render(div, struct, {\n ...settings,\n autoScaleMargin: 10,\n cachePrefix: 'saltsAndSolvents',\n downScale: true\n })\n div.remove()\n })\n}\n\nexport function initSaltsAndSolventsTemplates() {\n return async (dispatch, getState) => {\n const { settings } = getState().options\n const saltsAndSolventsProvider = SaltsAndSolventsProvider.getInstance()\n const functionalGroupsProvider = FunctionalGroupsProvider.getInstance()\n const sdfSerializer = new SdfSerializer()\n const templates = sdfSerializer.deserialize(templatesRawData)\n const saltsAndSolvents = templates.reduce(\n (acc: Struct[], { struct, props }) => {\n struct.abbreviation = String(props.abbreviation)\n acc.push(struct)\n return acc\n },\n []\n )\n prerenderPartOfStructures(saltsAndSolvents, settings)\n saltsAndSolventsProvider.setSaltsAndSolventsList(saltsAndSolvents)\n functionalGroupsProvider.addToFunctionalGroupsList(saltsAndSolvents)\n dispatch(initSaltsAndSolvents(templates))\n dispatch(appUpdate({ saltsAndSolvents: true }))\n }\n}\n\nexport default saltsAndSolventsReducer\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { capitalize, isEqual, throttle } from 'lodash/fp'\n\nimport { basicAtoms } from '../../action/atoms'\nimport tools from '../../action/tools'\n\nconst initial = {\n freqAtoms: [],\n currentAtom: 0,\n opened: null,\n visibleTools: {\n select: 'select-rectangle'\n }\n}\nconst MAX_ATOMS = 7\n\nfunction updateVisibleTools(visibleTool, activeTool) {\n const regExp = /(bond)(-)(common|stereo|query)/\n const menuHeight = window.innerHeight\n\n return Object.keys(visibleTool).reduce(\n (res, key) => {\n if (key === 'bond' && menuHeight > 700) return res // TODO remove me after update styles\n if (key === 'transform' && menuHeight > 800) return res\n if (key === 'rgroup' && menuHeight > 850) return res\n if (key === 'shape' && menuHeight > 900) return res\n if (!key.match(regExp) || menuHeight > 700) res[key] = visibleTool[key]\n return res\n },\n { ...activeTool }\n )\n}\n\nexport function initResize() {\n return function (dispatch, getState) {\n const onResize = throttle(250, () => {\n const state = getState()\n state.editor.render.update()\n dispatch({ type: 'CLEAR_VISIBLE', data: state.actionState.activeTool })\n })\n addEventListener('resize', onResize) // eslint-disable-line\n }\n}\n\n/* REDUCER */\nexport default function (state = initial, action) {\n const { type, data } = action\n\n switch (type) {\n case 'ACTION': {\n const visibleTool = toolInMenu(action.action)\n return visibleTool\n ? {\n ...state,\n opened: null,\n visibleTools: { ...state.visibleTools, ...visibleTool }\n }\n : { ...state, opened: null }\n }\n case 'ADD_ATOMS': {\n const newState = addFreqAtom(data, state.freqAtoms, state.currentAtom)\n return { ...state, ...newState }\n }\n case 'CLEAR_VISIBLE': {\n const activeTool = toolInMenu(action.data)\n const correctTools = updateVisibleTools(state.visibleTools, activeTool)\n return { ...state, opened: null, visibleTools: { ...correctTools } }\n }\n case 'OPENED': {\n return data.isSelected && state.opened\n ? { ...state, opened: null }\n : { ...state, opened: data.menuName }\n }\n case 'UPDATE':\n return { ...state, opened: null }\n case 'MODAL_OPEN':\n return { ...state, opened: null }\n default:\n return state\n }\n}\n/* ------- */\n\nfunction addFreqAtom(label, freqAtoms, index) {\n label = capitalize(label)\n if (basicAtoms.indexOf(label) > -1 || freqAtoms.indexOf(label) !== -1)\n return { freqAtoms }\n\n freqAtoms[index] = label\n index = (index + 1) % MAX_ATOMS\n\n return { freqAtoms, currentAtom: index }\n}\n\nexport function addAtoms(atomLabel) {\n return {\n type: 'ADD_ATOMS',\n data: atomLabel\n }\n}\n\nfunction toolInMenu(action) {\n const tool = Object.keys(tools).find((toolName) =>\n isEqual(action, tools[toolName].action)\n )\n\n const sel = document.getElementById(tool)\n const dropdown = sel && hiddenAncestor(sel)\n\n return dropdown && dropdown.id !== '' ? { [dropdown.id]: sel.id } : null\n}\n\nexport function hiddenAncestor(el, base) {\n base = base || document.body\n let findEl = el\n\n while (\n findEl &&\n window.getComputedStyle(findEl).overflow !== 'hidden' &&\n !findEl.classList.contains('opened')\n ) {\n if (findEl === base) return null\n findEl = findEl.parentNode\n }\n\n return findEl\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { applyMiddleware, combineReducers, createStore } from 'redux'\nimport { load, onAction } from './shared'\nimport optionsReducer, { initOptionsState } from './options'\nimport templatesReducer, { initTmplsState } from './templates'\n\nimport actionStateReducer from './action'\nimport functionalGroupsReducer from './functionalGroups'\nimport saltsAndSolventsReducer from './saltsAndSolvents'\nimport { logger } from 'redux-logger'\nimport modalReducer from './modal'\nimport { pick } from 'lodash/fp'\nimport requestReducer from './request'\nimport thunk from 'redux-thunk'\nimport toolbarReducer from './toolbar'\n\nexport { onAction, load }\n\nconst shared = combineReducers({\n actionState: actionStateReducer,\n toolbar: toolbarReducer,\n modal: modalReducer,\n server: (store = null) => store,\n editor: (store = null) => store,\n options: optionsReducer,\n templates: templatesReducer,\n functionalGroups: functionalGroupsReducer,\n saltsAndSolvents: saltsAndSolventsReducer,\n requestsStatuses: requestReducer\n})\n\nfunction getRootReducer(setEditor) {\n return function root(state, action) {\n switch (action.type) {\n case 'INIT':\n setEditor(action.editor)\n\n case 'UPDATE':\n const { type, ...data } = action\n if (data) state = { ...state, ...data }\n }\n\n const sh = shared(state, {\n ...action,\n ...pick(['editor', 'server', 'options'], state)\n })\n\n const finalState =\n sh === state.shared\n ? state\n : {\n ...state,\n ...sh\n }\n\n // TODO: temporary solution. Need to review work with redux store\n global.currentState = finalState\n return finalState\n }\n}\n\nexport default function (options, server, setEditor) {\n const { buttons = {}, ...restOptions } = options\n\n // TODO: redux localStorage here\n const initState = {\n actionState: null,\n editor: null,\n modal: null,\n options: Object.assign(initOptionsState, { app: restOptions, buttons }),\n server: server || Promise.reject(new Error('Standalone mode!')),\n templates: initTmplsState\n }\n\n const middleware = [thunk]\n if (\n process.env.NODE_ENV !== 'production' &&\n process.env.KETCHER_ENABLE_REDUX_LOGGER === 'true'\n ) {\n middleware.push(logger)\n }\n\n const rootReducer = getRootReducer(setEditor)\n return createStore(rootReducer, initState, applyMiddleware(...middleware))\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n BottomToolbar,\n BottomToolbarCallProps,\n BottomToolbarProps\n} from './BottomToolbar'\n\nimport { ComponentType } from 'react'\nimport { Dispatch } from 'redux'\nimport { connect } from 'react-redux'\nimport { onAction } from '../../../state'\n\ntype StateProps = Omit<BottomToolbarProps, 'className'>\ntype OwnProps = Pick<BottomToolbarProps, 'className'>\n\nconst mapStateToProps = (state): StateProps => ({\n active: state.actionState && state.actionState.activeTool,\n status: state.actionState || {},\n opened: state.toolbar.opened,\n indigoVerification: state.requestsStatuses.indigoVerification,\n disableableButtons: []\n})\n\nconst mapDispatchToProps = (dispatch: Dispatch): BottomToolbarCallProps => ({\n onAction: (action) => dispatch(onAction(action)),\n onOpen: (menuName, isSelected) =>\n dispatch({\n type: 'OPENED',\n data: { menuName, isSelected }\n })\n})\n\nconst BottomToolbarContainer: ComponentType<OwnProps> = connect(\n mapStateToProps,\n mapDispatchToProps\n)(BottomToolbar)\n\nexport { BottomToolbarContainer }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { ToolbarItem, ToolbarItemVariant } from '../../toolbar.types'\n\nfunction makeItems(ids: ToolbarItemVariant[]): ToolbarItem[] {\n return ids.map((id) => ({ id }))\n}\n\nexport { makeItems }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { GroupDescriptor } from '../../ToolbarGroupItem/ToolbarMultiToolItem/variants/variants.types'\nimport { ToolbarItem } from '../../toolbar.types'\nimport { makeItems } from '../../ToolbarGroupItem/utils'\n\nconst bondCommon: ToolbarItem[] = makeItems([\n 'bond-single',\n 'bond-double',\n 'bond-triple'\n])\nconst bondStereo: ToolbarItem[] = makeItems([\n 'bond-up',\n 'bond-down',\n 'bond-updown',\n 'bond-crossed'\n])\nconst bondQuery: ToolbarItem[] = makeItems([\n 'bond-any',\n 'bond-aromatic',\n 'bond-singledouble',\n 'bond-singlearomatic',\n 'bond-doublearomatic'\n])\nconst bondSpecial: ToolbarItem[] = makeItems(['bond-dative', 'bond-hydrogen'])\n\nconst groups = [bondCommon, bondStereo, bondQuery, bondSpecial]\nconst groupOptions = groups.flat()\nconst groupDescriptors = groups.reduce((accum, group, index) => {\n const start = accum[index - 1]?.end || 0\n\n accum.push({\n start: start,\n end: start + group.length\n })\n\n return accum\n}, [] as GroupDescriptor[])\n\nexport {\n bondCommon,\n bondStereo,\n bondQuery,\n bondSpecial,\n groupOptions,\n groupDescriptors\n}\n","import { bondCommon, bondQuery, bondSpecial, bondStereo } from './Bond/options'\nimport { makeItems } from '../ToolbarGroupItem/utils'\nimport { ToolbarItem } from '../toolbar.types'\n\nconst rGroupOptions: ToolbarItem[] = makeItems([\n 'rgroup-label',\n 'rgroup-fragment',\n 'rgroup-attpoints'\n])\n\nconst shapeOptions: ToolbarItem[] = makeItems([\n 'shape-ellipse',\n 'shape-rectangle',\n 'shape-line'\n])\n\nconst transformOptions: ToolbarItem[] = makeItems([\n 'transform-rotate',\n 'transform-flip-h',\n 'transform-flip-v'\n])\n\nconst selectOptions: ToolbarItem[] = makeItems([\n 'select-rectangle',\n 'select-lasso',\n 'select-fragment'\n])\n\nconst arrowsOptions: ToolbarItem[] = makeItems([\n 'reaction-arrow-open-angle',\n 'reaction-arrow-filled-triangle',\n 'reaction-arrow-filled-bow',\n 'reaction-arrow-dashed-open-angle',\n 'reaction-arrow-failed',\n 'reaction-arrow-both-ends-filled-triangle',\n 'reaction-arrow-equilibrium-filled-half-bow',\n 'reaction-arrow-equilibrium-filled-triangle',\n 'reaction-arrow-equilibrium-open-angle',\n 'reaction-arrow-unbalanced-equilibrium-filled-half-bow',\n 'reaction-arrow-unbalanced-equilibrium-open-half-angle',\n 'reaction-arrow-unbalanced-equilibrium-large-filled-half-bow',\n 'reaction-arrow-unbalanced-equilibrium-filled-half-triangle',\n 'reaction-arrow-elliptical-arc-arrow-filled-bow',\n 'reaction-arrow-elliptical-arc-arrow-filled-triangle',\n 'reaction-arrow-elliptical-arc-arrow-open-angle',\n 'reaction-arrow-elliptical-arc-arrow-open-half-angle'\n])\n\nconst mappingOptions: ToolbarItem[] = makeItems([\n 'reaction-map',\n 'reaction-unmap',\n 'reaction-automap'\n])\n\nexport {\n rGroupOptions,\n bondCommon,\n bondQuery,\n bondSpecial,\n bondStereo,\n shapeOptions,\n transformOptions,\n selectOptions,\n arrowsOptions,\n mappingOptions\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport React from 'react'\nimport SettingsContext from './../contexts/settingsContext'\n\nexport function useSettingsContext() {\n return React.useContext(SettingsContext)\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { RefCallback, RefObject, useMemo, useState } from 'react'\n\nimport { throttle } from 'lodash'\nimport useResizeObserver from 'use-resize-observer/polyfilled'\n\nconst throttleMilliseconds = 100\n\ntype Size = {\n width: number | undefined\n height: number | undefined\n}\n\ntype Options<THTMLElement extends HTMLElement> = {\n ref?: RefObject<THTMLElement> | THTMLElement | null | undefined\n}\n\ntype HookResponse<THTMLElement extends HTMLElement> = {\n ref: RefCallback<THTMLElement>\n width: number | undefined\n height: number | undefined\n}\n\nfunction useThrottleResizeObserver<THTMLElement extends HTMLElement>(\n options: Options<THTMLElement> = {}\n): HookResponse<THTMLElement> {\n const [size, setSize] = useState<Size>({\n height: undefined,\n width: undefined\n })\n\n const onResize = useMemo(() => throttle(setSize, throttleMilliseconds), [])\n\n const { ref } = useResizeObserver<THTMLElement>({ onResize, ...options })\n return { ref, ...size }\n}\n\nexport { useThrottleResizeObserver as useResizeObserver }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport FormContext from './../contexts/formContext'\nimport React from 'react'\n\nexport function useFormContext() {\n return React.useContext(FormContext)\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport AppContext from '../contexts/appContext'\nimport React from 'react'\n\nexport const useAppContext = () => React.useContext(AppContext)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { useEffect, useRef } from 'react'\n\nexport const useInterval = (callback: () => void, delay: number | null) => {\n const savedCallback = useRef(callback)\n\n // Remember the latest callback if it changes.\n useEffect(() => {\n savedCallback.current = callback\n }, [callback])\n\n // Set up the interval.\n useEffect(() => {\n // Don't schedule if no delay is specified.\n if (delay === null) {\n return\n }\n\n const id = setInterval(() => savedCallback.current(), delay)\n\n return () => clearInterval(id)\n }, [delay])\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { useDispatch } from 'react-redux'\nimport { indigoVerification } from '../script/ui/state/request'\nimport { Ketcher, KetcherAsyncEvents } from 'ketcher-core'\nimport { useEffect } from 'react'\nimport { useAppContext } from './useAppContext'\nimport { KETCHER_INIT_EVENT_NAME } from '../constants'\n\nexport const useSubscriptionOnEvents = () => {\n const dispatch = useDispatch()\n\n const { getKetcherInstance } = useAppContext()\n\n const loadingHandler = () => {\n dispatch(indigoVerification(true))\n }\n const actionResultHandler = () => {\n dispatch(indigoVerification(false))\n }\n\n const subscribe = (ketcher: Ketcher) => {\n ketcher.eventBus.addListener(KetcherAsyncEvents.LOADING, loadingHandler)\n ketcher.eventBus.addListener(\n KetcherAsyncEvents.SUCCESS,\n actionResultHandler\n )\n ketcher.eventBus.addListener(\n KetcherAsyncEvents.FAILURE,\n actionResultHandler\n )\n }\n\n const unsubscribe = (ketcher: Ketcher) => {\n ketcher.eventBus.removeListener(KetcherAsyncEvents.LOADING, loadingHandler)\n ketcher.eventBus.removeListener(\n KetcherAsyncEvents.SUCCESS,\n actionResultHandler\n )\n ketcher.eventBus.removeListener(\n KetcherAsyncEvents.FAILURE,\n actionResultHandler\n )\n }\n\n useEffect(() => {\n const subscribeOnInit = () => {\n subscribe(getKetcherInstance())\n }\n\n const unsubscribeOnUnMount = () => {\n unsubscribe(getKetcherInstance())\n }\n\n window.addEventListener(KETCHER_INIT_EVENT_NAME, () => {\n subscribeOnInit()\n })\n return () => {\n unsubscribeOnUnMount()\n window.removeEventListener(KETCHER_INIT_EVENT_NAME, subscribeOnInit)\n }\n }, [])\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport classes from './ArrowScroll.module.less'\nimport clsx from 'clsx'\nimport { useEffect, useState } from 'react'\nimport { useInterval } from '../../../../../hooks'\n\ninterface ArrowScrollProps {\n startInView: boolean\n endInView: boolean\n scrollUp: any\n scrollDown: any\n}\n\nconst ArrowScroll = ({\n startInView,\n endInView,\n scrollUp,\n scrollDown\n}: ArrowScrollProps) => {\n const [isScrollDown, setScrollDown] = useState(false)\n const [isScrollUp, setScrollUp] = useState(false)\n useInterval(scrollDown, isScrollDown ? 100 : null)\n useInterval(scrollUp, isScrollUp ? 100 : null)\n\n useEffect(() => {\n return () => {\n setScrollUp(false)\n }\n }, [startInView])\n\n useEffect(() => {\n return () => {\n setScrollDown(false)\n }\n }, [endInView])\n\n return (\n <div className={classes.scroll}>\n {endInView ? (\n <></>\n ) : (\n <button\n onClick={() => scrollDown()}\n onMouseUp={() => setScrollDown(false)}\n onMouseDown={() => setScrollDown(true)}\n className={clsx(classes.button, classes.down)}\n >\n ▼\n </button>\n )}\n {startInView ? (\n <></>\n ) : (\n <button\n onClick={() => scrollUp()}\n onMouseUp={() => setScrollUp(false)}\n onMouseDown={() => setScrollUp(true)}\n className={clsx(classes.button, classes.up)}\n >\n ▲\n </button>\n )}\n </div>\n )\n}\n\nexport { ArrowScroll }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nconst mediaSizes = {\n topSeparatorsShowingWidth: 1080,\n bondCollapsableHeight: 770,\n rGroupCollapsableHeight: 1000,\n shapeCollapsableHeight: 1000,\n transformCollapsableHeight: 870\n}\n\nexport { mediaSizes }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n ToolbarGroupItemCallProps,\n ToolbarGroupItemProps\n} from '../../ToolbarGroupItem'\nimport {\n bondCommon,\n bondQuery,\n bondSpecial,\n bondStereo,\n groupDescriptors,\n groupOptions\n} from './options'\n\nimport { ToolbarMultiToolItem } from '../../ToolbarGroupItem/ToolbarMultiToolItem'\nimport { mediaSizes } from '../../mediaSizes'\n\ninterface BondProps extends Omit<ToolbarGroupItemProps, 'id' | 'options'> {\n height?: number\n}\ntype BondCallProps = ToolbarGroupItemCallProps\n\ntype Props = BondProps & BondCallProps\n\nconst Bond = (props: Props) => {\n const { height, ...rest } = props\n\n if (height && height <= mediaSizes.bondCollapsableHeight) {\n return (\n <ToolbarMultiToolItem\n id=\"bonds\"\n options={groupOptions}\n variant=\"grouped\"\n groups={groupDescriptors}\n {...rest}\n />\n )\n }\n\n return (\n <>\n <ToolbarMultiToolItem id=\"bond-common\" options={bondCommon} {...rest} />\n <ToolbarMultiToolItem id=\"bond-stereo\" options={bondStereo} {...rest} />\n <ToolbarMultiToolItem id=\"bond-query\" options={bondQuery} {...rest} />\n <ToolbarMultiToolItem id=\"bond-special\" options={bondSpecial} {...rest} />\n </>\n )\n}\n\nexport type { BondProps, BondCallProps }\nexport { Bond }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n ToolbarGroupItem,\n ToolbarGroupItemCallProps,\n ToolbarGroupItemProps\n} from '../../ToolbarGroupItem'\n\nimport { rGroupOptions } from '../leftToolbarOptions'\n\ninterface RGroupProps extends Omit<ToolbarGroupItemProps, 'id' | 'options'> {\n height?: number\n}\ntype RGroupCallProps = ToolbarGroupItemCallProps\n\ntype Props = RGroupProps & RGroupCallProps\n\nconst RGroup = (props: Props) => {\n return <ToolbarGroupItem id=\"rgroup\" options={rGroupOptions} {...props} />\n}\n\nexport type { RGroupProps, RGroupCallProps }\nexport { RGroup }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n ToolbarGroupItem,\n ToolbarGroupItemCallProps,\n ToolbarGroupItemProps\n} from '../../ToolbarGroupItem'\n\nimport { shapeOptions } from '../leftToolbarOptions'\n\ninterface ShapeProps extends Omit<ToolbarGroupItemProps, 'id' | 'options'> {\n height?: number\n}\ntype ShapeCallProps = ToolbarGroupItemCallProps\n\ntype Props = ShapeProps & ShapeCallProps\n\nconst Shape = (props: Props) => {\n return <ToolbarGroupItem id=\"shapes\" options={shapeOptions} {...props} />\n}\n\nexport type { ShapeProps, ShapeCallProps }\nexport { Shape }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n ToolbarGroupItem,\n ToolbarGroupItemCallProps,\n ToolbarGroupItemProps\n} from '../../ToolbarGroupItem'\n\nimport { transformOptions } from '../leftToolbarOptions'\nimport { mediaSizes } from '../../mediaSizes'\n\ninterface TransformProps extends Omit<ToolbarGroupItemProps, 'id' | 'options'> {\n height?: number\n}\ntype TransformCallProps = ToolbarGroupItemCallProps\n\ntype Props = TransformProps & TransformCallProps\n\nconst Transform = (props: Props) => {\n const { height, ...rest } = props\n\n if (height && height <= mediaSizes.transformCollapsableHeight) {\n return (\n <ToolbarGroupItem id=\"transforms\" options={transformOptions} {...rest} />\n )\n }\n\n return (\n <>\n <ToolbarGroupItem id=\"transform-rotate\" {...rest} />\n <ToolbarGroupItem id=\"transform-flip-h\" {...rest} />\n <ToolbarGroupItem id=\"transform-flip-v\" {...rest} />\n </>\n )\n}\n\nexport type { TransformProps, TransformCallProps }\nexport { Transform }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { FC, MutableRefObject, useRef } from 'react'\nimport {\n ToolbarGroupItem,\n ToolbarGroupItemCallProps,\n ToolbarGroupItemProps\n} from '../ToolbarGroupItem'\nimport { ToolbarItem, ToolbarItemVariant } from '../toolbar.types'\nimport {\n arrowsOptions,\n bondCommon,\n bondQuery,\n bondSpecial,\n bondStereo,\n mappingOptions,\n rGroupOptions,\n selectOptions,\n shapeOptions,\n transformOptions\n} from './leftToolbarOptions'\n\nimport { ArrowScroll } from '../ArrowScroll'\nimport { Bond } from './Bond'\nimport { RGroup } from './RGroup'\nimport { Shape } from './Shape'\nimport { Transform } from './Transform'\nimport classes from './LeftToolbar.module.less'\nimport clsx from 'clsx'\nimport { useInView } from 'react-intersection-observer'\nimport { useResizeObserver } from '../../../../../hooks'\n\ninterface LeftToolbarProps\n extends Omit<ToolbarGroupItemProps, 'id' | 'options'> {\n className?: string\n}\n\ntype LeftToolbarCallProps = ToolbarGroupItemCallProps\n\ntype Props = LeftToolbarProps & LeftToolbarCallProps\n\nconst LeftToolbar = (props: Props) => {\n const { className, ...rest } = props\n const { ref, height } = useResizeObserver<HTMLDivElement>()\n const scrollRef = useRef() as MutableRefObject<HTMLDivElement>\n const [startRef, startInView] = useInView({ threshold: 0.8 })\n const [endRef, endInView] = useInView({ threshold: 0.8 })\n const sizeRef = useRef() as MutableRefObject<HTMLDivElement>\n\n type ItemProps = {\n id: ToolbarItemVariant\n options?: ToolbarItem[]\n }\n const Item = ({ id, options }: ItemProps) =>\n ToolbarGroupItem({ id, options, ...rest })\n\n const scrollUp = () => {\n scrollRef.current.scrollTop -= sizeRef.current.offsetHeight\n }\n\n const scrollDown = () => {\n scrollRef.current.scrollTop += sizeRef.current.offsetHeight\n }\n\n const status = rest.status\n\n type GroupItem = ItemProps\n\n const Group: FC<{ items?: GroupItem[]; className?: string }> = ({\n items,\n className\n }) => {\n const visibleItems: GroupItem[] = []\n if (items) {\n items.forEach((item) => {\n let visible = true\n if (status[item.id]?.hidden) {\n visible = false\n } else if (item.options?.every((option) => status[option.id]?.hidden)) {\n visible = false\n }\n if (visible) visibleItems.push(item)\n })\n }\n return visibleItems.length ? (\n <div className={clsx(classes.group, className)}>\n {visibleItems.map((item) => {\n switch (item.id) {\n case 'bond-common':\n return <Bond {...rest} height={height} key={item.id} />\n case 'transform-rotate':\n return <Transform {...rest} height={height} key={item.id} />\n case 'rgroup':\n return <RGroup {...rest} key={item.id} />\n case 'shapes':\n return <Shape {...rest} key={item.id} />\n default:\n return <Item id={item.id} options={item.options} key={item.id} />\n }\n })}\n </div>\n ) : null\n }\n\n return (\n <div className={clsx(classes.root, className)} ref={ref}>\n <div className={classes.buttons} ref={scrollRef}>\n <div className={classes.listener} ref={startRef}>\n <Group\n className={classes.groupItem}\n items={[\n { id: 'hand' },\n { id: 'select', options: selectOptions },\n { id: 'erase' }\n ]}\n />\n </div>\n\n <Group\n className={classes.groupItem}\n items={[\n {\n id: 'bonds',\n options: [\n ...bondCommon,\n ...bondQuery,\n ...bondSpecial,\n ...bondStereo\n ]\n },\n { id: 'chain' }\n ]}\n />\n\n <Group\n className={classes.groupItem}\n items={[{ id: 'enhanced-stereo' }]}\n />\n\n <Group\n className={classes.groupItem}\n items={[{ id: 'charge-plus' }, { id: 'charge-minus' }]}\n />\n\n <Group\n className={classes.groupItem}\n items={[\n {\n id: 'transforms',\n options: transformOptions\n }\n ]}\n />\n\n <Group\n className={classes.groupItem}\n items={[{ id: 'sgroup' }, { id: 'sgroup-data' }]}\n />\n\n <Group\n className={classes.groupItem}\n items={[\n { id: 'reaction-plus' },\n { id: 'arrows', options: arrowsOptions },\n {\n id: 'reaction-mapping-tools',\n options: mappingOptions\n }\n ]}\n />\n <div className={classes.listener} ref={sizeRef}>\n <Group\n className={classes.groupItem}\n items={[{ id: 'rgroup', options: rGroupOptions }]}\n />\n </div>\n\n <Group\n className={classes.groupItem}\n items={[{ id: 'shapes', options: shapeOptions }]}\n />\n\n <div ref={endRef}>\n <Group className={classes.groupItem} items={[{ id: 'text' }]} />\n </div>\n </div>\n <ArrowScroll\n startInView={startInView}\n endInView={endInView}\n scrollUp={scrollUp}\n scrollDown={scrollDown}\n />\n </div>\n )\n}\n\nexport type { LeftToolbarProps, LeftToolbarCallProps }\nexport { LeftToolbar }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n LeftToolbar,\n LeftToolbarCallProps,\n LeftToolbarProps\n} from './LeftToolbar'\n\nimport { Dispatch } from 'redux'\nimport { connect } from 'react-redux'\nimport { onAction } from '../../../state'\n\ntype StateProps = Omit<LeftToolbarProps, 'className'>\n\nconst mapStateToProps = (state: any): StateProps => ({\n status: state.actionState || {},\n opened: state.toolbar.opened,\n indigoVerification: state.requestsStatuses.indigoVerification,\n disableableButtons: []\n})\n\nconst mapDispatchToProps = (dispatch: Dispatch): LeftToolbarCallProps => ({\n onAction: (action) => dispatch(onAction(action)),\n onOpen: (menuName, isSelected) =>\n dispatch({\n type: 'OPENED',\n data: { menuName, isSelected }\n })\n})\n\nconst LeftToolbarContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LeftToolbar)\n\nexport { LeftToolbarContainer }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport classes from './Atom.module.less'\nimport clsx from 'clsx'\n\nfunction Atom({ el, shortcut, selected, ...props }) {\n return (\n <button\n title={shortcut ? `${el.title} (${shortcut})` : el.title}\n className={clsx(classes.atom, {\n selected: selected\n })}\n value={el.number}\n {...props}\n >\n <span>{el.label}</span>\n </button>\n )\n}\n\nexport default Atom\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/**\r\n * @module color-parse\r\n */\r\nimport names from 'color-name'\r\n\r\nexport default parse\r\n\r\n/**\r\n * Base hues\r\n * http://dev.w3.org/csswg/css-color/#typedef-named-hue\r\n */\r\n//FIXME: use external hue detector\r\nvar baseHues = {\r\n\tred: 0,\r\n\torange: 60,\r\n\tyellow: 120,\r\n\tgreen: 180,\r\n\tblue: 240,\r\n\tpurple: 300\r\n}\r\n\r\n/**\r\n * Parse color from the string passed\r\n *\r\n * @return {Object} A space indicator `space`, an array `values` and `alpha`\r\n */\r\nfunction parse (cstr) {\r\n\tvar m, parts = [], alpha = 1, space\r\n\r\n\tif (typeof cstr === 'string') {\r\n\t\t//keyword\r\n\t\tif (names[cstr]) {\r\n\t\t\tparts = names[cstr].slice()\r\n\t\t\tspace = 'rgb'\r\n\t\t}\r\n\r\n\t\t//reserved words\r\n\t\telse if (cstr === 'transparent') {\r\n\t\t\talpha = 0\r\n\t\t\tspace = 'rgb'\r\n\t\t\tparts = [0,0,0]\r\n\t\t}\r\n\r\n\t\t//hex\r\n\t\telse if (/^#[A-Fa-f0-9]+$/.test(cstr)) {\r\n\t\t\tvar base = cstr.slice(1)\r\n\t\t\tvar size = base.length\r\n\t\t\tvar isShort = size <= 4\r\n\t\t\talpha = 1\r\n\r\n\t\t\tif (isShort) {\r\n\t\t\t\tparts = [\r\n\t\t\t\t\tparseInt(base[0] + base[0], 16),\r\n\t\t\t\t\tparseInt(base[1] + base[1], 16),\r\n\t\t\t\t\tparseInt(base[2] + base[2], 16)\r\n\t\t\t\t]\r\n\t\t\t\tif (size === 4) {\r\n\t\t\t\t\talpha = parseInt(base[3] + base[3], 16) / 255\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tparts = [\r\n\t\t\t\t\tparseInt(base[0] + base[1], 16),\r\n\t\t\t\t\tparseInt(base[2] + base[3], 16),\r\n\t\t\t\t\tparseInt(base[4] + base[5], 16)\r\n\t\t\t\t]\r\n\t\t\t\tif (size === 8) {\r\n\t\t\t\t\talpha = parseInt(base[6] + base[7], 16) / 255\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!parts[0]) parts[0] = 0\r\n\t\t\tif (!parts[1]) parts[1] = 0\r\n\t\t\tif (!parts[2]) parts[2] = 0\r\n\r\n\t\t\tspace = 'rgb'\r\n\t\t}\r\n\r\n\t\t//color space\r\n\t\telse if (m = /^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\\s*\\(([^\\)]*)\\)/.exec(cstr)) {\r\n\t\t\tvar name = m[1]\r\n\t\t\tvar isRGB = name === 'rgb'\r\n\t\t\tvar base = name.replace(/a$/, '')\r\n\t\t\tspace = base\r\n\t\t\tvar size = base === 'cmyk' ? 4 : base === 'gray' ? 1 : 3\r\n\t\t\tparts = m[2].trim()\r\n\t\t\t\t.split(/\\s*[,\\/]\\s*|\\s+/)\r\n\t\t\t\t.map(function (x, i) {\r\n\t\t\t\t\t//<percentage>\r\n\t\t\t\t\tif (/%$/.test(x)) {\r\n\t\t\t\t\t\t//alpha\r\n\t\t\t\t\t\tif (i === size)\treturn parseFloat(x) / 100\r\n\t\t\t\t\t\t//rgb\r\n\t\t\t\t\t\tif (base === 'rgb') return parseFloat(x) * 255 / 100\r\n\t\t\t\t\t\treturn parseFloat(x)\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//hue\r\n\t\t\t\t\telse if (base[i] === 'h') {\r\n\t\t\t\t\t\t//<deg>\r\n\t\t\t\t\t\tif (/deg$/.test(x)) {\r\n\t\t\t\t\t\t\treturn parseFloat(x)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t//<base-hue>\r\n\t\t\t\t\t\telse if (baseHues[x] !== undefined) {\r\n\t\t\t\t\t\t\treturn baseHues[x]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn parseFloat(x)\r\n\t\t\t\t})\r\n\r\n\t\t\tif (name === base) parts.push(1)\r\n\t\t\talpha = (isRGB) ? 1 : (parts[size] === undefined) ? 1 : parts[size]\r\n\t\t\tparts = parts.slice(0, size)\r\n\t\t}\r\n\r\n\t\t//named channels case\r\n\t\telse if (cstr.length > 10 && /[0-9](?:\\s|\\/)/.test(cstr)) {\r\n\t\t\tparts = cstr.match(/([0-9]+)/g).map(function (value) {\r\n\t\t\t\treturn parseFloat(value)\r\n\t\t\t})\r\n\r\n\t\t\tspace = cstr.match(/([a-z])/ig).join('').toLowerCase()\r\n\t\t}\r\n\t}\r\n\r\n\t//numeric case\r\n\telse if (!isNaN(cstr)) {\r\n\t\tspace = 'rgb'\r\n\t\tparts = [cstr >>> 16, (cstr & 0x00ff00) >>> 8, cstr & 0x0000ff]\r\n\t}\r\n\r\n\t//array-like\r\n\telse if (Array.isArray(cstr) || cstr.length) {\r\n\t\tparts = [cstr[0], cstr[1], cstr[2]]\r\n\t\tspace = 'rgb'\r\n\t\talpha = cstr.length === 4 ? cstr[3] : 1\r\n\t}\r\n\r\n\t//object case - detects css cases of rgb and hsl\r\n\telse if (cstr instanceof Object) {\r\n\t\tif (cstr.r != null || cstr.red != null || cstr.R != null) {\r\n\t\t\tspace = 'rgb'\r\n\t\t\tparts = [\r\n\t\t\t\tcstr.r || cstr.red || cstr.R || 0,\r\n\t\t\t\tcstr.g || cstr.green || cstr.G || 0,\r\n\t\t\t\tcstr.b || cstr.blue || cstr.B || 0\r\n\t\t\t]\r\n\t\t}\r\n\t\telse {\r\n\t\t\tspace = 'hsl'\r\n\t\t\tparts = [\r\n\t\t\t\tcstr.h || cstr.hue || cstr.H || 0,\r\n\t\t\t\tcstr.s || cstr.saturation || cstr.S || 0,\r\n\t\t\t\tcstr.l || cstr.lightness || cstr.L || cstr.b || cstr.brightness\r\n\t\t\t]\r\n\t\t}\r\n\r\n\t\talpha = cstr.a || cstr.alpha || cstr.opacity || 1\r\n\r\n\t\tif (cstr.opacity != null) alpha /= 100\r\n\t}\r\n\r\n\treturn {\r\n\t\tspace: space,\r\n\t\tvalues: parts,\r\n\t\talpha: alpha\r\n\t}\r\n}\r\n","/**\r\n * @module color-alpha\r\n */\r\nimport parse from 'color-parse';\r\n\r\nexport default function alpha (color, value) {\r\n\tvar obj = parse(color);\r\n\r\n\tif (value == null) value = obj.alpha;\r\n\r\n\t//catch percent\r\n\tif (obj.space[0] === 'h') {\r\n\t\treturn obj.space + ['a(', obj.values[0], ',', obj.values[1], '%,', obj.values[2], '%,', value, ')'].join('');\r\n\t}\r\n\r\n\treturn obj.space + ['a(', obj.values, ',', value, ')'].join('');\r\n}\r\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { ElementColor, Elements } from 'ketcher-core'\nimport { atomCuts } from '../../../../action/atoms'\n\nimport Atom from '../../../../component/view/Atom'\nimport { UiActionAction } from '../../../../action'\nimport { forwardRef } from 'react'\nimport { shortcutStr } from '../../shortcutStr'\nimport styled from '@emotion/styled'\nimport α from 'color-alpha'\n\ninterface AtomsListProps {\n atoms: string[]\n active?: {\n tool?: string\n opts: {\n label: string\n }\n }\n}\n\ninterface AtomsListCallProps {\n onAction: (action: UiActionAction) => void\n}\n\ntype Props = AtomsListProps & AtomsListCallProps\n\nconst StyledAtom = styled(Atom)((props: any) => {\n const atomColor = props?.el?.label ? ElementColor[props.el.label] : '#000'\n return `\n color: ${atomColor};\n border: 1px solid ${atomColor};\n background-color: transparent;\n cursor: pointer;\n &:hover {\n background-color: ${α(atomColor, 0.2)};\n }\n &:active {\n color: #fff;\n background-color: ${α(atomColor, 0.8)};\n }\n &.selected {\n color: #fff;\n background-color: ${α(atomColor, 0.8)};\n &:hover {\n background-color: ${atomColor};\n }\n }\n `\n})\n\nconst AtomsList = forwardRef<HTMLDivElement, Props>((props: Props, ref) => {\n const { atoms, active, onAction } = props\n const isAtom = active && active.tool === 'atom'\n\n return (\n <div ref={ref}>\n {atoms.map((label) => {\n const element = Elements.get(label)\n const shortcut =\n atoms.indexOf(label) > -1 ? shortcutStr(atomCuts[label]) : null\n const isSelected = isAtom && active && active.opts.label === label\n return (\n <StyledAtom\n key={label}\n el={element}\n shortcut={shortcut}\n className={isSelected ? 'selected' : ''}\n selected={isSelected}\n onClick={() => onAction({ tool: 'atom', opts: { label } })}\n />\n )\n })}\n </div>\n )\n})\n\nexport type { AtomsListProps, AtomsListCallProps }\nexport { AtomsList }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { FC, MutableRefObject, useRef } from 'react'\nimport {\n ToolbarGroupItem,\n ToolbarGroupItemCallProps,\n ToolbarGroupItemProps\n} from '../ToolbarGroupItem'\n\nimport { ArrowScroll } from '../ArrowScroll'\nimport { AtomsList } from './AtomsList'\nimport { basicAtoms } from '../../../action/atoms'\nimport classes from './RightToolbar.module.less'\nimport clsx from 'clsx'\nimport { useInView } from 'react-intersection-observer'\n\nconst Group: FC<{ className?: string }> = ({ children, className }) => (\n <div className={clsx(classes.group, className)}>{children}</div>\n)\n\ninterface RightToolbarProps\n extends Omit<ToolbarGroupItemProps, 'id' | 'options'> {\n className?: string\n active?: {\n opts: any\n tool: string\n }\n freqAtoms: any[]\n}\n\ntype RightToolbarCallProps = ToolbarGroupItemCallProps\n\ntype Props = RightToolbarProps & RightToolbarCallProps\n\nconst RightToolbar = (props: Props) => {\n const { className, ...rest } = props\n const { active, onAction, freqAtoms } = rest\n const [startRef, startInView] = useInView({ threshold: 0.95 })\n const [endRef, endInView] = useInView({ threshold: 0.8 })\n const sizeRef = useRef() as MutableRefObject<HTMLDivElement>\n const scrollRef = useRef() as MutableRefObject<HTMLDivElement>\n\n const scrollUp = () => {\n scrollRef.current.scrollTop -= sizeRef.current.offsetHeight\n }\n\n const scrollDown = () => {\n scrollRef.current.scrollTop += sizeRef.current.offsetHeight\n }\n\n return (\n <div className={clsx(classes.root, className)}>\n <div className={classes.buttons} ref={scrollRef}>\n <Group className={classes.atomsList}>\n <AtomsList\n ref={startRef}\n atoms={basicAtoms}\n active={active}\n onAction={onAction}\n />\n <AtomsList atoms={freqAtoms} active={active} onAction={onAction} />\n <ToolbarGroupItem id=\"period-table\" {...rest} />\n </Group>\n\n <Group>\n <div ref={sizeRef}>\n <ToolbarGroupItem id=\"any-atom\" {...rest} />\n <ToolbarGroupItem id=\"extended-table\" {...rest} />\n </div>\n </Group>\n <div ref={endRef}></div>\n </div>\n <ArrowScroll\n startInView={startInView}\n endInView={endInView}\n scrollUp={scrollUp}\n scrollDown={scrollDown}\n />\n </div>\n )\n}\n\nexport type { RightToolbarProps, RightToolbarCallProps }\nexport { RightToolbar }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n RightToolbar,\n RightToolbarCallProps,\n RightToolbarProps\n} from './RightToolbar'\n\nimport { ComponentType } from 'react'\nimport { Dispatch } from 'redux'\nimport { connect } from 'react-redux'\nimport { onAction } from '../../../state'\n\ntype StateProps = Omit<RightToolbarProps, 'className'>\ntype OwnProps = Pick<RightToolbarProps, 'className'>\n\nconst mapStateToProps = (state): StateProps => ({\n active: state.actionState && state.actionState.activeTool,\n status: state.actionState || {},\n freqAtoms: state.toolbar.freqAtoms,\n opened: state.toolbar.opened,\n indigoVerification: state.requestsStatuses.indigoVerification,\n disableableButtons: []\n})\n\nconst mapDispatchToProps = (dispatch: Dispatch): RightToolbarCallProps => ({\n onAction: (action) => dispatch(onAction(action)),\n onOpen: (menuName, isSelected) =>\n dispatch({\n type: 'OPENED',\n data: { menuName, isSelected }\n })\n})\n\nconst RightToolbarContainer: ComponentType<OwnProps> = connect(\n mapStateToProps,\n mapDispatchToProps\n)(RightToolbar)\n\nexport { RightToolbarContainer }\nexport default RightToolbarContainer\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { IconButton as MuiButton } from '@mui/material'\nimport styled from '@emotion/styled'\n\nimport Icon from 'src/script/ui/component/view/icon'\n\nconst Button = styled(MuiButton)`\n display: block;\n color: #333;\n border: 0;\n position: relative;\n background: inherit;\n\n flex-shrink: 0;\n\n border-radius: 4px;\n margin: 0px;\n padding: 2px;\n height: 28px;\n width: 28px;\n\n &:hover {\n color: #006775;\n transform: none;\n box-shadow: none;\n transition: none;\n background: none;\n }\n\n &:active {\n background-color: #006775;\n color: white;\n &:hover {\n background-color: #188794;\n }\n }\n\n & svg {\n width: 100%;\n height: 100%;\n }\n\n &.Mui-disabled {\n cursor: not-allowed;\n opacity: 0.5;\n background-color: initial;\n color: #333;\n pointer-events: auto;\n }\n\n @media only screen and (min-width: 1024px) {\n height: 32px;\n width: 32px;\n padding: 4px;\n }\n\n @media only screen and (min-width: 1920px) {\n height: 40px;\n width: 40px;\n padding: 5px;\n }\n`\n\ninterface ButtonProps {\n iconName: string\n onClick: () => void\n title: string\n isHidden?: boolean\n disabled?: boolean\n shortcut?: string\n}\n\nexport const IconButton = ({\n onClick,\n iconName,\n title,\n shortcut,\n isHidden = false,\n disabled = false\n}: ButtonProps) => {\n const combinedTitle = shortcut ? `${title} (${shortcut})` : title\n\n if (isHidden) {\n return null\n }\n\n return (\n <Button title={combinedTitle} onClick={onClick} disabled={disabled}>\n <Icon name={iconName} />\n </Button>\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { IconButton } from './IconButton'\n\ninterface FileControlsProps {\n onFileOpen: () => void\n onSave: () => void\n shortcuts: { [key in string]: string }\n hiddenButtons: string[]\n}\n\nexport const FileControls = ({\n onFileOpen,\n onSave,\n shortcuts,\n hiddenButtons\n}: FileControlsProps) => {\n return (\n <>\n <IconButton\n title=\"Open...\"\n onClick={onFileOpen}\n iconName=\"open\"\n shortcut={shortcuts.open}\n isHidden={hiddenButtons.includes('open')}\n />\n <IconButton\n title=\"Save as...\"\n onClick={onSave}\n iconName=\"save\"\n shortcut={shortcuts.save}\n isHidden={hiddenButtons.includes('save')}\n />\n </>\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { useState } from 'react'\nimport { connect } from 'react-redux'\nimport { ClickAwayListener, Collapse, IconButton } from '@mui/material'\nimport styled from '@emotion/styled'\n\nimport Icon from 'src/script/ui/component/view/icon'\n\nconst ElementAndDropdown = styled('div')`\n position: relative;\n`\n\nconst DropDownContent = styled('div')`\n display: flex;\n position: absolute;\n left: 5px;\n border-radius: 2px;\n flex-direction: column;\n z-index: 20;\n white-space: nowrap;\n word-break: keep-all;\n padding: 2px;\n background: white; // TODO use variable\n border: 1px solid #cad3dd; // TODO use variable\n border-radius: 5px;\n box-shadow: 0 6px 12px rgb(0 0 0 / 18%);\n`\n\nconst DropDownButton = styled(IconButton)`\n position: absolute;\n padding: 0;\n right: 0;\n bottom: 0;\n\n &.disabled {\n cursor: not-allowed;\n opacity: 0.5;\n background-color: initial;\n color: #333;\n pointer-events: auto;\n }\n`\n\nconst DropDownArrow = styled(Icon)`\n display: block;\n width: 7px;\n height: 7px;\n margin: 1px;\n\n &:hover {\n fill: #005662;\n transform: none;\n box-shadow: none;\n transition: none;\n background: none;\n }\n\n &svg {\n width: 100%;\n height: 100%;\n }\n\n &svg path {\n fill: inherit;\n }\n`\n\ninterface ElementWithDropdownProps {\n topElement?: JSX.Element\n dropDownElements: JSX.Element[]\n onToolOpen: () => void\n}\n\nconst MenuItemWithDropdown = ({\n topElement,\n dropDownElements,\n onToolOpen\n}: ElementWithDropdownProps) => {\n const [isExpanded, setIsExpanded] = useState<boolean>(false)\n\n const collapse = () => {\n setIsExpanded(false)\n }\n\n const expand = () => {\n onToolOpen()\n setIsExpanded(true)\n }\n\n return (\n <ElementAndDropdown>\n {topElement && topElement}\n {dropDownElements.filter((element) => !element.props.isHidden).length !==\n 0 && (\n <DropDownButton\n onClick={expand}\n className={`expanded ${topElement?.props.disabled ? 'disabled' : ''}`}\n >\n {!isExpanded && <DropDownArrow name=\"dropdown\" />}\n </DropDownButton>\n )}\n <Collapse in={isExpanded} timeout=\"auto\" onClick={collapse} unmountOnExit>\n <ClickAwayListener onClickAway={collapse}>\n <DropDownContent>{dropDownElements}</DropDownContent>\n </ClickAwayListener>\n </Collapse>\n </ElementAndDropdown>\n )\n}\n\n// TODO: refactor, workaround to fix top toolbar dropdowns and left toolbar dropdowns overlapping\nconst mapDispatchToProps = (dispatch) => ({\n onToolOpen: () =>\n dispatch({\n type: 'OPENED',\n data: { menuName: null, isSelected: null }\n })\n})\n\nexport const ElementWithDropdown = connect(\n null,\n mapDispatchToProps\n)(MenuItemWithDropdown)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { IconButton } from './IconButton'\nimport { ElementWithDropdown } from './ElementWithDropdown'\n\ninterface ClipboardControlsProps {\n onCopy: () => void\n onCopyMol: () => void\n onCopyKet: () => void\n onCopyImage: () => void\n onPaste: () => void\n onCut: () => void\n disabledButtons: string[]\n hiddenButtons: string[]\n shortcuts: { [key in string]: string }\n}\n\nexport const ClipboardControls = ({\n onCopy,\n onCopyMol,\n onCopyKet,\n onCopyImage,\n onPaste,\n onCut,\n shortcuts,\n disabledButtons,\n hiddenButtons\n}: ClipboardControlsProps) => {\n const copyButtons = [\n {\n name: 'copy',\n title: 'Copy',\n handler: onCopy\n },\n {\n name: 'copy-mol',\n title: 'Copy as MOL',\n handler: onCopyMol\n },\n {\n name: 'copy-ket',\n title: 'Copy as KET',\n handler: onCopyKet\n },\n {\n name: 'copy-image',\n title: 'Copy Image',\n handler: onCopyImage\n }\n ]\n\n const getButtonElement = (button) => (\n <IconButton\n title={button.title}\n onClick={button.handler}\n iconName={button.name}\n shortcut={shortcuts[button.name]}\n disabled={disabledButtons.includes(button.name)}\n isHidden={hiddenButtons.includes(button.name)}\n key={button.name}\n />\n )\n\n const firstButtonObj = copyButtons.find(\n (button) => !hiddenButtons.includes(button.name)\n )\n const collapsibleElements = copyButtons\n .filter((button) => button !== firstButtonObj)\n .map((button) => getButtonElement(button))\n\n return (\n <>\n {!hiddenButtons.includes('copies') && (\n <ElementWithDropdown\n topElement={getButtonElement(firstButtonObj)}\n dropDownElements={collapsibleElements}\n />\n )}\n <IconButton\n title=\"Paste\"\n onClick={onPaste}\n iconName=\"paste\"\n shortcut={shortcuts.paste}\n disabled={disabledButtons.includes('paste')}\n isHidden={hiddenButtons.includes('paste')}\n />\n <IconButton\n title=\"Cut\"\n onClick={onCut}\n iconName=\"cut\"\n shortcut={shortcuts.cut}\n disabled={disabledButtons.includes('cut')}\n isHidden={hiddenButtons.includes('cut')}\n />\n </>\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport styled from '@emotion/styled'\n\nconst VerticalDivider = styled('hr')`\n margin: 0px 3px;\n flex-shrink: 0;\n height: 45%;\n align-self: center;\n border-width: 0px thin 0px 0px;\n border-style: solid;\n border-color: #b4b9d6; // TODO: use variable\n`\n\nexport const Divider = () => <VerticalDivider />\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Divider } from './Divider'\nimport { IconButton } from './IconButton'\n\ninterface UndoRedoProps {\n disabledButtons: string[]\n hiddenButtons: string[]\n shortcuts: { [key in string]: string }\n onUndo: () => void\n onRedo: () => void\n}\n\nexport const UndoRedo = ({\n onUndo,\n onRedo,\n disabledButtons,\n hiddenButtons,\n shortcuts\n}: UndoRedoProps) => {\n return (\n <>\n <Divider />\n <IconButton\n title=\"Undo\"\n onClick={onUndo}\n iconName=\"undo\"\n disabled={disabledButtons.includes('undo')}\n isHidden={hiddenButtons.includes('undo')}\n shortcut={shortcuts.undo}\n />\n <IconButton\n title=\"Redo\"\n onClick={onRedo}\n iconName=\"redo\"\n disabled={disabledButtons.includes('redo')}\n isHidden={hiddenButtons.includes('redo')}\n shortcut={shortcuts.redo}\n />\n <Divider />\n </>\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n FocusEvent,\n KeyboardEvent,\n useEffect,\n useCallback,\n RefObject\n} from 'react'\nimport styled from '@emotion/styled'\n\nconst StyledInput = styled('input')`\n border: 1px solid #cad3dd;\n border-radius: 4px;\n padding: 3px 8px;\n color: #585858;\n font-size: 14px;\n line-height: 16px;\n caret-color: #43b5c0;\n margin-bottom: 8px;\n\n &:hover {\n border-color: #43b5c0;\n }\n\n &:active,\n &:focus {\n border-color: #167782;\n outline: none;\n }\n\n &::after,\n &::before {\n display: none;\n }\n`\n\nconst onFocusHandler = (event: FocusEvent<HTMLInputElement>) => {\n const el = event.target\n el.select()\n}\n\nexport const updateInputString = (\n zoom: number,\n inputElement: HTMLInputElement | null\n) => {\n if (!inputElement) return\n inputElement.value = `${zoom}%`\n}\n\nexport interface ZoomInputProps {\n onZoomSubmit: () => void\n currentZoom: number\n inputRef: RefObject<HTMLInputElement>\n shortcuts: { [key in string]: string }\n}\n\nexport const ZoomInput = ({\n onZoomSubmit,\n currentZoom,\n inputRef,\n shortcuts\n}: ZoomInputProps) => {\n useEffect(() => {\n const inputEl = inputRef.current\n updateInputString(currentZoom, inputEl)\n if (document.activeElement === inputEl) {\n inputEl?.select()\n }\n }, [currentZoom, inputRef])\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n const inputEl = inputRef.current\n if (!inputEl) {\n return\n }\n\n // Prevent bubbling of keyDown events to capture input and Enter, allow bubbling of shortcuts\n const zoomShortcuts = [shortcuts['zoom-out'], shortcuts['zoom-in']]\n if (!zoomShortcuts.includes(event.key)) {\n event.nativeEvent.stopImmediatePropagation()\n }\n\n if (event.key === 'Enter') {\n onZoomSubmit()\n inputEl.select()\n }\n },\n [onZoomSubmit, inputRef, shortcuts]\n )\n\n // Focus on input field upon mounting\n useEffect(() => {\n const inputEl = inputRef.current\n inputEl?.focus()\n inputEl?.select()\n }, [inputRef])\n\n return (\n <StyledInput\n ref={inputRef}\n onFocus={onFocusHandler}\n onKeyDown={onKeyDown}\n />\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { useState, useRef, useCallback } from 'react'\nimport styled from '@emotion/styled'\nimport { Button, Popover } from '@mui/material'\n\nimport Icon from 'src/script/ui/component/view/icon'\nimport { zoomList } from 'src/script/ui/action/zoom'\nimport { ZoomInput, updateInputString } from './ZoomInput'\n\nconst ElementAndDropdown = styled('div')`\n position: relative;\n`\n\nconst DropDownButton = styled(Button)`\n display: flex;\n color: #000000;\n padding-right: 0;\n padding-left: 0;\n\n & svg {\n margin-left: 2px;\n width: 16px;\n height: 16px;\n }\n`\n\nconst ZoomLabel = styled('span')`\n width: 35px;\n`\n\nconst Dropdown = styled(Popover)`\n & .MuiPopover-paper {\n padding: 8px;\n width: 135px;\n border: none;\n border-radius: 0px 0px 4px 4px;\n box-shadow: 0px 30px 48px -17px rgba(160, 165, 174, 0.3);\n box-sizing: border-box;\n }\n`\n\nconst DropDownContent = styled('div')`\n display: flex;\n flex-direction: column;\n white-space: nowrap;\n word-break: keep-all;\n background: white;\n`\n\nconst ZoomControlButton = styled(Button)`\n display: flex;\n justify-content: space-between;\n font-weight: 400;\n font-size: 12px;\n line-height: 14px;\n padding: 7px 8px;\n text-transform: none;\n color: #333333;\n`\n\nconst ShortcutLabel = styled('span')`\n color: #cad3dd;\n`\n\nconst getIntegerFromString = (zoomInput: string | undefined): number => {\n const zoomNumber = parseInt(zoomInput || '')\n if (isNaN(zoomNumber)) {\n return 0\n }\n return zoomNumber\n}\n\nconst getValidZoom = (zoom: number, currentZoom: number): number => {\n if (zoom === 0) {\n return currentZoom\n }\n\n const minAllowed = Math.min(...zoomList) * 100\n const maxAllowed = Math.max(...zoomList) * 100\n\n if (zoom < minAllowed) {\n return minAllowed\n }\n if (zoom > maxAllowed) {\n return maxAllowed\n }\n return zoom\n}\n\ninterface ZoomProps {\n currentZoom: number\n onZoom: (arg: number) => void\n onZoomIn: VoidFunction\n onZoomOut: VoidFunction\n disabledButtons: string[]\n hiddenButtons: string[]\n shortcuts: { [key in string]: string }\n}\n\nexport const ZoomControls = ({\n currentZoom,\n onZoom,\n onZoomIn,\n onZoomOut,\n disabledButtons,\n hiddenButtons,\n shortcuts\n}: ZoomProps) => {\n const [isExpanded, setIsExpanded] = useState<boolean>(false)\n const containerRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const onZoomSubmit = useCallback(() => {\n const inputEl = inputRef.current\n if (!inputEl) {\n return\n }\n const userInput = getIntegerFromString(inputEl.value)\n if (userInput && userInput !== currentZoom) {\n const zoomToSet = getValidZoom(userInput, currentZoom)\n updateInputString(zoomToSet, inputEl)\n onZoom(zoomToSet)\n } else {\n updateInputString(currentZoom, inputEl)\n }\n }, [onZoom, currentZoom])\n\n const onClose = (_, reason) => {\n if (reason === 'backdropClick') {\n onZoomSubmit()\n }\n setIsExpanded(false)\n }\n\n const onExpand = () => {\n setIsExpanded(true)\n }\n\n const resetZoom = () => {\n onZoom(100)\n }\n\n return (\n <ElementAndDropdown ref={containerRef}>\n <DropDownButton onClick={onExpand}>\n <ZoomLabel>{Math.round(currentZoom)}%</ZoomLabel>\n <Icon name=\"chevron\" />\n </DropDownButton>\n\n <Dropdown\n open={isExpanded}\n onClose={onClose}\n anchorEl={containerRef.current}\n container={containerRef.current}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n >\n <DropDownContent>\n <ZoomInput\n onZoomSubmit={onZoomSubmit}\n inputRef={inputRef}\n currentZoom={currentZoom}\n shortcuts={shortcuts}\n />\n {!hiddenButtons.includes('zoom-out') && (\n <ZoomControlButton\n title=\"Zoom Out\"\n onClick={onZoomOut}\n disabled={disabledButtons.includes('zoom-out')}\n >\n <span>Zoom out</span>\n <ShortcutLabel>{shortcuts['zoom-out']}</ShortcutLabel>\n </ZoomControlButton>\n )}\n {!hiddenButtons.includes('zoom-in') && (\n <ZoomControlButton\n title=\"Zoom In\"\n onClick={onZoomIn}\n disabled={disabledButtons.includes('zoom-in')}\n >\n <span>Zoom in</span>\n <ShortcutLabel>{shortcuts['zoom-in']}</ShortcutLabel>\n </ZoomControlButton>\n )}\n <ZoomControlButton onClick={resetZoom}>\n <span>Zoom 100%</span>\n </ZoomControlButton>\n </DropDownContent>\n </Dropdown>\n </ElementAndDropdown>\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport styled from '@emotion/styled'\nimport { shortcutStr } from '../shortcutStr'\nimport { IconButton } from './IconButton'\n\ninterface SystemControlsProps {\n disabledButtons: string[]\n hiddenButtons: string[]\n className?: string\n onSettingsOpen: () => void\n onAboutOpen: () => void\n onHistoryClick: () => void\n onFullscreen: () => void\n onHelp: () => void\n}\n\nconst getIfFullScreen = () => {\n return !!(\n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement\n )\n}\n\nconst ControlsPanel = styled('div')`\n display: flex;\n align-items: center;\n flex-grow: 1;\n justify-content: flex-end;\n`\n\nexport const SystemControls = ({\n disabledButtons,\n hiddenButtons,\n onSettingsOpen,\n // onHistoryClick,\n onFullscreen,\n onHelp,\n onAboutOpen,\n className\n}: SystemControlsProps) => {\n return (\n <ControlsPanel className={className}>\n {/* Uncomment upon History log implementation */}\n {/* <IconButton\n title=\"History\"\n onClick={onHistoryClick}\n iconName=\"history\"\n disabled={disabledButtons.includes('history')}\n isHidden={hiddenButtons.includes('history')}\n /> */}\n <IconButton\n title=\"Settings\"\n onClick={onSettingsOpen}\n iconName=\"settings\"\n disabled={disabledButtons.includes('settings')}\n isHidden={hiddenButtons.includes('settings')}\n />\n <IconButton\n title={`Help (${shortcutStr(['?', '&', 'Shift+/'])})`}\n onClick={onHelp}\n iconName=\"help\"\n disabled={disabledButtons.includes('help')}\n isHidden={hiddenButtons.includes('help')}\n />\n {/* @TODO Temporary About button, when design is ready, reimplement */}\n <IconButton\n title=\"About\"\n onClick={onAboutOpen}\n iconName=\"about\"\n disabled={disabledButtons.includes('about')}\n isHidden={hiddenButtons.includes('about')}\n />\n <IconButton\n title=\"Fullscreen mode\"\n onClick={onFullscreen}\n iconName={getIfFullScreen() ? 'fullscreen-exit' : 'fullscreen-enter'}\n disabled={disabledButtons.includes('fullscreen')}\n isHidden={hiddenButtons.includes('fullscreen')}\n />\n </ControlsPanel>\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { ElementWithDropdown } from './ElementWithDropdown'\nimport { IconButton } from './IconButton'\n\ninterface ExternalFuncProps {\n isCollapsed: boolean\n onLayout: () => void\n onClean: () => void\n onAromatize: () => void\n onDearomatize: () => void\n onCalculate: () => void\n onCheck: () => void\n onAnalyse: () => void\n onMiew: () => void\n disabledButtons: string[]\n hiddenButtons: string[]\n indigoVerification: boolean\n shortcuts: { [key in string]: string }\n}\n\nexport const ExternalFuncControls = ({\n isCollapsed,\n onLayout,\n onClean,\n onAromatize,\n onDearomatize,\n onCalculate,\n onCheck,\n onAnalyse,\n onMiew,\n disabledButtons,\n indigoVerification,\n hiddenButtons,\n shortcuts\n}: ExternalFuncProps) => {\n const externalFuncButtons = [\n {\n name: 'arom',\n title: 'Aromatize',\n handler: onAromatize\n },\n {\n name: 'dearom',\n title: 'Dearomatize',\n handler: onDearomatize\n },\n {\n name: 'layout',\n title: 'Layout',\n handler: onLayout\n },\n {\n name: 'clean',\n title: 'Clean Up',\n handler: onClean\n },\n {\n name: 'cip',\n title: 'Calculate CIP',\n handler: onCalculate\n },\n {\n name: 'check',\n title: 'Check Structure',\n handler: onCheck\n },\n {\n name: 'analyse',\n title: 'Calculated Values',\n handler: onAnalyse\n },\n {\n name: 'miew',\n title: '3D Viewer',\n handler: onMiew\n }\n ]\n\n const getButtonElement = (button) => (\n <IconButton\n title={button.title}\n onClick={button.handler}\n iconName={button.name}\n shortcut={shortcuts[button.name]}\n disabled={indigoVerification || disabledButtons.includes(button.name)}\n isHidden={hiddenButtons.includes(button.name)}\n key={button.name}\n />\n )\n\n const firstButtonObj = externalFuncButtons.find(\n (button) => !hiddenButtons.includes(button.name)\n )\n\n const collapsibleElements = externalFuncButtons\n .filter((button) => button !== firstButtonObj)\n .map((button) => getButtonElement(button))\n\n if (isCollapsed) {\n return (\n <ElementWithDropdown\n topElement={getButtonElement(firstButtonObj)}\n dropDownElements={collapsibleElements}\n />\n )\n }\n\n return (\n <>\n {firstButtonObj && getButtonElement(firstButtonObj)}\n {<>{collapsibleElements}</>}\n </>\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport styled from '@emotion/styled'\n\nimport { useResizeObserver } from 'src/hooks'\nimport { FileControls } from './FileControls'\nimport { ClipboardControls } from './ClipboardControls'\nimport { UndoRedo } from './UndoRedo'\nimport { ZoomControls } from './ZoomControls'\n\nimport { SystemControls } from './SystemControls'\nimport { IconButton } from './IconButton'\nimport { ExternalFuncControls } from './ExternalFuncControls'\nimport { Divider } from './Divider'\n\ntype VoidFunction = () => void\n\nexport interface PanelProps {\n className: string\n disabledButtons: string[]\n indigoVerification: boolean\n hiddenButtons: string[]\n shortcuts: { [key in string]: string }\n onClear: VoidFunction\n onFileOpen: VoidFunction\n onSave: VoidFunction\n onUndo: VoidFunction\n onRedo: VoidFunction\n onCopy: VoidFunction\n onCopyMol: VoidFunction\n onCopyKet: VoidFunction\n onCopyImage: VoidFunction\n onCut: VoidFunction\n onPaste: VoidFunction\n currentZoom: number | undefined\n onZoom: (zoom: number) => void\n onZoomIn: VoidFunction\n onZoomOut: VoidFunction\n onSettingsOpen: VoidFunction\n onLayout: VoidFunction\n onClean: VoidFunction\n onAromatize: VoidFunction\n onDearomatize: VoidFunction\n onCalculate: VoidFunction\n onCheck: VoidFunction\n onAnalyse: VoidFunction\n onMiew: VoidFunction\n onFullscreen: VoidFunction\n onAbout: VoidFunction\n onHelp: VoidFunction\n}\n\nconst collapseLimit = 650\n\nconst ControlsPanel = styled('div')`\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0px;\n height: 36px;\n padding: 0px 8px;\n\n .group {\n display: flex;\n flex-direction: row;\n gap: 0px;\n }\n\n & * {\n box-sizing: border-box;\n }\n\n @media only screen and (min-width: 1024px) {\n height: 40px;\n gap: 4px;\n\n .group {\n gap: 4px;\n }\n }\n\n @media only screen and (min-width: 1920px) {\n height: 64px;\n gap: 12px;\n }\n`\n\nexport const TopToolbar = ({\n className,\n disabledButtons,\n indigoVerification,\n hiddenButtons,\n shortcuts,\n onClear,\n onFileOpen,\n onSave,\n onUndo,\n onRedo,\n onCopy,\n onCopyMol,\n onCopyKet,\n onCopyImage,\n onCut,\n onPaste,\n currentZoom,\n onZoom,\n onZoomIn,\n onZoomOut,\n onSettingsOpen,\n onLayout,\n onClean,\n onAromatize,\n onDearomatize,\n onCalculate,\n onCheck,\n onAnalyse,\n onMiew,\n onFullscreen,\n onAbout,\n onHelp\n}: PanelProps) => {\n const { ref: resizeRef, width = 50 } = useResizeObserver<HTMLDivElement>()\n\n return (\n <ControlsPanel className={className} ref={resizeRef}>\n <IconButton\n title=\"Clear Canvas\"\n onClick={onClear}\n iconName=\"clear\"\n shortcut={shortcuts.clear}\n isHidden={hiddenButtons.includes('clear')}\n />\n <FileControls\n onFileOpen={onFileOpen}\n onSave={onSave}\n shortcuts={shortcuts}\n hiddenButtons={hiddenButtons}\n />\n <ClipboardControls\n onCopy={onCopy}\n onCopyMol={onCopyMol}\n onCopyKet={onCopyKet}\n onCopyImage={onCopyImage}\n onPaste={onPaste}\n onCut={onCut}\n shortcuts={shortcuts}\n disabledButtons={disabledButtons}\n hiddenButtons={hiddenButtons}\n />\n <UndoRedo\n onUndo={onUndo}\n onRedo={onRedo}\n disabledButtons={disabledButtons}\n hiddenButtons={hiddenButtons}\n shortcuts={shortcuts}\n />\n <ExternalFuncControls\n onLayout={onLayout}\n onClean={onClean}\n onAromatize={onAromatize}\n onDearomatize={onDearomatize}\n onCalculate={onCalculate}\n onCheck={onCheck}\n onAnalyse={onAnalyse}\n onMiew={onMiew}\n disabledButtons={disabledButtons}\n hiddenButtons={hiddenButtons}\n shortcuts={shortcuts}\n indigoVerification={indigoVerification}\n isCollapsed={width < collapseLimit}\n />\n <SystemControls\n onHistoryClick={() => {\n console.log('History button clicked') // @TODO Implement handler when History log is ready\n }}\n onSettingsOpen={onSettingsOpen}\n onFullscreen={onFullscreen}\n onHelp={onHelp}\n onAboutOpen={onAbout}\n disabledButtons={disabledButtons}\n hiddenButtons={hiddenButtons}\n />\n <Divider />\n {!hiddenButtons.includes('zoom-list') && (\n <ZoomControls\n currentZoom={currentZoom || 1}\n onZoomIn={onZoomIn}\n onZoomOut={onZoomOut}\n onZoom={onZoom}\n shortcuts={shortcuts}\n disabledButtons={disabledButtons}\n hiddenButtons={hiddenButtons}\n />\n )}\n </ControlsPanel>\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { TopToolbar } from './TopToolbar'\n\nimport { Dispatch } from 'redux'\nimport { connect } from 'react-redux'\nimport { onAction } from '../../../state'\nimport action from 'src/script/ui/action/index.js'\nimport { shortcutStr } from '../shortcutStr'\n\nconst shortcuts = Object.keys(action).reduce((acc, key) => {\n if (action[key]?.shortcut) {\n const shortcut = action[key].shortcut\n const processedShortcut = shortcutStr(shortcut)\n acc[key] = processedShortcut\n }\n return acc\n}, {})\n\nconst mapStateToProps = (state: any) => {\n const actionState = state.actionState || {}\n\n const disabledButtons = Object.keys(actionState).reduce(\n (acc: string[], item) => {\n if (actionState[item]?.disabled) {\n acc.push(item)\n }\n return acc\n },\n []\n )\n\n const hiddenButtons = Object.keys(actionState).reduce(\n (acc: string[], item) => {\n if (actionState[item]?.hidden) {\n acc.push(item)\n }\n return acc\n },\n []\n )\n\n return {\n currentZoom: Math.round(state.actionState?.zoom?.selected * 100),\n disabledButtons,\n hiddenButtons,\n shortcuts,\n status: state.actionState || {},\n opened: state.toolbar.opened,\n indigoVerification: state.requestsStatuses.indigoVerification,\n disableableButtons: [\n 'layout',\n 'clean',\n 'arom',\n 'dearom',\n 'cip',\n 'enhanced-stereo'\n ]\n }\n}\n\nconst mapDispatchToProps = (dispatch: Dispatch) => {\n const dispatchAction = (actionName) => {\n dispatch(onAction(action[actionName].action))\n }\n\n return {\n onClear: () => dispatchAction('clear'),\n onFileOpen: () => dispatchAction('open'),\n onSave: () => dispatchAction('save'),\n onUndo: () => dispatchAction('undo'),\n onRedo: () => dispatchAction('redo'),\n onCopy: () => dispatchAction('copy'),\n onCopyMol: () => dispatchAction('copy-mol'),\n onCopyKet: () => dispatchAction('copy-ket'),\n onCopyImage: () => dispatchAction('copy-image'),\n onCut: () => dispatchAction('cut'),\n onPaste: () => dispatchAction('paste'),\n onZoomIn: () => dispatchAction('zoom-in'),\n onZoomOut: () => dispatchAction('zoom-out'),\n onZoom: (zoomValue: number) =>\n dispatch(onAction((editor) => editor.zoom(zoomValue / 100))),\n onSettingsOpen: () => dispatchAction('settings'),\n onLayout: () => dispatchAction('layout'),\n onClean: () => dispatchAction('clean'),\n onAromatize: () => dispatchAction('arom'),\n onDearomatize: () => dispatchAction('dearom'),\n onCalculate: () => dispatchAction('cip'),\n onCheck: () => dispatchAction('check'),\n onAnalyse: () => dispatchAction('analyse'),\n onMiew: () => dispatchAction('miew'),\n onAction: (action) => dispatch(onAction(action)),\n onOpen: (menuName, isSelected) =>\n dispatch({\n type: 'OPENED',\n data: { menuName, isSelected }\n }),\n onFullscreen: () => dispatchAction('fullscreen'),\n onHelp: () => dispatchAction('help'),\n onAbout: () => dispatchAction('about')\n }\n}\n\nconst TopToolbarContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(TopToolbar)\n\nexport { TopToolbarContainer }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport * as KN from 'w3c-keyname'\n\nconst mac =\n typeof navigator !== 'undefined' ? /Mac/.test(navigator.platform) : false // eslint-disable-line no-undef\n\nfunction normalizeKeyName(name) {\n const parts = name.split(/\\+(?!$)/)\n let result = parts[parts.length - 1]\n if (result === 'Space') result = ' '\n let alt\n let ctrl\n let shift\n let meta\n\n for (let i = 0; i < parts.length - 1; i++) {\n const mod = parts[i]\n if (/^(cmd|meta|m)$/i.test(mod)) meta = true\n else if (/^a(lt)?$/i.test(mod)) alt = true\n else if (/^(c|ctrl|control)$/i.test(mod)) ctrl = true\n else if (/^s(hift)?$/i.test(mod)) shift = true\n else if (/^mod$/i.test(mod))\n if (mac) meta = true\n else ctrl = true\n else throw new Error('Unrecognized modifier name: ' + mod)\n }\n\n if (alt) result = 'Alt+' + result\n if (ctrl) result = 'Ctrl+' + result\n if (meta) result = 'Meta+' + result\n if (shift) result = 'Shift+' + result\n\n return result\n}\n\nfunction normalizeKeyMap(map) {\n const copy = Object.create(null)\n\n Object.keys(map).forEach((prop) => {\n copy[normalizeKeyName(prop)] = map[prop]\n })\n\n return copy\n}\n\nfunction modifiers(name, event, shift) {\n if (event.altKey) name = 'Alt+' + name\n if (event.ctrlKey) name = 'Ctrl+' + name\n if (event.metaKey) name = 'Meta+' + name\n if (shift !== false && event.shiftKey) name = 'Shift+' + name\n\n return name\n}\n\nfunction rusToEng(name, event) {\n return name\n .replace(/[а-я]/, KN.base[event.keyCode])\n .replace(/[А-Я]/, KN.shift[event.keyCode])\n}\n\nfunction normalizeKeyEvent(event, base = false) {\n const name = rusToEng(KN.keyName(event), event)\n const isChar = name.length === 1 && name !== ' '\n\n return isChar && !base\n ? modifiers(name, event, !isChar)\n : modifiers(KN.base[event.keyCode], event, true)\n}\n\nfunction keyNorm(obj) {\n if (obj instanceof KeyboardEvent)\n // eslint-disable-line no-undef\n return normalizeKeyEvent(...arguments) // eslint-disable-line prefer-rest-params\n\n return typeof obj === 'object' ? normalizeKeyMap(obj) : normalizeKeyName(obj)\n}\n\nfunction lookup(map, event) {\n let name = rusToEng(KN.keyName(event), event)\n if (name === 'Add') name = '+' // numpad '+' and '-'\n if (name === 'Subtract') name = '-'\n\n const isChar = name.length === 1 && name !== ' '\n let res = map[modifiers(name, event, !isChar)]\n let baseName\n\n if (event.shiftKey && isChar && (baseName = KN.base[event.keyCode]))\n res = map[modifiers(baseName, event, true)] || res\n\n return res\n}\n\nkeyNorm.lookup = lookup\n\nexport default keyNorm\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { fromAtomsAttrs, FunctionalGroup } from 'ketcher-core'\nimport Editor from '../Editor'\n\nclass APointTool {\n editor: Editor\n\n constructor(editor) {\n this.editor = editor\n this.editor.selection(null)\n }\n\n mousemove(event) {\n const struct = this.editor.render.ctab.molecule\n const closestItem = this.editor.findItem(event, ['atoms'])\n if (closestItem) {\n const atom = struct.atoms.get(closestItem.id)\n if (atom?.label !== 'R#' && atom?.rglabel === null)\n this.editor.hover(closestItem, null, event)\n } else {\n this.editor.hover(null)\n }\n }\n\n click(event) {\n const editor = this.editor\n const struct = editor.render.ctab\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n const ci = editor.findItem(event, ['atoms'])\n const atomResult: Array<number> = []\n const result: Array<number> = []\n\n if (ci && functionalGroups.size && ci.map === 'atoms') {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n ci.id\n )\n\n if (atomId !== null) {\n atomResult.push(atomId)\n }\n }\n\n if (atomResult.length > 0) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n\n if (ci && ci.map === 'atoms') {\n this.editor.hover(null)\n const atom = molecule.atoms.get(ci.id)\n\n if (atom?.label === 'R#' && atom?.rglabel !== null) return\n\n const res = editor.event.elementEdit.dispatch({\n attpnt: atom?.attpnt\n })\n Promise.resolve(res)\n .then((newatom) => {\n if (atom?.attpnt !== newatom.attpnt) {\n const action = fromAtomsAttrs(\n editor.render.ctab,\n ci.id,\n newatom,\n null\n )\n editor.update(action)\n }\n })\n .catch(() => null) // w/o changes\n return true\n }\n return true\n }\n}\n\nexport default APointTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Vec2, fracAngle } from 'ketcher-core'\n\nimport { inRange } from 'lodash'\n\nfunction calcAngle(pos0, pos1) {\n const v = Vec2.diff(pos1, pos0)\n return Math.atan2(v.y, v.x)\n}\n\nfunction calcNewAtomPos(pos0, pos1, ctrlKey) {\n const v = new Vec2(1, 0).rotate(\n ctrlKey ? calcAngle(pos0, pos1) : fracAngle(pos0, pos1)\n )\n v.add_(pos0) // eslint-disable-line no-underscore-dangle\n return v\n}\n\nfunction degrees(angle) {\n let degree = Math.round((angle / Math.PI) * 180)\n if (degree > 180) degree -= 360\n else if (degree <= -180) degree += 360\n return degree\n}\n\nconst BONDS_MERGE_ANGLE = 10 // 'º'\nconst BONDS_MERGE_SCALE = 0.2\n\nfunction mergeBondsParams(struct1, bond1, struct2, bond2) {\n const begin1 = struct1.atoms.get(bond1.begin)\n const begin2 = struct2.atoms.get(bond2.begin)\n const end1 = struct1.atoms.get(bond1.end)\n const end2 = struct2.atoms.get(bond2.end)\n\n const angle = calcAngle(begin1.pp, end1.pp) - calcAngle(begin2.pp, end2.pp)\n const mergeAngle = Math.abs(degrees(angle) % 180)\n\n const scale = Vec2.dist(begin1.pp, end1.pp) / Vec2.dist(begin2.pp, end2.pp)\n\n const merged =\n !inRange(mergeAngle, BONDS_MERGE_ANGLE, 180 - BONDS_MERGE_ANGLE) &&\n inRange(scale, 1 - BONDS_MERGE_SCALE, 1 + BONDS_MERGE_SCALE)\n\n return { merged, angle, scale, cross: Math.abs(degrees(angle)) > 90 }\n}\n\nexport default {\n calcAngle,\n fracAngle,\n calcNewAtomPos,\n degrees,\n mergeBondsParams\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n Action,\n Atom,\n Bond,\n FunctionalGroup,\n SGroup,\n fromAtomAddition,\n fromAtomsAttrs,\n fromBondAddition,\n fromFragmentDeletion,\n fromSgroupDeletion,\n ElementColor\n} from 'ketcher-core'\n\nimport Editor from '../Editor'\nimport utils from '../shared/utils'\n\nclass AtomTool {\n editor: Editor\n atomProps: any\n dragCtx: any\n #bondProps: { stereo: number; type: number }\n isNotActiveTool: boolean | undefined\n\n constructor(editor, atomProps) {\n this.editor = editor\n this.atomProps = atomProps\n this.#bondProps = { type: 1, stereo: Bond.PATTERN.STEREO.NONE }\n\n this.editor.hoverIcon\n .show()\n .attr('text', `${atomProps.label}`)\n .attr('fill', `${ElementColor[atomProps.label]}`)\n this.editor.updateHoverIconPosition()\n\n if (editor.selection()) {\n if (editor.selection()?.atoms) {\n const action = fromAtomsAttrs(\n editor.render.ctab,\n editor.selection().atoms,\n atomProps,\n true\n )\n editor.update(action)\n editor.selection(null)\n }\n\n this.isNotActiveTool = true\n }\n }\n\n mousedown(event) {\n const struct = this.editor.render.ctab\n const sgroups = struct.sgroups\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n this.editor.hover(null)\n this.editor.selection(null)\n const ci = this.editor.findItem(event, ['atoms', 'functionalGroups'])\n if (\n ci &&\n ci.map === 'functionalGroups' &&\n functionalGroups &&\n FunctionalGroup.isContractedFunctionalGroup(ci.id, functionalGroups)\n ) {\n const action = new Action()\n const selectedSgroup = sgroups.get(ci.id)\n const sGroupAtoms = SGroup.getAtoms(molecule, selectedSgroup?.item)\n const [firstAtom, ...atoms] = sGroupAtoms\n const atomNeighbours = molecule.atomGetNeighbors(firstAtom)\n const extraNeighbour = atomNeighbours?.some(\n (atom) => !sGroupAtoms.includes(atom.aid)\n )\n if (extraNeighbour) {\n action.mergeWith(fromSgroupDeletion(struct, ci.id))\n action.mergeWith(fromFragmentDeletion(struct, { atoms: atoms }))\n action.mergeWith(\n fromAtomsAttrs(struct, firstAtom, this.atomProps, true)\n )\n } else {\n const firstAtomPp = struct.atoms.get(firstAtom)?.a.pp\n action.mergeWith(\n fromFragmentDeletion(struct, {\n atoms: SGroup.getAtoms(molecule, selectedSgroup?.item),\n bonds: SGroup.getBonds(molecule, selectedSgroup?.item)\n })\n )\n action.mergeWith(fromAtomAddition(struct, firstAtomPp, this.atomProps))\n }\n this.editor.update(action)\n }\n const atomResult: Array<number> = []\n const result: Array<number> = []\n if (ci && functionalGroups.size && ci.map === 'atoms') {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n ci.id\n )\n if (atomId !== null) atomResult.push(atomId)\n }\n if (atomResult.length > 0) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n if (!ci) {\n // ci.type == 'Canvas'\n this.dragCtx = {}\n } else if (ci.map === 'atoms') {\n this.dragCtx = { item: ci }\n }\n }\n\n mouseleave() {\n this.editor.hoverIcon.hide()\n }\n\n mouseover() {\n this.editor.hoverIcon.show()\n this.editor.updateHoverIconPosition()\n }\n\n mousemove(event) {\n const rnd = this.editor.render\n const { layerX, layerY } = event\n\n if (!this.dragCtx || !this.dragCtx.item) {\n const { height, width } = this.editor.hoverIcon.getBBox()\n\n this.editor.hoverIcon.attr({\n x: layerX - width / 2,\n y: layerY - height / 2\n })\n this.editor.hover(\n this.editor.findItem(event, ['atoms', 'functionalGroups']),\n null,\n event\n )\n return\n }\n\n const dragCtx = this.dragCtx\n const ci = this.editor.findItem(event, ['atoms'])\n\n if (ci && ci.map === 'atoms' && ci.id === dragCtx.item.id) {\n // fromAtomsAttrs\n this.editor.hover(this.editor.findItem(event, ['atoms']))\n return\n }\n\n // fromAtomAddition\n const atom = rnd.ctab.molecule.atoms.get(dragCtx.item.id)\n let angle = utils.calcAngle(atom?.pp, rnd.page2obj(event))\n if (!event.ctrlKey) angle = utils.fracAngle(angle, null)\n const degrees = utils.degrees(angle)\n this.editor.event.message.dispatch({ info: degrees + 'º' })\n const newAtomPos = utils.calcNewAtomPos(\n atom?.pp,\n rnd.page2obj(event),\n event.ctrlKey\n )\n if (dragCtx.action) dragCtx.action.perform(rnd.ctab)\n\n dragCtx.action = fromBondAddition(\n rnd.ctab,\n this.#bondProps,\n dragCtx.item.id,\n Object.assign({}, this.atomProps),\n newAtomPos,\n newAtomPos\n )[0]\n this.editor.update(dragCtx.action, true)\n }\n\n mouseup(event) {\n const struct = this.editor.render.ctab\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n const ci = this.editor.findItem(event, ['atoms', 'bonds'])\n const atomResult: Array<number> = []\n const result: Array<number> = []\n if (ci && functionalGroups && ci.map === 'atoms') {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n ci.id\n )\n if (atomId !== null) atomResult.push(atomId)\n }\n if (atomResult.length > 0) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n\n if (this.dragCtx) {\n const dragCtx = this.dragCtx\n const rnd = this.editor.render\n\n this.editor.update(\n dragCtx.action ||\n (dragCtx.item\n ? fromAtomsAttrs(rnd.ctab, dragCtx.item.id, this.atomProps, true)\n : fromAtomAddition(rnd.ctab, rnd.page2obj(event), this.atomProps))\n )\n\n delete this.dragCtx\n }\n this.editor.event.message.dispatch({\n info: false\n })\n }\n}\n\nexport function atomLongtapEvent(tool, render) {\n const { dragCtx, editor } = tool\n const atomid = dragCtx.item?.id\n const fgs = render.ctab.molecule.functionalGroups\n // edit atom or add atom\n const atom =\n atomid !== undefined && atomid !== null\n ? render.ctab.molecule.atoms.get(atomid)\n : new Atom({ label: '' })\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(fgs, atomid)\n // TODO: longtab event\n dragCtx.timeout = setTimeout(() => {\n delete tool.dragCtx\n if (fgId != null) {\n editor.event.removeFG.dispatch({ fgIds: [fgId] })\n return\n }\n editor.selection(null)\n const res = editor.event.quickEdit.dispatch(atom)\n Promise.resolve(res)\n .then((newatom) => {\n const action = atomid\n ? fromAtomsAttrs(render.ctab, atomid, newatom, null)\n : fromAtomAddition(render.ctab, dragCtx.xy0, newatom)\n editor.update(action)\n })\n .catch(() => null) // w/o changes\n }, 750)\n\n dragCtx.stopTapping = function () {\n if (dragCtx.timeout) {\n clearTimeout(dragCtx.timeout)\n delete dragCtx.timeout\n }\n }\n}\n\nexport default AtomTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Elements, FunctionalGroup } from 'ketcher-core'\nimport Editor from '../Editor'\n\nclass AttachTool {\n attach: any\n editor: Editor\n\n constructor(editor, attachPoints) {\n this.attach = {\n atomid: attachPoints.atomid || 0,\n bondid: attachPoints.bondid || 0\n }\n this.editor = editor\n this.editor.selection({\n atoms: [this.attach.atomid],\n bonds: [this.attach.bondid]\n })\n }\n\n mousemove(event) {\n const rnd = this.editor.render\n\n const ci = this.editor.findItem(event, ['atoms', 'bonds'])\n const struct = rnd.ctab.molecule\n if (\n ci &&\n ((ci.map === 'atoms' &&\n Elements.get(struct.atoms.get(ci.id)?.label as string)) ||\n ci.map === 'bonds')\n )\n this.editor.hover(ci)\n else this.editor.hover(null)\n return true\n }\n\n click(event) {\n const editor = this.editor\n const rnd = editor.render\n const molecule = rnd.ctab.molecule\n const functionalGroups = molecule.functionalGroups\n const ci = editor.findItem(event, ['atoms', 'bonds'])\n const atomResult: Array<number> = []\n const bondResult: Array<number> = []\n const result: Array<number> = []\n\n if (ci && functionalGroups.size && ci.map === 'atoms') {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n ci.id\n )\n\n if (atomId !== null) {\n atomResult.push(atomId)\n }\n }\n\n if (ci && functionalGroups.size && ci.map === 'bonds') {\n const bondId = FunctionalGroup.bondsInFunctionalGroup(\n molecule,\n functionalGroups,\n ci.id\n )\n\n if (bondId !== null) {\n bondResult.push(bondId)\n }\n }\n\n if (atomResult.length > 0) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n } else if (bondResult.length > 0) {\n for (const id of bondResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByBond(\n molecule,\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n\n if (\n ci &&\n ((ci.map === 'atoms' &&\n Elements.get(molecule.atoms.get(ci.id)?.label as string)) ||\n ci.map === 'bonds')\n ) {\n if (ci.map === 'atoms') {\n this.attach.atomid = ci.id\n } else this.attach.bondid = ci.id\n\n this.editor.selection({\n atoms: [this.attach.atomid],\n bonds: [this.attach.bondid]\n })\n this.editor.event.attachEdit.dispatch(this.attach)\n }\n return true\n }\n}\n\nexport default AttachTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n Bond,\n Vec2,\n bondChangingAction,\n fromBondAddition,\n fromBondsAttrs,\n FunctionalGroup,\n SGroup,\n fromOneBondDeletion\n} from 'ketcher-core'\n\nimport utils from '../shared/utils'\nimport Editor from '../Editor'\n\nclass BondTool {\n editor: Editor\n atomProps: { label: string }\n bondProps: any\n dragCtx: any\n isNotActiveTool: boolean | undefined\n\n constructor(editor, bondProps) {\n this.editor = editor\n this.atomProps = { label: 'C' }\n this.bondProps = bondProps\n if (editor.selection() && editor.selection()?.bonds) {\n const action = fromBondsAttrs(\n editor.render.ctab,\n editor.selection().bonds,\n bondProps\n )\n editor.update(action)\n editor.selection(null)\n this.isNotActiveTool = true\n }\n }\n\n mousedown(event) {\n if (this.dragCtx) return\n const struct = this.editor.render.ctab\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n const ci = this.editor.findItem(event, ['atoms', 'bonds'])\n const atomResult: Array<number> = []\n const bondResult: Array<number> = []\n const result: Array<number> = []\n if (ci && functionalGroups.size && ci.map === 'atoms') {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n ci.id\n )\n if (atomId !== null) atomResult.push(atomId)\n }\n if (ci && functionalGroups.size && ci.map === 'bonds') {\n const bondId = FunctionalGroup.bondsInFunctionalGroup(\n molecule,\n functionalGroups,\n ci.id\n )\n if (bondId !== null) bondResult.push(bondId)\n }\n if (atomResult.length > 0) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n } else if (bondResult.length > 0) {\n for (const id of bondResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByBond(\n molecule,\n functionalGroups,\n id\n )\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n const rnd = this.editor.render\n this.editor.hover(null)\n this.editor.selection(null)\n this.dragCtx = {\n xy0: rnd.page2obj(event),\n item: this.editor.findItem(event, ['atoms', 'bonds'])\n }\n if (!this.dragCtx.item)\n // ci.type == 'Canvas'\n delete this.dragCtx.item\n return true\n }\n\n mousemove(event) {\n const struct = this.editor.render.ctab\n const sgroups = struct.sgroups\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n const editor = this.editor\n const rnd = editor.render\n if ('dragCtx' in this) {\n const dragCtx = this.dragCtx\n\n const pos = rnd.page2obj(event)\n let angle = utils.calcAngle(dragCtx.xy0, pos)\n if (!event.ctrlKey) angle = utils.fracAngle(angle, null)\n\n const degrees = utils.degrees(angle)\n this.editor.event.message.dispatch({ info: degrees + 'º' })\n\n if (!('item' in dragCtx) || dragCtx.item.map === 'atoms') {\n if ('action' in dragCtx) dragCtx.action.perform(rnd.ctab)\n let beginAtom\n let endAtom\n let beginPos\n let endPos\n const extraNeighbour: Array<number> = []\n if ('item' in dragCtx && dragCtx.item.map === 'atoms') {\n // first mousedown event intersect with any atom\n beginAtom = dragCtx.item.id\n endAtom = editor.findItem(event, ['atoms'], dragCtx.item)\n const closestSGroup = editor.findItem(event, ['functionalGroups'])\n if (\n closestSGroup &&\n FunctionalGroup.isContractedFunctionalGroup(\n closestSGroup.id,\n functionalGroups\n )\n ) {\n const sGroup = sgroups.get(closestSGroup.id)\n const sGroupAtoms = SGroup.getAtoms(molecule, sGroup?.item)\n endAtom = {\n id: sGroupAtoms[0],\n map: 'atoms'\n }\n }\n const fGroupId =\n endAtom &&\n FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n endAtom.id\n )\n const fGroup = typeof fGroupId === 'number' && sgroups.get(fGroupId)\n const fGroupAtoms =\n fGroup && (SGroup.getAtoms(molecule, fGroup.item) as any)\n if (endAtom && fGroup && endAtom.id !== fGroupAtoms?.[0]) {\n this.editor.event.removeFG.dispatch({ fgIds: [fGroupId] })\n endAtom = null\n }\n if (endAtom && fGroup && endAtom.id === fGroupAtoms?.[0]) {\n const atomNeighbours = molecule.atomGetNeighbors(endAtom.id)\n atomNeighbours?.forEach((nei) => {\n !fGroupAtoms?.includes(nei.aid) &&\n !extraNeighbour.includes(nei.aid) &&\n extraNeighbour.push(nei.aid)\n })\n }\n if (extraNeighbour.length >= 1) {\n endAtom = null\n }\n } else {\n // first mousedown event intersect with any canvas\n beginAtom = this.atomProps\n beginPos = dragCtx.xy0\n endAtom = editor.findItem(event, ['atoms'])\n const atomResult: Array<number> = []\n const result: Array<number> = []\n if (\n endAtom &&\n endAtom.map === 'atoms' &&\n functionalGroups.size &&\n this.dragCtx\n ) {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n endAtom.id\n )\n if (atomId !== null) atomResult.push(atomId)\n }\n if (atomResult.length > 0) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n fgId !== null && !result.includes(fgId) && result.push(fgId)\n }\n }\n if (result.length > 0) {\n this.editor.event.removeFG.dispatch({ fgIds: result })\n delete this.dragCtx\n return\n }\n }\n let dist = Number.MAX_VALUE\n if (endAtom?.map === 'atoms') {\n // after mousedown events is appered, cursor is moved and then cursor intersects any atoms\n endAtom = endAtom.id\n } else {\n endAtom = this.atomProps\n const xy1 = rnd.page2obj(event)\n dist = Vec2.dist(dragCtx.xy0, xy1)\n if (beginPos) {\n // rotation only, leght of bond = 1;\n endPos = utils.calcNewAtomPos(beginPos, xy1, event.ctrlKey)\n } else {\n // first mousedown event intersect with any atom and\n // rotation only, leght of bond = 1;\n const atom = rnd.ctab.molecule.atoms.get(beginAtom)\n beginPos = utils.calcNewAtomPos(\n atom?.pp.get_xy0(),\n xy1,\n event.ctrlKey\n )\n }\n }\n // don't rotate the bond if the distance between the start and end point is too small\n if (dist > 0.3) {\n const [existingBondId, bond] = this.getExistingBond(\n molecule,\n beginAtom,\n endAtom\n )\n dragCtx.action = fromBondAddition(\n rnd.ctab,\n this.bondProps,\n beginAtom,\n endAtom,\n beginPos,\n endPos\n )[0]\n if (existingBondId) {\n this.dragCtx.existedBond = bond\n this.dragCtx.action.mergeWith(\n fromOneBondDeletion(rnd.ctab, existingBondId)\n )\n }\n } else {\n delete dragCtx.action\n }\n this.restoreBondWhenHoveringOnCanvas(event)\n this.editor.update(dragCtx.action, true)\n return true\n }\n }\n this.editor.hover(\n this.editor.findItem(event, ['atoms', 'bonds']),\n null,\n event\n )\n return true\n }\n\n mouseup(event) {\n if ('dragCtx' in this) {\n const dragCtx = this.dragCtx\n const rnd = this.editor.render\n const struct = rnd.ctab.molecule\n if ('action' in dragCtx) {\n this.restoreBondWhenHoveringOnCanvas(event)\n this.editor.update(dragCtx.action)\n } else if (!('item' in dragCtx)) {\n const xy = rnd.page2obj(event)\n const v = new Vec2(1.0 / 2, 0).rotate(\n this.bondProps.type === Bond.PATTERN.TYPE.SINGLE ? -Math.PI / 6 : 0\n )\n const bondAddition = fromBondAddition(\n rnd.ctab,\n this.bondProps,\n { label: 'C' },\n { label: 'C' },\n Vec2.diff(xy, v),\n Vec2.sum(xy, v)\n )\n\n this.editor.update(bondAddition[0])\n } else if (dragCtx.item.map === 'atoms') {\n // click on atom\n this.editor.update(\n fromBondAddition(\n rnd.ctab,\n this.bondProps,\n dragCtx.item.id,\n undefined\n )[0]\n )\n delete this.dragCtx.existedBond\n } else if (dragCtx.item.map === 'bonds') {\n const bondProps = Object.assign({}, this.bondProps)\n const bond = struct.bonds.get(dragCtx.item.id) as Bond\n\n this.editor.update(\n bondChangingAction(rnd.ctab, dragCtx.item.id, bond, bondProps)\n )\n }\n delete this.dragCtx\n }\n this.editor.event.message.dispatch({\n info: false\n })\n return true\n }\n\n /*\n If we want to add a new bond, we need to delete previous one\n But we can change our mind, then deleted bond needs to be restored\n */\n restoreBondWhenHoveringOnCanvas(event) {\n if (!this.dragCtx.existedBond) {\n return\n }\n const isHoveringOverAtom = this.editor.findItem(event, ['atoms'])\n if (!isHoveringOverAtom) {\n const { begin, end } = this.dragCtx.existedBond\n const bondEnd = this.dragCtx.item.id === begin ? end : begin\n this.dragCtx.action.mergeWith(\n fromBondAddition(\n this.editor.render.ctab,\n this.dragCtx.existedBond,\n this.dragCtx.item.id,\n bondEnd\n )[0]\n )\n delete this.dragCtx.existedBond\n }\n }\n\n getExistingBond(struct, begin, end) {\n for (const [bondId, bond] of struct.bonds.entries()) {\n const alreadyHasBondInOtherDirection =\n (bond.begin === end && bond.end === begin) ||\n (bond.begin === begin && bond.end === end)\n if (alreadyHasBondInOtherDirection) {\n return [bondId, bond]\n }\n }\n return [null, null]\n }\n}\n\nexport default BondTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n Bond,\n Vec2,\n bondChangingAction,\n fromChain,\n fromItemsFuse,\n getHoverToFuse,\n getItemsToFuse,\n FunctionalGroup\n} from 'ketcher-core'\n\nimport { atomLongtapEvent } from './atom'\nimport utils from '../shared/utils'\nimport Editor from '../Editor'\n\nclass ChainTool {\n editor: Editor\n dragCtx: any\n\n constructor(editor) {\n this.editor = editor\n this.editor.selection(null)\n }\n\n mousedown(event) {\n if (this.dragCtx) return\n const struct = this.editor.render.ctab\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n const rnd = this.editor.render\n const ci = this.editor.findItem(event, ['atoms', 'bonds'])\n const atomResult: Array<number> = []\n const bondResult: Array<number> = []\n const result: Array<number> = []\n\n if (ci && functionalGroups.size && ci.map === 'atoms') {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n ci.id\n )\n\n if (atomId !== null) {\n atomResult.push(atomId)\n }\n }\n\n if (ci && functionalGroups.size && ci.map === 'bonds') {\n const bondId = FunctionalGroup.bondsInFunctionalGroup(\n molecule,\n functionalGroups,\n ci.id\n )\n\n if (bondId !== null) {\n bondResult.push(bondId)\n }\n }\n\n if (atomResult.length > 0) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n } else if (bondResult.length > 0) {\n for (const id of bondResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByBond(\n molecule,\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n\n this.editor.hover(null)\n this.dragCtx = {\n xy0: rnd.page2obj(event),\n item: ci\n }\n\n if (ci && ci.map === 'atoms') {\n this.editor.selection({ atoms: [ci.id] }) // for change atom\n // this event has to be stopped in others events by `tool.dragCtx.stopTapping()`\n atomLongtapEvent(this, rnd)\n }\n\n if (!this.dragCtx.item)\n // ci.type == 'Canvas'\n delete this.dragCtx.item\n return true\n }\n\n mousemove(event) {\n const editor = this.editor\n const restruct = editor.render.ctab\n const dragCtx = this.dragCtx\n\n editor.hover(this.editor.findItem(event, ['atoms', 'bonds']), null, event)\n if (!dragCtx) {\n return true\n }\n\n if (dragCtx && dragCtx.stopTapping) {\n dragCtx.stopTapping()\n }\n\n editor.selection(null)\n\n if (!dragCtx.item || dragCtx.item.map === 'atoms') {\n if (dragCtx.action) {\n dragCtx.action.perform(restruct)\n }\n\n const atoms = restruct.molecule.atoms\n\n const pos0 = dragCtx.item ? atoms.get(dragCtx.item.id)?.pp : dragCtx.xy0\n\n const pos1 = editor.render.page2obj(event)\n const sectCount = Math.ceil(Vec2.diff(pos1, pos0).length())\n\n const angle = event.ctrlKey\n ? utils.calcAngle(pos0, pos1)\n : utils.fracAngle(pos0, pos1)\n\n const [action, newItems] = fromChain(\n restruct,\n pos0,\n angle,\n sectCount,\n dragCtx.item ? dragCtx.item.id : null\n )\n\n editor.event.message.dispatch({\n info: sectCount + ' sectors'\n })\n\n dragCtx.action = action\n editor.update(dragCtx.action, true)\n\n dragCtx.mergeItems = getItemsToFuse(editor, newItems)\n editor.hover(getHoverToFuse(dragCtx.mergeItems))\n\n return true\n }\n\n return true\n }\n\n mouseup() {\n const struct = this.editor.render.ctab\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n let atom\n const atomResult: Array<number> = []\n const result: Array<number> = []\n\n if (this.dragCtx && this.dragCtx.mergeItems && functionalGroups.size) {\n atom = this.dragCtx.mergeItems.atoms.values().next().value\n }\n if (atom) {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n atom\n )\n\n if (atomId !== null) {\n atomResult.push(atomId)\n }\n }\n\n if (atomResult.length > 0) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n const dragCtx = this.dragCtx\n\n if (!dragCtx) {\n return true\n }\n\n delete this.dragCtx\n\n const editor = this.editor\n\n if (dragCtx.stopTapping) {\n dragCtx.stopTapping()\n }\n\n if (!dragCtx.action && dragCtx.item && dragCtx.item.map === 'bonds') {\n const bond = molecule.bonds.get(dragCtx.item.id) as Bond\n\n dragCtx.action = bondChangingAction(struct, dragCtx.item.id, bond, {\n type: Bond.PATTERN.TYPE.SINGLE,\n stereo: Bond.PATTERN.STEREO.NONE\n })\n } else {\n dragCtx.action = dragCtx.action\n ? fromItemsFuse(struct, dragCtx.mergeItems).mergeWith(dragCtx.action)\n : fromItemsFuse(struct, dragCtx.mergeItems)\n }\n\n editor.selection(null)\n editor.hover(null)\n\n if (dragCtx.action) {\n editor.update(dragCtx.action)\n }\n\n editor.event.message.dispatch({\n info: false\n })\n\n return true\n }\n\n cancel() {\n this.mouseup()\n }\n\n mouseleave() {\n this.mouseup()\n }\n}\n\nexport default ChainTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Elements, fromAtomsAttrs, FunctionalGroup } from 'ketcher-core'\nimport Editor from '../Editor'\n\nclass ChargeTool {\n editor: Editor\n charge: any\n\n constructor(editor, charge) {\n this.editor = editor\n this.editor.selection(null)\n this.charge = charge\n }\n\n mousemove(event) {\n const struct = this.editor.render.ctab\n const molecule = struct.molecule\n const ci = this.editor.findItem(event, ['atoms'])\n if (\n ci &&\n ci.map === 'atoms' &&\n Elements.get(molecule.atoms.get(ci.id)?.label as number | string)\n ) {\n this.editor.hover(ci)\n } else {\n this.editor.hover(null, null, event)\n }\n return true\n }\n\n click(event) {\n const editor = this.editor\n const struct = this.editor.render.ctab\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n const rnd = editor.render\n const ci = editor.findItem(event, ['atoms', 'bonds'])\n const atomResult: Array<number> = []\n const result: Array<number> = []\n\n if (ci && functionalGroups.size && ci.map === 'atoms') {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n ci.id\n )\n\n if (atomId !== null) {\n atomResult.push(atomId)\n }\n }\n\n if (atomResult.length > 0) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n\n if (\n ci &&\n ci.map === 'atoms' &&\n Elements.get(molecule.atoms.get(ci.id)?.label as string | number)\n ) {\n this.editor.hover(null)\n this.editor.update(\n fromAtomsAttrs(\n rnd.ctab,\n ci.id,\n {\n charge: molecule.atoms.get(ci.id)?.charge + this.charge\n },\n null\n )\n )\n }\n return true\n }\n}\n\nexport default ChargeTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n findStereoAtoms,\n fromAtomsAttrs,\n fromStereoFlagUpdate\n} from 'ketcher-core'\n\nimport Editor from '../Editor'\n\nclass EnhancedStereoTool {\n editor: Editor\n stereoAtoms: Array<number>\n isNotActiveTool: true\n\n constructor(editor) {\n const selection = editor.selection()\n this.editor = editor\n this.isNotActiveTool = true\n\n this.stereoAtoms = findStereoAtoms(\n editor.struct(),\n selection\n ? selection.atoms || []\n : Array.from(editor.struct().atoms.keys())\n )\n\n if (this.stereoAtoms.length === 0) {\n return\n }\n\n EnhancedStereoTool.changeAtomsStereoAction(\n this.editor,\n this.stereoAtoms\n ).then((action) => action && editor.update(action))\n }\n\n static changeAtomsStereoAction(editor: Editor, stereoAtoms: Array<number>) {\n const struct = editor.struct()\n const restruct = editor.render.ctab\n const stereoLabels = stereoAtoms.map((stereoAtom) => {\n const atom = struct.atoms.get(stereoAtom)\n return atom && atom.stereoLabel\n })\n const hasAnotherLabel = stereoLabels.some(\n (stereoLabel) => stereoLabel !== stereoLabels[0]\n )\n const res = editor.event.enhancedStereoEdit.dispatch({\n stereoLabel: hasAnotherLabel ? null : stereoLabels[0]\n })\n\n return res.then((stereoLabel) => {\n if (!stereoLabel) {\n return null\n }\n\n const action = stereoAtoms.reduce(\n (acc, stereoAtom) => {\n return acc.mergeWith(\n fromStereoFlagUpdate(\n restruct,\n struct.atoms.get(stereoAtom)?.fragment\n )\n )\n },\n fromAtomsAttrs(\n restruct,\n stereoAtoms,\n {\n stereoLabel\n },\n false\n )\n )\n action.operations.reverse()\n return action\n })\n }\n}\n\nexport default EnhancedStereoTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { FunctionalGroup, Vec2 } from 'ketcher-core'\n\nfunction getElementsInRectangle(restruct, p0, p1) {\n const bondList: Array<number> = []\n const atomList: Array<number> = []\n const sGroups = restruct.sgroups\n const functionalGroups = restruct.molecule.functionalGroups\n\n const x0 = Math.min(p0.x, p1.x)\n const x1 = Math.max(p0.x, p1.x)\n const y0 = Math.min(p0.y, p1.y)\n const y1 = Math.max(p0.y, p1.y)\n\n restruct.bonds.forEach((bond, bid) => {\n const centre = Vec2.lc2(\n restruct.atoms.get(bond.b.begin).a.pp,\n 0.5,\n restruct.atoms.get(bond.b.end).a.pp,\n 0.5\n )\n if (\n centre.x > x0 &&\n centre.x < x1 &&\n centre.y > y0 &&\n centre.y < y1 &&\n !FunctionalGroup.isBondInContractedFunctionalGroup(\n bond.b,\n sGroups,\n functionalGroups,\n true\n )\n ) {\n bondList.push(bid)\n }\n })\n\n restruct.atoms.forEach((atom, aid) => {\n const relatedFGId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n aid\n )\n const sGroup = restruct.sgroups.get(relatedFGId)\n if (\n atom.a.pp.x > x0 &&\n atom.a.pp.x < x1 &&\n atom.a.pp.y > y0 &&\n atom.a.pp.y < y1 &&\n (!FunctionalGroup.isAtomInContractedFunctionalGroup(\n atom.a,\n sGroups,\n functionalGroups,\n true\n ) ||\n aid === sGroup.item.atoms[0])\n ) {\n atomList.push(aid)\n }\n })\n\n const rxnArrowsList: Array<number> = []\n const rxnPlusesList: Array<number> = []\n const simpleObjectsList: Array<number> = []\n\n restruct.rxnArrows.forEach((item, id) => {\n if (\n item.item.center().x > x0 &&\n item.item.center().x < x1 &&\n item.item.center().y > y0 &&\n item.item.center().y < y1\n ) {\n rxnArrowsList.push(id)\n }\n })\n\n restruct.rxnPluses.forEach((item, id) => {\n if (\n item.item.pp.x > x0 &&\n item.item.pp.x < x1 &&\n item.item.pp.y > y0 &&\n item.item.pp.y < y1\n ) {\n rxnPlusesList.push(id)\n }\n })\n\n restruct.simpleObjects.forEach((item, id) => {\n const referencePoints = item.getReferencePoints(true)\n const referencePointInRectangle = referencePoints.find(\n (point) => point.x > x0 && point.x < x1 && point.y > y0 && point.y < y1\n )\n if (referencePointInRectangle) {\n simpleObjectsList.push(id)\n }\n })\n\n const enhancedFlagList: Array<number> = []\n restruct.enhancedFlags.forEach((item, id) => {\n if (!item.pp) return\n if (item.pp.x > x0 && item.pp.x < x1 && item.pp.y > y0 && item.pp.y < y1) {\n enhancedFlagList.push(id)\n }\n })\n\n const sgroupDataList: Array<number> = []\n restruct.sgroupData.forEach((item, id) => {\n if (\n item.sgroup.pp.x > x0 &&\n item.sgroup.pp.x < x1 &&\n item.sgroup.pp.y > y0 &&\n item.sgroup.pp.y < y1\n ) {\n sgroupDataList.push(id)\n }\n })\n\n const textsList: Array<number> = []\n restruct.texts.forEach((item, id) => {\n const referencePoints = item.getReferencePoints()\n const referencePointInRectangle = referencePoints.find((point) => {\n return point.x > x0 && point.x < x1 && point.y > y0 && point.y < y1\n })\n\n if (referencePointInRectangle) {\n textsList.push(id)\n }\n })\n\n return {\n atoms: atomList,\n bonds: bondList,\n rxnArrows: rxnArrowsList,\n rxnPluses: rxnPlusesList,\n enhancedFlags: enhancedFlagList,\n sgroupData: sgroupDataList,\n simpleObjects: simpleObjectsList,\n texts: textsList\n }\n}\n\nfunction getElementsInPolygon(restruct, rr) {\n // eslint-disable-line max-statements\n const bondList: Array<number> = []\n const atomList: Array<number> = []\n const r: any = []\n const sGroups = restruct.sgroups\n const functionalGroups = restruct.molecule.functionalGroups\n\n for (let i = 0; i < rr.length; ++i) {\n r[i] = new Vec2(rr[i].x, rr[i].y)\n }\n\n restruct.bonds.forEach((bond, bid) => {\n const centre = Vec2.lc2(\n restruct.atoms.get(bond.b.begin).a.pp,\n 0.5,\n restruct.atoms.get(bond.b.end).a.pp,\n 0.5\n )\n if (\n isPointInPolygon(r, centre) &&\n !FunctionalGroup.isBondInContractedFunctionalGroup(\n bond.b,\n sGroups,\n functionalGroups,\n true\n )\n ) {\n bondList.push(bid)\n }\n })\n\n restruct.atoms.forEach((atom, aid) => {\n const relatedFGId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n aid\n )\n const sGroup = restruct.sgroups.get(relatedFGId)\n if (\n isPointInPolygon(r, atom.a.pp) &&\n (!FunctionalGroup.isAtomInContractedFunctionalGroup(\n atom.a,\n sGroups,\n functionalGroups,\n true\n ) ||\n aid === sGroup.item.atoms[0])\n ) {\n atomList.push(aid)\n }\n })\n\n const rxnArrowsList: Array<number> = []\n const rxnPlusesList: Array<number> = []\n const simpleObjectsList: Array<number> = []\n const textsList: Array<number> = []\n\n restruct.rxnArrows.forEach((item, id) => {\n const referencePoints = item.getReferencePoints(true)\n const referencePointInPolygon = referencePoints.find((point) =>\n isPointInPolygon(r, point)\n )\n if (referencePointInPolygon) {\n rxnArrowsList.push(id)\n }\n })\n\n restruct.rxnPluses.forEach((item, id) => {\n if (isPointInPolygon(r, item.item.pp)) {\n rxnPlusesList.push(id)\n }\n })\n\n restruct.simpleObjects.forEach((item, id) => {\n const referencePoints = item.getReferencePoints(true)\n const referencePointInPolygon = referencePoints.find((point) =>\n isPointInPolygon(r, point)\n )\n if (referencePointInPolygon) {\n simpleObjectsList.push(id)\n }\n })\n\n restruct.texts.forEach((item, id) => {\n const referencePoints = item.getReferencePoints()\n const referencePointInPolygon = referencePoints.find((point) =>\n isPointInPolygon(r, point)\n )\n\n if (referencePointInPolygon) {\n textsList.push(id)\n }\n })\n\n const enhancedFlagList: Array<number> = []\n restruct.enhancedFlags.forEach((item, id) => {\n if (item.pp && isPointInPolygon(r, item.pp)) {\n enhancedFlagList.push(id)\n }\n })\n\n const sgroupDataList: Array<number> = []\n restruct.sgroupData.forEach((item, id) => {\n if (isPointInPolygon(r, item.sgroup.pp)) {\n sgroupDataList.push(id)\n }\n })\n\n return {\n atoms: atomList,\n bonds: bondList,\n rxnArrows: rxnArrowsList,\n rxnPluses: rxnPlusesList,\n enhancedFlags: enhancedFlagList,\n sgroupData: sgroupDataList,\n simpleObjects: simpleObjectsList,\n texts: textsList\n }\n}\n\n// TODO: test me see testPolygon from\n// 'Remove unused methods from render' commit\nfunction isPointInPolygon(r, p) {\n // eslint-disable-line max-statements\n const d = new Vec2(0, 1)\n const n = d.rotate(Math.PI / 2)\n let v0 = Vec2.diff(r[r.length - 1], p)\n let n0 = Vec2.dot(n, v0)\n let d0 = Vec2.dot(d, v0)\n let w0 = new Vec2(0, 0)\n let counter = 0\n const eps = 1e-5\n let flag1 = false\n let flag0 = false\n\n for (let i = 0; i < r.length; ++i) {\n const v1 = Vec2.diff(r[i], p)\n const w1 = Vec2.diff(v1, v0)\n const n1 = Vec2.dot(n, v1)\n const d1 = Vec2.dot(d, v1)\n flag1 = false\n if (n1 * n0 < 0) {\n if (d1 * d0 > -eps) {\n if (d0 > -eps) flag1 = true\n /* eslint-disable no-mixed-operators */\n } else if (\n (Math.abs(n0) * Math.abs(d1) - Math.abs(n1) * Math.abs(d0)) * d1 >\n 0\n ) {\n /* eslint-enable no-mixed-operators */\n flag1 = true\n }\n }\n if (flag1 && flag0 && Vec2.dot(w1, n) * Vec2.dot(w0, n) >= 0) {\n flag1 = false\n }\n if (flag1) {\n counter++\n }\n v0 = v1\n n0 = n1\n d0 = d1\n w0 = w1\n flag0 = flag1\n }\n return counter % 2 !== 0\n}\n\nexport default {\n inRectangle: getElementsInRectangle,\n inPolygon: getElementsInPolygon\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Scale } from 'ketcher-core'\nimport locate from './locate'\nimport Editor from '../../Editor'\n\nclass LassoHelper {\n mode: any\n editor: Editor\n fragment: any\n points: any\n selection: any\n\n constructor(mode, editor, fragment) {\n this.mode = mode\n this.fragment = fragment\n this.editor = editor\n }\n\n getSelection() {\n const rnd = this.editor.render\n\n if (this.mode === 0) {\n return locate.inPolygon(rnd.ctab, this.points)\n }\n\n if (this.mode === 1) {\n return locate.inRectangle(rnd.ctab, this.points[0], this.points[1])\n }\n\n throw new Error('Selector mode unknown') // eslint-disable-line no-else-return\n }\n\n begin(event) {\n const rnd = this.editor.render\n this.points = [rnd.page2obj(event)]\n if (this.mode === 1) {\n this.points.push(this.points[0])\n }\n }\n\n running() {\n return !!this.points\n }\n\n addPoint(event) {\n if (!this.points) {\n return null\n }\n\n const rnd = this.editor.render\n\n if (this.mode === 0) {\n this.points.push(rnd.page2obj(event))\n } else if (this.mode === 1) {\n this.points = [this.points[0], rnd.page2obj(event)]\n }\n\n this.update()\n return this.getSelection()\n }\n\n update() {\n if (this.selection) {\n this.selection.remove()\n this.selection = null\n }\n\n if (this.points && this.points.length > 1) {\n const rnd = this.editor.render\n const dp = this.points.map((p) =>\n Scale.obj2scaled(p, rnd.options).add(rnd.options.offset)\n )\n this.selection =\n this.mode === 0\n ? rnd.selectionPolygon(dp)\n : rnd.selectionRectangle(dp[0], dp[1])\n }\n }\n\n end() {\n const ret = this.getSelection()\n this.points = null\n this.update()\n return ret\n }\n\n cancel() {\n this.points = null\n this.update()\n }\n}\n\nexport default LassoHelper\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n Pile,\n SgContexts,\n checkOverlapping,\n fromSeveralSgroupAddition,\n fromSgroupAction,\n fromSgroupDeletion,\n FunctionalGroup,\n SGroup,\n Pool\n} from 'ketcher-core'\n\nimport LassoHelper from './helper/lasso'\nimport { isEqual } from 'lodash/fp'\nimport { selMerge } from './select'\nimport Editor from '../Editor'\n\nconst searchMaps = [\n 'atoms',\n 'bonds',\n 'sgroups',\n 'functionalGroups',\n 'sgroupData'\n]\n\nclass SGroupTool {\n editor: Editor\n type: any\n lassoHelper: any\n isNotActiveTool: boolean | undefined\n\n constructor(editor, type) {\n this.editor = editor\n this.type = type\n this.lassoHelper = new LassoHelper(1, editor, null)\n\n this.checkSelection()\n }\n\n checkSelection() {\n const selection = this.editor.selection() || {}\n\n if (selection.atoms && selection.bonds) {\n const selectedAtoms = this.editor.selection()?.atoms\n const struct = this.editor.render.ctab\n const molecule = struct.molecule\n const sgroups: Pool<SGroup> = molecule.sgroups\n const newSelected: { atoms: Array<any>; bonds: Array<any> } = {\n atoms: [],\n bonds: []\n }\n let actualSgroupId\n let atomsResult: Array<number> = []\n let extraAtoms\n const functionalGroups = molecule.functionalGroups\n const result: Array<number> = []\n\n const id = sgroups.find((_, sgroup) =>\n isEqual(sgroup.atoms, selectedAtoms)\n )\n\n if (selectedAtoms && functionalGroups.size) {\n for (const atom of selectedAtoms) {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n atom\n )\n\n if (atomId == null) {\n extraAtoms = true\n }\n\n const atomFromStruct = atomId !== null && struct.atoms.get(atomId)?.a\n\n if (atomFromStruct) {\n for (const sgId of atomFromStruct.sgs.values()) {\n actualSgroupId = sgId\n }\n }\n\n if (\n atomFromStruct &&\n FunctionalGroup.isAtomInContractedFunctionalGroup(\n atomFromStruct,\n sgroups,\n functionalGroups,\n false\n )\n ) {\n const sgroupAtoms =\n actualSgroupId !== undefined &&\n SGroup.getAtoms(molecule, sgroups.get(actualSgroupId))\n const sgroupBonds =\n actualSgroupId !== undefined &&\n SGroup.getBonds(molecule, sgroups.get(actualSgroupId))\n atom === sgroupAtoms[0] &&\n newSelected.atoms.push(...(sgroupAtoms as Array<any>)) &&\n newSelected.bonds.push(...(sgroupBonds as Array<any>))\n }\n\n if (atomFromStruct) {\n atomsResult.push(atomId)\n }\n }\n }\n\n if (extraAtoms) {\n atomsResult = []\n }\n\n if (atomsResult && atomsResult.length > 0) {\n for (const id of atomsResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n }\n\n if (result.length) {\n this.editor.selection(null)\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n\n SGroupTool.sgroupDialog(this.editor, id ?? null, this.type)\n this.isNotActiveTool = true\n }\n }\n\n mousedown(event) {\n const ci = this.editor.findItem(event, searchMaps)\n const struct = this.editor.render.ctab\n const sgroups = struct.sgroups\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n const atomResult: Array<number> = []\n const bondResult: Array<number> = []\n const result: Array<number> = []\n\n if (ci && functionalGroups.size && ci.map === 'atoms') {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n ci.id\n )\n const atomFromStruct = atomId !== null && struct.atoms.get(atomId)?.a\n\n if (\n atomFromStruct &&\n !FunctionalGroup.isAtomInContractedFunctionalGroup(\n atomFromStruct,\n sgroups,\n functionalGroups,\n true\n )\n ) {\n atomResult.push(atomId)\n }\n }\n\n if (ci && functionalGroups.size && ci.map === 'bonds') {\n const bondId = FunctionalGroup.bondsInFunctionalGroup(\n molecule,\n functionalGroups,\n ci.id\n )\n const bondFromStruct = bondId !== null && struct.bonds.get(bondId)?.b\n\n if (\n bondFromStruct &&\n !FunctionalGroup.isBondInContractedFunctionalGroup(\n bondFromStruct,\n sgroups,\n functionalGroups,\n true\n )\n ) {\n bondResult.push(bondId)\n }\n }\n\n if (ci && functionalGroups.size && ci.map === 'functionalGroups') {\n const sgroup = sgroups.get(ci.id)\n\n if (FunctionalGroup.isFunctionalGroup(sgroup?.item)) {\n this.editor.event.removeFG.dispatch({ fgIds: [ci.id] })\n return\n }\n }\n\n if (atomResult.length > 0) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n } else if (bondResult.length > 0) {\n for (const id of bondResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByBond(\n molecule,\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n\n if (!ci) {\n // ci.type == 'Canvas'\n this.lassoHelper.begin(event)\n }\n }\n\n mousemove(event) {\n if (this.lassoHelper.running(event)) {\n this.editor.selection(this.lassoHelper.addPoint(event))\n } else {\n this.editor.hover(this.editor.findItem(event, searchMaps), null, event)\n }\n }\n\n mouseleave(event) {\n if (this.lassoHelper.running(event)) {\n this.lassoHelper.end(event)\n }\n }\n\n mouseup(event) {\n const struct = this.editor.render.ctab\n const sgroups = struct.sgroups\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n const ci = this.editor.findItem(event, searchMaps)\n const selected = this.editor.selection()\n const newSelected: Record<string, Array<any>> = { atoms: [], bonds: [] }\n let actualSgroupId\n let atomsResult: Array<number> | null = []\n let extraAtoms\n let bondsResult: Array<number> | null = []\n let extraBonds\n const result: Array<number> = []\n if (\n ci &&\n ci.map === 'functionalGroups' &&\n functionalGroups.size &&\n FunctionalGroup.isContractedFunctionalGroup(ci.id, functionalGroups)\n )\n return\n\n if (selected && functionalGroups.size && selected.atoms) {\n for (const atom of selected.atoms) {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n atom\n )\n\n if (atomId == null) {\n extraAtoms = true\n }\n\n const atomFromStruct = atomId !== null && struct.atoms.get(atomId)?.a\n\n if (atomFromStruct) {\n for (const sgId of atomFromStruct.sgs.values()) {\n actualSgroupId = sgId\n }\n }\n\n if (\n atomFromStruct &&\n FunctionalGroup.isAtomInContractedFunctionalGroup(\n atomFromStruct,\n sgroups,\n functionalGroups,\n true\n )\n ) {\n const sgroupAtoms =\n actualSgroupId !== undefined &&\n SGroup.getAtoms(molecule, struct.sgroups.get(actualSgroupId)?.item)\n const sgroupBonds =\n actualSgroupId !== undefined &&\n SGroup.getBonds(molecule, struct.sgroups.get(actualSgroupId)?.item)\n atom === sgroupAtoms[0] &&\n newSelected.atoms.push(...(sgroupAtoms as Array<any>)) &&\n newSelected.bonds.push(...(sgroupBonds as Array<any>))\n }\n\n if (atomFromStruct) {\n atomsResult.push(atomId)\n }\n }\n }\n\n if (selected && functionalGroups.size && selected.bonds) {\n for (const bond of selected.bonds) {\n const bondId = FunctionalGroup.bondsInFunctionalGroup(\n molecule,\n functionalGroups,\n bond\n )\n\n if (bondId === null) {\n extraBonds = true\n }\n\n const bondFromStruct = bondId !== null && struct.bonds.get(bondId)?.b\n if (bondFromStruct) {\n bondsResult.push(bondId)\n }\n }\n }\n\n if (atomsResult.length) {\n atomsResult.forEach((id) => {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n ) as number\n const sgroupAtoms = SGroup.getAtoms(\n molecule,\n struct.sgroups.get(fgId)?.item\n )\n newSelected.atoms.push(...sgroupAtoms)\n })\n }\n\n if (bondsResult.length) {\n bondsResult.forEach((id) => {\n const fgId = FunctionalGroup.findFunctionalGroupByBond(\n molecule,\n functionalGroups,\n id\n ) as number\n const sgroupBonds = SGroup.getBonds(\n molecule,\n struct.sgroups.get(fgId)?.item\n )\n newSelected.bonds.push(...sgroupBonds)\n })\n }\n\n if (extraAtoms || extraBonds) {\n atomsResult = null\n bondsResult = null\n }\n\n if (atomsResult && atomsResult.length > 0) {\n for (const id of atomsResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n }\n\n if (bondsResult && bondsResult.length > 0) {\n for (const id of bondsResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByBond(\n molecule,\n functionalGroups,\n id\n )\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n }\n\n if (result.length === 1) {\n this.editor.selection(null)\n this.lassoHelper.cancel()\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n\n let id = null // id of an existing group, if we're editing one\n let selection: any = null // atoms to include in a newly created group\n\n if (this.lassoHelper.running(event)) {\n // TODO it catches more events than needed, to be re-factored\n selection =\n newSelected.atoms.length > 0\n ? selMerge(this.lassoHelper.end(event), newSelected, false)\n : this.lassoHelper.end(event)\n this.editor.selection(selection)\n } else {\n if (!ci)\n // ci.type == 'Canvas'\n return\n this.editor.hover(null)\n\n if (ci.map === 'atoms') {\n // if we click the SGroup tool on a single atom or bond, make a group out of those\n selection = { atoms: [ci.id] }\n } else if (ci.map === 'bonds') {\n const bond = this.editor.render.ctab.bonds.get(ci.id)\n selection = {\n atoms: [bond?.b.begin, bond?.b.end],\n bonds: [ci.id]\n }\n } else if (ci.map === 'sgroups' || ci.map === 'sgroupData') {\n id = ci.id\n } else {\n return\n }\n }\n\n const isAtomsOrBondsSelected =\n selection?.atoms?.length || selection?.bonds?.length\n // TODO: handle click on an existing group?\n if (id !== null || isAtomsOrBondsSelected) {\n this.editor.selection(selection)\n SGroupTool.sgroupDialog(this.editor, id, this.type)\n }\n }\n\n cancel() {\n if (this.lassoHelper.running()) {\n this.lassoHelper.end()\n }\n this.editor.selection(null)\n }\n\n static sgroupDialog(editor, id, defaultType) {\n const restruct = editor.render.ctab\n const struct = restruct.molecule\n const selection = editor.selection() || {}\n const sg = id !== null ? struct.sgroups.get(id) : null\n const type = sg ? sg.type : defaultType\n const eventName = type === 'DAT' ? 'sdataEdit' : 'sgroupEdit'\n\n let attrs\n if (sg) {\n attrs = sg.getAttrs()\n if (!attrs.context) attrs.context = getContextBySgroup(restruct, sg.atoms)\n } else {\n attrs = {\n context: getContextBySelection(restruct, selection)\n }\n }\n\n const res = editor.event[eventName].dispatch({\n type,\n attrs\n })\n\n Promise.resolve(res)\n .then((newSg) => {\n // TODO: check before signal\n if (\n newSg.type !== 'DAT' && // when data s-group separates\n checkOverlapping(struct, selection.atoms || [])\n ) {\n editor.event.message.dispatch({\n error: 'Partial S-group overlapping is not allowed.'\n })\n } else {\n if (\n !sg &&\n newSg.type !== 'DAT' &&\n (!selection.atoms || selection.atoms.length === 0)\n )\n return\n\n const isDataSg = sg && sg.getAttrs().context === newSg.attrs.context\n\n if (isDataSg) {\n const action = fromSeveralSgroupAddition(\n restruct,\n newSg.type,\n sg.atoms,\n newSg.attrs\n ).mergeWith(fromSgroupDeletion(restruct, id))\n\n editor.update(action)\n editor.selection(selection)\n return\n }\n\n const result = fromContextType(id, editor, newSg, selection)\n editor.update(result.action)\n editor.selection(null)\n }\n })\n .catch(() => null)\n }\n}\n\nfunction getContextBySgroup(restruct, sgAtoms) {\n const struct = restruct.molecule\n\n if (sgAtoms.length === 1) {\n return SgContexts.Atom\n }\n\n if (manyComponentsSelected(restruct, sgAtoms)) {\n return SgContexts.Multifragment\n }\n\n if (singleComponentSelected(restruct, sgAtoms)) {\n return SgContexts.Fragment\n }\n\n const atomSet = new Pile(sgAtoms)\n\n const sgBonds = Array.from(struct.bonds.values()).filter(\n (bond: any) => atomSet.has(bond.begin) && atomSet.has(bond.end)\n )\n\n return anyChainedBonds(sgBonds) ? SgContexts.Group : SgContexts.Bond\n}\n\nfunction getContextBySelection(restruct, selection) {\n const struct = restruct.molecule\n\n if (selection.atoms && !selection.bonds) {\n return SgContexts.Atom\n }\n\n const bonds = selection.bonds.map((bondid) => struct.bonds.get(bondid))\n\n if (!anyChainedBonds(bonds)) {\n return SgContexts.Bond\n }\n\n selection.atoms = selection.atoms || []\n\n const atomSet = new Pile(selection.atoms)\n const allBondsSelected = bonds.every(\n (bond) => atomSet.has(bond.begin) && atomSet.has(bond.end)\n )\n\n if (singleComponentSelected(restruct, selection.atoms) && allBondsSelected) {\n return SgContexts.Fragment\n }\n\n return manyComponentsSelected(restruct, selection.atoms)\n ? SgContexts.Multifragment\n : SgContexts.Group\n}\n\nfunction fromContextType(id, editor, newSg, currSelection) {\n const restruct = editor.render.ctab\n const sg = restruct.molecule.sgroups.get(id)\n const sourceAtoms = (sg && sg.atoms) || currSelection.atoms || []\n const context = newSg.attrs.context\n\n const result = fromSgroupAction(\n context,\n restruct,\n newSg,\n sourceAtoms,\n currSelection\n )\n\n result.selection = result.selection || currSelection\n\n if (id !== null && id !== undefined) {\n result.action = result.action.mergeWith(fromSgroupDeletion(restruct, id))\n }\n\n editor.selection(result.selection)\n\n return result\n}\n\nfunction anyChainedBonds(bonds) {\n if (bonds.length === 0) {\n return true\n }\n\n for (let i = 0; i < bonds.length; ++i) {\n const fixedBond = bonds[i]\n for (let j = 0; j < bonds.length; ++j) {\n if (i === j) continue\n\n const bond = bonds[j]\n\n if (fixedBond.end === bond.begin || fixedBond.end === bond.end) {\n return true\n }\n }\n }\n\n return false\n}\n\nfunction singleComponentSelected(restruct, atoms) {\n return countOfSelectedComponents(restruct, atoms) === 1\n}\n\nfunction manyComponentsSelected(restruct, atoms) {\n return countOfSelectedComponents(restruct, atoms) > 1\n}\n\nfunction countOfSelectedComponents(restruct, atoms): any {\n const atomSet = new Pile(atoms)\n\n return Array.from(restruct.connectedComponents.values()).reduce(\n (acc: number, component) =>\n acc + (atomSet.isSuperset(component as Pile) ? 1 : 0),\n 0\n )\n}\n\nexport default SGroupTool\n","import { Action, Atom, fromAtomsAttrs } from 'ketcher-core'\nimport { fromElement } from '../../data/convert/structconv'\n\nexport function isAtomsArray(selectedElements: Atom | Atom[]): boolean {\n return (\n Array.isArray(selectedElements) &&\n selectedElements?.every((element) => element instanceof Atom)\n )\n}\n\ntype somePropertiesOfAtom = Partial<{\n [attribute in keyof Atom]: string | number | boolean\n}>\n\n// If all atoms have the same value, then this value is used as a baseline\n// otherwise it is set to an empty string. Afterwards, empty string denotes that the value is not changed\nexport function generateCommonProperties(\n selectedElements: Atom[]\n): somePropertiesOfAtom {\n const normalizedAtom = fromElement(selectedElements[0])\n const properties = Object.getOwnPropertyNames(normalizedAtom)\n const resultAtomAttributes: somePropertiesOfAtom = {}\n properties.forEach((property) => {\n const uniqueValues = new Set()\n selectedElements.forEach((element) => {\n uniqueValues.add(element[property])\n })\n const allAtomsHaveTheSameValue = uniqueValues.size === 1\n if (allAtomsHaveTheSameValue) {\n resultAtomAttributes[property] = normalizedAtom[property]\n } else {\n resultAtomAttributes[property] = ''\n }\n })\n return resultAtomAttributes\n}\n\nexport function updateOnlyChangedProperties(atomId, userChangedAtom, molecule) {\n const unchangedAtom = molecule.atoms.get(atomId)\n const updatedKeys = Object.getOwnPropertyNames(userChangedAtom).filter(\n (key) => userChangedAtom[key] !== ''\n )\n return Object.getOwnPropertyNames(unchangedAtom).reduce(\n (updatedAtom, key) => {\n const isPropertyChanged = updatedKeys.includes(key)\n if (isPropertyChanged) {\n updatedAtom[key] = userChangedAtom[key]\n if (key === 'charge') {\n updatedAtom[key] = Number(updatedAtom[key])\n }\n } else {\n updatedAtom[key] = unchangedAtom[key]\n }\n return updatedAtom\n },\n {}\n )\n}\n\nexport function updateSelectedAtoms({ selection, changeAtomPromise, editor }) {\n const action = new Action()\n const struct = editor.render.ctab\n const { molecule } = struct\n if (selection?.atoms) {\n const selectionAtoms = selection.atoms\n Promise.resolve(changeAtomPromise)\n .then((userChangedAtom) => {\n // TODO: deep compare to not produce dummy, e.g.\n // atom.label != attrs.label || !atom.atomList.equals(attrs.atomList)\n selectionAtoms.forEach((atomId) => {\n const atomWithChangedProperties = updateOnlyChangedProperties(\n atomId,\n userChangedAtom,\n molecule\n )\n action.mergeWith(\n fromAtomsAttrs(struct, atomId, atomWithChangedProperties, false)\n )\n })\n editor.update(action)\n })\n .catch(() => null)\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n Action,\n SGroup,\n fromBondsAttrs,\n fromItemsFuse,\n fromMultipleMove,\n fromTextDeletion,\n fromTextUpdating,\n getHoverToFuse,\n getItemsToFuse,\n FunctionalGroup,\n fromSimpleObjectResizing,\n fromArrowResizing,\n ReStruct,\n ReSGroup,\n Atom\n} from 'ketcher-core'\n\nimport LassoHelper from './helper/lasso'\nimport { atomLongtapEvent } from './atom'\nimport SGroupTool from './sgroup'\nimport utils from '../shared/utils'\nimport { xor } from 'lodash/fp'\nimport { Editor } from '../Editor'\nimport { updateSelectedAtoms } from 'src/script/ui/state/modal/atoms'\n\nclass SelectTool {\n #mode: string\n #lassoHelper: LassoHelper\n editor: Editor\n dragCtx: any\n\n constructor(editor, mode) {\n this.editor = editor\n this.#mode = mode\n this.#lassoHelper = new LassoHelper(\n this.#mode === 'lasso' ? 0 : 1,\n editor,\n this.#mode === 'fragment'\n )\n }\n\n isSelectionRunning() {\n return this.#lassoHelper.running()\n }\n\n mousedown(event) {\n const rnd = this.editor.render\n const ctab = rnd.ctab\n const molecule = ctab.molecule\n const functionalGroups = molecule.functionalGroups\n const selectedSgroups: any[] = []\n const newSelected = { atoms: [] as any[], bonds: [] as any[] }\n let actualSgroupId\n\n this.editor.hover(null) // TODO review hovering for touch devicess\n\n const selectFragment = this.#lassoHelper.fragment || event.ctrlKey\n const ci = this.editor.findItem(\n event,\n selectFragment\n ? [\n 'frags',\n 'sgroups',\n 'functionalGroups',\n 'sgroupData',\n 'rgroups',\n 'rxnArrows',\n 'rxnPluses',\n 'enhancedFlags',\n 'simpleObjects',\n 'texts'\n ]\n : [\n 'atoms',\n 'bonds',\n 'sgroups',\n 'functionalGroups',\n 'sgroupData',\n 'rgroups',\n 'rxnArrows',\n 'rxnPluses',\n 'enhancedFlags',\n 'simpleObjects',\n 'texts'\n ],\n null\n )\n\n if (ci && ci.map === 'atoms' && functionalGroups.size) {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n ci.id\n )\n const atomFromStruct = atomId !== null && ctab.atoms.get(ci.id)?.a\n\n if (atomFromStruct) {\n for (const sgId of atomFromStruct.sgs.values()) {\n actualSgroupId = sgId\n }\n }\n if (\n atomFromStruct &&\n actualSgroupId !== undefined &&\n !selectedSgroups.includes(actualSgroupId)\n )\n selectedSgroups.push(actualSgroupId)\n }\n if (ci && ci.map === 'bonds' && functionalGroups.size) {\n const bondId = FunctionalGroup.bondsInFunctionalGroup(\n molecule,\n functionalGroups,\n ci.id\n )\n const sGroupId = FunctionalGroup.findFunctionalGroupByBond(\n molecule,\n functionalGroups,\n bondId\n )\n if (sGroupId !== null && !selectedSgroups.includes(sGroupId))\n selectedSgroups.push(sGroupId)\n }\n\n if (selectedSgroups.length) {\n for (const sgId of selectedSgroups) {\n const sgroup = ctab.sgroups.get(sgId)\n if (sgroup) {\n const sgroupAtoms = SGroup.getAtoms(molecule, sgroup.item)\n const sgroupBonds = SGroup.getBonds(molecule, sgroup.item)\n newSelected.atoms.push(...sgroupAtoms) &&\n newSelected.bonds.push(...sgroupBonds)\n }\n }\n this.editor.selection(newSelected)\n }\n\n this.dragCtx = {\n item: ci,\n xy0: rnd.page2obj(event)\n }\n\n if (!ci || ci.map === 'atoms') {\n atomLongtapEvent(this, rnd)\n }\n\n if (!ci) {\n // ci.type == 'Canvas'\n if (!event.shiftKey) this.editor.selection(null)\n delete this.dragCtx.item\n if (!this.#lassoHelper.fragment) this.#lassoHelper.begin(event)\n return true\n }\n\n let sel = closestToSel(ci)\n const sgroups = ctab.sgroups.get(ci.id)\n const selection = this.editor.selection()\n if (ci.map === 'frags') {\n const frag = ctab.frags.get(ci.id)\n sel = {\n atoms: frag.fragGetAtoms(ctab, ci.id),\n bonds: frag.fragGetBonds(ctab, ci.id)\n }\n } else if (\n (ci.map === 'sgroups' || ci.map === 'functionalGroups') &&\n sgroups\n ) {\n const sgroup = sgroups.item\n sel = {\n atoms: SGroup.getAtoms(molecule, sgroup),\n bonds: SGroup.getBonds(molecule, sgroup)\n }\n } else if (ci.map === 'rgroups') {\n const rgroup = ctab.rgroups.get(ci.id)\n sel = {\n atoms: rgroup.getAtoms(rnd),\n bonds: rgroup.getBonds(rnd)\n }\n } else if (ci.map === 'sgroupData') {\n if (isSelected(selection, ci)) return true\n }\n\n if (event.shiftKey) {\n this.editor.selection(selMerge(sel, selection, true))\n } else {\n this.editor.selection(null)\n this.editor.selection(isSelected(selection, ci) ? selection : sel)\n }\n return true\n }\n\n mousemove(event) {\n const editor = this.editor\n const rnd = editor.render\n const restruct = editor.render.ctab\n const dragCtx = this.dragCtx\n if (dragCtx && dragCtx.stopTapping) dragCtx.stopTapping()\n if (dragCtx && dragCtx.item) {\n const atoms = restruct.molecule.atoms\n const selection = editor.selection()\n const shouldDisplayDegree =\n dragCtx.item.map === 'atoms' &&\n atoms?.get(dragCtx.item.id)?.neighbors.length === 1 &&\n selection?.atoms?.length === 1 &&\n !selection.bonds\n if (shouldDisplayDegree) {\n // moving selected objects\n const pos = rnd.page2obj(event)\n const angle = utils.calcAngle(dragCtx.xy0, pos)\n const degrees = utils.degrees(angle)\n this.editor.event.message.dispatch({ info: degrees + 'º' })\n }\n if (dragCtx.item.map === 'simpleObjects' && dragCtx.item.ref) {\n if (dragCtx?.action) dragCtx.action.perform(rnd.ctab)\n const current = rnd.page2obj(event)\n const diff = current.sub(this.dragCtx.xy0)\n dragCtx.action = fromSimpleObjectResizing(\n rnd.ctab,\n dragCtx.item.id,\n diff,\n current,\n dragCtx.item.ref,\n event.shiftKey\n )\n editor.update(dragCtx.action, true)\n return true\n }\n if (dragCtx.item.map === 'functionalGroups' && !dragCtx.action) {\n editor.event.showInfo.dispatch(null)\n }\n if (dragCtx.item.map === 'rxnArrows' && dragCtx.item.ref) {\n if (dragCtx?.action) dragCtx.action.perform(rnd.ctab)\n const current = rnd.page2obj(event)\n const diff = current.sub(dragCtx.xy0)\n dragCtx.previous = current\n dragCtx.action = fromArrowResizing(\n rnd.ctab,\n dragCtx.item.id,\n diff,\n current,\n dragCtx.item.ref\n )\n editor.update(dragCtx.action, true)\n return true\n }\n if (dragCtx.action) {\n dragCtx.action.perform(restruct)\n // redraw the elements in unshifted position, lest the have different offset\n editor.update(dragCtx.action, true)\n }\n\n const expSel = editor.explicitSelected()\n dragCtx.action = fromMultipleMove(\n restruct,\n expSel,\n editor.render.page2obj(event).sub(dragCtx.xy0)\n )\n\n dragCtx.mergeItems = getItemsToFuse(editor, expSel)\n editor.hover(getHoverToFuse(dragCtx.mergeItems))\n\n editor.update(dragCtx.action, true)\n return true\n }\n\n if (this.#lassoHelper.running()) {\n const sel = this.#lassoHelper.addPoint(event)\n editor.selection(\n !event.shiftKey ? sel : selMerge(sel, editor.selection(), false)\n )\n return true\n }\n\n const maps =\n this.#lassoHelper.fragment || event.ctrlKey\n ? [\n 'frags',\n 'sgroups',\n 'functionalGroups',\n 'sgroupData',\n 'rgroups',\n 'rxnArrows',\n 'rxnPluses',\n 'enhancedFlags',\n 'simpleObjects',\n 'texts'\n ]\n : [\n 'atoms',\n 'bonds',\n 'sgroups',\n 'functionalGroups',\n 'sgroupData',\n 'rgroups',\n 'rxnArrows',\n 'rxnPluses',\n 'enhancedFlags',\n 'simpleObjects',\n 'texts'\n ]\n\n editor.hover(editor.findItem(event, maps, null), null, event)\n\n return true\n }\n\n mouseup(event) {\n const editor = this.editor\n const selected = editor.selection()\n const struct = editor.render.ctab\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n const selectedSgroups: any[] = []\n const newSelected = { atoms: [] as any[], bonds: [] as any[] }\n let actualSgroupId\n\n if (selected && functionalGroups.size && selected.atoms) {\n for (const atom of selected.atoms) {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n atom\n )\n const atomFromStruct = atomId !== null && struct.atoms.get(atomId)?.a\n\n if (atomFromStruct) {\n for (const sgId of atomFromStruct.sgs.values()) {\n actualSgroupId = sgId\n }\n }\n if (\n atomFromStruct &&\n actualSgroupId !== undefined &&\n !selectedSgroups.includes(actualSgroupId)\n )\n selectedSgroups.push(actualSgroupId)\n }\n }\n\n if (selected && functionalGroups.size && selected.bonds) {\n for (const atom of selected.bonds) {\n const bondId = FunctionalGroup.bondsInFunctionalGroup(\n molecule,\n functionalGroups,\n atom\n )\n const sGroupId = FunctionalGroup.findFunctionalGroupByBond(\n molecule,\n functionalGroups,\n bondId\n )\n if (sGroupId !== null && !selectedSgroups.includes(sGroupId))\n selectedSgroups.push(sGroupId)\n }\n }\n\n if (selectedSgroups.length) {\n for (const sgId of selectedSgroups) {\n const sgroup = struct.sgroups.get(sgId)\n if (sgroup) {\n const sgroupAtoms = SGroup.getAtoms(molecule, sgroup.item)\n const sgroupBonds = SGroup.getBonds(molecule, sgroup.item)\n newSelected.atoms.push(...sgroupAtoms) &&\n newSelected.bonds.push(...sgroupBonds)\n }\n }\n }\n\n const dragCtx = this.dragCtx\n\n if (dragCtx && dragCtx.stopTapping) dragCtx.stopTapping()\n\n const possibleSaltOrSolvent = struct.sgroups.get(actualSgroupId)\n const isDraggingSaltOrSolventOnStructure = SGroup.isSaltOrSolvent(\n possibleSaltOrSolvent?.item.data.name\n )\n if (\n (isDraggingSaltOrSolventOnStructure ||\n this.isDraggingStructureOnSaltOrSolvent(dragCtx, struct.sgroups)) &&\n dragCtx\n ) {\n preventSaltAndSolventsMerge(struct, dragCtx, editor)\n delete this.dragCtx\n if (this.#lassoHelper.running()) {\n this.selectElementsOnCanvas(newSelected, editor, event)\n }\n return true\n }\n\n if (dragCtx && dragCtx.item) {\n dragCtx.action = dragCtx.action\n ? fromItemsFuse(struct, dragCtx.mergeItems).mergeWith(dragCtx.action)\n : fromItemsFuse(struct, dragCtx.mergeItems)\n\n editor.hover(null)\n if (dragCtx.mergeItems) editor.selection(null)\n if (dragCtx.action.operations.length !== 0) editor.update(dragCtx.action)\n\n delete this.dragCtx\n } else if (this.#lassoHelper.running()) {\n // TODO it catches more events than needed, to be re-factored\n this.selectElementsOnCanvas(newSelected, editor, event)\n } else if (this.#lassoHelper.fragment) {\n if (\n !event.shiftKey &&\n this.editor.render.clientArea.contains(event.target)\n )\n editor.selection(null)\n }\n editor.event.message.dispatch({\n info: false\n })\n return true\n }\n\n dblclick(event) {\n const editor = this.editor\n const struct = editor.render.ctab\n const { molecule, sgroups } = struct\n const functionalGroups = molecule.functionalGroups\n const rnd = editor.render\n const ci = editor.findItem(\n event,\n ['atoms', 'bonds', 'sgroups', 'functionalGroups', 'sgroupData', 'texts'],\n null\n )\n\n const atomResult: any[] = []\n const bondResult: any[] = []\n const result: any[] = []\n if (ci && functionalGroups && ci.map === 'atoms') {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n ci.id\n )\n const atomFromStruct = atomId !== null && struct.atoms.get(atomId)?.a\n if (\n atomId !== null &&\n !FunctionalGroup.isAtomInContractedFunctionalGroup(\n // TODO: examine if this code is really needed, seems like its a hack\n atomFromStruct,\n sgroups,\n functionalGroups,\n true\n )\n )\n atomResult.push(atomId)\n }\n if (ci && functionalGroups && ci.map === 'bonds') {\n const bondId = FunctionalGroup.bondsInFunctionalGroup(\n molecule,\n functionalGroups,\n ci.id\n )\n const bondFromStruct = bondId !== null && struct.bonds.get(bondId)?.b\n if (\n bondId !== null &&\n !FunctionalGroup.isBondInContractedFunctionalGroup(\n // TODO: examine if this code is really needed, seems like its a hack\n bondFromStruct,\n sgroups,\n functionalGroups,\n true\n )\n )\n bondResult.push(bondId)\n }\n if (atomResult.length > 0) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n editor.event.removeFG.dispatch({ fgIds: result })\n return\n } else if (bondResult.length > 0) {\n for (const id of bondResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByBond(\n molecule,\n functionalGroups,\n id\n )\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n if (!ci) return true\n\n const selection = this.editor.selection()\n\n if (ci.map === 'atoms') {\n const atoms = getSelectedAtoms(selection, molecule)\n const changeAtomPromise = editor.event.elementEdit.dispatch(atoms)\n updateSelectedAtoms({\n selection,\n editor,\n changeAtomPromise\n })\n } else if (ci.map === 'bonds') {\n const bond = rnd.ctab.bonds.get(ci.id)?.b\n const rb = editor.event.bondEdit.dispatch(bond)\n\n if (selection?.bonds) {\n const action = new Action()\n const bondsSelection = selection.bonds\n Promise.resolve(rb)\n .then((newbond) => {\n bondsSelection.forEach((bid) => {\n action.mergeWith(fromBondsAttrs(struct, bid, newbond))\n })\n editor.update(action)\n })\n .catch(() => null) // w/o changes\n }\n } else if (\n (ci.map === 'sgroups' &&\n !FunctionalGroup.isFunctionalGroup(molecule.sgroups.get(ci.id))) ||\n ci.map === 'sgroupData'\n ) {\n editor.selection(closestToSel(ci))\n SGroupTool.sgroupDialog(editor, ci.id, null)\n } else if (ci.map === 'texts') {\n editor.selection(closestToSel(ci))\n const text = molecule.texts.get(ci.id)\n const dialog = editor.event.elementEdit.dispatch({\n ...text,\n type: 'text'\n })\n\n dialog\n .then(({ content }) => {\n if (!content) {\n editor.update(fromTextDeletion(struct, ci.id))\n } else if (content !== text?.content) {\n editor.update(fromTextUpdating(struct, ci.id, content))\n }\n })\n .catch(() => null)\n }\n return true\n }\n\n mouseleave(_) {\n if (this.dragCtx && this.dragCtx.stopTapping) this.dragCtx.stopTapping()\n\n if (this.dragCtx && this.dragCtx.action) {\n const action = this.dragCtx.action\n this.editor.update(action)\n }\n if (this.#lassoHelper.running())\n this.editor.selection(this.#lassoHelper.end())\n\n delete this.dragCtx\n\n this.editor.hover(null)\n }\n\n selectElementsOnCanvas(\n elements: { atoms: number[]; bonds: number[] },\n editor: Editor,\n event\n ) {\n const sel =\n elements.atoms.length > 0\n ? selMerge(this.#lassoHelper.end(), elements, false)\n : this.#lassoHelper.end()\n editor.selection(\n !event.shiftKey ? sel : selMerge(sel, editor.selection(), false)\n )\n }\n\n isDraggingStructureOnSaltOrSolvent(dragCtx, sgroups: Map<number, ReSGroup>) {\n let isDraggingOnSaltOrSolventAtom\n let isDraggingOnSaltOrSolventBond\n if (dragCtx?.mergeItems) {\n const mergeAtoms = Array.from(dragCtx.mergeItems.atoms.values())\n const mergeBonds = Array.from(dragCtx.mergeItems.bonds.values())\n const sgroupsOnCanvas = Array.from(sgroups.values()).map(\n ({ item }) => item\n )\n isDraggingOnSaltOrSolventAtom = mergeAtoms.some((atomId) =>\n SGroup.isAtomInSaltOrSolvent(atomId as number, sgroupsOnCanvas)\n )\n isDraggingOnSaltOrSolventBond = mergeBonds.some((bondId) =>\n SGroup.isBondInSaltOrSolvent(bondId as number, sgroupsOnCanvas)\n )\n }\n return isDraggingOnSaltOrSolventAtom || isDraggingOnSaltOrSolventBond\n }\n}\n\nfunction closestToSel(ci) {\n const res = {}\n res[ci.map] = [ci.id]\n return res\n}\n\n// TODO: deep-merge?\nexport function selMerge(selection, add, reversible: boolean) {\n if (add) {\n Object.keys(add).forEach((item) => {\n if (!selection[item]) selection[item] = add[item].slice()\n else selection[item] = uniqArray(selection[item], add[item], reversible)\n })\n }\n return selection\n}\n\nfunction isSelected(selection, item) {\n return (\n selection && selection[item.map] && selection[item.map].includes(item.id)\n )\n}\n\nexport function getSelectedAtoms(selection, molecule) {\n if (selection?.atoms) {\n return mapAtomIdsToAtoms(selection?.atoms, molecule)\n }\n return []\n}\n\nexport function mapAtomIdsToAtoms(atomsIds: number[], molecule): Atom[] {\n return atomsIds.map((atomId) => {\n const atomOrReAtom = molecule.atoms.get(atomId)\n return atomOrReAtom.a || atomOrReAtom\n })\n}\n\nfunction uniqArray(dest, add, reversible: boolean) {\n return add.reduce((_, item) => {\n if (reversible) dest = xor(dest, [item])\n else if (!dest.includes(item)) dest.push(item)\n return dest\n }, [])\n}\n\nfunction preventSaltAndSolventsMerge(\n struct: ReStruct,\n dragCtx,\n editor: Editor\n) {\n const action = dragCtx.action\n ? fromItemsFuse(struct, null).mergeWith(dragCtx.action)\n : fromItemsFuse(struct, null)\n editor.hover(null)\n if (dragCtx.mergeItems) {\n editor.selection(null)\n }\n editor.update(action)\n editor.event.message.dispatch({\n info: false\n })\n}\n\nexport default SelectTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n fromArrowDeletion,\n fromFragmentDeletion,\n fromOneAtomDeletion,\n fromOneBondDeletion,\n fromPlusDeletion,\n fromSgroupDeletion,\n fromSimpleObjectDeletion,\n fromTextDeletion,\n FunctionalGroup,\n SGroup\n} from 'ketcher-core'\n\nimport LassoHelper from './helper/lasso'\nimport { selMerge } from './select'\nimport Editor from '../Editor'\n\nclass EraserTool {\n editor: Editor\n maps: Array<string>\n lassoHelper: LassoHelper\n isNotActiveTool: boolean | undefined\n\n constructor(editor, mode) {\n this.editor = editor\n this.maps = [\n 'atoms',\n 'bonds',\n 'rxnArrows',\n 'rxnPluses',\n 'sgroups',\n 'functionalGroups',\n 'sgroupData',\n 'simpleObjects',\n 'texts'\n ]\n this.lassoHelper = new LassoHelper(mode || 0, editor, null)\n\n if (editor.selection()) {\n const action = fromFragmentDeletion(\n editor.render.ctab,\n editor.selection()\n )\n editor.update(action)\n editor.selection(null)\n this.isNotActiveTool = true\n }\n }\n\n mousedown(event) {\n const ci = this.editor.findItem(event, this.maps)\n\n if (!ci) {\n // ci.type == 'Canvas'\n this.lassoHelper.begin(event)\n }\n }\n\n mousemove(event) {\n if (this.lassoHelper.running()) {\n this.editor.selection(this.lassoHelper.addPoint(event))\n } else {\n this.editor.hover(this.editor.findItem(event, this.maps), null, event)\n }\n }\n\n mouseup() {\n const struct = this.editor.render.ctab\n const sgroups = struct.sgroups\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n const selected = this.editor.selection()\n const newSelected: Record<string, any> = { atoms: [], bonds: [] }\n let actualSgroupId\n const atomsResult: Array<number> = []\n const bondsResult: Array<number> = []\n const preResult: Array<number> = []\n\n if (selected && functionalGroups.size && selected.atoms) {\n for (const atom of selected.atoms) {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n atom\n )\n const atomFromStruct = atomId !== null && struct.atoms.get(atomId)?.a\n\n if (atomFromStruct) {\n for (const sgId of atomFromStruct.sgs.values()) {\n actualSgroupId = sgId\n }\n }\n\n if (\n atomFromStruct &&\n FunctionalGroup.isAtomInContractedFunctionalGroup(\n atomFromStruct,\n sgroups,\n functionalGroups,\n true\n )\n ) {\n const sgroupAtoms =\n actualSgroupId !== undefined &&\n SGroup.getAtoms(molecule, struct.sgroups.get(actualSgroupId)?.item)\n const sgroupBonds =\n actualSgroupId !== undefined &&\n SGroup.getBonds(molecule, struct.sgroups.get(actualSgroupId)?.item)\n atom === sgroupAtoms[0] &&\n newSelected.atoms.push(...(sgroupAtoms as Array<any>)) &&\n newSelected.bonds.push(...(sgroupBonds as Array<any>))\n }\n\n if (\n atomFromStruct &&\n !FunctionalGroup.isAtomInContractedFunctionalGroup(\n atomFromStruct,\n sgroups,\n functionalGroups,\n true\n )\n ) {\n atomsResult.push(atomId)\n }\n }\n }\n\n if (selected && functionalGroups.size && selected.bonds) {\n for (const bond of selected.bonds) {\n const bondId = FunctionalGroup.bondsInFunctionalGroup(\n molecule,\n functionalGroups,\n bond\n )\n const bondFromStruct = bondId !== null && struct.bonds.get(bondId)?.b\n\n if (\n bondFromStruct &&\n !FunctionalGroup.isBondInContractedFunctionalGroup(\n bondFromStruct,\n sgroups,\n functionalGroups,\n true\n )\n ) {\n bondsResult.push(bondId)\n }\n }\n }\n\n if (atomsResult.length > 0) {\n for (const id of atomsResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n fgId !== null && !preResult.includes(fgId) && preResult.push(fgId)\n }\n }\n\n if (bondsResult.length > 0) {\n for (const id of bondsResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByBond(\n molecule,\n functionalGroups,\n id\n )\n fgId !== null && !preResult.includes(fgId) && preResult.push(fgId)\n }\n }\n\n if (preResult.length > 0) {\n const result: Array<number> = []\n preResult.forEach((fgId) => {\n const sgAtoms = sgroups.get(fgId)?.item.atoms\n sgAtoms.forEach((atom) => {\n !atomsResult.includes(atom) &&\n !result.includes(fgId) &&\n result.push(fgId)\n })\n })\n\n if (result.length > 0) {\n this.editor.selection(null)\n this.editor.event.removeFG.dispatch({ fgIds: result })\n this.lassoHelper.cancel()\n }\n }\n\n // eslint-disable-line max-statements\n const rnd = this.editor.render\n\n if (this.lassoHelper.running()) {\n // TODO it catches more events than needed, to be re-factored\n const sel =\n newSelected.atoms.length > 0\n ? selMerge(this.lassoHelper.end(), newSelected, false)\n : this.lassoHelper.end()\n this.editor.update(fromFragmentDeletion(rnd.ctab, sel))\n this.editor.selection(null)\n }\n }\n\n click(event) {\n const rnd = this.editor.render\n const restruct = rnd.ctab\n const sgroups = restruct.sgroups\n const molecule = restruct.molecule\n const functionalGroups = molecule.functionalGroups\n const ci = this.editor.findItem(event, this.maps)\n const atomResult: Array<number> = []\n const bondResult: Array<number> = []\n const result: Array<number> = []\n\n if (\n ci &&\n functionalGroups &&\n ci.map === 'functionalGroups' &&\n !FunctionalGroup.isContractedFunctionalGroup(ci.id, functionalGroups)\n ) {\n const sGroup = sgroups.get(ci.id)\n\n if (FunctionalGroup.isFunctionalGroup(sGroup?.item)) {\n result.push(ci.id)\n }\n } else if (ci && functionalGroups && ci.map === 'atoms') {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n ci.id\n )\n const atomFromStruct = atomId !== null && restruct.atoms.get(atomId)?.a\n\n if (\n atomFromStruct &&\n !FunctionalGroup.isAtomInContractedFunctionalGroup(\n atomFromStruct,\n sgroups,\n functionalGroups,\n true\n )\n ) {\n atomResult.push(atomId)\n }\n } else if (ci && functionalGroups && ci.map === 'bonds') {\n const bondId = FunctionalGroup.bondsInFunctionalGroup(\n molecule,\n functionalGroups,\n ci.id\n )\n const bondFromStruct = bondId !== null && restruct.bonds.get(bondId)?.b\n\n if (\n bondFromStruct &&\n !FunctionalGroup.isBondInContractedFunctionalGroup(\n bondFromStruct,\n sgroups,\n functionalGroups,\n true\n )\n ) {\n bondResult.push(bondId)\n }\n }\n\n if (atomResult.length) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n } else if (bondResult.length) {\n for (const id of bondResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByBond(\n molecule,\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n }\n\n if (result.length) {\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n\n if (!ci) return // ci.type == 'Canvas'\n\n this.editor.hover(null)\n\n if (ci.map === 'atoms') {\n this.editor.update(fromOneAtomDeletion(restruct, ci.id))\n } else if (ci.map === 'bonds') {\n this.editor.update(fromOneBondDeletion(restruct, ci.id))\n } else if (\n ci.map === 'functionalGroups' &&\n FunctionalGroup.isContractedFunctionalGroup(ci.id, functionalGroups)\n ) {\n const sGroup = sgroups.get(ci.id)\n this.editor.update(\n fromFragmentDeletion(rnd.ctab, {\n atoms: [...SGroup.getAtoms(molecule, sGroup?.item)],\n bonds: [...SGroup.getBonds(molecule, sGroup?.item)]\n })\n )\n } else if (ci.map === 'sgroups' || ci.map === 'sgroupData') {\n const sGroup = sgroups.get(ci.id)\n\n if (FunctionalGroup.isFunctionalGroup(sGroup?.item)) {\n this.editor.event.removeFG.dispatch({ fgIds: [ci.id] })\n } else {\n this.editor.update(fromSgroupDeletion(restruct, ci.id))\n }\n } else if (ci.map === 'rxnArrows') {\n this.editor.update(fromArrowDeletion(restruct, ci.id))\n } else if (ci.map === 'rxnPluses') {\n this.editor.update(fromPlusDeletion(restruct, ci.id))\n } else if (ci.map === 'simpleObjects') {\n this.editor.update(fromSimpleObjectDeletion(restruct, ci.id))\n } else if (ci.map === 'texts') {\n this.editor.update(fromTextDeletion(restruct, ci.id))\n } else {\n // TODO re-factoring needed - should be \"map-independent\"\n console.error(\n 'EraserTool: unable to delete the object ' + ci.map + '[' + ci.id + ']'\n )\n return\n }\n this.editor.selection(null)\n }\n\n mouseleave() {\n this.mouseup()\n }\n\n cancel() {\n if (this.lassoHelper.running()) {\n this.lassoHelper.end()\n }\n\n this.editor.selection(null)\n }\n}\n\nexport default EraserTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Editor from '../Editor'\nimport { Vec2 } from 'ketcher-core'\n\nclass HandTool {\n editor: Editor\n begPos: Vec2 | null = null\n endPos: Vec2 | null = null\n\n constructor(editor) {\n this.editor = editor\n const { clientX, clientY } = this.editor.lastEvent || {\n clientX: 0,\n clientY: 0\n }\n this.editor.event.cursor.dispatch({\n status: 'enable',\n cursorPosition: { clientX, clientY }\n })\n }\n\n mousedown(event) {\n const { clientX, clientY } = event\n this.begPos = new Vec2(clientX, clientY)\n }\n\n mousemove(event) {\n this.editor.event.cursor.dispatch({ status: 'move' })\n this.editor.hover(\n this.editor.findItem(event, ['atoms', 'bonds'], null),\n null,\n event\n )\n\n if (this.begPos == null) {\n return\n }\n const { clientX, clientY } = event\n this.endPos = new Vec2(clientX, clientY)\n\n const rnd = this.editor.render\n const diff = Vec2.diff(this.endPos, this.begPos).scaled(\n 1 / this.editor.zoom()\n )\n this.begPos = this.endPos\n\n rnd.ctab.translate(diff)\n rnd.options.offset = rnd.options.offset.add(diff)\n rnd.update(false)\n }\n\n mouseup(event) {\n if (this.begPos === null) return\n const rnd = this.editor.render\n this.endPos = rnd.page2obj(event)\n this.begPos = null\n this.endPos = null\n rnd.update(false)\n }\n\n mouseover() {\n this.editor.event.cursor.dispatch({ status: 'mouseover' })\n }\n\n mouseLeaveClientArea() {\n this.begPos = null\n this.endPos = null\n this.editor.event.cursor.dispatch({ status: 'leave' })\n }\n\n cancel() {\n this.editor.event.cursor.dispatch({ status: 'disable' })\n }\n}\n\nexport default HandTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n fromItemsFuse,\n fromPaste,\n FunctionalGroup,\n getHoverToFuse,\n getItemsToFuse,\n Struct\n} from 'ketcher-core'\nimport Editor from '../Editor'\n\nclass PasteTool {\n editor: Editor\n struct: Struct\n action: any\n mergeItems: any\n\n constructor(editor, struct) {\n this.editor = editor\n this.editor.selection(null)\n this.struct = struct\n\n const rnd = this.editor.render\n const { clientHeight, clientWidth } = rnd.clientArea\n const point = this.editor.lastEvent\n ? rnd.page2obj(this.editor.lastEvent)\n : rnd.page2obj({\n pageX: clientWidth / 2,\n pageY: clientHeight / 2\n } as MouseEvent)\n\n const [action, pasteItems] = fromPaste(rnd.ctab, this.struct, point)\n this.action = action\n this.editor.update(this.action, true)\n\n this.mergeItems = getItemsToFuse(this.editor, pasteItems)\n this.editor.hover(getHoverToFuse(this.mergeItems), this)\n }\n\n mousemove(event) {\n const rnd = this.editor.render\n\n if (this.action) {\n this.action.perform(rnd.ctab)\n }\n\n const [action, pasteItems] = fromPaste(\n rnd.ctab,\n this.struct,\n rnd.page2obj(event)\n )\n this.action = action\n this.editor.update(this.action, true)\n\n this.mergeItems = getItemsToFuse(this.editor, pasteItems)\n this.editor.hover(getHoverToFuse(this.mergeItems))\n }\n\n mouseup() {\n const struct = this.editor.render.ctab\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n const atomsResult: Array<number> = []\n const bondsResult: Array<number> = []\n const result: Array<number> = []\n\n if (\n this.mergeItems &&\n functionalGroups.size &&\n this.mergeItems.atoms.size\n ) {\n for (const id of this.mergeItems.atoms.values()) {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n id\n )\n\n if (atomId !== null) {\n atomsResult.push(atomId)\n }\n }\n }\n if (\n this.mergeItems &&\n functionalGroups.size &&\n this.mergeItems.bonds.size\n ) {\n for (const id of this.mergeItems.bonds.values()) {\n const bondId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n id\n )\n\n if (bondId !== null) {\n bondsResult.push(bondId)\n }\n }\n }\n\n if (atomsResult.length > 0) {\n for (const id of atomsResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n } else if (bondsResult.length > 0) {\n for (const id of bondsResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByBond(\n molecule,\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n const editor = this.editor\n const restruct = editor.render.ctab\n\n editor.selection(null)\n\n this.action = this.action\n ? fromItemsFuse(restruct, this.mergeItems).mergeWith(this.action)\n : fromItemsFuse(restruct, this.mergeItems)\n\n editor.hover(null)\n\n if (this.action) {\n const action = this.action\n delete this.action\n this.editor.update(action)\n }\n }\n\n cancel() {\n const rnd = this.editor.render\n this.editor.hover(null)\n\n if (this.action) {\n this.action.perform(rnd.ctab) // revert the action\n delete this.action\n rnd.update()\n }\n }\n\n mouseleave() {\n this.cancel()\n }\n}\n\nexport default PasteTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n Atom,\n fromAtomAddition,\n fromAtomsAttrs,\n FunctionalGroup\n} from 'ketcher-core'\nimport Editor from '../Editor'\n\nclass RGroupAtomTool {\n editor: Editor\n\n constructor(editor) {\n // TODO: map atoms with labels\n editor.selection(null)\n this.editor = editor\n }\n\n mousemove(event) {\n const struct = this.editor.render.ctab.molecule\n const ci = this.editor.findItem(event, ['atoms'])\n\n if (ci) {\n const atom = struct.atoms.get(ci.id)\n if (atom?.attpnt === null) this.editor.hover(ci, null, event)\n } else {\n this.editor.hover(null)\n }\n }\n\n click(event) {\n const struct = this.editor.render.ctab\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n const rnd = this.editor.render\n const ci = this.editor.findItem(event, ['atoms'])\n const atomResult: Array<number> = []\n const result: Array<number> = []\n\n if (ci && functionalGroups && ci.map === 'atoms') {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n ci.id\n )\n\n if (atomId !== null) {\n atomResult.push(atomId)\n }\n }\n\n if (atomResult.length > 0) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n\n if (!ci) {\n // ci.type == 'Canvas'\n this.editor.hover(null)\n propsDialog(this.editor, null, rnd.page2obj(event))\n return true\n } else if (ci.map === 'atoms') {\n this.editor.hover(null)\n const struct = this.editor.render.ctab.molecule\n const atom = struct.atoms.get(ci.id)\n\n if (atom?.attpnt !== null) return\n\n propsDialog(this.editor, ci.id, null)\n return true\n }\n return true\n }\n}\n\nfunction propsDialog(editor, id, pos) {\n const struct = editor.render.ctab.molecule\n const atom = id || id === 0 ? struct.atoms.get(id) : null\n const rglabel = atom ? atom.rglabel : 0\n const label = atom ? atom.label : 'R#'\n\n const res = editor.event.elementEdit.dispatch({\n label: 'R#',\n rglabel,\n fragId: atom ? atom.fragment : null\n })\n\n Promise.resolve(res)\n .then((elem) => {\n // TODO review: using Atom.attrlist as a source of default property values\n elem = Object.assign({}, Atom.attrlist, elem)\n\n if (!id && id !== 0 && elem.rglabel) {\n editor.update(fromAtomAddition(editor.render.ctab, pos, elem))\n } else if (rglabel !== elem.rglabel) {\n elem.aam = atom.aam // WTF??\n elem.attpnt = atom.attpnt\n\n if (!elem.rglabel && label !== 'R#') {\n elem.label = label\n }\n\n editor.update(fromAtomsAttrs(editor.render.ctab, id, elem, false))\n }\n })\n .catch(() => null) // w/o changes\n}\n\nexport default RGroupAtomTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n RGroup,\n fromRGroupAttrs,\n fromRGroupFragment,\n fromUpdateIfThen,\n FunctionalGroup\n} from 'ketcher-core'\nimport Editor from '../Editor'\n\nclass RGroupFragmentTool {\n editor: Editor\n\n constructor(editor) {\n // TODO: check if it's a fragments already\n editor.selection(null)\n this.editor = editor\n }\n\n mousemove(event) {\n this.editor.hover(\n this.editor.findItem(event, ['frags', 'rgroups']),\n null,\n event\n )\n }\n\n click(event) {\n const struct = this.editor.render.ctab\n const molecule = struct.molecule\n const functionalGroups = molecule.functionalGroups\n const editor = this.editor\n const ci = editor.findItem(event, ['frags', 'rgroups'])\n const ce = editor.findItem(event, ['atoms', 'bonds'])\n const atomResult: Array<number> = []\n const bondResult: Array<number> = []\n const result: Array<number> = []\n\n if (ce && functionalGroups && ce.map === 'atoms') {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n ce.id\n )\n\n if (atomId !== null) {\n atomResult.push(atomId)\n }\n }\n\n if (ce && functionalGroups && ce.map === 'bonds') {\n const bondId = FunctionalGroup.bondsInFunctionalGroup(\n molecule,\n functionalGroups,\n ce.id\n )\n\n if (bondId !== null) {\n bondResult.push(bondId)\n }\n }\n\n if (atomResult.length > 0) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n } else if (bondResult.length > 0) {\n for (const id of bondResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByBond(\n molecule,\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n\n if (!ci) {\n return true\n }\n\n this.editor.hover(null)\n\n const label =\n ci.map === 'rgroups'\n ? ci.id\n : RGroup.findRGroupByFragment(molecule.rgroups, ci.id)\n\n const rg = Object.assign(\n { label },\n ci.map === 'frags' ? { fragId: ci.id } : molecule.rgroups.get(ci.id)\n )\n\n const res = editor.event.rgroupEdit.dispatch(rg)\n\n Promise.resolve(res)\n .then((newRg) => {\n let action\n\n if (ci.map !== 'rgroups') {\n const rgidOld = RGroup.findRGroupByFragment(\n struct.molecule.rgroups,\n ci.id\n )\n action = fromRGroupFragment(struct, newRg.label, ci.id).mergeWith(\n fromUpdateIfThen(struct, newRg.label, rgidOld)\n )\n } else {\n action = fromRGroupAttrs(struct, ci.id, newRg)\n }\n\n editor.update(action)\n })\n .catch(() => null) // w/o changes\n\n return true\n }\n\n cancel() {\n this.editor.hover(null)\n }\n}\n\nexport default RGroupFragmentTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n fromArrowAddition,\n fromArrowDeletion,\n fromArrowResizing,\n fromMultipleMove,\n Vec2\n} from 'ketcher-core'\nimport Editor from '../Editor'\n\nclass ReactionArrowTool {\n mode: any\n editor: Editor\n dragCtx: any\n\n constructor(editor, mode) {\n this.mode = mode\n this.editor = editor\n this.editor.selection(null)\n }\n\n mousedown(event) {\n const rnd = this.editor.render\n const p0 = rnd.page2obj(event)\n this.dragCtx = { p0 }\n\n const ci = this.editor.findItem(event, ['rxnArrows'])\n\n if (ci && ci.map === 'rxnArrows') {\n this.editor.hover(null)\n this.editor.selection({ rxnArrows: [ci.id] })\n this.dragCtx.ci = ci\n } else {\n this.dragCtx.isNew = true\n this.editor.selection(null)\n }\n }\n\n mousemove(event) {\n const rnd = this.editor.render\n\n if (this.dragCtx) {\n const current = rnd.page2obj(event)\n const diff = current.sub(this.dragCtx.p0)\n this.dragCtx.previous = current\n\n if (this.dragCtx.ci) {\n if (this.dragCtx.action) {\n this.dragCtx.action.perform(rnd.ctab)\n }\n\n if (!this.dragCtx.ci.ref) {\n this.dragCtx.action = fromMultipleMove(\n rnd.ctab,\n this.editor.selection() || {},\n diff\n )\n } else {\n this.dragCtx.action = fromArrowResizing(\n rnd.ctab,\n this.dragCtx.ci.id,\n diff,\n current,\n this.dragCtx.ci.ref\n )\n }\n this.editor.update(this.dragCtx.action, true)\n } else {\n if (!this.dragCtx.action) {\n const action = fromArrowAddition(\n rnd.ctab,\n [this.dragCtx.p0, this.dragCtx.p0],\n this.mode\n )\n // TODO: need to rework actions/operations logic\n const addOperation = action.operations[0]\n this.dragCtx.itemId = addOperation.data.id\n this.dragCtx.action = action\n this.editor.update(this.dragCtx.action, true)\n } else {\n this.dragCtx.action.perform(rnd.ctab)\n }\n\n this.dragCtx.action = fromArrowResizing(\n rnd.ctab,\n this.dragCtx.itemId,\n diff,\n current,\n null\n )\n this.editor.update(this.dragCtx.action, true)\n }\n } else {\n const items = this.editor.findItem(event, ['rxnArrows'])\n this.editor.hover(items, null, event)\n }\n }\n\n mouseup() {\n if (!this.dragCtx) {\n return true\n }\n\n const rnd = this.editor.render\n\n const p0 = this.dragCtx.p0\n const p1 = getDefaultLengthPos(p0, this.dragCtx.previous)\n\n if (this.dragCtx.action) {\n if (this.dragCtx.isNew) {\n this.editor.update(\n fromArrowDeletion(rnd.ctab, this.dragCtx.itemId),\n true\n )\n this.dragCtx.action = fromArrowAddition(rnd.ctab, [p0, p1], this.mode)\n }\n\n this.editor.update(this.dragCtx.action)\n }\n delete this.dragCtx\n return true\n }\n\n click(event) {\n const rnd = this.editor.render\n const ci = this.editor.findItem(event, ['rxnArrows'])\n const p0 = rnd.page2obj(event)\n\n if (!ci) {\n const pos = [p0, getDefaultLengthPos(p0, null)]\n this.editor.update(fromArrowAddition(rnd.ctab, pos, this.mode))\n }\n }\n}\n\nfunction getArrowParams(x1, y1, x2, y2) {\n const length = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)\n const angle = calcAngle(x2, y2, x1, y1)\n return { length, angle }\n}\n\nfunction getDefaultLengthPos(pos1, pos2) {\n const minLength = 1.5\n const defaultLength = 2\n if (!pos2) {\n return new Vec2(pos1.x + defaultLength, pos1.y)\n }\n const arrowParams = getArrowParams(pos1.x, pos1.y, pos2.x, pos2.y)\n if (arrowParams.length <= minLength) {\n const newPos = new Vec2()\n newPos.x =\n pos1.x + defaultLength * Math.cos((Math.PI * arrowParams.angle) / 180)\n newPos.y =\n pos1.y + defaultLength * Math.sin((Math.PI * arrowParams.angle) / 180)\n return newPos\n }\n return pos2\n}\n\nfunction calcAngle(x1, y1, x2, y2) {\n const x = x1 - x2\n const y = y1 - y2\n if (!x && !y) {\n return 0\n }\n return (180 + (Math.atan2(-y, -x) * 180) / Math.PI + 360) % 360\n}\n\nexport default ReactionArrowTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Action, Scale, fromAtomsAttrs } from 'ketcher-core'\nimport Editor from '../Editor'\n\nclass ReactionMapTool {\n editor: Editor\n rcs: any\n dragCtx: any\n line: any\n\n constructor(editor) {\n this.editor = editor\n this.editor.selection(null)\n }\n\n mousedown(event) {\n const rnd = this.editor.render\n this.rcs = rnd.ctab.molecule.getComponents()\n\n const closestItem = this.editor.findItem(event, ['atoms'])\n\n if (closestItem?.map === 'atoms') {\n this.editor.hover(null)\n this.dragCtx = {\n item: closestItem,\n xy0: rnd.page2obj(event)\n }\n }\n }\n\n mousemove(event) {\n const editor = this.editor\n const rnd = editor.render\n\n if ('dragCtx' in this) {\n const closestItem = this.editor.findItem(\n event,\n ['atoms'],\n this.dragCtx.item\n )\n const atoms = rnd.ctab.molecule.atoms\n\n if (closestItem?.map === 'atoms') {\n editor.hover(closestItem)\n this.updateLine(\n atoms.get(this.dragCtx.item.id)?.pp,\n atoms.get(closestItem.id)?.pp\n )\n } else {\n editor.hover(null)\n this.updateLine(\n atoms.get(this.dragCtx.item.id)?.pp,\n rnd.page2obj(event)\n )\n }\n } else {\n editor.hover(editor.findItem(event, ['atoms']), null, event)\n }\n }\n\n updateLine(p1, p2) {\n if (this.line) {\n this.line.remove()\n this.line = null\n }\n\n if (p1 && p2) {\n const rnd = this.editor.render\n this.line = rnd.selectionLine(\n Scale.obj2scaled(p1, rnd.options).add(rnd.options.offset),\n Scale.obj2scaled(p2, rnd.options).add(rnd.options.offset)\n )\n }\n }\n\n mouseup(event) {\n if ('dragCtx' in this) {\n const rnd = this.editor.render\n const closestItem = this.editor.findItem(event, ['atoms'])\n\n if (closestItem?.map === 'atoms') {\n const action = new Action()\n const atoms = rnd.ctab.molecule.atoms\n const atom1 = atoms.get(this.dragCtx.item.id)\n const atom2 = atoms.get(closestItem.id)\n const aam1 = atom1?.aam\n const aam2 = atom2?.aam\n\n if (!aam1 || aam1 !== aam2) {\n if ((aam1 && aam1 !== aam2) || (!aam1 && aam2)) {\n // eslint-disable-line no-mixed-operators\n atoms.forEach((atom, aid) => {\n if (\n aid !== this.dragCtx.item.id &&\n ((aam1 && atom.aam === aam1) || (aam2 && atom.aam === aam2))\n )\n action.mergeWith(\n fromAtomsAttrs(rnd.ctab, aid, { aam: 0 }, null)\n )\n })\n }\n\n if (aam1) {\n action.mergeWith(\n fromAtomsAttrs(rnd.ctab, closestItem.id, { aam: aam1 }, null)\n )\n } else {\n let aam = 0\n atoms.forEach((atom) => {\n aam = Math.max(aam, atom.aam || 0)\n })\n action.mergeWith(\n fromAtomsAttrs(\n rnd.ctab,\n this.dragCtx.item.id,\n { aam: aam + 1 },\n null\n )\n )\n action.mergeWith(\n fromAtomsAttrs(rnd.ctab, closestItem.id, { aam: aam + 1 }, null)\n )\n }\n this.editor.update(action)\n }\n }\n this.updateLine(null, null)\n delete this.dragCtx\n }\n this.editor.hover(null)\n }\n}\n\nexport default ReactionMapTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { fromMultipleMove, fromPlusAddition } from 'ketcher-core'\nimport Editor from '../Editor'\n\nclass ReactionPlusTool {\n editor: Editor\n dragCtx: any\n\n constructor(editor) {\n this.editor = editor\n this.editor.selection(null)\n }\n\n mousedown(event) {\n const rnd = this.editor.render\n const ci = this.editor.findItem(event, ['rxnPluses'])\n\n if (ci && ci.map === 'rxnPluses') {\n this.editor.hover(null)\n this.editor.selection({ rxnPluses: [ci.id] })\n this.dragCtx = { xy0: rnd.page2obj(event) }\n }\n }\n\n mousemove(event) {\n const editor = this.editor\n const rnd = editor.render\n\n if ('dragCtx' in this) {\n if (this.dragCtx.action) {\n this.dragCtx.action.perform(rnd.ctab)\n }\n\n this.dragCtx.action = fromMultipleMove(\n rnd.ctab,\n this.editor.selection() || {},\n rnd.page2obj(event).sub(this.dragCtx.xy0)\n )\n editor.update(this.dragCtx.action, true)\n } else {\n editor.hover(editor.findItem(event, ['rxnPluses']), null, event)\n }\n }\n\n mouseup() {\n if (!this.dragCtx) {\n return true\n }\n\n if (this.dragCtx.action) {\n this.editor.update(this.dragCtx.action) // TODO investigate, subsequent undo/redo fails\n }\n\n delete this.dragCtx\n return true\n }\n\n click(event) {\n const rnd = this.editor.render\n const ci = this.editor.findItem(event, ['rxnPluses'])\n\n if (!ci) {\n this.editor.update(fromPlusAddition(rnd.ctab, rnd.page2obj(event)))\n }\n }\n}\n\nexport default ReactionPlusTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Action, fromAtomsAttrs } from 'ketcher-core'\nimport Editor from '../Editor'\n\nclass ReactionUnmapTool {\n editor: Editor\n\n constructor(editor) {\n this.editor = editor\n this.editor.selection(null)\n }\n\n mousemove(event) {\n const ci = this.editor.findItem(event, ['atoms'])\n\n if (ci && ci.map === 'atoms') {\n this.editor.hover(\n this.editor.render.ctab.molecule.atoms.get(ci.id)?.aam ? ci : null,\n null,\n event\n )\n } else {\n this.editor.hover(null)\n }\n }\n\n mouseup(event) {\n const ci = this.editor.findItem(event, ['atoms'])\n const atoms = this.editor.render.ctab.molecule.atoms\n\n if (ci && ci.map === 'atoms' && atoms.get(ci.id)?.aam) {\n const action = new Action()\n const aam = atoms.get(ci.id)?.aam\n atoms.forEach((atom, aid) => {\n if (atom.aam === aam) {\n action.mergeWith(\n fromAtomsAttrs(this.editor.render.ctab, aid, { aam: 0 }, null)\n )\n }\n })\n this.editor.update(action)\n }\n this.editor.hover(null)\n }\n}\n\nexport default ReactionUnmapTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n Vec2,\n fromBondAlign,\n fromFlip,\n fromItemsFuse,\n fromRotate,\n getHoverToFuse,\n getItemsToFuse,\n HalfBond\n} from 'ketcher-core'\n\nimport utils from '../shared/utils'\nimport Editor from '../Editor'\n\nclass RotateTool {\n editor: Editor\n dragCtx: any\n isNotActiveTool: boolean | undefined\n\n constructor(editor, dir) {\n this.editor = editor\n\n if (dir) {\n const restruct = editor.render.ctab\n const selection = editor.selection()\n const singleBond =\n selection &&\n selection.bonds &&\n Object.keys(selection).length === 1 &&\n selection.bonds.length === 1\n const action = !singleBond\n ? fromFlip(restruct, selection, dir, null)\n : fromBondAlign(restruct, selection.bonds[0], dir)\n editor.update(action)\n this.isNotActiveTool = true\n return\n }\n\n if (!editor.selection() || !editor.selection()?.atoms) {\n // otherwise, clear selection\n this.editor.selection(null)\n }\n }\n\n mousedown(event) {\n let xy0 = new Vec2()\n const selection = this.editor.selection()\n const rnd = this.editor.render\n const struct = rnd.ctab.molecule\n\n if (selection && selection.atoms) {\n let rotId: number | null = null\n let rotAll = false\n\n selection.atoms.forEach((aid) => {\n const atom = struct.atoms.get(aid)\n\n xy0.add_(atom?.pp as Vec2) // eslint-disable-line no-underscore-dangle\n\n if (rotAll) return\n\n atom?.neighbors.find((nei) => {\n const hb = struct.halfBonds.get(nei)\n\n if (hb) {\n if (selection.atoms?.indexOf(hb.end as number) === -1) {\n if (hb.loop >= 0) {\n const neiAtom = struct.atoms.get(aid)\n if (\n !neiAtom?.neighbors.find((neiNei) => {\n const neiHb = struct.halfBonds.get(neiNei) as HalfBond\n return (\n neiHb?.loop >= 0 &&\n selection.atoms?.indexOf(neiHb?.end) !== -1\n )\n })\n ) {\n rotAll = true\n return true\n }\n }\n if (rotId == null) {\n rotId = aid\n } else if (rotId !== aid) {\n rotAll = true\n return true\n }\n }\n }\n return false\n })\n })\n\n if (!rotAll && rotId !== null) {\n xy0 = struct.atoms.get(rotId)?.pp as Vec2\n } else {\n xy0 = xy0.scaled(1 / selection.atoms.length)\n }\n } else if (struct.atoms?.size) {\n struct.atoms.forEach((atom) => {\n xy0.add_(atom.pp)\n }) // eslint-disable-line no-underscore-dangle, max-len\n // poor man struct center (without sdata, etc)\n xy0 = xy0.scaled(1 / struct.atoms.size)\n } else {\n xy0 = rnd.page2obj(event)\n }\n this.dragCtx = {\n xy0,\n angle1: utils.calcAngle(xy0, rnd.page2obj(event))\n }\n return true\n }\n\n mousemove(event) {\n if (!this.dragCtx) {\n this.editor.hover(null, null, event)\n return true\n }\n\n const rnd = this.editor.render\n const dragCtx = this.dragCtx\n\n const pos = rnd.page2obj(event)\n let angle = utils.calcAngle(dragCtx.xy0, pos) - dragCtx.angle1\n\n if (!event.ctrlKey) {\n angle = utils.fracAngle(angle, null)\n }\n\n const degrees = utils.degrees(angle)\n\n if ('angle' in dragCtx && dragCtx.angle === degrees) {\n return true\n }\n\n if ('action' in dragCtx) {\n dragCtx.action.perform(rnd.ctab)\n }\n\n dragCtx.angle = degrees\n dragCtx.action = fromRotate(\n rnd.ctab,\n this.editor.selection(),\n dragCtx.xy0,\n angle\n )\n\n this.editor.event.message.dispatch({ info: degrees + 'º' })\n\n const expSel = this.editor.explicitSelected()\n dragCtx.mergeItems = getItemsToFuse(this.editor, expSel)\n this.editor.hover(getHoverToFuse(dragCtx.mergeItems), null, event)\n\n this.editor.update(dragCtx.action, true)\n return true\n }\n\n mouseup() {\n if (!this.dragCtx) {\n return true\n }\n\n const dragCtx = this.dragCtx\n const restruct = this.editor.render.ctab\n\n const action = dragCtx.action\n ? fromItemsFuse(restruct, dragCtx.mergeItems).mergeWith(dragCtx.action)\n : fromItemsFuse(restruct, dragCtx.mergeItems)\n delete this.dragCtx\n\n this.editor.update(action)\n this.editor.hover(null)\n\n if (dragCtx.mergeItems) {\n this.editor.selection(null)\n }\n\n this.editor.event.message.dispatch({\n info: false\n })\n return true\n }\n\n cancel() {\n this.mouseup()\n }\n\n mouseleave() {\n this.mouseup()\n }\n}\n\nexport default RotateTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n fromMultipleMove,\n fromSimpleObjectAddition,\n fromSimpleObjectDeletion,\n fromSimpleObjectResizing\n} from 'ketcher-core'\nimport Editor from '../Editor'\n\nclass SimpleObjectTool {\n mode: any\n editor: Editor\n dragCtx: any\n\n constructor(editor, mode) {\n this.mode = mode\n this.editor = editor\n this.editor.selection(null)\n }\n\n mousedown(event) {\n const rnd = this.editor.render\n const p0 = rnd.page2obj(event)\n this.dragCtx = { p0 }\n\n const ci = this.editor.findItem(event, ['simpleObjects'])\n\n if (ci && ci.map === 'simpleObjects') {\n this.editor.hover(null)\n this.editor.selection({ simpleObjects: [ci.id] })\n this.dragCtx.ci = ci\n } else {\n this.dragCtx.isNew = true\n this.editor.selection(null)\n }\n }\n\n mousemove(event) {\n const rnd = this.editor.render\n\n if (this.dragCtx) {\n const current = rnd.page2obj(event)\n const diff = current.sub(this.dragCtx.p0)\n this.dragCtx.previous = current\n\n if (this.dragCtx.ci) {\n if (this.dragCtx.action) {\n this.dragCtx.action.perform(rnd.ctab)\n }\n\n if (!this.dragCtx.ci.ref) {\n this.dragCtx.action = fromMultipleMove(\n rnd.ctab,\n this.editor.selection() || {},\n diff\n )\n } else {\n this.dragCtx.action = fromSimpleObjectResizing(\n rnd.ctab,\n this.dragCtx.ci.id,\n diff,\n current,\n this.dragCtx.ci.ref,\n event.shiftKey\n )\n }\n this.editor.update(this.dragCtx.action, true)\n } else {\n if (!this.dragCtx.action) {\n const action = fromSimpleObjectAddition(\n rnd.ctab,\n [this.dragCtx.p0, this.dragCtx.p0],\n this.mode,\n false\n )\n // TODO: need to rework actions/operations logic\n const addOperation = action.operations[0]\n this.dragCtx.itemId = addOperation.data.id\n this.dragCtx.action = action\n this.editor.update(this.dragCtx.action, true)\n } else {\n this.dragCtx.action.perform(rnd.ctab)\n }\n\n this.dragCtx.action = fromSimpleObjectResizing(\n rnd.ctab,\n this.dragCtx.itemId,\n diff,\n current,\n null,\n event.shiftKey\n )\n this.editor.update(this.dragCtx.action, true)\n }\n } else {\n const items = this.editor.findItem(event, ['simpleObjects'])\n this.editor.hover(items, null, event)\n }\n }\n\n mouseup(event) {\n if (!this.dragCtx) {\n return true\n }\n\n if (this.dragCtx.action) {\n if (this.dragCtx.isNew) {\n const rnd = this.editor.render\n this.editor.update(\n fromSimpleObjectDeletion(rnd.ctab, this.dragCtx.itemId),\n true\n )\n this.dragCtx.action = fromSimpleObjectAddition(\n rnd.ctab,\n [this.dragCtx.p0, this.dragCtx.previous],\n this.mode,\n event.shiftKey\n )\n }\n this.editor.update(this.dragCtx.action)\n }\n\n delete this.dragCtx\n return true\n }\n}\n\nexport default SimpleObjectTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n Vec2,\n fromItemsFuse,\n fromTemplateOnAtom,\n fromTemplateOnBondAction,\n fromTemplateOnCanvas,\n getHoverToFuse,\n getItemsToFuse,\n FunctionalGroup,\n SGroup,\n ReStruct,\n Struct,\n fromFragmentDeletion\n} from 'ketcher-core'\n\nimport utils from '../shared/utils'\nimport Editor from '../Editor'\n\nclass TemplateTool {\n editor: Editor\n mode: any\n template: any\n findItems: Array<string>\n dragCtx: any\n\n constructor(editor, tmpl) {\n this.editor = editor\n this.mode = getTemplateMode(tmpl)\n this.editor.selection(null)\n\n this.template = {\n aid: parseInt(tmpl.aid) || 0,\n bid: parseInt(tmpl.bid) || 0\n }\n\n const frag = tmpl.struct\n frag.rescale()\n\n const xy0 = new Vec2()\n frag.atoms.forEach((atom) => {\n xy0.add_(atom.pp) // eslint-disable-line no-underscore-dangle\n })\n\n this.template.molecule = frag // preloaded struct\n this.findItems = []\n this.template.xy0 = xy0.scaled(1 / (frag.atoms.size || 1)) // template center\n this.findItems.push('functionalGroups')\n\n const atom = frag.atoms.get(this.template.aid)\n if (atom) {\n this.template.angle0 = utils.calcAngle(atom.pp, this.template.xy0) // center tilt\n this.findItems.push('atoms')\n }\n\n const bond = frag.bonds.get(this.template.bid)\n if (bond && this.mode !== 'fg') {\n // template location sign against attachment bond\n this.template.sign = getSign(frag, bond, this.template.xy0)\n this.findItems.push('bonds')\n }\n\n const sgroup = frag.sgroups.size\n if (sgroup) {\n this.findItems.push('sgroups')\n }\n }\n\n mousedown(event) {\n const closestItem = this.editor.findItem(event, [\n 'atoms',\n 'bonds',\n 'sgroups',\n 'functionalGroups'\n ])\n const struct = this.editor.struct()\n const atomResult: Array<number> = []\n const bondResult: Array<number> = []\n const sGroupResult: Array<number> = []\n const result: Array<number> = []\n const ctab = this.editor.render.ctab\n const molecule = ctab.molecule\n const functionalGroups = molecule.functionalGroups\n\n if (\n closestItem &&\n functionalGroups.size &&\n closestItem.map === 'functionalGroups' &&\n FunctionalGroup.isContractedFunctionalGroup(\n closestItem.id,\n functionalGroups\n )\n ) {\n sGroupResult.push(closestItem.id)\n }\n\n if (closestItem && functionalGroups.size && closestItem.map === 'atoms') {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n closestItem.id\n )\n\n if (atomId !== null) {\n atomResult.push(atomId)\n }\n }\n\n if (closestItem && functionalGroups.size && closestItem.map === 'bonds') {\n const bondId = FunctionalGroup.bondsInFunctionalGroup(\n molecule,\n functionalGroups,\n closestItem.id\n )\n\n if (bondId !== null) {\n bondResult.push(bondId)\n }\n }\n\n if (sGroupResult.length > 0) {\n for (const id of sGroupResult) {\n if (!result.includes(id)) result.push(id)\n }\n }\n\n if (atomResult.length > 0) {\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n }\n\n if (bondResult.length > 0) {\n for (const id of bondResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByBond(\n molecule,\n struct.functionalGroups,\n id\n )\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n }\n if (\n result.length &&\n (this.mode !== 'fg' ||\n SGroup.isSaltOrSolvent(this.template.molecule.name))\n ) {\n this.editor.event.removeFG.dispatch({ fgIds: result })\n return\n }\n // eslint-disable-line max-statements\n const editor = this.editor\n this.editor.hover(null)\n\n this.dragCtx = {\n xy0: editor.render.page2obj(event),\n item: editor.findItem(event, this.findItems)\n }\n\n const dragCtx = this.dragCtx\n const ci = dragCtx.item\n\n if (!ci) {\n // ci.type == 'Canvas'\n delete dragCtx.item\n return true\n }\n\n if (ci.map === 'bonds' && this.mode !== 'fg') {\n // calculate fragment center\n const molecule = ctab.molecule\n const xy0 = new Vec2()\n const bond = molecule.bonds.get(ci.id)\n const frid = molecule.atoms.get(bond?.begin as number)?.fragment\n const frIds = molecule.getFragmentIds(frid as number)\n let count = 0\n\n let loop = molecule.halfBonds.get(bond?.hb1 as number)?.loop\n\n if (loop && loop < 0) {\n loop = molecule.halfBonds.get(bond?.hb2 as number)?.loop\n }\n\n if (loop && loop >= 0) {\n const loopHbs = molecule.loops.get(loop)?.hbs\n loopHbs?.forEach((hb) => {\n const halfBondBegin = molecule.halfBonds.get(hb)?.begin\n\n if (halfBondBegin) {\n const hbbAtom = molecule.atoms.get(halfBondBegin)\n\n if (hbbAtom) {\n xy0.add_(hbbAtom.pp) // eslint-disable-line no-underscore-dangle, max-len\n count++\n }\n }\n })\n } else {\n frIds.forEach((id) => {\n const atomById = molecule.atoms.get(id)\n\n if (atomById) {\n xy0.add_(atomById.pp) // eslint-disable-line no-underscore-dangle\n count++\n }\n })\n }\n\n dragCtx.v0 = xy0.scaled(1 / count)\n\n const sign = getSign(molecule, bond, dragCtx.v0)\n\n // calculate default template flip\n dragCtx.sign1 = sign || 1\n dragCtx.sign2 = this.template.sign\n }\n\n return true\n }\n\n mousemove(event) {\n const restruct = this.editor.render.ctab\n\n if (!this.dragCtx) {\n this.editor.hover(\n this.editor.findItem(event, this.findItems),\n null,\n event\n )\n return true\n }\n\n const dragCtx = this.dragCtx\n const ci = dragCtx.item\n let pos0: Vec2 | null | undefined = null\n const pos1 = this.editor.render.page2obj(event)\n const struct = restruct.molecule\n\n /* moving when attached to bond */\n if (ci && ci.map === 'bonds' && this.mode !== 'fg') {\n const bond = struct.bonds.get(ci.id)\n let sign = getSign(struct, bond, pos1)\n\n if (dragCtx.sign1 * this.template.sign > 0) {\n sign = -sign\n }\n\n if (sign !== dragCtx.sign2 || !dragCtx.action) {\n if (dragCtx.action) {\n dragCtx.action.perform(restruct)\n } // undo previous action\n\n dragCtx.sign2 = sign\n const [action, pasteItems] = fromTemplateOnBondAction(\n restruct,\n this.template,\n ci.id,\n this.editor.event,\n dragCtx.sign1 * dragCtx.sign2 > 0,\n false\n ) as Array<any>\n\n dragCtx.action = action\n this.editor.update(dragCtx.action, true)\n\n dragCtx.mergeItems = getItemsToFuse(this.editor, pasteItems)\n this.editor.hover(getHoverToFuse(dragCtx.mergeItems))\n }\n return true\n }\n /* end */\n\n let extraBond: boolean | null = null\n // calc initial pos and is extra bond needed\n if (!ci) {\n // ci.type == 'Canvas'\n pos0 = dragCtx.xy0\n } else if (ci.map === 'atoms') {\n pos0 = struct.atoms.get(ci.id)?.pp\n\n if (pos0) {\n extraBond = this.mode === 'fg' ? true : Vec2.dist(pos0, pos1) > 1\n }\n }\n\n if (!pos0) {\n return true\n }\n\n // calc angle\n let angle = utils.calcAngle(pos0, pos1)\n\n if (!event.ctrlKey) {\n angle = utils.fracAngle(angle, null)\n }\n\n const degrees = utils.degrees(angle)\n this.editor.event.message.dispatch({ info: degrees + 'º' })\n\n // check if anything changed since last time\n if (\n // eslint-disable-next-line no-prototype-builtins\n dragCtx.hasOwnProperty('angle') &&\n dragCtx.angle === degrees &&\n // eslint-disable-next-line no-prototype-builtins\n (!dragCtx.hasOwnProperty('extra_bond') ||\n dragCtx.extra_bond === extraBond)\n ) {\n return true\n }\n\n // undo previous action\n if (dragCtx.action) {\n dragCtx.action.perform(restruct)\n }\n\n // create new action\n dragCtx.angle = degrees\n let action = null\n let pasteItems\n\n if (ci?.map === 'atoms') {\n ;[action, pasteItems] = fromTemplateOnAtom(\n restruct,\n this.template,\n ci.id,\n angle,\n extraBond\n )\n dragCtx.extra_bond = extraBond\n }\n dragCtx.action = action\n\n this.editor.update(dragCtx.action, true)\n\n if (this.mode !== 'fg') {\n dragCtx.mergeItems = getItemsToFuse(this.editor, pasteItems)\n this.editor.hover(getHoverToFuse(dragCtx.mergeItems))\n }\n\n return true\n }\n\n mouseup(event) {\n const dragCtx = this.dragCtx\n\n if (!dragCtx) {\n return true\n }\n\n delete this.dragCtx\n\n const restruct = this.editor.render.ctab\n const sgroups = restruct.sgroups\n const struct = restruct.molecule\n const ci = dragCtx.item\n const functionalGroups = struct.functionalGroups\n\n /* after moving around bond */\n if (dragCtx.action && ci && ci.map === 'bonds' && this.mode !== 'fg') {\n dragCtx.action.perform(restruct) // revert drag action\n\n const promise = fromTemplateOnBondAction(\n restruct,\n this.template,\n ci.id,\n this.editor.event,\n dragCtx.sign1 * dragCtx.sign2 > 0,\n true\n ) as Promise<any>\n\n promise.then(([action, pasteItems]) => {\n const mergeItems = getItemsToFuse(this.editor, pasteItems)\n action = fromItemsFuse(restruct, mergeItems).mergeWith(action)\n this.editor.update(action)\n })\n return true\n }\n /* end */\n\n let action\n let pasteItems = null\n let isFunctionalGroupReplace = false\n\n if (SGroup.isSaltOrSolvent(this.template.molecule.name)) {\n addSaltsAndSolventsOnCanvasWithoutMerge(\n restruct,\n this.template,\n dragCtx,\n this.editor\n )\n return true\n } else if (\n ci?.map === 'functionalGroups' &&\n FunctionalGroup.isContractedFunctionalGroup(ci.id, functionalGroups) &&\n this.mode === 'fg'\n ) {\n const sGroup = sgroups.get(ci.id)\n this.editor.update(\n fromFragmentDeletion(this.editor.render.ctab, {\n atoms: [...SGroup.getAtoms(struct, sGroup?.item)],\n bonds: [...SGroup.getBonds(struct, sGroup?.item)]\n })\n )\n isFunctionalGroupReplace = true\n }\n\n if (!dragCtx.action) {\n if (!ci || isFunctionalGroupReplace) {\n // ci.type == 'Canvas'\n ;[action, pasteItems] = fromTemplateOnCanvas(\n restruct,\n this.template,\n dragCtx.xy0,\n 0\n )\n dragCtx.action = action\n } else if (ci.map === 'atoms') {\n const degree = restruct.atoms.get(ci.id)?.a.neighbors.length\n let angle\n let extraBond\n\n if (degree && degree > 1) {\n // common case\n angle = null\n extraBond = true\n } else if (degree === 1) {\n // on chain end\n const atom = struct.atoms.get(ci.id)\n const neiId = atom && struct.halfBonds.get(atom.neighbors[0])?.end\n const nei: any = (neiId || neiId === 0) && struct.atoms.get(neiId)\n\n angle = event.ctrlKey\n ? utils.calcAngle(nei?.pp, atom?.pp)\n : utils.fracAngle(utils.calcAngle(nei.pp, atom?.pp), null)\n extraBond = false\n } else {\n // on single atom\n angle = 0\n extraBond = false\n }\n\n ;[action, pasteItems] = fromTemplateOnAtom(\n restruct,\n this.template,\n ci.id,\n angle,\n extraBond\n )\n dragCtx.action = action\n } else if (ci.map === 'bonds' && this.mode !== 'fg') {\n const promise = fromTemplateOnBondAction(\n restruct,\n this.template,\n ci.id,\n this.editor.event,\n dragCtx.sign1 * dragCtx.sign2 > 0,\n true\n ) as Promise<any>\n\n promise.then(([action, pasteItems]) => {\n if (this.mode !== 'fg') {\n const mergeItems = getItemsToFuse(this.editor, pasteItems)\n action = fromItemsFuse(restruct, mergeItems).mergeWith(action)\n this.editor.update(action)\n }\n })\n\n return true\n }\n }\n\n this.editor.selection(null)\n\n if (!dragCtx.mergeItems && pasteItems && this.mode !== 'fg') {\n dragCtx.mergeItems = getItemsToFuse(this.editor, pasteItems)\n }\n dragCtx.action = dragCtx.action\n ? fromItemsFuse(restruct, dragCtx.mergeItems).mergeWith(dragCtx.action)\n : fromItemsFuse(restruct, dragCtx.mergeItems)\n\n const completeAction = dragCtx.action\n if (completeAction && !completeAction.isDummy()) {\n this.editor.update(completeAction)\n }\n this.editor.event.showInfo.dispatch(null)\n this.editor.event.message.dispatch({\n info: false\n })\n this.editor.hover(this.editor.findItem(event, this.findItems), null, event)\n\n return true\n }\n\n cancel(e) {\n this.mouseup(e)\n }\n\n mouseleave(e) {\n this.mouseup(e)\n }\n}\n\nfunction addSaltsAndSolventsOnCanvasWithoutMerge(\n restruct: ReStruct,\n template: Struct,\n dragCtx,\n editor: Editor\n) {\n const [action] = fromTemplateOnCanvas(restruct, template, dragCtx.xy0, 0)\n editor.update(action)\n editor.selection(null)\n editor.hover(null)\n editor.event.message.dispatch({\n info: false\n })\n}\n\nfunction getTemplateMode(tmpl) {\n if (tmpl.mode) return tmpl.mode\n if (['Functional Groups', 'Salts and Solvents'].includes(tmpl.props?.group))\n return 'fg'\n return null\n}\n\nfunction getSign(molecule, bond, v) {\n const begin = molecule.atoms.get(bond.begin).pp\n const end = molecule.atoms.get(bond.end).pp\n\n const sign = Vec2.cross(Vec2.diff(begin, end), Vec2.diff(v, end))\n\n if (sign > 0) {\n return 1\n }\n\n if (sign < 0) {\n return -1\n }\n\n return 0\n}\n\nexport default TemplateTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n Action,\n Text,\n Vec2,\n fromMultipleMove,\n fromTextCreation,\n fromTextDeletion,\n fromTextUpdating\n} from 'ketcher-core'\n\ninterface Result {\n content: string\n}\n\nclass TextTool {\n editor: any\n dragCtx: any\n\n constructor(editor) {\n this.editor = editor\n this.editor.selection(null)\n }\n\n mousedown(event) {\n const render = this.editor.render\n const closestItem = this.editor.findItem(event, ['texts'])\n\n this.editor.selection(null)\n\n if (closestItem && closestItem.map === 'texts') {\n this.editor.hover(null)\n this.editor.selection({ texts: [closestItem.id] })\n this.dragCtx = {\n xy0: render.page2obj(event),\n action: new Action()\n }\n }\n }\n\n mousemove(event) {\n const render = this.editor.render\n\n if (this.dragCtx) {\n if (this.dragCtx.action) {\n this.dragCtx.action.perform(render.ctab)\n }\n\n this.dragCtx.action = fromMultipleMove(\n render.ctab,\n this.editor.selection() || {},\n render.page2obj(event).sub(this.dragCtx.xy0)\n )\n this.editor.update(this.dragCtx.action, true)\n } else {\n this.editor.hover(this.editor.findItem(event, ['texts']), null, event)\n }\n }\n\n mouseup() {\n if (this.dragCtx) {\n this.editor.update(this.dragCtx.action)\n delete this.dragCtx\n }\n return true\n }\n\n click(event) {\n const render = this.editor.render\n const closestItem = this.editor.findItem(event, ['texts'])\n this.editor.hover(null)\n\n if (!closestItem) {\n propsDialog(this.editor, null, render.page2obj(event), [])\n }\n\n return true\n }\n\n dblclick(event) {\n const closestItem = this.editor.findItem(event, ['texts'])\n this.editor.hover(null)\n\n if (closestItem.map === 'texts') {\n propsDialog(\n this.editor,\n closestItem.id,\n closestItem.position,\n closestItem.pos\n )\n }\n\n return true\n }\n}\n\nfunction propsDialog(\n editor: any,\n id: number | null,\n position: Vec2,\n pos: Array<Vec2>\n) {\n const struct = editor.render.ctab.molecule\n const text: Text | null = id || id === 0 ? struct.texts.get(id) : null\n const origilContent = text ? text.content : ''\n\n const res = editor.event.elementEdit.dispatch({\n content: origilContent,\n id,\n position,\n pos,\n type: 'text'\n })\n\n res\n .then(({ content }: Result) => {\n if (!id && id !== 0 && content) {\n editor.update(\n fromTextCreation(editor.render.ctab, content, position, pos)\n )\n } else if (!content) {\n editor.update(fromTextDeletion(editor.render.ctab, id!))\n } else if (content !== origilContent) {\n editor.update(fromTextUpdating(editor.render.ctab, id!, content))\n }\n })\n .catch(() => null)\n}\n\nexport default TextTool\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport APointTool from './apoint'\nimport AtomTool from './atom'\nimport AttachTool from './attach'\nimport BondTool from './bond'\nimport ChainTool from './chain'\nimport ChargeTool from './charge'\nimport EnhancedStereoTool from './enhanced-stereo'\nimport EraserTool from './eraser'\nimport HandTool from './hand'\nimport PasteTool from './paste'\nimport RGroupAtomTool from './rgroupatom'\nimport RGroupFragmentTool from './rgroupfragment'\nimport ReactionArrowTool from './reactionarrow'\nimport ReactionMapTool from './reactionmap'\nimport ReactionPlusTool from './reactionplus'\nimport ReactionUnmapTool from './reactionunmap'\nimport RotateTool from './rotate'\nimport SGroupTool from './sgroup'\nimport SelectTool from './select'\nimport SimpleObjectTool from './simpleobject'\nimport TemplateTool from './template'\nimport TextTool from './text'\n\nconst tools = {\n hand: HandTool,\n rgroupatom: RGroupAtomTool,\n select: SelectTool,\n sgroup: SGroupTool,\n eraser: EraserTool,\n atom: AtomTool,\n bond: BondTool,\n chain: ChainTool,\n template: TemplateTool,\n charge: ChargeTool,\n rgroupfragment: RGroupFragmentTool,\n apoint: APointTool,\n attach: AttachTool,\n reactionarrow: ReactionArrowTool,\n reactionplus: ReactionPlusTool,\n reactionmap: ReactionMapTool,\n reactionunmap: ReactionUnmapTool,\n paste: PasteTool,\n rotate: RotateTool,\n enhancedStereo: EnhancedStereoTool,\n simpleobject: SimpleObjectTool,\n text: TextTool\n}\n\nexport default tools\n","import {\n fromAtomAddition,\n fromAtomsAttrs,\n fromBondAddition,\n fromOneAtomDeletion,\n FunctionalGroup,\n SGroup,\n Atom\n} from 'ketcher-core'\nimport Tools from '../../editor/tool'\nimport { onAction } from './shared'\n\ntype hotkeyOverAtomHandler = {\n hoveredItemId: number\n newAction: {\n tool: string\n opts?: any\n }\n render: any\n editor: any\n}\n\nexport async function handleHotkeyOverAtom({\n hoveredItemId,\n newAction,\n render,\n editor,\n dispatch\n}) {\n const toolsMapping = {\n atom: () => handleAtomTool({ hoveredItemId, newAction, render, editor }),\n bond: () => handleBondTool({ hoveredItemId, newAction, render, editor }),\n eraser: () =>\n handleEraserTool({ hoveredItemId, newAction, render, editor }),\n charge: () =>\n handleChargeTool({ hoveredItemId, newAction, render, editor }),\n rgroupatom: () =>\n handleRGroupAtomTool({ hoveredItemId, newAction, render, editor }),\n sgroup: () => {\n Tools.sgroup.sgroupDialog(editor, hoveredItemId, null)\n },\n hand: () =>\n dispatch(\n onAction({\n tool: 'hand'\n })\n )\n }\n const toolHandler = toolsMapping[newAction.tool]\n const isChangeStructureTool = newAction.tool !== 'hand'\n if (toolHandler) {\n const isFunctionalGroupChange = await isChangingFunctionalGroup({\n hoveredItemId,\n render,\n editor,\n newAction\n })\n if (!isFunctionalGroupChange && isChangeStructureTool) {\n return\n }\n toolHandler()\n }\n}\n\nfunction handleAtomTool({\n hoveredItemId,\n newAction,\n render,\n editor\n}: hotkeyOverAtomHandler) {\n const atomProps = { ...newAction.opts }\n const updatedAtoms = fromAtomsAttrs(\n render.ctab,\n hoveredItemId,\n atomProps,\n true\n )\n editor.update(updatedAtoms)\n}\n\nfunction handleBondTool({\n hoveredItemId,\n newAction,\n render,\n editor\n}: hotkeyOverAtomHandler) {\n const newBond = fromBondAddition(\n render.ctab,\n newAction.opts,\n hoveredItemId,\n undefined\n )[0]\n editor.update(newBond)\n}\n\nfunction handleEraserTool({\n hoveredItemId,\n render,\n editor\n}: hotkeyOverAtomHandler) {\n editor.update(fromOneAtomDeletion(render.ctab, hoveredItemId))\n}\n\nfunction handleChargeTool({\n hoveredItemId,\n newAction,\n render,\n editor\n}: hotkeyOverAtomHandler) {\n const existingAtom = render.ctab.atoms.get(hoveredItemId)?.a\n if (existingAtom) {\n const updatedAtom = fromAtomsAttrs(\n render.ctab,\n hoveredItemId,\n {\n charge: existingAtom.charge + newAction.opts\n },\n null\n )\n editor.update(updatedAtom)\n }\n}\n\nasync function handleRGroupAtomTool({\n hoveredItemId,\n render,\n editor\n}: hotkeyOverAtomHandler) {\n const struct = render.ctab.molecule\n const atom =\n hoveredItemId || hoveredItemId === 0\n ? struct.atoms.get(hoveredItemId)\n : null\n const rglabel = atom ? atom.rglabel : 0\n const label = atom ? atom.label : 'R#'\n\n try {\n let element = await editor.event.elementEdit.dispatch({\n label: 'R#',\n rglabel,\n fragId: atom ? atom.fragment : null\n })\n element = Object.assign({}, Atom.attrlist, element)\n\n if (!hoveredItemId && hoveredItemId !== 0 && element.rglabel) {\n editor.update(fromAtomAddition(editor.render.ctab, null, element))\n } else if (rglabel !== element.rglabel) {\n if (!element.rglabel && label !== 'R#') {\n element.label = label\n }\n\n editor.update(\n fromAtomsAttrs(editor.render.ctab, hoveredItemId, element, false)\n )\n }\n } catch (error) {} // w/o changes\n}\n\nasync function isChangingFunctionalGroup({\n hoveredItemId,\n render,\n editor\n}: hotkeyOverAtomHandler) {\n const atomResult: number[] = []\n const result: number[] = []\n const atom = render.ctab.atoms.get(hoveredItemId)?.a\n const molecule = render.ctab.molecule\n const functionalGroups = molecule.functionalGroups\n const sgroupsOnCanvas = Array.from(molecule.sgroups.values())\n if (atom && functionalGroups) {\n const atomId = FunctionalGroup.atomsInFunctionalGroup(\n functionalGroups,\n hoveredItemId\n )\n\n if (atomId !== null) {\n atomResult.push(atomId)\n }\n }\n\n const isFunctionalGroup = atomResult.length > 0\n\n if (isFunctionalGroup) {\n if (\n SGroup.isAtomInSaltOrSolvent(\n hoveredItemId as number,\n sgroupsOnCanvas as SGroup[]\n )\n ) {\n return false\n }\n for (const id of atomResult) {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n functionalGroups,\n id\n )\n\n if (fgId !== null && !result.includes(fgId)) {\n result.push(fgId)\n }\n }\n return await editor.event.removeFG.dispatch({ fgIds: result })\n }\n return true\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport * as clipArea from '../component/cliparea/cliparea'\n\nimport {\n KetSerializer,\n MolSerializer,\n formatProperties,\n ChemicalMimeType,\n ReAtom\n} from 'ketcher-core'\nimport { debounce, isEqual } from 'lodash/fp'\nimport { load, onAction } from './shared'\n\nimport actions from '../action'\nimport tools from '../action/tools'\nimport keyNorm from '../data/convert/keynorm'\nimport { openDialog } from './modal'\nimport { isIE } from 'react-device-detect'\nimport { handleHotkeyOverAtom } from './handleHotkeysOverAtom'\nimport { SettingsManager } from '../utils/settingsManager'\n\nexport function initKeydownListener(element) {\n return function (dispatch, getState) {\n const hotKeys = initHotKeys()\n element.addEventListener('keydown', (event) =>\n keyHandle(dispatch, getState(), hotKeys, event)\n )\n }\n}\n\nfunction removeNotRenderedStruct(actionTool, event, dispatch) {\n const { code, metaKey } = event\n if (actionTool.tool === 'paste' && code === 'KeyS' && metaKey) {\n const savedSelectedTool = SettingsManager.selectionTool\n dispatch({\n type: 'ACTION',\n action: savedSelectedTool || tools['select-rectangle'].action\n })\n }\n}\n\n/* HotKeys */\nfunction keyHandle(dispatch, state, hotKeys, event) {\n if (state.modal) return\n\n const { editor } = state\n const { render } = editor\n const actionState = state.actionState\n const actionTool = actionState.activeTool\n\n const key = keyNorm(event)\n const atomsSelected = editor.selection() && editor.selection().atoms\n\n let group: any = null\n\n if (key && key.length === 1 && atomsSelected && key.match(/\\w/)) {\n openDialog(dispatch, 'labelEdit', { letter: key })\n .then((res) => {\n dispatch(onAction({ tool: 'atom', opts: res }))\n })\n .catch(() => null)\n event.preventDefault()\n } else if ((group = keyNorm.lookup(hotKeys, event)) !== undefined) {\n const index = checkGroupOnTool(group, actionTool) // index currentTool in group || -1\n const groupLength = group !== null ? group.length : 1\n const newIndex = (index + 1) % groupLength\n\n const actName = group[newIndex]\n if (actionState[actName] && actionState[actName].disabled === true) {\n event.preventDefault()\n return\n }\n // Removing from what should be saved - structure, which was added to paste tool,\n // but not yet rendered on canvas\n removeNotRenderedStruct(actionTool, event, dispatch)\n\n if (clipArea.actions.indexOf(actName) === -1) {\n let newAction = actions[actName].action\n const hoveredItemId = getHoveredAtomId(render.ctab.atoms)\n const isHoveringOverAtom = hoveredItemId !== null\n // check if atom is currently hovered over\n // in this case we do not want to activate the corresponding tool\n // and just insert the atom directly\n if (isHoveringOverAtom && newAction.tool !== 'select') {\n newAction = getCurrentAction(group[index]) || newAction\n handleHotkeyOverAtom({\n hoveredItemId,\n newAction,\n render,\n editor,\n dispatch\n })\n } else {\n dispatch(onAction(newAction))\n }\n\n event.preventDefault()\n } else if (isIE) {\n clipArea.exec(event)\n }\n }\n}\n\nfunction getCurrentAction(prevActName) {\n return actions[prevActName]?.action\n}\n\nfunction getHoveredAtomId(atoms: Map<number, ReAtom>): number | null {\n for (const [id, atom] of atoms.entries()) {\n if (atom.hover) return id\n }\n return null\n}\n\nfunction setHotKey(key, actName, hotKeys) {\n if (Array.isArray(hotKeys[key])) hotKeys[key].push(actName)\n else hotKeys[key] = [actName]\n}\n\nfunction initHotKeys() {\n const hotKeys = {}\n let act\n\n Object.keys(actions).forEach((actName) => {\n act = actions[actName]\n if (!act.shortcut) return\n\n if (Array.isArray(act.shortcut)) {\n act.shortcut.forEach((key) => {\n setHotKey(key, actName, hotKeys)\n })\n } else {\n setHotKey(act.shortcut, actName, hotKeys)\n }\n })\n\n return keyNorm(hotKeys)\n}\n\nfunction checkGroupOnTool(group, actionTool) {\n let index = group.indexOf(actionTool.tool)\n\n group.forEach((actName, i) => {\n if (isEqual(actions[actName].action, actionTool)) index = i\n })\n\n return index\n}\n\nconst rxnTextPlain = /\\$RXN\\n+\\s+0\\s+0\\s+0\\n*/\n\n/* ClipArea */\nexport function initClipboard(dispatch) {\n const formats = Object.keys(formatProperties).map(\n (format) => formatProperties[format].mime\n )\n\n const debAction = debounce(0, (action) => dispatch(onAction(action)))\n const loadStruct = debounce(0, (structStr, opts) =>\n dispatch(load(structStr, opts))\n )\n\n return {\n formats,\n focused() {\n const state = global.currentState\n return !state.modal\n },\n onCut() {\n const state = global.currentState\n const editor = state.editor\n const data = clipData(editor)\n if (data) debAction({ tool: 'eraser', opts: 1 })\n else editor.selection(null)\n return data\n },\n onCopy() {\n const state = global.currentState\n const editor = state.editor\n const data = clipData(editor)\n editor.selection(null)\n return data\n },\n onPaste(data) {\n const structStr =\n data[ChemicalMimeType.KET] ||\n data[ChemicalMimeType.Mol] ||\n data[ChemicalMimeType.Rxn] ||\n data['text/plain']\n\n if (structStr || !rxnTextPlain.test(data['text/plain']))\n loadStruct(structStr, { fragment: true })\n }\n }\n}\n\nfunction clipData(editor) {\n const res = {}\n const struct = editor.structSelected()\n const errorHandler = editor.errorHandler\n\n if (struct.isBlank()) return null\n const simpleObjectOrText = Boolean(\n struct.simpleObjects.size || struct.texts.size\n )\n if (simpleObjectOrText && isIE) {\n errorHandler(\n 'The structure you are trying to copy contains Simple object or/and Text object.' +\n 'To copy Simple object or Text object in Internet Explorer try \"Copy as KET\" button'\n )\n return null\n }\n const molSerializer = new MolSerializer()\n try {\n const serializer = new KetSerializer()\n const ket = serializer.serialize(struct)\n res[ChemicalMimeType.KET] = ket\n\n const type = struct.isReaction ? ChemicalMimeType.Mol : ChemicalMimeType.Rxn\n const data = molSerializer.serialize(struct)\n res['text/plain'] = data\n res[type] = data\n\n // res['chemical/x-daylight-smiles'] = smiles.stringify(struct);\n return res\n } catch (e: any) {\n errorHandler(e.message)\n }\n\n return null\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport ClipArea from '../component/cliparea/cliparea'\nimport { connect } from 'react-redux'\nimport { initClipboard } from '../state/hotkeys'\n\nconst AppClipArea = connect(null, (dispatch) => dispatch(initClipboard as any))(\n ClipArea\n)\n\nexport default AppClipArea\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { useEffect, useRef } from 'react'\nimport { useSettingsContext } from '../../../../hooks'\n\ninterface AppHiddenCallProps {\n onInitTmpls: (cacheEl, url) => void\n}\n\ntype Props = AppHiddenCallProps\n// todo: come up with better name\nconst AppHidden = (props: Props) => {\n const { onInitTmpls } = props\n\n const ref = useRef(null)\n const { staticResourcesUrl } = useSettingsContext()\n\n useEffect(() => {\n onInitTmpls(ref.current, staticResourcesUrl)\n }, [])\n\n return <div style={{ display: 'none' }} ref={ref} />\n}\n\nexport type { AppHiddenCallProps }\nexport { AppHidden }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { AppHidden, AppHiddenCallProps } from './AppHidden'\n\nimport { Dispatch } from 'redux'\nimport { connect } from 'react-redux'\nimport { initTmplLib } from '../../state/templates'\n\nconst mapDispatchToProps = (dispatch: Dispatch): AppHiddenCallProps => ({\n onInitTmpls: (cacheEl, url) => {\n initTmplLib(dispatch, url, cacheEl)\n }\n})\n\nconst AppHiddenContainer = connect(null, mapDispatchToProps)(AppHidden)\n\nexport { AppHiddenContainer }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nconst mediaSizes = {\n smallWidth: 600,\n smallHeight: 600\n}\n\nexport default mediaSizes\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport * as KN from 'w3c-keyname'\n\nimport { FC, ReactElement, useLayoutEffect, useRef } from 'react'\n\nimport Icon from '../../../component/view/icon'\nimport clsx from 'clsx'\nimport styles from './Dialog.module.less'\n\ninterface DialogParamsCallProps {\n onCancel: () => void\n onOk: (result: any) => void\n}\n\nexport interface DialogParams extends DialogParamsCallProps {\n className?: string\n}\n\ninterface DialogProps {\n title?: string\n params: DialogParams\n buttons?: Array<string | ReactElement>\n className?: string\n needMargin?: boolean\n withDivider?: boolean\n headerContent?: ReactElement\n footerContent?: ReactElement\n buttonsNameMap?: {\n [key in string]: string\n }\n focusable?: boolean\n}\n\ninterface DialogCallProps {\n result?: () => any\n valid?: () => boolean\n}\n\ntype Props = DialogProps & DialogCallProps\n\nconst Dialog: FC<Props> = (props) => {\n const {\n children,\n title,\n params,\n result = () => null,\n valid = () => !!result(),\n buttons = ['OK'],\n headerContent,\n footerContent,\n className,\n buttonsNameMap,\n needMargin = true,\n withDivider = false,\n focusable = true,\n ...rest\n } = props\n const dialogRef = useRef<HTMLDivElement>(null)\n\n useLayoutEffect(() => {\n if (focusable) {\n ;(dialogRef.current as HTMLElement).focus()\n }\n\n return () => {\n ;(\n dialogRef.current\n ?.closest('.Ketcher-root')\n ?.getElementsByClassName('cliparea')[0] as HTMLElement\n ).focus()\n }\n }, [focusable])\n\n const isButtonOk = (button) => {\n return button === 'OK' || button === 'Save'\n }\n\n const exit = (mode) => {\n const key = isButtonOk(mode) ? 'onOk' : 'onCancel'\n if (params && key in params && (key !== 'onOk' || valid())) {\n params[key](result())\n }\n }\n\n const keyDown = (event) => {\n const key = KN.keyName(event)\n const active = document.activeElement\n const activeTextarea = active && active.tagName === 'TEXTAREA'\n if (key === 'Escape' || (key === 'Enter' && !activeTextarea)) {\n exit(key === 'Enter' ? 'OK' : 'Cancel')\n event.preventDefault()\n event.stopPropagation()\n }\n }\n\n return (\n <div\n ref={dialogRef}\n role=\"dialog\"\n onSubmit={(event) => event.preventDefault()}\n onKeyDown={keyDown}\n tabIndex={-1}\n className={clsx(styles.dialog, className, params.className)}\n {...rest}\n >\n <header\n className={clsx(styles.header, withDivider && styles.withDivider)}\n >\n {headerContent || <span>{title}</span>}\n <div className={styles.btnContainer}>\n <button className={styles.buttonTop} onClick={() => exit('Cancel')}>\n <Icon name={'close'} className={styles.closeButton} />\n </button>\n </div>\n </header>\n <div className={clsx(styles.body, needMargin && styles.withMargin)}>\n {children}\n </div>\n\n {(footerContent || buttons.length > 0) && (\n <footer className={styles.footer}>\n {footerContent}\n {buttons.length > 0 &&\n buttons.map((button) =>\n typeof button !== 'string' ? (\n button\n ) : (\n <input\n key={button}\n type=\"button\"\n className={clsx(\n isButtonOk(button) ? styles.ok : styles.cancel,\n button === 'Save' && styles.save\n )}\n value={\n buttonsNameMap && buttonsNameMap[button]\n ? buttonsNameMap[button]\n : button\n }\n disabled={isButtonOk(button) && !valid()}\n onClick={() => exit(button)}\n />\n )\n )}\n </footer>\n )}\n </div>\n )\n}\n\nexport default Dialog\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport styles from './LoadingCircles.module.less'\n\nexport const LoadingCircles = () => (\n <div className={styles.container}>\n <span />\n <span />\n <span />\n </div>\n)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Fragment, FunctionalGroup, Vec2, Scale } from 'ketcher-core'\n\nconst SELECTION_DISTANCE_COEFFICIENT = 0.4\nconst SELECTION_WITHIN_TEXT = 0\n\nconst findMaps = {\n atoms: findClosestAtom,\n bonds: findClosestBond,\n enhancedFlags: findClosestEnhancedFlag,\n sgroupData: findClosestDataSGroupData,\n sgroups: findClosestSGroup,\n functionalGroups: findClosestFG,\n rxnArrows: findClosestRxnArrow,\n rxnPluses: findClosestRxnPlus,\n frags: findClosestFrag,\n rgroups: findClosestRGroup,\n simpleObjects: findClosestSimpleObject,\n texts: findClosestText\n}\n\nfunction rectangleContainsPoint(startX, startY, width, height, x, y) {\n return (\n startX <= x && x <= startX + width && startY <= y && y <= startY + height\n )\n}\n\nfunction findClosestText(restruct, cursorPosition) {\n let minDist = null\n let ret = null\n\n restruct.texts.forEach((text, id) => {\n const referencePoints = text.getReferencePoints(restruct)\n const topX = referencePoints[0].x\n const topY = referencePoints[0].y\n const bottomX = referencePoints[2].x\n const bottomY = referencePoints[2].y\n\n const distances = []\n\n if (cursorPosition.x >= topX && cursorPosition.x <= bottomX) {\n if (cursorPosition.y < topY) {\n distances.push(topY - cursorPosition.y)\n } else if (cursorPosition.y > bottomY) {\n distances.push(cursorPosition.y - bottomY)\n } else {\n distances.push(cursorPosition.y - topY, bottomY - cursorPosition.y)\n }\n }\n\n if (cursorPosition.x < topX && cursorPosition.y < topY) {\n distances.push(Vec2.dist(new Vec2(topX, topY), cursorPosition))\n }\n\n if (cursorPosition.x > bottomX && cursorPosition.y > bottomY) {\n distances.push(Vec2.dist(new Vec2(bottomX, bottomY), cursorPosition))\n }\n\n if (cursorPosition.x < topX && cursorPosition.y > bottomY) {\n distances.push(Vec2.dist(new Vec2(topX, bottomY), cursorPosition))\n }\n\n if (cursorPosition.x > bottomX && cursorPosition.y < topY) {\n distances.push(Vec2.dist(new Vec2(bottomX, topY), cursorPosition))\n }\n\n if (cursorPosition.y >= topY && cursorPosition.y <= bottomY) {\n if (cursorPosition.x < topX) {\n distances.push(topX - cursorPosition.x)\n } else if (cursorPosition.x > bottomX) {\n distances.push(cursorPosition.x - bottomX)\n } else {\n distances.push(SELECTION_WITHIN_TEXT)\n }\n }\n\n const dist = Math.min(...distances)\n\n if (dist < SELECTION_DISTANCE_COEFFICIENT && (!ret || dist < minDist)) {\n minDist = dist\n ret = { id, dist: minDist }\n }\n })\n return ret\n}\n\nfunction findClosestSimpleObject(restruct, pos) {\n let minDist = null\n let refPoint = null\n let ret = null\n\n restruct.simpleObjects.forEach((simpleObject, id) => {\n const dist = simpleObject.calcDistance(pos, restruct.render.options.scale)\n\n if (dist.minDist < 0.3 && (!ret || dist.minDist < minDist)) {\n minDist = dist.minDist\n refPoint = dist.refPoint\n\n ret = { id, dist: minDist, ref: refPoint }\n }\n })\n return ret\n}\n\nfunction findClosestAtom(restruct, pos, skip, minDist) {\n let closestAtom = null\n const maxMinDist = SELECTION_DISTANCE_COEFFICIENT\n const skipId = skip && skip.map === 'atoms' ? skip.id : null\n const sGroups = restruct.sgroups\n const functionalGroups = restruct.molecule.functionalGroups\n\n minDist = minDist || maxMinDist\n minDist = Math.min(minDist, maxMinDist)\n\n restruct.atoms.forEach((atom, aid) => {\n if (\n FunctionalGroup.isAtomInContractedFunctionalGroup(\n atom.a,\n sGroups,\n functionalGroups,\n true\n )\n ) {\n return null\n }\n if (aid === skipId) return\n\n const dist = Vec2.dist(pos, atom.a.pp)\n\n if (dist < minDist) {\n closestAtom = aid\n minDist = dist\n }\n })\n\n if (closestAtom !== null) {\n return {\n id: closestAtom,\n dist: minDist\n }\n }\n\n return null\n}\n\nfunction findClosestBond(restruct, pos, skip, minDist, scale) {\n // eslint-disable-line max-params\n let closestBond = null\n let closestBondCenter = null\n const maxMinDist = 0.8 * SELECTION_DISTANCE_COEFFICIENT\n const skipId = skip && skip.map === 'bonds' ? skip.id : null\n const sGroups = restruct.sgroups\n const functionalGroups = restruct.molecule.functionalGroups\n\n minDist = minDist || maxMinDist\n minDist = Math.min(minDist, maxMinDist)\n\n let minCDist = minDist\n\n restruct.bonds.forEach((bond, bid) => {\n if (bid === skipId) return\n\n const a1 = restruct.atoms.get(bond.b.begin).a\n const a2 = restruct.atoms.get(bond.b.end).a\n if (\n FunctionalGroup.isBondInContractedFunctionalGroup(\n bond.b,\n sGroups,\n functionalGroups,\n true\n )\n )\n return null\n\n const mid = Vec2.lc2(a1.pp, 0.5, a2.pp, 0.5)\n const cdist = Vec2.dist(pos, mid)\n\n if (cdist < minCDist) {\n minCDist = cdist\n closestBondCenter = bid\n }\n })\n\n restruct.bonds.forEach((bond, bid) => {\n if (bid === skipId) return\n if (\n FunctionalGroup.isBondInContractedFunctionalGroup(\n bond.b,\n sGroups,\n functionalGroups,\n true\n )\n )\n return null\n\n const hb = restruct.molecule.halfBonds.get(bond.b.hb1)\n const dir = hb.dir\n const norm = hb.norm\n\n const p1 = restruct.atoms.get(bond.b.begin).a.pp\n const p2 = restruct.atoms.get(bond.b.end).a.pp\n\n const inStripe = Vec2.dot(pos.sub(p1), dir) * Vec2.dot(pos.sub(p2), dir) < 0\n\n if (inStripe) {\n const dist = Math.abs(Vec2.dot(pos.sub(p1), norm))\n\n if (dist < minDist) {\n closestBond = bid\n minDist = dist\n }\n }\n })\n\n if (closestBondCenter !== null) {\n return {\n id: closestBondCenter,\n dist: minCDist\n }\n }\n\n if (\n closestBond !== null &&\n minDist > SELECTION_DISTANCE_COEFFICIENT * scale\n ) {\n return {\n id: closestBond,\n dist: minDist\n }\n }\n\n return null\n}\n\nfunction findClosestEnhancedFlag(restruct, pos, skip, _minDist, options) {\n let minDist\n let ret = null\n restruct.enhancedFlags.forEach((item, id) => {\n const fragment = restruct.molecule.frags.get(id)\n\n if (!fragment || !fragment.enhancedStereoFlag || !options.showStereoFlags)\n return\n\n const p = fragment.stereoFlagPosition\n ? new Vec2(fragment.stereoFlagPosition.x, fragment.stereoFlagPosition.y)\n : Fragment.getDefaultStereoFlagPosition(restruct.molecule, id)\n if (!p || Math.abs(pos.x - p.x) >= 1.0) return\n\n const dist = Math.abs(pos.y - p.y)\n\n if (dist < 0.3 && (!ret || dist < minDist)) {\n minDist = dist\n ret = { id, dist: minDist }\n }\n })\n return ret\n}\n\nfunction findClosestDataSGroupData(restruct, pos) {\n let minDist = null\n let ret = null\n\n restruct.sgroupData.forEach((item, id) => {\n if (item.sgroup.type !== 'DAT') throw new Error('Data group expected')\n\n if (item.sgroup.data.fieldName !== 'MRV_IMPLICIT_H') {\n const box = item.sgroup.dataArea\n const inBox =\n box.p0.y < pos.y &&\n box.p1.y > pos.y &&\n box.p0.x < pos.x &&\n box.p1.x > pos.x\n const xDist = Math.min(\n Math.abs(box.p0.x - pos.x),\n Math.abs(box.p1.x - pos.x)\n )\n\n if (inBox && (ret === null || xDist < minDist)) {\n ret = { id, dist: xDist }\n minDist = xDist\n }\n }\n })\n\n return ret\n}\n\nfunction findClosestFrag(restruct, pos, skip, minDist, scale) {\n minDist = Math.min(\n minDist || SELECTION_DISTANCE_COEFFICIENT,\n SELECTION_DISTANCE_COEFFICIENT\n )\n\n const struct = restruct.molecule\n\n const closestAtom = findClosestAtom(restruct, pos, skip, minDist)\n\n if (closestAtom) {\n return {\n id: struct.atoms.get(closestAtom.id).fragment,\n dist: closestAtom.dist\n }\n }\n\n const closestBond = findClosestBond(restruct, pos, skip, minDist, scale)\n\n if (closestBond) {\n const atomId = struct.bonds.get(closestBond.id).begin\n return {\n id: struct.atoms.get(atomId).fragment,\n dist: closestBond.dist\n }\n }\n\n return null\n}\n\nfunction findClosestRGroup(restruct, pos, skip, minDist) {\n minDist = Math.min(\n minDist || SELECTION_DISTANCE_COEFFICIENT,\n SELECTION_DISTANCE_COEFFICIENT\n )\n\n let ret = null\n\n restruct.rgroups.forEach((rgroup, rgid) => {\n if (\n rgid !== skip &&\n rgroup.labelBox &&\n rgroup.labelBox.contains(pos, 0.5)\n ) {\n const dist = Vec2.dist(rgroup.labelBox.centre(), pos)\n\n if (!ret || dist < minDist) {\n minDist = dist\n ret = { id: rgid, dist: minDist }\n }\n }\n })\n\n return ret\n}\n\nfunction findClosestRxnArrow(restruct, pos) {\n let minDist = null\n let refPoint = null\n let ret = null\n\n restruct.rxnArrows.forEach((rxnArrow, id) => {\n const dist = rxnArrow.calcDistance(pos, restruct.render.options.scale)\n\n if (dist.minDist < 0.3 && (!ret || dist.minDist < minDist)) {\n minDist = dist.minDist\n refPoint = dist.refPoint\n\n ret = { id, dist: minDist, ref: refPoint }\n }\n })\n return ret\n}\n\nfunction findClosestRxnPlus(restruct, pos) {\n let minDist = null\n let ret = null\n\n restruct.rxnPluses.forEach((plus, id) => {\n const p = plus.item.pp\n const dist = Math.max(Math.abs(pos.x - p.x), Math.abs(pos.y - p.y))\n\n if (dist < 0.3 && (!ret || dist < minDist)) {\n minDist = dist\n ret = { id, dist: minDist }\n }\n })\n\n return ret\n}\n\nfunction findClosestSGroup(restruct, pos) {\n let ret = null\n let minDist = SELECTION_DISTANCE_COEFFICIENT\n\n restruct.molecule.sgroups.forEach((sg, sgid) => {\n if (sg.functionalGroup && !sg.expanded && sg.firstSgroupAtom) return null\n\n const d = sg.bracketDir\n const n = d.rotateSC(1, 0)\n const pg = new Vec2(Vec2.dot(pos, d), Vec2.dot(pos, n))\n\n sg.areas.forEach((box) => {\n const inBox =\n box.p0.y < pg.y && box.p1.y > pg.y && box.p0.x < pg.x && box.p1.x > pg.x\n const xDist = Math.min(\n Math.abs(box.p0.x - pg.x),\n Math.abs(box.p1.x - pg.x)\n )\n\n if (inBox && (ret === null || xDist < minDist)) {\n ret = sgid\n minDist = xDist\n }\n })\n })\n\n if (ret !== null) {\n return {\n id: ret,\n dist: minDist\n }\n }\n\n return null\n}\n\nfunction findClosestFG(restruct, pos) {\n const sGroups = restruct.sgroups\n for (const reSGroup of sGroups.values()) {\n const { startX, startY, width, height } =\n reSGroup.getTextHighlightDimensions()\n const { x, y } = Scale.obj2scaled(pos, restruct.render.options)\n if (rectangleContainsPoint(startX, startY, width, height, x, y)) {\n const centerX = startX + width / 2\n const centerY = startY + height / 2\n const rectangleCenter = new Vec2(centerX, centerY)\n const cursorPosition = new Vec2(x, y)\n\n const dist = Vec2.dist(rectangleCenter, cursorPosition)\n const { id } = reSGroup.item\n return { id, dist }\n }\n }\n return null\n}\n\nfunction findClosestItem(restruct, pos, maps, skip, scale) {\n // eslint-disable-line max-params\n maps = maps || Object.keys(findMaps)\n\n return maps.reduce((res, mp) => {\n const minDist = res ? res.dist : null\n const item = findMaps[mp](restruct, pos, skip, minDist, scale)\n\n if (item !== null && (res === null || item.dist < res.dist)) {\n const { id, dist, ...other } = item\n return {\n map: mp,\n id: id,\n dist: dist,\n ...other\n }\n }\n\n return res\n }, null)\n}\n\n/**\n * @param restruct { ReStruct }\n * @param selected { object }\n * @param maps { Array<string> }\n * @param scale { number }\n * @return {{\n * \t\tatoms: Map<number, number>?\n * \t\tbonds: Map<number, number>?\n * }}\n */\nfunction findCloseMerge(restruct, selected, maps = ['atoms', 'bonds'], scale) {\n const pos = {\n atoms: new Map(), // aid -> position\n bonds: new Map() // bid -> position\n }\n\n const struct = restruct.molecule\n\n selected.atoms.forEach((aid) => {\n pos.atoms.set(aid, struct.atoms.get(aid).pp)\n })\n\n selected.bonds.forEach((bid) => {\n const bond = struct.bonds.get(bid)\n pos.bonds.set(\n bid,\n Vec2.lc2(\n struct.atoms.get(bond.begin).pp,\n 0.5,\n struct.atoms.get(bond.end).pp,\n 0.5\n )\n )\n })\n\n const result = {}\n maps.forEach((mp) => {\n result[mp] = Array.from(pos[mp].keys()).reduce((res, srcId) => {\n const skip = { map: mp, id: srcId }\n const item = findMaps[mp](restruct, pos[mp].get(srcId), skip, null, scale)\n\n if (item && !selected[mp].includes(item.id)) res.set(srcId, item.id)\n\n return res\n }, new Map())\n })\n\n return result\n}\n\nexport default {\n atom: findClosestAtom, // used in Actions\n item: findClosestItem,\n merge: findCloseMerge\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { OperationType } from 'ketcher-core'\n\ntype Position = {\n x: number\n y: number\n}\n\ntype ArrowPosition = [Position, Position]\n\ntype Data = {\n operation: any\n id?: number\n label?: string\n position?: Position | ArrowPosition\n attribute?: any\n from?: any\n to?: any\n atomId?: any\n fragId?: any\n sGroupId?: any\n type?: any\n mode?: any\n}\n\nexport function customOnChangeHandler(action, handler) {\n const data: Data[] = []\n\n action.operations.reverse().forEach((operation) => {\n const op = operation._inverted\n switch (op.type) {\n case OperationType.ATOM_ADD:\n case OperationType.ATOM_DELETE:\n data.push({\n operation: op.type,\n id: op.data.aid,\n label: op.data.atom.label ? op.data.atom.label : '',\n position: {\n x: +op.data.pos.x.toFixed(2),\n y: +op.data.pos.y.toFixed(2)\n }\n })\n break\n\n case OperationType.ATOM_ATTR:\n data.push({\n operation: operation.type,\n id: operation.data.aid,\n attribute: operation.data.attribute,\n from: operation.data.value,\n to: operation.data2.value\n })\n break\n\n case OperationType.ATOM_MOVE:\n data.push({\n operation: op.type,\n id: op.data.aid,\n position: {\n x: +op.data.d.x.toFixed(2),\n y: +op.data.d.y.toFixed(2)\n }\n })\n break\n\n case OperationType.BOND_ADD:\n case OperationType.BOND_DELETE:\n data.push({\n operation: op.type,\n id: op.data.bid\n })\n break\n\n case OperationType.FRAGMENT_ADD:\n case OperationType.FRAGMENT_DELETE:\n data.push({\n operation: op.type,\n id: op.frid\n })\n break\n\n case OperationType.FRAGMENT_ADD_STEREO_ATOM:\n case OperationType.FRAGMENT_DELETE_STEREO_ATOM:\n data.push({\n operation: op.type,\n atomId: op.data.aid,\n fragId: op.data.frid\n })\n break\n\n case OperationType.S_GROUP_ATOM_ADD:\n case OperationType.S_GROUP_ATOM_REMOVE:\n data.push({\n operation: op.type,\n atomId: op.data.aid,\n sGroupId: op.data.sgid\n })\n break\n\n case OperationType.S_GROUP_CREATE:\n case OperationType.S_GROUP_DELETE:\n data.push({\n operation: op.type,\n type: op.data.type,\n sGroupId: op.data.sgid\n })\n break\n\n case OperationType.RXN_ARROW_ADD:\n case OperationType.RXN_ARROW_DELETE:\n data.push({\n operation: op.type,\n id: op.data.id,\n mode: op.data.mode,\n position: op.data.pos.map((pos) => ({\n x: +pos.x.toFixed(2),\n y: +pos.y.toFixed(2)\n }))\n })\n break\n\n case OperationType.RXN_ARROW_RESIZE:\n data.push({\n operation: op.type,\n id: op.data.id\n })\n break\n\n case OperationType.RXN_ARROW_MOVE:\n data.push({\n operation: op.type,\n id: op.data.id,\n position: {\n x: +op.data.d.x.toFixed(2),\n y: +op.data.d.y.toFixed(2)\n }\n })\n break\n\n case OperationType.R_GROUP_FRAGMENT:\n data.push({\n operation: operation.type,\n id: op.frid\n })\n break\n\n case OperationType.SIMPLE_OBJECT_ADD:\n case OperationType.SIMPLE_OBJECT_DELETE:\n data.push({\n operation: op.type,\n id: op.data.id,\n mode: op.data.mode\n })\n break\n\n case OperationType.SIMPLE_OBJECT_RESIZE:\n data.push({\n operation: op.type,\n id: op.data.id\n })\n break\n\n case OperationType.SIMPLE_OBJECT_MOVE:\n data.push({\n operation: operation.type,\n id: operation.data.id,\n position: {\n x: +operation.data.d.x.toFixed(2),\n y: +operation.data.d.y.toFixed(2)\n }\n })\n break\n\n default:\n data.push({\n operation: op.type\n })\n }\n })\n\n return handler(data)\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { fromHighlightCreate, fromHighlightClear } from 'ketcher-core'\nimport type { Struct } from 'ketcher-core'\n\nimport type { Editor } from './Editor'\n\ntype HighlightAttributes = {\n atoms: number[]\n bonds: number[]\n color: string\n}\n\nexport class Highlighter {\n editor: Editor\n\n constructor(editor: Editor) {\n this.editor = editor\n }\n\n getAll() {\n const highlightsMap = this.editor.render.ctab.molecule.highlights\n const highlightsArray = [...highlightsMap].map(([id, highlight]) => ({\n id,\n highlight\n }))\n return highlightsArray\n }\n\n create(...args: HighlightAttributes[]) {\n const createdHighlights: HighlightAttributes[] = []\n\n args.forEach((arg) => {\n const { atoms, bonds, color } = arg\n if (typeof color !== 'string') {\n return\n }\n\n if (!atoms && !bonds) {\n return\n }\n\n const restruct = this.editor.render.ctab\n\n const { validAtoms, validBonds } = getValidInputOnly(\n restruct.molecule,\n atoms,\n bonds\n )\n\n if (validAtoms.length === 0 && validBonds.length === 0) {\n return\n }\n\n createdHighlights.push({ atoms: validAtoms, bonds: validBonds, color })\n })\n const action = fromHighlightCreate(\n this.editor.render.ctab,\n createdHighlights\n )\n this.editor.update(action)\n }\n\n clear() {\n const action = fromHighlightClear(this.editor.render.ctab)\n this.editor.update(action)\n }\n\n /*\n // Update by ID\n update(\n id: number,\n {\n atoms,\n bonds,\n color\n }: {\n atoms?: number[]\n bonds?: number[]\n color: string\n }\n ) {\n if (typeof color !== 'string' || typeof id !== 'number') {\n return\n }\n if (!atoms && !bonds) {\n return\n }\n\n const restruct = this.editor.render.ctab\n\n const { validAtoms, validBonds } = getValidInputOnly(\n restruct.molecule,\n atoms,\n bonds\n )\n\n if (validAtoms.length === 0 && validBonds.length === 0) {\n return\n }\n\n const action = fromHighlightUpdate(\n id,\n this.editor.render.ctab,\n validAtoms,\n validBonds,\n color\n )\n this.editor.update(action)\n }\n\n // Add items to highlight by id\n append(\n id: number,\n {\n atoms,\n bonds,\n color\n }: {\n atoms?: number[]\n bonds?: number[]\n color?: string\n }\n ) {\n if (!atoms && !bonds && !color) {\n return\n }\n const restruct = this.editor.render.ctab\n\n const { validAtoms, validBonds } = getValidInputOnly(\n restruct.molecule,\n atoms,\n bonds\n )\n\n if (validAtoms.length === 0 && validBonds.length === 0 && !color) {\n return\n }\n\n const currentHighlight = restruct.molecule.highlights.get(id)\n\n if (currentHighlight) {\n const mergedHighlight = {\n atoms: union(currentHighlight.atoms, validAtoms),\n bonds: union(currentHighlight.bonds, validBonds),\n color: color || currentHighlight.color\n }\n\n const action = fromHighlightUpdate(\n id,\n restruct,\n mergedHighlight.atoms,\n mergedHighlight.bonds,\n mergedHighlight.color\n )\n this.editor.update(action)\n }\n }\n\n // Delete by ID\n delete(id: number) {\n if (typeof id !== 'number') {\n return\n }\n\n const action = fromHighlightDelete(this.editor.render.ctab, id)\n this.editor.update(action)\n }\n */\n}\n\ntype ValidInput = {\n validAtoms: number[]\n validBonds: number[]\n}\n\nfunction getValidInputOnly(struct: Struct, atoms, bonds): ValidInput {\n if (!Array.isArray(atoms)) {\n atoms = []\n }\n\n if (!Array.isArray(bonds)) {\n bonds = []\n }\n\n const { atoms: structAtoms, bonds: structBonds } = struct\n\n // Filter out atom ids that are not in struct\n if (atoms.length > 0) {\n atoms = atoms.filter((aid) => structAtoms.has(aid))\n }\n\n // Filter out bond ids that are not in struct\n if (bonds.length > 0) {\n bonds = bonds.filter((bid) => structBonds.has(bid))\n }\n\n return {\n validAtoms: atoms,\n validBonds: bonds\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n Action,\n Editor as KetcherEditor,\n Pile,\n Render,\n Struct,\n Vec2,\n fromDescriptorsAlign,\n fromNewCanvas,\n FunctionalGroup\n} from 'ketcher-core'\nimport {\n DOMSubscription,\n PipelineSubscription,\n Subscription\n} from 'subscription'\n\nimport closest from './shared/closest'\nimport { customOnChangeHandler } from './utils'\nimport { isEqual } from 'lodash/fp'\nimport toolMap from './tool'\nimport { Highlighter } from './highlighter'\n\nconst SCALE = 40\nconst HISTORY_SIZE = 32 // put me to options\nconst HOVER_ICON_OPACITY = 0.7\n\nconst structObjects = [\n 'atoms',\n 'bonds',\n 'frags',\n 'sgroups',\n 'sgroupData',\n 'rgroups',\n 'rxnArrows',\n 'rxnPluses',\n 'enhancedFlags',\n 'simpleObjects',\n 'texts'\n]\n\nconst highlightTargets = [\n 'atoms',\n 'bonds',\n 'rxnArrows',\n 'rxnPluses',\n 'functionalGroups',\n 'frags',\n 'merge',\n 'rgroups',\n 'sgroups',\n 'sgroupData',\n 'enhancedFlags',\n 'simpleObjects',\n 'texts'\n]\n\nfunction selectStereoFlagsIfNecessary(\n atoms: any,\n expAtoms: number[]\n): number[] {\n const atomsOfFragments = {}\n atoms.forEach((atom, atomId) => {\n atomsOfFragments[atom.fragment]\n ? atomsOfFragments[atom.fragment].push(atomId)\n : (atomsOfFragments[atom.fragment] = [atomId])\n })\n\n const stereoFlags: number[] = []\n\n Object.keys(atomsOfFragments).forEach((fragId) => {\n let shouldSelSFlag = true\n atomsOfFragments[fragId].forEach((atomId) => {\n if (!expAtoms.includes(atomId)) shouldSelSFlag = false\n })\n shouldSelSFlag && stereoFlags.push(Number(fragId))\n })\n return stereoFlags\n}\n\ninterface Selection {\n atoms?: Array<number>\n bonds?: Array<number>\n enhancedFlags?: Array<number>\n rxnPluses?: Array<number>\n rxnArrows?: Array<number>\n}\n\nclass Editor implements KetcherEditor {\n #origin?: any\n render: Render\n _selection: Selection | null\n _tool: any\n historyStack: any\n historyPtr: any\n errorHandler: ((message: string) => void) | null\n highlights: Highlighter\n hoverIcon: any\n lastCursorPosition: { x: number; y: number }\n event: {\n message: Subscription\n elementEdit: PipelineSubscription\n bondEdit: PipelineSubscription\n rgroupEdit: PipelineSubscription\n sgroupEdit: PipelineSubscription\n sdataEdit: PipelineSubscription\n quickEdit: PipelineSubscription\n attachEdit: PipelineSubscription\n removeFG: PipelineSubscription\n change: Subscription\n selectionChange: PipelineSubscription\n aromatizeStruct: PipelineSubscription\n dearomatizeStruct: PipelineSubscription\n enhancedStereoEdit: PipelineSubscription\n confirm: PipelineSubscription\n showInfo: PipelineSubscription\n cursor: Subscription\n }\n\n lastEvent: any\n\n constructor(clientArea, options) {\n this.render = new Render(\n clientArea,\n Object.assign(\n {\n scale: SCALE\n },\n options\n )\n )\n\n this._selection = null // eslint-disable-line\n this._tool = null // eslint-disable-line\n this.historyStack = []\n this.historyPtr = 0\n this.errorHandler = null\n this.highlights = new Highlighter(this)\n this.renderAndRecoordinateStruct =\n this.renderAndRecoordinateStruct.bind(this)\n this.setOptions = this.setOptions.bind(this)\n\n this.lastCursorPosition = {\n x: 0,\n y: 0\n }\n this.createHoverIcon()\n\n this.event = {\n message: new Subscription(),\n elementEdit: new PipelineSubscription(),\n bondEdit: new PipelineSubscription(),\n rgroupEdit: new PipelineSubscription(),\n sgroupEdit: new PipelineSubscription(),\n sdataEdit: new PipelineSubscription(),\n quickEdit: new PipelineSubscription(),\n attachEdit: new PipelineSubscription(),\n removeFG: new PipelineSubscription(),\n change: new Subscription(),\n selectionChange: new PipelineSubscription(),\n aromatizeStruct: new PipelineSubscription(),\n dearomatizeStruct: new PipelineSubscription(),\n // TODO: correct\n enhancedStereoEdit: new PipelineSubscription(),\n confirm: new PipelineSubscription(),\n cursor: new PipelineSubscription(),\n showInfo: new PipelineSubscription()\n }\n\n domEventSetup(this, clientArea)\n }\n\n isDitrty(): boolean {\n const position = this.historyPtr\n const length = this.historyStack.length\n if (!length || !this.#origin) {\n return false\n }\n return !isEqual(this.historyStack[position - 1], this.#origin)\n }\n\n setOrigin(): void {\n const position = this.historyPtr\n this.#origin = position ? this.historyStack[position - 1] : null\n }\n\n tool(name?: any, opts?: any) {\n /* eslint-disable no-underscore-dangle */\n if (arguments.length === 0) {\n return this._tool\n }\n\n if (this._tool && this._tool.cancel) {\n this._tool.cancel()\n }\n\n const tool = new toolMap[name](this, opts)\n\n const isAtomToolChosen = name === 'atom'\n if (!isAtomToolChosen) {\n this.hoverIcon.hide()\n }\n\n if (!tool || tool.isNotActiveTool) {\n return null\n }\n\n this._tool = tool\n return this._tool\n /* eslint-enable no-underscore-dangle */\n }\n\n updateHoverIconPosition() {\n const { x, y } = this.lastCursorPosition\n const { height, width } = this.hoverIcon.getBBox()\n this.hoverIcon.attr({\n x: x - width / 2,\n y: y - height / 2\n })\n }\n\n createHoverIcon() {\n this.hoverIcon = this.render.paper\n .text(0, 0, '')\n .attr('font-size', this.options().fontsz)\n .attr('opacity', HOVER_ICON_OPACITY)\n\n this.updateHoverIconPosition()\n }\n\n clear() {\n this.struct(undefined)\n }\n\n renderAndRecoordinateStruct(struct: Struct) {\n const action = fromNewCanvas(this.render.ctab, struct)\n this.update(action)\n\n const structCenter = getStructCenter(this.render.ctab)\n recoordinate(this, structCenter)\n return this.render.ctab.molecule\n }\n\n struct(value?: Struct): Struct {\n if (arguments.length === 0) {\n return this.render.ctab.molecule\n }\n\n this.selection(null)\n const struct = value || new Struct()\n\n const molecule = this.renderAndRecoordinateStruct(struct)\n\n this.createHoverIcon()\n return molecule\n }\n\n // this is used by API addFragment method\n structToAddFragment(value: Struct): Struct {\n const superStruct = value.mergeInto(this.render.ctab.molecule)\n\n return this.renderAndRecoordinateStruct(superStruct)\n }\n\n setOptions(opts: string) {\n return this.render.updateOptions(opts)\n }\n\n options(value?: any) {\n if (arguments.length === 0) {\n return this.render.options\n }\n\n const struct = this.render.ctab.molecule\n const zoom = this.render.options.zoom\n this.render.clientArea.innerHTML = ''\n\n this.render = new Render(\n this.render.clientArea,\n Object.assign({ scale: SCALE }, value)\n )\n this.render.setMolecule(struct) // TODO: reuse this.struct here?\n this.render.setZoom(zoom)\n this.render.update()\n return this.render.options\n }\n\n zoom(value?: any) {\n if (arguments.length === 0) {\n return this.render.options.zoom\n }\n\n this.render.setZoom(value)\n\n const selection = this.selection()\n const structCenter = getStructCenter(this.render.ctab, selection)\n recoordinate(this, structCenter)\n\n this.render.update()\n return this.render.options.zoom\n }\n\n selection(ci?: any) {\n if (arguments.length === 0) {\n return this._selection // eslint-disable-line\n }\n\n let ReStruct = this.render.ctab\n\n this._selection = null // eslint-disable-line\n if (ci === 'all') {\n // TODO: better way will be this.struct()\n ci = structObjects.reduce((res, key) => {\n res[key] = Array.from(ReStruct[key].keys())\n return res\n }, {})\n }\n\n if (ci === 'descriptors') {\n ReStruct = this.render.ctab\n ci = { sgroupData: Array.from(ReStruct.sgroupData.keys()) }\n }\n\n if (ci) {\n const res: Selection = {}\n\n Object.keys(ci).forEach((key) => {\n if (ci[key].length > 0)\n // TODO: deep merge\n res[key] = ci[key].slice()\n })\n\n if (Object.keys(res).length !== 0) {\n this._selection = res // eslint-disable-line\n }\n const stereoFlags = selectStereoFlagsIfNecessary(\n this.struct().atoms,\n this.explicitSelected().atoms\n )\n if (stereoFlags.length !== 0) {\n this._selection && this._selection.enhancedFlags\n ? (this._selection.enhancedFlags = Array.from(\n new Set([...this._selection.enhancedFlags, ...stereoFlags])\n ))\n : (res.enhancedFlags = stereoFlags)\n }\n }\n\n this.render.ctab.setSelection(this._selection) // eslint-disable-line\n this.event.selectionChange.dispatch(this._selection) // eslint-disable-line\n\n this.render.update()\n return this._selection // eslint-disable-line\n }\n\n hover(ci: any, newTool?: any, event?: PointerEvent) {\n const tool = newTool || this._tool // eslint-disable-line\n\n let infoPanelData: any = null\n\n if (\n 'ci' in tool &&\n (!ci || tool.ci.map !== ci.map || tool.ci.id !== ci.id)\n ) {\n setHover(tool.ci, false, this.render)\n delete tool.ci\n }\n\n if (ci && setHover(ci, true, this.render)) tool.ci = ci\n\n if (!event) return\n\n const checkFunctionGroupTypes = ['sgroups', 'functionalGroups']\n const closestCollapsibleStructures = this.findItem(\n event,\n checkFunctionGroupTypes\n )\n if (closestCollapsibleStructures) {\n const sGroup = this.struct()?.sgroups.get(closestCollapsibleStructures.id)\n if (sGroup && !sGroup.data.expanded) {\n const groupName = sGroup.data.name\n const groupStruct = FunctionalGroup.getFunctionalGroupByName(groupName)\n infoPanelData = {\n groupStruct,\n event,\n sGroup\n }\n }\n }\n if (infoPanelData) {\n this.event.showInfo.dispatch(infoPanelData)\n } else {\n this.event.showInfo.dispatch(null)\n }\n }\n\n update(action: Action | true, ignoreHistory?: boolean) {\n if (action === true) {\n this.render.update(true) // force\n } else {\n if (!ignoreHistory && !action.isDummy()) {\n this.historyStack.splice(this.historyPtr, HISTORY_SIZE + 1, action)\n if (this.historyStack.length > HISTORY_SIZE) {\n this.historyStack.shift()\n }\n this.historyPtr = this.historyStack.length\n this.event.change.dispatch(action) // TODO: stoppable here\n }\n this.render.update()\n }\n }\n\n historySize() {\n return {\n undo: this.historyPtr,\n redo: this.historyStack.length - this.historyPtr\n }\n }\n\n undo() {\n if (this.historyPtr === 0) {\n throw new Error('Undo stack is empty')\n }\n if (this.tool() && this.tool().cancel) {\n this.tool().cancel()\n }\n\n this.selection(null)\n\n if (this._tool instanceof toolMap.paste) {\n this.event.change.dispatch()\n return\n }\n\n this.historyPtr--\n const stack = this.historyStack[this.historyPtr]\n const action = stack.perform(this.render.ctab)\n\n this.historyStack[this.historyPtr] = action\n this.event.change.dispatch(action)\n this.render.update()\n }\n\n redo() {\n if (this.historyPtr === this.historyStack.length) {\n throw new Error('Redo stack is empty')\n }\n\n if (this.tool() && this.tool().cancel) {\n this.tool().cancel()\n }\n\n this.selection(null)\n if (this._tool instanceof toolMap.paste) {\n this.event.change.dispatch()\n return\n }\n\n const action = this.historyStack[this.historyPtr].perform(this.render.ctab)\n this.historyStack[this.historyPtr] = action\n this.historyPtr++\n this.event.change.dispatch(action)\n this.render.update()\n }\n\n subscribe(eventName: any, handler: any) {\n const subscriber = {\n handler: handler\n }\n\n switch (eventName) {\n case 'change':\n const subscribeFuncWrapper = (action) =>\n customOnChangeHandler(action, handler)\n subscriber.handler = subscribeFuncWrapper\n this.event[eventName].add(subscribeFuncWrapper)\n break\n\n default:\n this.event[eventName].add(handler)\n }\n\n return subscriber\n }\n\n unsubscribe(eventName: any, subscriber: any) {\n // Only for event type - subscription\n this.event[eventName].remove(subscriber.handler)\n }\n\n findItem(event: any, maps: any, skip: any = null) {\n const pos = new Vec2(this.render.page2obj(event))\n\n return closest.item(this.render.ctab, pos, maps, skip, this.render.options)\n }\n\n findMerge(srcItems: any, maps: any) {\n return closest.merge(this.render.ctab, srcItems, maps, this.render.options)\n }\n\n explicitSelected() {\n const selection = this.selection() || {}\n const res = structObjects.reduce((acc, key) => {\n acc[key] = selection[key] ? selection[key].slice() : []\n return acc\n }, {} as any)\n\n const struct = this.render.ctab.molecule\n\n // \"auto-select\" the atoms for the bonds in selection\n if (res.bonds) {\n res.bonds.forEach((bid) => {\n const bond = struct.bonds.get(bid)!\n res.atoms = res.atoms || []\n if (res.atoms.indexOf(bond.begin) < 0) {\n res.atoms.push(bond.begin)\n }\n\n if (res.atoms.indexOf(bond.end) < 0) {\n res.atoms.push(bond.end)\n }\n })\n }\n\n // \"auto-select\" the bonds with both atoms selected\n if (res.atoms && res.bonds) {\n struct.bonds.forEach((bond, bid) => {\n if (\n res.bonds.indexOf(bid) < 0 &&\n res.atoms.indexOf(bond.begin) >= 0 &&\n res.atoms.indexOf(bond.end) >= 0\n ) {\n res.bonds = res.bonds || []\n res.bonds.push(bid)\n }\n })\n }\n\n return res\n }\n\n structSelected() {\n const struct = this.render.ctab.molecule\n const selection = this.explicitSelected()\n const dst = struct.clone(\n new Pile(selection.atoms),\n new Pile(selection.bonds),\n true,\n null,\n new Pile(selection.simpleObjects),\n new Pile(selection.texts)\n )\n\n // Copy by its own as Struct.clone doesn't support\n // arrows/pluses id sets\n struct.rxnArrows.forEach((item, id) => {\n if (selection.rxnArrows.indexOf(id) !== -1)\n dst.rxnArrows.add(item.clone())\n })\n struct.rxnPluses.forEach((item, id) => {\n if (selection.rxnPluses.indexOf(id) !== -1)\n dst.rxnPluses.add(item.clone())\n })\n\n dst.isReaction = struct.isReaction && struct.isRxn()\n\n return dst\n }\n\n alignDescriptors() {\n this.selection(null)\n const action = fromDescriptorsAlign(this.render.ctab)\n this.update(action)\n this.render.update(true)\n }\n}\n\nfunction isMouseRight(event) {\n return (\n (event.which && event.which === 3) || (event.button && event.button === 2)\n )\n}\n\nfunction resetSelectionOnCanvasClick(\n editor: Editor,\n eventName: string,\n clientArea: HTMLElement,\n event\n) {\n if (\n eventName === 'mouseup' &&\n editor.selection() &&\n clientArea.contains(event.target)\n ) {\n editor.selection(null)\n }\n}\n\nfunction updateLastCursorPosition(editor: Editor, event) {\n const events = ['mousemove', 'click', 'mousedown', 'mouseup', 'mouseover']\n if (events.includes(event.type)) {\n editor.lastCursorPosition = {\n x: event.layerX,\n y: event.layerY\n }\n }\n}\n\nfunction useToolIfNeeded(\n editor: Editor,\n eventName: string,\n clientArea: HTMLElement,\n event\n) {\n const EditorTool = editor.tool()\n editor.lastEvent = event\n const conditions = [\n !!EditorTool,\n eventName in EditorTool,\n clientArea.contains(event.target) || EditorTool.isSelectionRunning?.()\n ]\n\n if (conditions.every((condition) => condition)) {\n EditorTool[eventName](event)\n return true\n }\n\n return false\n}\n\nfunction domEventSetup(editor: Editor, clientArea: HTMLElement) {\n // TODO: addEventListener('resize', ...);\n ;[\n { target: clientArea, eventName: 'click' },\n { target: clientArea, eventName: 'dblclick' },\n { target: clientArea, eventName: 'mousedown' },\n { target: document, eventName: 'mousemove' },\n { target: document, eventName: 'mouseup' },\n { target: document, eventName: 'mouseleave' },\n {\n target: clientArea,\n eventName: 'mouseleave',\n toolEventName: 'mouseLeaveClientArea'\n },\n { target: clientArea, eventName: 'mouseover' }\n ].forEach(({ target, eventName, toolEventName }) => {\n editor.event[eventName] = new DOMSubscription()\n const subs = editor.event[eventName]\n\n target.addEventListener(eventName, subs.dispatch.bind(subs))\n\n subs.add((event) => {\n updateLastCursorPosition(editor, event)\n if (eventName !== 'mouseup' && eventName !== 'mouseleave') {\n // to complete drag actions\n if (\n isMouseRight(event) ||\n !event.target ||\n event.target.nodeName === 'DIV'\n ) {\n // click on scroll\n editor.hover(null)\n return true\n }\n }\n\n const isToolUsed = useToolIfNeeded(\n editor,\n toolEventName || eventName,\n clientArea,\n event\n )\n if (isToolUsed) {\n return true\n }\n\n resetSelectionOnCanvasClick(editor, eventName, clientArea, event)\n\n return true\n }, -1)\n })\n}\n\nfunction recoordinate(editor: Editor, rp?: Vec2 /* , vp */) {\n // rp is a point in scaled coordinates, which will be positioned\n // vp is the point where the reference point should now be (in view coordinates)\n // or the center if not set\n console.assert(rp, 'Reference point not specified')\n if (rp) {\n editor.render.setScrollOffset(rp.x, rp.y)\n } else {\n editor.render.setScrollOffset(0, 0)\n }\n}\n\nfunction getStructCenter(ReStruct, selection?) {\n const bb = ReStruct.getVBoxObj(selection || {})\n return Vec2.lc2(bb.p0, 0.5, bb.p1, 0.5)\n}\n\nexport { Editor }\nexport default Editor\n\nfunction setHover(ci: any, visible: any, render: any) {\n if (highlightTargets.indexOf(ci.map) === -1) {\n return false\n }\n\n let item: any = null\n\n if (ci.map === 'merge') {\n Object.keys(ci.items).forEach((mp) => {\n ci.items[mp].forEach((dstId) => {\n item = render.ctab[mp].get(dstId)!\n\n if (item) {\n item.setHover(visible, render)\n }\n })\n })\n\n return true\n }\n\n if (ci.map === 'functionalGroups') ci.map = 'sgroups' // TODO: Refactor object\n\n item = (render.ctab[ci.map] as Map<any, any>).get(ci.id)\n if (!item) {\n return true // TODO: fix, attempt to highlight a deleted item\n }\n\n if (\n (ci.map === 'sgroups' && item.item.type === 'DAT') ||\n ci.map === 'sgroupData'\n ) {\n // set highlight for both the group and the data item\n const item1 = render.ctab.sgroups.get(ci.id)\n if (item1) {\n item1.setHover(visible, render)\n }\n\n const item2 = render.ctab.sgroupData.get(ci.id)\n if (item2) {\n item2.setHover(visible, render)\n }\n } else {\n item.setHover(visible, render)\n }\n return true\n}\n","import { ContextMenu, MenuItem } from 'react-contextmenu'\nimport { useState } from 'react'\nimport { useDispatch } from 'react-redux'\nimport {\n FunctionalGroup,\n setExpandSGroup,\n fromSgroupDeletion,\n Action\n} from 'ketcher-core'\nimport { useAppContext } from '../../../../hooks'\nimport clsx from 'clsx'\nimport classes from './ContextMenu.module.less'\nimport { highlightFG } from '../../state/functionalGroups'\n\nconst FGContextMenu = () => {\n const { getKetcherInstance } = useAppContext()\n const dispatch = useDispatch()\n\n const handleExpand = () => {\n const editor = getKetcherInstance().editor as any\n const action = new Action()\n const expandData = targetItems[0].isExpanded\n targetItems?.forEach((item) => {\n action.mergeWith(\n setExpandSGroup(editor.render.ctab, item.relatedSGroupId, {\n expanded: !expandData\n })\n )\n })\n editor.update(action)\n setShowSGroupMenu(false)\n setTargetItems([])\n highlightFG(dispatch, { group: null, id: null })\n }\n\n const handleRemove = function () {\n const editor = getKetcherInstance().editor as any\n const action = new Action()\n targetItems?.forEach((item) => {\n action.mergeWith(\n fromSgroupDeletion(editor.render.ctab, item.relatedSGroupId)\n )\n })\n editor.update(action)\n setShowSGroupMenu(false)\n setTargetItems([])\n }\n\n const [showSGroupMenu, setShowSGroupMenu] = useState(false)\n const [targetItems, setTargetItems] = useState([] as Array<any>)\n\n function showMenu(e) {\n const editor = getKetcherInstance().editor as any\n const struct = editor.struct()\n const selection = editor.selection()\n setShowSGroupMenu(false)\n setTargetItems([])\n const selectedItems = [] as Array<any>\n let fgId\n\n const ci = editor.findItem(\n {\n clientX: e.detail.position.x,\n clientY: e.detail.position.y\n },\n ['sgroups', 'functionalGroups', 'atoms', 'bonds']\n )\n if (ci) {\n switch (ci.map) {\n case 'atoms':\n fgId = FunctionalGroup.findFunctionalGroupByAtom(\n struct.functionalGroups,\n ci.id\n )\n fgId !== null &&\n struct.functionalGroups.forEach((fg) => {\n fg.relatedSGroupId === fgId &&\n !selectedItems.includes(fg) &&\n selectedItems.push(fg)\n })\n break\n case 'bonds':\n fgId = FunctionalGroup.findFunctionalGroupByBond(\n struct,\n struct.functionalGroups,\n ci.id\n )\n fgId !== null &&\n struct.functionalGroups.forEach((fg) => {\n fg.relatedSGroupId === fgId &&\n !selectedItems.includes(fg) &&\n selectedItems.push(fg)\n })\n break\n case 'sgroups':\n const sgroup = struct.sgroups.get(ci.id)\n if (FunctionalGroup.isFunctionalGroup(sgroup)) {\n struct.functionalGroups.forEach((fg) => {\n fg.relatedSGroupId === sgroup?.id &&\n !selectedItems.includes(fg) &&\n selectedItems.push(fg)\n })\n }\n break\n case 'functionalGroups':\n const fgroup = struct.sgroups.get(ci.id)\n if (FunctionalGroup.isFunctionalGroup(fgroup)) {\n struct.functionalGroups.forEach((fg) => {\n fg.relatedSGroupId === fgroup?.id &&\n !selectedItems.includes(fg) &&\n selectedItems.push(fg)\n })\n }\n break\n }\n }\n\n if (selection && selection.atoms) {\n selection.atoms.forEach((aid) => {\n const fgId = FunctionalGroup.findFunctionalGroupByAtom(\n struct.functionalGroups,\n aid\n )\n fgId !== null &&\n struct.functionalGroups.forEach((fg) => {\n fg.relatedSGroupId === fgId &&\n !selectedItems.includes(fg) &&\n selectedItems.push(fg)\n })\n })\n }\n if (selectedItems.length) {\n setTargetItems(selectedItems)\n setShowSGroupMenu(true)\n }\n }\n\n return (\n <ContextMenu\n id=\"contextmenu\"\n onShow={(e) => showMenu(e)}\n className={clsx({\n [classes.isHidden]: !showSGroupMenu\n })}\n >\n <MenuItem onClick={handleExpand}>\n {targetItems.length && targetItems[0].isExpanded\n ? 'Contract '\n : 'Expand '}\n Abbreviation\n </MenuItem>\n <MenuItem divider />\n <MenuItem onClick={handleRemove}>Remove Abbreviation</MenuItem>\n </ContextMenu>\n )\n}\n\nexport { FGContextMenu }\n","import { useState, useEffect } from 'react'\n\nconst Cursor = ({ Icon, PressedIcon, enableHandTool }) => {\n const [position, setPosition] = useState({\n clientX: 50,\n clientY: 50\n })\n\n const [mousedown, setMouseDown] = useState(false)\n\n const updatePosition = (event) => {\n const { pageX, pageY, clientX, clientY } = event\n\n setPosition({\n clientX,\n clientY\n })\n }\n const handleMouseDown = () => {\n setMouseDown(true)\n }\n const handleMouseUp = () => {\n setMouseDown(false)\n }\n\n const handleMouseOver = (event) => {\n const { pageX, pageY, clientX, clientY } = event\n\n setPosition({\n clientX,\n clientY\n })\n }\n useEffect(() => {\n document.addEventListener('mousemove', updatePosition, false)\n document.addEventListener('mouseenter', updatePosition, false)\n document.addEventListener('mousedown', handleMouseDown, false)\n document.addEventListener('mouseup', handleMouseUp, false)\n\n return () => {\n document.removeEventListener('mousedown', handleMouseDown)\n document.removeEventListener('mouseup', handleMouseUp)\n document.removeEventListener('mousemove', updatePosition)\n document.removeEventListener('mouseenter', updatePosition)\n }\n }, [])\n\n if (!enableHandTool) return null\n\n return (\n <div\n style={{\n position: 'fixed',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n zIndex: 9999,\n pointerEvents: 'none'\n }}\n >\n {mousedown ? (\n <PressedIcon\n style={{\n position: 'absolute',\n left: position.clientX,\n top: position.clientY\n }}\n />\n ) : (\n <Icon\n style={{\n position: 'absolute',\n left: position.clientX,\n top: position.clientY\n }}\n />\n )}\n </div>\n )\n}\n\nexport default Cursor\n","import { difference } from 'lodash'\nimport { PredicateParams } from 'react-contexify'\nimport { ContextMenuShowProps, ItemData } from '../contextMenu.types'\n\n/**\n * Remove the word `bond` out of the title\n *\n * @example\n * formatTitle('Single Bond') === 'Single'\n */\nexport const formatTitle = (title: string) => {\n return title.slice(0, -5)\n}\n\n/**\n * Get bond names from default export of `src/script/ui/action/tools.js`\n *\n * @returns `['bond-single', 'bond-up', 'bond-down', 'bond-updown', 'bond-double',\n * 'bond-crossed', 'bond-triple', 'bond-aromatic', 'bond-any', 'bond-hydrogen',\n * 'bond-singledouble', 'bond-singlearomatic', 'bond-doublearomatic', 'bond-dative']`\n */\nexport const getBondNames = (tools) => {\n return Object.keys(tools).filter((key) => key.startsWith('bond-'))\n}\n\nexport const queryBondNames = [\n 'bond-any',\n 'bond-aromatic',\n 'bond-singledouble',\n 'bond-singlearomatic',\n 'bond-doublearomatic'\n]\n\n/**\n * Get bond names except for query bonds\n *\n * @returns `['bond-single', 'bond-up', 'bond-down', 'bond-updown', 'bond-double',\n * 'bond-crossed', 'bond-triple', 'bond-aromatic', 'bond-hydrogen', 'bond-dative']`\n */\nexport const getNonQueryBondNames = (tools) => {\n const allBondNames = getBondNames(tools)\n return difference(allBondNames, queryBondNames)\n}\n\nexport const noOperation = () => null\n\nexport const isBatchOperationHidden = ({\n props\n}: PredicateParams<ContextMenuShowProps, ItemData>) => !props?.selected\n","/****************************************************************************\n * Copyright 2022 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { findStereoAtoms } from 'ketcher-core'\nimport { useCallback, useRef } from 'react'\nimport type { PredicateParams } from 'react-contexify'\nimport { Item } from 'react-contexify'\nimport 'react-contexify/ReactContexify.css'\nimport { useAppContext } from 'src/hooks'\nimport Editor from 'src/script/editor'\nimport EnhancedStereoTool from 'src/script/editor/tool/enhanced-stereo'\nimport { getSelectedAtoms } from 'src/script/editor/tool/select'\nimport { updateSelectedAtoms } from 'src/script/ui/state/modal/atoms'\nimport type {\n ItemData,\n ContextMenuShowProps,\n CustomItemProps\n} from '../contextMenu.types'\nimport { noOperation, isBatchOperationHidden } from './utils'\n\nconst useDisabled = () => {\n const { getKetcherInstance } = useAppContext()\n\n const isDisabled = useCallback(\n ({\n props,\n triggerEvent\n }: PredicateParams<ContextMenuShowProps, ItemData>) => {\n if (isBatchOperationHidden({ props, triggerEvent })) {\n return true\n }\n\n const editor = getKetcherInstance().editor as Editor\n const selectedAtomIds = editor.selection()?.atoms\n\n if (Array.isArray(selectedAtomIds) && selectedAtomIds.length !== 0) {\n return false\n }\n\n return true\n },\n [getKetcherInstance]\n )\n\n return isDisabled\n}\n\nexport const AtomBatchEdit: React.FC<CustomItemProps> = (props) => {\n const { getKetcherInstance } = useAppContext()\n const isDisabled = useDisabled()\n\n const handleClick = useCallback(async () => {\n const editor = getKetcherInstance().editor as Editor\n const molecule = editor.render.ctab\n const selection = editor.selection()\n const selectedAtoms = getSelectedAtoms(selection, molecule)\n\n const newAtom = editor.event.elementEdit.dispatch(selectedAtoms)\n updateSelectedAtoms({\n selection,\n changeAtomPromise: newAtom,\n editor\n })\n }, [getKetcherInstance])\n\n return (\n <Item\n {...props}\n hidden={isBatchOperationHidden}\n disabled={isDisabled}\n onClick={handleClick}\n >\n Edit selected atom(s)...\n </Item>\n )\n}\n\nexport const AtomStereoBatchEdit: React.FC<CustomItemProps> = (props) => {\n const { getKetcherInstance } = useAppContext()\n const isDisabled = useDisabled()\n const stereoAtomIdsRef = useRef<number[] | undefined>()\n\n const handleClick = useCallback(async () => {\n if (!stereoAtomIdsRef.current) {\n return\n }\n\n const editor = getKetcherInstance().editor as Editor\n\n try {\n const action = await EnhancedStereoTool.changeAtomsStereoAction(\n editor,\n stereoAtomIdsRef.current\n )\n\n action && editor.update(action)\n } catch (error) {\n noOperation()\n }\n }, [getKetcherInstance])\n\n const isStereoDisabled = useCallback(\n ({\n props,\n triggerEvent\n }: PredicateParams<ContextMenuShowProps, ItemData>) => {\n if (isDisabled({ props, triggerEvent })) {\n return true\n }\n const editor = getKetcherInstance().editor as Editor\n const selectedAtomIds = editor.selection()?.atoms\n\n const stereoAtomIds: undefined | number[] = findStereoAtoms(\n editor.struct(),\n selectedAtomIds\n )\n stereoAtomIdsRef.current = stereoAtomIds\n\n if (Array.isArray(stereoAtomIds) && stereoAtomIds.length !== 0) {\n return false\n }\n\n return true\n },\n [getKetcherInstance, isDisabled]\n )\n\n return (\n <Item\n {...props}\n hidden={isBatchOperationHidden}\n disabled={isStereoDisabled}\n onClick={handleClick}\n >\n Enhanced stereochemistry...\n </Item>\n )\n}\n","/****************************************************************************\n * Copyright 2022 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n findStereoAtoms,\n fromAtomsAttrs,\n fromOneAtomDeletion\n} from 'ketcher-core'\nimport { useCallback } from 'react'\nimport type { ItemParams, PredicateParams } from 'react-contexify'\nimport { Item } from 'react-contexify'\nimport 'react-contexify/ReactContexify.css'\nimport { useAppContext } from 'src/hooks'\nimport Editor from 'src/script/editor'\nimport EnhancedStereoTool from 'src/script/editor/tool/enhanced-stereo'\nimport type { ItemData, ContextMenuShowProps } from '../contextMenu.types'\nimport { noOperation } from './utils'\n\nconst AtomSingleOperations: React.FC = (props) => {\n const { getKetcherInstance } = useAppContext()\n\n const handleEdit = useCallback(\n async ({ props }: ItemParams<ContextMenuShowProps, ItemData>) => {\n const editor = getKetcherInstance().editor as Editor\n const atomId = props?.closestItem.id\n const atom = editor.render.ctab.atoms.get(atomId)?.a\n\n try {\n const newAtom = await editor.event.elementEdit.dispatch(atom)\n editor.update(\n fromAtomsAttrs(editor.render.ctab, atomId, newAtom, false)\n )\n } catch (error) {\n noOperation()\n }\n },\n [getKetcherInstance]\n )\n\n const handleStereoEdit = useCallback(\n async ({ props }: ItemParams<ContextMenuShowProps, ItemData>) => {\n if (!props) {\n return\n }\n\n const editor = getKetcherInstance().editor as Editor\n const stereoAtomId: number = props.closestItem.id\n\n try {\n const action = await EnhancedStereoTool.changeAtomsStereoAction(\n editor,\n [stereoAtomId]\n )\n\n action && editor.update(action)\n } catch (error) {\n noOperation()\n }\n },\n [getKetcherInstance]\n )\n\n const handleDelete = useCallback(\n ({ props }: ItemParams<ContextMenuShowProps, ItemData>) => {\n const editor = getKetcherInstance().editor as Editor\n const atomId = props?.closestItem.id\n editor.update(fromOneAtomDeletion(editor.render.ctab, atomId))\n },\n [getKetcherInstance]\n )\n\n const isHidden = useCallback(\n ({ props }: PredicateParams<ContextMenuShowProps, ItemData>) =>\n props?.selected || props?.closestItem.map === 'bonds',\n []\n )\n\n const isStereoDisabled = useCallback(\n ({\n props,\n triggerEvent\n }: PredicateParams<ContextMenuShowProps, ItemData>) => {\n if (!props || isHidden({ props, triggerEvent })) {\n return true\n }\n\n const editor = getKetcherInstance().editor as Editor\n const stereoAtoms: undefined | number[] = findStereoAtoms(\n editor.struct(),\n [props.closestItem.id]\n )\n\n if (Array.isArray(stereoAtoms) && stereoAtoms.length !== 0) {\n return false\n }\n\n return true\n },\n [getKetcherInstance, isHidden]\n )\n\n return (\n <>\n <Item {...props} hidden={isHidden} onClick={handleEdit}>\n Edit...\n </Item>\n\n <Item\n {...props}\n hidden={isHidden}\n disabled={isStereoDisabled}\n onClick={handleStereoEdit}\n >\n Enhanced stereochemistry...\n </Item>\n\n <Item {...props} hidden={isHidden} onClick={handleDelete}>\n Delete\n </Item>\n </>\n )\n}\n\nexport default AtomSingleOperations\n","import { useCallback } from 'react'\nimport { Item } from 'react-contexify'\nimport { useAppContext } from 'src/hooks'\nimport Editor from 'src/script/editor'\nimport EraserTool from 'src/script/editor/tool/eraser'\nimport { CustomItemProps } from '../contextMenu.types'\nimport { isBatchOperationHidden } from './utils'\n\nexport const BatchDelete: React.FC<CustomItemProps> = (props) => {\n const { getKetcherInstance } = useAppContext()\n\n const handleClick = useCallback(() => {\n const editor = getKetcherInstance().editor as Editor\n\n // eslint-disable-next-line no-new\n new EraserTool(editor, 0)\n }, [getKetcherInstance])\n\n return (\n <Item {...props} hidden={isBatchOperationHidden} onClick={handleClick}>\n Delete\n </Item>\n )\n}\n","/****************************************************************************\n * Copyright 2022 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { fromBondsAttrs } from 'ketcher-core'\nimport { useCallback } from 'react'\nimport type { ItemParams, PredicateParams } from 'react-contexify'\nimport { Item, Submenu } from 'react-contexify'\nimport 'react-contexify/ReactContexify.css'\nimport { useAppContext } from 'src/hooks'\nimport Editor from 'src/script/editor'\nimport tools from 'src/script/ui/action/tools'\nimport Icon from 'src/script/ui/component/view/icon'\nimport { toBondType } from 'src/script/ui/data/convert/structconv'\nimport styles from '../ContextMenu.module.less'\nimport type {\n ItemData,\n ContextMenuShowProps,\n CustomItemProps,\n CustomSubMenuProps\n} from '../contextMenu.types'\nimport {\n formatTitle,\n getBondNames,\n noOperation,\n isBatchOperationHidden\n} from './utils'\n\nconst bondNames = getBondNames(tools)\n\nconst useDisabled = () => {\n const { getKetcherInstance } = useAppContext()\n\n const isDisabled = useCallback(\n ({\n props,\n triggerEvent\n }: PredicateParams<ContextMenuShowProps, ItemData>) => {\n if (isBatchOperationHidden({ props, triggerEvent })) {\n return true\n }\n\n const editor = getKetcherInstance().editor as Editor\n const selectedBondIds = editor.selection()?.bonds\n\n if (Array.isArray(selectedBondIds) && selectedBondIds.length !== 0) {\n return false\n }\n\n return true\n },\n [getKetcherInstance]\n )\n\n return isDisabled\n}\n\nexport const BondBatchEdit: React.FC<CustomItemProps> = (props) => {\n const { getKetcherInstance } = useAppContext()\n const isDisabled = useDisabled()\n\n const handleClick = useCallback(async () => {\n const editor = getKetcherInstance().editor as Editor\n const defaultBond = toBondType('single')\n\n try {\n const newBond = await editor.event.bondEdit.dispatch(defaultBond)\n const selectedBonds = editor.selection()?.bonds\n\n selectedBonds &&\n editor.update(\n fromBondsAttrs(editor.render.ctab, selectedBonds, newBond)\n )\n } catch (error) {\n noOperation()\n }\n }, [getKetcherInstance])\n\n return (\n <Item\n {...props}\n hidden={isBatchOperationHidden}\n disabled={isDisabled}\n onClick={handleClick}\n >\n Edit selected bond(s)...\n </Item>\n )\n}\n\nexport const BondTypeBatchChange: React.FC<CustomSubMenuProps> = (props) => {\n const { getKetcherInstance } = useAppContext()\n const isDisabled = useDisabled()\n\n const handleClick = useCallback(\n ({ id }: ItemParams<ContextMenuShowProps, ItemData>) => {\n const editor = getKetcherInstance().editor as Editor\n const selectedBonds = editor.selection()?.bonds\n const bondProps = tools[id].action.opts\n\n selectedBonds &&\n editor.update(\n fromBondsAttrs(editor.render.ctab, selectedBonds, bondProps)\n )\n },\n [getKetcherInstance]\n )\n\n return (\n <Submenu\n {...props}\n label=\"Bond type\"\n hidden={isBatchOperationHidden}\n disabled={isDisabled}\n className={styles.subMenu}\n >\n {bondNames.map((name) => (\n <Item id={name} onClick={handleClick} key={name}>\n <Icon name={name} className={styles.icon} />\n <span>{formatTitle(tools[name].title)}</span>\n </Item>\n ))}\n </Submenu>\n )\n}\n","/****************************************************************************\n * Copyright 2022 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { fromBondsAttrs, fromOneBondDeletion } from 'ketcher-core'\nimport { useCallback } from 'react'\nimport type { ItemParams, PredicateParams } from 'react-contexify'\nimport { Item, Submenu } from 'react-contexify'\nimport 'react-contexify/ReactContexify.css'\nimport { useAppContext } from 'src/hooks'\nimport Editor from 'src/script/editor'\nimport tools from 'src/script/ui/action/tools'\nimport Icon from 'src/script/ui/component/view/icon'\nimport styles from '../ContextMenu.module.less'\nimport type { ItemData, ContextMenuShowProps } from '../contextMenu.types'\nimport {\n formatTitle,\n getNonQueryBondNames,\n noOperation,\n queryBondNames\n} from './utils'\n\nconst nonQueryBondNames = getNonQueryBondNames(tools)\n\nconst BondSingleOperations: React.FC = (props) => {\n const { getKetcherInstance } = useAppContext()\n\n const handleEdit = useCallback(\n async ({ props }: ItemParams<ContextMenuShowProps, ItemData>) => {\n const editor = getKetcherInstance().editor as Editor\n const bondId = props?.closestItem.id\n const bond = editor.render.ctab.bonds.get(bondId)?.b\n\n try {\n const newBond = await editor.event.bondEdit.dispatch(bond)\n editor.update(fromBondsAttrs(editor.render.ctab, bondId, newBond))\n } catch (error) {\n noOperation()\n }\n },\n [getKetcherInstance]\n )\n\n const handleDelete = useCallback(\n ({ props }: ItemParams<ContextMenuShowProps, ItemData>) => {\n const editor = getKetcherInstance().editor as Editor\n const bondId = props?.closestItem.id\n\n editor.update(fromOneBondDeletion(editor.render.ctab, bondId))\n },\n [getKetcherInstance]\n )\n\n const handleTypeChange = useCallback(\n ({ id, props }: ItemParams<ContextMenuShowProps, ItemData>) => {\n const editor = getKetcherInstance().editor as Editor\n const bondId = props?.closestItem.id\n const bondProps = tools[id].action.opts\n\n editor.update(fromBondsAttrs(editor.render.ctab, bondId, bondProps))\n },\n [getKetcherInstance]\n )\n\n const isHidden = useCallback(\n ({ props }: PredicateParams<ContextMenuShowProps, ItemData>) =>\n props?.selected || props?.closestItem.map === 'atoms',\n []\n )\n\n return (\n <>\n <Item {...props} hidden={isHidden} onClick={handleEdit}>\n Edit...\n </Item>\n\n {nonQueryBondNames.map((name) => (\n <Item\n {...props}\n hidden={isHidden}\n id={name}\n onClick={handleTypeChange}\n key={name}\n >\n <Icon name={name} className={styles.icon} />\n <span>{formatTitle(tools[name].title)}</span>\n </Item>\n ))}\n\n <Submenu\n {...props}\n label=\"Query bonds\"\n hidden={isHidden}\n className={styles.subMenu}\n >\n {queryBondNames.map((name) => (\n <Item id={name} onClick={handleTypeChange} key={name}>\n <Icon name={name} className={styles.icon} />\n <span>{formatTitle(tools[name].title)}</span>\n </Item>\n ))}\n </Submenu>\n\n <Item {...props} hidden={isHidden} onClick={handleDelete}>\n Delete\n </Item>\n </>\n )\n}\n\nexport default BondSingleOperations\n","/****************************************************************************\n * Copyright 2022 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Menu } from 'react-contexify'\nimport 'react-contexify/ReactContexify.css'\nimport styles from './ContextMenu.module.less'\nimport { AtomBatchEdit, AtomStereoBatchEdit } from './items/AtomBatchOperations'\nimport AtomSingleOperations from './items/AtomSingleOperations'\nimport { BatchDelete } from './items/BatchDelete'\nimport { BondBatchEdit, BondTypeBatchChange } from './items/BondBatchOperations'\nimport BondSingleOperations from './items/BondSingleOperations'\n\nexport const CONTEXT_MENU_ID = 'ketcherBondAndAtomContextMenu'\n\nconst ContextMenu: React.FC = () => {\n return (\n <Menu\n id={CONTEXT_MENU_ID}\n animation={false}\n className={`${CONTEXT_MENU_ID} ${styles.contextMenu}`}\n >\n <BondSingleOperations />\n <AtomSingleOperations />\n\n <BondBatchEdit />\n <AtomBatchEdit />\n <BondTypeBatchChange />\n <AtomStereoBatchEdit />\n <BatchDelete />\n </Menu>\n )\n}\n\nexport default ContextMenu\n","/****************************************************************************\n * Copyright 2022 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { FunctionalGroup } from 'ketcher-core'\nimport { useCallback } from 'react'\nimport { useContextMenu } from 'react-contexify'\nimport { useAppContext } from 'src/hooks'\nimport Editor from 'src/script/editor'\nimport { CONTEXT_MENU_ID } from './ContextMenu'\nimport type { ContextMenuShowProps } from './contextMenu.types'\n\n/**\n * Initially, library itself should find a proper position for a menu\n * But sometimes it doesn't work correctly, so that's why fix is applied\n */\nconst fixContextMenuPosition = () => {\n const contextMenu: HTMLDivElement | null = document.querySelector(\n `.${CONTEXT_MENU_ID}`\n )\n if (contextMenu) {\n const computedStyles = getComputedStyle(contextMenu)\n const contextMenuHeight = parseInt(computedStyles.height)\n const currentTopPosition = parseInt(contextMenu.style.top)\n const screenSize = document.body.clientHeight\n if (currentTopPosition + contextMenuHeight > screenSize) {\n contextMenu.style.top = screenSize - contextMenuHeight + 'px'\n }\n }\n}\n\nconst ContextMenuTrigger: React.FC = ({ children }) => {\n const { getKetcherInstance } = useAppContext()\n const { show, hideAll } = useContextMenu<ContextMenuShowProps>({\n id: CONTEXT_MENU_ID\n })\n\n /**\n * Resolve conflicts with the existing functional-group context menu\n * Note: the following scenarios are compatible with the existing logic process,\n * but maybe will change after refactoring the functional-group context menu.\n *\n * Scenario 1\n * Given: an expanded functional group\n * When: the user right-clicks a bond in the f-group\n * Then: only the functional-group context menu shows\n *\n * Scenario 2\n * Given: the user has selected a bunch of things including functional groups\n * When: the user right-clicks a selected or non-selected bond\n * Then: only the functional-group context menu shows\n *\n * More details: https://github.com/epam/ketcher/pull/1896\n */\n const hasConflictWithFunctionalGroupMenu = useCallback(\n (closestItem: any) => {\n const editor = getKetcherInstance().editor as Editor\n const struct = editor.struct()\n\n const functionalGroupId = FunctionalGroup.findFunctionalGroupByBond(\n struct,\n struct.functionalGroups,\n closestItem.id\n )\n const hasRelatedSGroup = struct.functionalGroups.some(\n (item) => item.relatedSGroupId === functionalGroupId\n )\n\n if (functionalGroupId !== null && hasRelatedSGroup) {\n return true\n }\n\n const selection = editor.selection()\n\n if (selection?.atoms) {\n const hasSelectedFunctionalGroup = selection.atoms.some((atomId) => {\n const functionalGroupId = FunctionalGroup.findFunctionalGroupByAtom(\n struct.functionalGroups,\n atomId\n )\n const hasRelatedSGroupId = struct.functionalGroups.some(\n (item) => item.relatedSGroupId === functionalGroupId\n )\n return functionalGroupId !== null && hasRelatedSGroupId\n })\n if (hasSelectedFunctionalGroup) {\n return true\n }\n }\n\n return false\n },\n [getKetcherInstance]\n )\n\n const handleDisplay = useCallback<React.MouseEventHandler<HTMLDivElement>>(\n (event) => {\n const editor = getKetcherInstance().editor as Editor\n const closestItem = editor.findItem(event, null)\n\n if (!closestItem) {\n hideAll()\n return\n }\n\n if (hasConflictWithFunctionalGroupMenu(closestItem)) {\n hideAll()\n return\n }\n\n const selection = editor.selection()\n const isRightClickingSelection: number | undefined = selection?.[\n closestItem.map\n ]?.findIndex((selectedItemId) => selectedItemId === closestItem.id)\n\n if (\n isRightClickingSelection !== undefined &&\n isRightClickingSelection !== -1\n ) {\n // Show menu items for batch updates\n show({\n event,\n props: {\n selected: true,\n closestItem\n }\n })\n } else if (closestItem.map === 'bonds' || closestItem.map === 'atoms') {\n // Show menu items for single update\n if (selection) {\n editor.render.ctab.setSelection(null)\n }\n show({\n event,\n props: { selected: false, closestItem }\n })\n }\n fixContextMenuPosition()\n },\n [getKetcherInstance, hasConflictWithFunctionalGroupMenu, hideAll, show]\n )\n\n return (\n <div style={{ height: '100%' }} onContextMenu={handleDisplay}>\n {children}\n </div>\n )\n}\n\nexport default ContextMenuTrigger\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Component, ComponentType, createRef } from 'react'\nimport { MolSerializer, Struct } from 'ketcher-core'\nimport { RenderStruct } from '../utils'\ninterface StructRenderProps {\n struct: Struct\n options: any\n id?: any\n Tag?: string | ComponentType<any>\n}\n\nclass StructRender extends Component<StructRenderProps> {\n tagRef: React.RefObject<HTMLElement>\n constructor(props) {\n super(props)\n this.tagRef = createRef()\n }\n\n shouldComponentUpdate(previousProps) {\n return Boolean(this.props.id && this.props.id !== previousProps.id)\n }\n\n update() {\n const el = this.tagRef.current\n const { struct, options } = this.props\n let parsedStruct: Struct | null\n if (!(struct instanceof Struct)) {\n try {\n const molSerialzer = new MolSerializer()\n parsedStruct = molSerialzer.deserialize(struct)\n } catch (e) {\n // TODO: add error handler call\n // legacy message: Could not parse structure\n parsedStruct = null\n }\n } else {\n parsedStruct = struct\n }\n el?.childNodes.forEach((node) => {\n node.remove()\n })\n RenderStruct.render(el, parsedStruct, options)\n }\n\n componentDidMount() {\n this.update()\n }\n\n componentDidUpdate() {\n this.update()\n }\n\n render() {\n const { struct, Tag = 'div', ...props } = this.props\n return (\n <Tag ref={this.tagRef} /* ref=\"el\" */ {...props}>\n {struct ? null : 'No molecule'}\n </Tag>\n )\n }\n}\n\nexport default StructRender\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nexport const functionalGroupsSelector = (state) => state.functionalGroups.lib\nexport const functionGroupInfoSelector = (state) =>\n state.functionalGroups.functionalGroupInfo\nexport const modeSelector = (state) => state.functionalGroups.mode\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { useState, useEffect, useRef, FC } from 'react'\nimport { Scale, Vec2, Render, Struct, SGroup } from 'ketcher-core'\n\nimport StructRender from '../../../component/structrender'\nimport { functionGroupInfoSelector } from '../../../state/functionalGroups/selectors'\nimport { connect } from 'react-redux'\nimport clsx from 'clsx'\n\nimport classes from './InfoPanel.module.less'\n\nconst HOVER_DELAY = 400\nconst HOVER_PANEL_PADDING = 20\n\nfunction getSGroupFirstAtom(sGroup: SGroup, render: Render): Vec2 {\n const { firstSgroupAtom } = sGroup\n if (firstSgroupAtom) return firstSgroupAtom.pp\n const [firstAtomId] = sGroup.atoms\n return render.ctab.atoms?.get(firstAtomId)?.a.pp || new Vec2(0, 0)\n}\n\nfunction getPanelPosition(\n clientX: number,\n clientY: number,\n render: Render,\n sGroup: SGroup\n): [Vec2, Vec2] {\n let width = 0\n let height = 0\n let x = 0\n let y = 0\n\n if (sGroup) {\n // calculate width and height\n const groupBoundingBox = sGroup.areas[0]\n const start = Scale.obj2scaled(groupBoundingBox.p0, render.options)\n const end = Scale.obj2scaled(groupBoundingBox.p1, render.options)\n width = end.x - start.x\n height = end.y - start.y\n // calculate initial position\n const firstAtomPosition = getSGroupFirstAtom(sGroup, render)\n const panelPosition = Scale.obj2scaled(firstAtomPosition, {\n scale: render.options.scale * render.options.zoom\n })\n x = panelPosition.x - width / 2 - HOVER_PANEL_PADDING\n y = panelPosition.y + HOVER_PANEL_PADDING\n // adjust position to keep inside viewport\n const viewportRightLimit = render?.clientArea?.clientWidth - width / 2\n const viewportLeftLimit = HOVER_PANEL_PADDING * 2 + width / 2\n const viewportBottomLimit = render?.clientArea?.clientHeight - height\n if (clientX > viewportRightLimit) {\n x = panelPosition.x - width - HOVER_PANEL_PADDING\n } else if (clientX < viewportLeftLimit) {\n x = panelPosition.x - HOVER_PANEL_PADDING\n }\n if (clientY > viewportBottomLimit) {\n y = panelPosition.y - height - HOVER_PANEL_PADDING * 3\n }\n // adjust position to current scroll offset\n const scrollOffsetX =\n render?.options.offset?.x - render?.clientArea?.scrollLeft\n const scrollOffsetY =\n render?.options?.offset?.y - render?.clientArea?.scrollTop\n x += scrollOffsetX\n y += scrollOffsetY\n }\n\n return [new Vec2(x, y), new Vec2(width, height)]\n}\n\ninterface InfoPanelProps {\n clientX: number\n clientY: number\n render: Render\n groupStruct: Struct\n sGroup: SGroup\n className?: string\n}\n\nconst InfoPanel: FC<InfoPanelProps> = (props) => {\n const {\n clientX = 0,\n clientY = 0,\n render,\n className,\n groupStruct,\n sGroup\n } = props\n const [molecule, setMolecule] = useState<Struct | null>(null)\n const [sGroupData, setSGroupData] = useState<string | null>(null)\n const childRef = useRef(null)\n const groupName = sGroup?.data?.name\n\n useEffect(() => {\n if (!groupStruct && sGroup?.type === 'DAT') {\n setSGroupData(`${sGroup.data?.fieldName}=${sGroup.data?.fieldValue}`)\n } else {\n setSGroupData(null)\n }\n }, [groupStruct, sGroup])\n\n useEffect(() => {\n let timer\n if (groupStruct) {\n timer = setTimeout(() => {\n setMolecule(groupStruct.clone())\n }, HOVER_DELAY)\n } else {\n setMolecule(null)\n }\n return () => clearTimeout(timer)\n }, [groupName, groupStruct])\n\n const [position, size] = getPanelPosition(clientX, clientY, render, sGroup)\n const { x, y } = position\n const width = size.x\n const height = size.y\n\n if (!molecule && !sGroupData) {\n return null\n }\n\n return molecule ? (\n <div\n style={{\n left: x + 'px',\n top: y + 'px'\n }}\n className={clsx(classes.infoPanel, className)}\n >\n <StructRender\n struct={molecule}\n id={groupName}\n ref={childRef}\n options={{\n ...render.options,\n autoScale: true,\n autoScaleMargin: 0,\n rescaleAmount: 1,\n cachePrefix: 'infoPanel',\n viewSz: new Vec2(width, height),\n width: width,\n height: height\n }}\n />\n </div>\n ) : (\n <div\n style={{\n left: x + 'px',\n top: y + 'px'\n }}\n className={clsx(classes.infoPanel, className)}\n >\n {sGroupData}\n </div>\n )\n}\n\nexport default connect((store: any) => ({\n clientX: functionGroupInfoSelector(store)?.event?.clientX || 0,\n clientY: functionGroupInfoSelector(store)?.event?.clientY || 0,\n groupStruct: functionGroupInfoSelector(store)?.groupStruct || null,\n sGroup: functionGroupInfoSelector(store)?.sGroup || null,\n render: store.editor?.render?.ctab?.render\n}))(InfoPanel)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Component, createRef } from 'react'\nimport {\n ContextMenuTrigger as FunctionalGroupTrigger,\n hideMenu\n} from 'react-contextmenu'\n\nimport Editor from '../../../../editor'\nimport { FGContextMenu } from '../../../component/ContextMenu/ContextMenu'\nimport { LoadingCircles } from '../Spinner/LoadingCircles'\nimport classes from './StructEditor.module.less'\nimport clsx from 'clsx'\nimport { upperFirst } from 'lodash/fp'\nimport handIcon from '../../../../../icons/files/hand.svg'\nimport compressedHandIcon from '../../../../../icons/files/compressed-hand.svg'\nimport Cursor from '../Cursor'\nimport { ContextMenu, ContextMenuTrigger } from '../ContextMenu'\n\nimport InfoPanel from './InfoPanel'\n\n// TODO: need to update component after making refactoring of store\nfunction setupEditor(editor, props, oldProps = {}) {\n const { struct, tool, toolOpts, options } = props\n\n if (struct !== oldProps.struct) editor.struct(struct)\n\n if (tool !== oldProps.tool || toolOpts !== oldProps.toolOpts) {\n editor.tool(tool, toolOpts)\n if (toolOpts !== oldProps.toolOpts) {\n editor.event.message.dispatch({ info: JSON.stringify(toolOpts) })\n }\n }\n\n if (oldProps.options && options !== oldProps.options) editor.options(options)\n\n Object.keys(editor.event).forEach((name) => {\n const eventName = `on${upperFirst(name)}`\n\n if (props[eventName] !== oldProps[eventName]) {\n if (oldProps[eventName]) {\n editor.event[name].remove(oldProps[eventName])\n }\n\n if (props[eventName]) {\n editor.event[name].add(props[eventName])\n }\n }\n })\n}\n\nfunction removeEditorHandlers(editor, props) {\n Object.keys(editor.event).forEach((name) => {\n const eventName = `on${upperFirst(name)}`\n\n if (props[eventName]) editor.event[name].remove(props[eventName])\n })\n}\n\nclass StructEditor extends Component {\n constructor(props) {\n super(props)\n this.state = {\n enableCursor: false,\n clientX: 0,\n clientY: 0\n }\n this.editorRef = createRef()\n this.logRef = createRef()\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n return (\n this.props.indigoVerification !== nextProps.indigoVerification ||\n nextState.enableCursor !== this.state.enableCursor\n )\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n setupEditor(this.editor, props, this.props)\n }\n\n componentDidMount() {\n this.editor = new Editor(this.editorRef.current, {\n ...this.props.options\n })\n setupEditor(this.editor, this.props)\n if (this.props.onInit) this.props.onInit(this.editor)\n\n this.editor.event.message.add((msg) => {\n const el = this.logRef.current\n if (msg.info && this.props.showAttachmentPoints) {\n try {\n const parsedInfo = JSON.parse(msg.info)\n el.innerHTML = `Atom Id: ${parsedInfo.atomid}, Bond Id: ${parsedInfo.bondid}`\n } catch {\n el.innerHTML = msg.info\n }\n el.classList.add(classes.visible)\n } else {\n el.classList.remove(classes.visible)\n }\n })\n\n this.editor.event.cursor.add((csr) => {\n switch (csr.status) {\n case 'enable':\n this.editorRef.current.classList.add(classes.enableCursor)\n const { left, top, right, bottom } =\n this.editorRef.current.getBoundingClientRect()\n const { clientX, clientY } = csr.cursorPosition\n const handShouldBeShown =\n clientX >= left &&\n clientX <= right &&\n clientY >= top &&\n clientX <= bottom\n if (!this.state.enableCursor && handShouldBeShown) {\n this.setState({\n enableCursor: true\n })\n }\n break\n case 'move':\n this.editorRef.current.classList.add(classes.enableCursor)\n this.setState({\n enableCursor: true,\n clientX,\n clientY\n })\n break\n case 'disable':\n this.editorRef.current.classList.remove(classes.enableCursor)\n this.setState({\n enableCursor: false\n })\n break\n case 'leave':\n this.editorRef.current.classList.remove(classes.enableCursor)\n this.setState({\n enableCursor: false\n })\n break\n case 'mouseover':\n this.editorRef.current.classList.add(classes.enableCursor)\n this.setState({\n enableCursor: true\n })\n break\n default:\n break\n }\n })\n\n this.editor.event.message.dispatch({\n info: JSON.stringify(this.props.toolOpts)\n })\n }\n\n componentWillUnmount() {\n removeEditorHandlers(this.editor, this.props)\n }\n\n render() {\n const {\n Tag = 'div',\n struct,\n tool,\n toolOpts,\n options,\n onInit,\n onSelectionChange,\n onElementEdit,\n onEnhancedStereoEdit,\n onQuickEdit,\n onBondEdit,\n onRgroupEdit,\n onSgroupEdit,\n onSdataEdit,\n onRemoveFG,\n onMessage,\n onAromatizeStruct,\n onDearomatizeStruct,\n onAttachEdit,\n indigoVerification,\n onCipChange,\n className,\n onConfirm,\n onShowInfo,\n showAttachmentPoints = true,\n ...props\n } = this.props\n\n const { clientX = 0, clientY = 0 } = this.state\n\n return (\n <Tag\n className={clsx(classes.canvas, className)}\n onMouseDown={(event) => event.preventDefault()}\n {...props}\n >\n <FunctionalGroupTrigger\n id=\"contextmenu\"\n attributes={{\n onClick: hideMenu\n }}\n holdToDisplay={-1}\n >\n <ContextMenuTrigger>\n <div\n ref={this.editorRef}\n className={clsx(classes.intermediateCanvas)}\n onMouseDown={(event) => event.preventDefault()}\n >\n {/* svg here */}\n </div>\n <Cursor\n Icon={handIcon}\n PressedIcon={compressedHandIcon}\n enableHandTool={this.state.enableCursor}\n />\n <div className={classes.measureLog} ref={this.logRef} />\n {indigoVerification && (\n <div className={classes.spinnerOverlay}>\n <LoadingCircles />\n </div>\n )}\n </ContextMenuTrigger>\n </FunctionalGroupTrigger>\n <InfoPanel\n clientX={clientX}\n clientY={clientY}\n render={this.props.render}\n groupStruct={this.props.groupStruct}\n sGroup={this.props.sGroup}\n />\n <FGContextMenu />\n <ContextMenu />\n </Tag>\n )\n }\n}\n\nexport default StructEditor\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Dialog } from '../../../../components'\nimport Logo from './logo.svg'\nimport classes from './About.module.less'\nimport { connect } from 'react-redux'\nimport { Fragment } from 'react'\n\nfunction AboutDialog(props) {\n const indigoInfo = props.indigoVersion && props.indigoVersion.split('.r') // Indigo version and build info\n\n return (\n <Dialog\n className={`${classes.about} ${classes.dialog_body}`}\n params={props}\n buttons={[\n <button onClick={props.onOk} className={classes.okButton} key=\"ok\">\n Ok\n </button>\n ]}\n >\n <div className={classes.headerContent}>\n <a href={props.overviewLink} target=\"_blank\" rel=\"noopener noreferrer\">\n <Logo />\n <span className={classes.title}>Ketcher</span>\n </a>\n </div>\n <div className={classes.body}>\n <div className={classes.verionsInfo}>\n <dl className={classes.ketcherVersionInfo}>\n <dt>\n <a\n href={props.overviewLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Version {props.version}\n </a>\n </dt>\n <dd>\n Build at <time>{props.date}</time>\n </dd>\n <div className={classes.infoLinks}>\n <dt>\n <a\n href={props.feedbackLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Feedback\n </a>\n </dt>\n <dt>\n <a\n href={props.lifeScienciesLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Epam Life Sciencies\n </a>\n </dt>\n </div>\n <br />\n <div class={classes.indigoVersion}>\n <a\n href=\"http://lifescience.opensource.epam.com/indigo/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {' '}\n Indigo Toolkit\n </a>\n {props.indigoMachine && <div>{props.indigoMachine}</div>}\n </div>\n <div>\n {props.indigoVersion ? (\n <Fragment>\n <dd>Version {indigoInfo[0]}</dd>\n {indigoInfo[1] && <dd>Build {indigoInfo[1]}</dd>}\n </Fragment>\n ) : (\n <p>Standalone</p>\n )}\n </div>\n </dl>\n </div>\n </div>\n </Dialog>\n )\n}\n\nconst mapStateToProps = (state) => ({\n date: state.options.app.buildDate.replace('T', '; '),\n indigoVersion: state.options.app.indigoVersion,\n indigoMachine: state.options.app.indigoMachine,\n feedbackLink: 'http://lifescience.opensource.epam.com/ketcher/#feedback',\n overviewLink: 'https://lifescience.opensource.epam.com/ketcher/index.html',\n lifeScienciesLink: 'http://lifescience.opensource.epam.com/',\n version: state.options.app.version\n})\n\nconst mapDispatchToProps = (dispatch) => ({\n onOk: (_result) => {\n dispatch({ type: 'MODAL_CLOSE' })\n }\n})\n\nconst About = connect(mapStateToProps, mapDispatchToProps)(AboutDialog)\n\nexport default About\n","/****************************************************************************\n * Copyright 2022 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { forwardRef } from 'react'\nimport { Popover } from '@mui/material'\nimport styled from '@emotion/styled'\n\nconst ErrorMessage = styled(Popover)`\n & .MuiPopover-paper {\n padding: 0 8px;\n box-shadow: 4px 0px, 2px rgba(0, 0, 0, 0.25);\n font-size: 12px;\n max-width: 160px;\n }\n`\n\nexport const ErrorPopover = ({ error, anchorEl, handleClose }) => (\n <ErrorMessage\n id=\"form-error\"\n open={true}\n anchorEl={anchorEl}\n disableAutoFocus\n sx={{\n pointerEvents: 'none'\n }}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n >\n <>\n {/* <p style={{ color: 'red' }}>Will work properly if:</p> TODO: uncomment when error messages are changed */}\n <p>{error}</p>\n </>\n </ErrorMessage>\n)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport React, { PureComponent, ComponentType, useRef, useEffect } from 'react'\n\nimport classes from './input.module.less'\nimport clsx from 'clsx'\n\ntype Props = {\n component?: ComponentType\n children?: React.ReactNode\n className?: string\n type: string\n value: number | string | boolean\n onChange: (val: any) => void\n placeholder?: string\n isFocused?: boolean\n innerRef?: React.Ref<any>\n schema?: any\n multiple?: boolean\n}\n\nexport function GenericInput({\n schema,\n value = '',\n onChange,\n innerRef,\n type = 'text',\n isFocused = false,\n ...props\n}) {\n const inputRef = useRef<HTMLInputElement>(innerRef)\n\n useEffect(() => {\n if (innerRef && inputRef.current) {\n innerRef.current = inputRef.current\n }\n }, [innerRef])\n\n useEffect(() => {\n if (inputRef.current && isFocused) {\n inputRef.current.focus()\n }\n }, [inputRef, isFocused])\n\n return (\n <>\n <input\n type={type}\n value={value}\n onInput={onChange}\n onChange={onChange}\n className={clsx(classes.input, classes.genericInput)}\n ref={inputRef}\n {...props}\n />\n {type === 'checkbox' && <span className={classes.checkbox} />}\n {type === 'radio' && <span className={classes.radioButton} />}\n </>\n )\n}\n\nGenericInput.val = function (ev, schema) {\n const input = ev.target\n const isNumber =\n input.type === 'number' ||\n input.type === 'range' ||\n (schema && (schema.type === 'number' || schema.type === 'integer'))\n const value = isNumber ? input.value.replace(/,/g, '.') : input.value\n\n return isNumber && !isNaN(value - 0) ? value - 0 : value // eslint-disable-line\n}\n\nfunction TextArea({ schema, value, onChange, ...rest }) {\n return <textarea value={value} onInput={onChange} {...rest} />\n}\n\nTextArea.val = (ev) => ev.target.value\n\nfunction CheckBox({ schema, value = '', onChange, innerRef, ...rest }) {\n return (\n <div className={classes.fieldSetItem}>\n <input\n type=\"checkbox\"\n checked={Boolean(value)}\n onClick={onChange}\n onChange={onChange}\n className={classes.input}\n ref={innerRef}\n {...rest}\n />\n <span className={classes.checkbox} />\n </div>\n )\n}\n\nCheckBox.val = function (ev) {\n ev.stopPropagation()\n return !!ev.target.checked\n}\n\nfunction Select({\n schema,\n value,\n name,\n onSelect,\n className,\n multiple = false\n}) {\n return (\n <select\n onChange={onSelect}\n value={value}\n name={name}\n multiple={multiple}\n className={clsx(classes.select, className)}\n >\n {enumSchema(schema, (title, val) => (\n <option key={val} value={val}>\n {title}\n </option>\n ))}\n </select>\n )\n}\n\nSelect.val = function (ev, schema) {\n const select = ev.target as HTMLSelectElement\n if (!select.multiple) return enumSchema(schema, select.selectedIndex)\n\n const options = select.options\n\n return Array.from(options).reduce(\n (res, o: HTMLOptionElement, i) =>\n !o.selected ? res : [enumSchema(schema, i), ...res],\n [] as HTMLOptionElement[]\n )\n}\n\nfunction FieldSet({\n schema,\n value,\n selected,\n onSelect,\n type = 'radio',\n checked,\n ...rest\n}) {\n return (\n <fieldset onClick={onSelect}>\n {enumSchema(schema, (title, val) => (\n <li key={title} className={classes.fieldSetItem}>\n <label className={classes.fieldSetLabel}>\n <input\n type={type}\n defaultChecked={\n type === 'radio' ? selected(val, checked) : selected(val, value)\n }\n value={typeof val !== 'object' && val}\n className={classes.input}\n {...rest}\n />\n {type === 'checkbox' && <span className={classes.checkbox} />}\n {type === 'radio' && <span className={classes.radioButton} />}\n {title}\n </label>\n </li>\n ))}\n </fieldset>\n )\n}\n\nFieldSet.val = function (ev, schema) {\n const input = ev.target as HTMLInputElement\n\n if (ev.target.tagName !== 'INPUT') {\n ev.stopPropagation()\n return undefined\n }\n\n // Hm.. looks like premature optimization\n // should we inline this?\n\n const fieldset = input?.parentNode?.parentNode?.parentNode\n const inputCollection = fieldset?.querySelectorAll('input')\n let result\n\n if (inputCollection?.length) {\n result = Array.from(inputCollection).reduce(\n (res, inp: HTMLInputElement, i) =>\n !inp.checked ? res : [enumSchema(schema, i), ...res],\n\n [] as HTMLInputElement[]\n )\n }\n\n return input.type === 'radio' ? result[0] : result\n}\n\nfunction Slider({ value, onChange, name, ...rest }) {\n return (\n <div className={classes.slider} key={name}>\n <input\n type=\"checkbox\"\n checked={value}\n onClick={onChange}\n onChange={onChange}\n name={name}\n {...rest}\n />\n <span />\n </div>\n )\n}\n\nSlider.val = function (ev) {\n ev.stopPropagation()\n return !!ev.target.checked\n}\n\nfunction enumSchema(schema, cbOrIndex) {\n const isTypeValue = Array.isArray(schema)\n if (!isTypeValue && schema.items) schema = schema.items\n\n if (typeof cbOrIndex === 'function') {\n return (isTypeValue ? schema : schema.enum).map((item, i) => {\n const title = isTypeValue\n ? item.title\n : schema.enumNames && schema.enumNames[i]\n return cbOrIndex(\n title !== undefined ? title : item,\n item && item.value !== undefined ? item.value : item\n )\n })\n }\n\n if (!isTypeValue) return schema.enum[cbOrIndex]\n\n const res = schema[cbOrIndex]\n return res.value !== undefined ? res.value : res\n}\n\nfunction inputCtrl(component, schema, onChange) {\n let props = {}\n if (schema) {\n // TODO: infer maxLength, min, max, step, etc\n if (schema.type === 'number' || schema.type === 'integer')\n props = { type: 'text' }\n }\n\n return {\n onChange: (ev) => {\n const val = !component.val ? ev : component.val(ev, schema)\n onChange(val)\n },\n ...props\n }\n}\n\nfunction singleSelectCtrl(component, schema, onChange) {\n return {\n selected: (testVal, value) => value === testVal,\n onSelect: (ev) => {\n const val = !component.val ? ev : component.val(ev, schema)\n if (val !== undefined) onChange(val)\n }\n }\n}\n\nfunction multipleSelectCtrl(component, schema, onChange) {\n return {\n multiple: true,\n selected: (testVal, values) => values && values.indexOf(testVal) >= 0,\n onSelect: (ev, values) => {\n if (component.val) {\n const val = component.val(ev, schema)\n if (val !== undefined) onChange(val)\n } else {\n const i = values ? values.indexOf(ev) : -1\n if (i < 0) onChange(values ? [ev, ...values] : [ev])\n else onChange([...values.slice(0, i), ...values.slice(i + 1)])\n }\n }\n }\n}\n\nfunction ctrlMap(component, props: Props) {\n const { schema, multiple, onChange } = props\n if (\n !schema ||\n (!schema.enum && !schema.items && !Array.isArray(schema)) ||\n schema.type === 'string'\n )\n return inputCtrl(component, schema, onChange)\n\n if (multiple || schema.type === 'array')\n return multipleSelectCtrl(component, schema, onChange)\n\n return singleSelectCtrl(component, schema, onChange)\n}\n\nfunction componentMap(props: Props) {\n const { schema, type, multiple } = props\n if (!schema || (!schema.enum && !schema.items && !Array.isArray(schema))) {\n if (type === 'checkbox' || (schema && schema.type === 'boolean')) {\n return CheckBox\n }\n\n return type === 'textarea' ? TextArea : GenericInput\n }\n\n if (schema?.type === 'boolean' && schema?.description === 'slider') {\n return Slider\n }\n\n if (multiple || schema.type === 'array')\n return type === 'checkbox' ? FieldSet : Select\n\n return type === 'radio' ? FieldSet : Select\n}\n\nconst AnyComponentWithRef = React.forwardRef(\n ({ Component, ...props }: any, ref) => <Component {...props} innerRef={ref} />\n)\n\nclass Input extends PureComponent<\n Props & { innerRef: React.Ref<HTMLInputElement> }\n> {\n component: any\n ctrl: {\n type?: string\n onChange?: (val: any) => void\n onSelect?: (ev, values) => void\n selected?: (testVal: any, value: any) => boolean\n multiple?: boolean\n }\n\n constructor(props: Props & { innerRef: React.Ref<HTMLInputElement> }) {\n super(props)\n this.component = props.component || componentMap(props)\n this.ctrl = ctrlMap(this.component, props)\n }\n\n render() {\n const { children, onChange, ...restProps } = this.props\n\n return (\n <AnyComponentWithRef\n Component={this.component}\n ref={this.props.innerRef}\n {...this.ctrl}\n {...restProps}\n />\n )\n }\n}\n\nexport default React.forwardRef(\n (props: Props, ref: React.Ref<HTMLInputElement>) => (\n <Input innerRef={ref} {...props} />\n )\n)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport MuiSelect, { SelectChangeEvent } from '@mui/material/Select'\nimport MenuItem from '@mui/material/MenuItem'\nimport { useEffect, useState } from 'react'\nimport clsx from 'clsx'\nimport styles from './Select.module.less'\n\nimport Icon from '../../view/icon'\n\nexport interface Option {\n value: string\n label: string\n}\n\ninterface Props {\n options: Array<Option>\n onChange: (value: string) => void\n className?: string\n value?: string\n multiple?: boolean\n disabled?: boolean\n}\n\nconst ChevronIcon = ({ className }) => (\n <Icon name=\"chevron\" className={clsx(className, styles.chevronIcon)} />\n)\n\nconst Select = ({\n className,\n value,\n onChange,\n multiple = false,\n disabled,\n options\n}: Props) => {\n const [currentValue, setCurrentValue] = useState<Option>()\n\n useEffect(() => {\n let option\n if (options) {\n option = options.find((option) => option.value === value)\n }\n return setCurrentValue(option)\n }, [options, value])\n\n const handleChange = (event: SelectChangeEvent) => {\n onChange(event.target.value)\n }\n\n return (\n <MuiSelect\n className={clsx(styles.selectContainer, className)}\n value={currentValue?.value ?? ''}\n onChange={handleChange}\n multiple={multiple}\n disabled={disabled}\n MenuProps={{ className: styles.dropdownList }}\n IconComponent={ChevronIcon}\n >\n {options &&\n options.map((option) => {\n return (\n <MenuItem\n value={option.value}\n key={option.value}\n disableRipple={true}\n >\n {option.label}\n </MenuItem>\n )\n })}\n </MuiSelect>\n )\n}\n\nexport default Select\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Component, useCallback, useState } from 'react'\n\nimport Ajv from 'ajv'\nimport { ErrorPopover } from './errorPopover'\nimport { FormContext } from '../../../../../contexts'\nimport Input from '../input'\nimport Select from '../Select'\nimport classes from './form.module.less'\nimport clsx from 'clsx'\nimport { connect } from 'react-redux'\nimport { getSelectOptionsFromSchema } from '../../../utils'\nimport { updateFormState } from '../../../state/modal/form'\nimport { useFormContext } from '../../../../../hooks'\nimport { cloneDeep } from 'lodash'\n\nclass Form extends Component {\n constructor(props) {\n super(props)\n const { onUpdate, schema, init } = this.props\n\n this.schema = propSchema(schema, props)\n\n if (init) {\n const { valid, errors } = this.schema.serialize(init)\n const errs = getErrorsObj(errors)\n const initialState = { ...init, init: true }\n onUpdate(initialState, valid, errs)\n }\n }\n\n componentDidUpdate(prevProps) {\n const { schema, result, customValid, ...rest } = this.props\n if (schema.key && schema.key !== prevProps.schema.key) {\n this.schema = propSchema(schema, rest)\n this.schema.serialize(result) // hack: valid first state\n this.updateState(result)\n }\n }\n\n updateState(newState) {\n const { onUpdate } = this.props\n const { instance, valid, errors } = this.schema.serialize(newState)\n const errs = getErrorsObj(errors)\n onUpdate(instance, valid, errs)\n }\n\n field(name, onChange) {\n const { result, errors } = this.props\n const value = result[name]\n\n return {\n dataError: errors && errors[name],\n value,\n onChange: (val) => {\n const newState = Object.assign({}, this.props.result, { [name]: val })\n this.updateState(newState)\n if (onChange) onChange(val)\n }\n }\n }\n\n render() {\n const { schema, children } = this.props\n\n return (\n <form>\n <FormContext.Provider value={{ schema, stateStore: this }}>\n {children}\n </FormContext.Provider>\n </form>\n )\n }\n}\n\nexport default connect(null, (dispatch) => ({\n onUpdate: (result, valid, errors) => {\n dispatch(updateFormState({ result, valid, errors }))\n }\n}))(Form)\n\nfunction Label({ labelPos, title, children, ...props }) {\n return (\n <label {...props}>\n {title && labelPos !== 'after' ? <span>{title}</span> : ''}\n {children}\n {title && labelPos === 'after' ? <span>{title}</span> : ''}\n </label>\n )\n}\n\nfunction Field(props) {\n const { name, onChange, component, labelPos, className, ...rest } = props\n const [anchorEl, setAnchorEl] = useState(null)\n const handlePopoverOpen = useCallback((event) => {\n setAnchorEl(event.currentTarget)\n }, [])\n const handlePopoverClose = useCallback(() => {\n setAnchorEl(null)\n }, [])\n const { schema, stateStore } = useFormContext()\n const desc = rest.schema || schema.properties[name]\n const { dataError, ...fieldOpts } = stateStore.field(name, onChange)\n const Component = component\n const formField = component ? (\n <Component name={name} schema={desc} {...fieldOpts} {...rest} />\n ) : (\n <Input name={name} schema={desc} {...fieldOpts} {...rest} />\n )\n\n if (labelPos === false) return formField\n return (\n <Label\n className={clsx({ [classes.dataError]: dataError }, className)}\n error={dataError}\n title={rest.title || desc.title}\n labelPos={labelPos}\n >\n <span\n className={classes.inputWrapper}\n onMouseEnter={handlePopoverOpen}\n onMouseLeave={handlePopoverClose}\n >\n {formField}\n </span>\n {dataError && anchorEl && (\n <ErrorPopover\n anchorEl={anchorEl}\n open={!!anchorEl}\n error={dataError}\n onClose={handlePopoverClose}\n />\n )}\n </Label>\n )\n}\n\nconst SelectOneOf = (props) => {\n const { title, name, schema, ...prop } = props\n\n const selectDesc = {\n title,\n enum: [],\n enumNames: []\n }\n\n Object.keys(schema).forEach((item) => {\n selectDesc.enum.push(item)\n selectDesc.enumNames.push(schema[item].title || item)\n })\n\n return (\n <Field\n name={name}\n options={getSelectOptionsFromSchema(selectDesc)}\n title={title}\n {...prop}\n component={Select}\n />\n )\n}\n\n//\n\nfunction propSchema(schema, { customValid, serialize = {}, deserialize = {} }) {\n const ajv = new Ajv({ allErrors: true, verbose: true, strictSchema: false })\n const schemaCopy = cloneDeep(schema)\n\n if (customValid) {\n Object.entries(customValid).forEach(([formatName, formatValidator]) => {\n ajv.addFormat(formatName, formatValidator)\n const {\n pattern,\n maxLength,\n enum: enumIsReservedWord,\n enumNames,\n ...rest\n } = schemaCopy.properties[formatName]\n schemaCopy.properties[formatName] = {\n ...rest,\n format: formatName\n }\n })\n }\n\n const validate = ajv.compile(schemaCopy)\n\n return {\n key: schema.key || '',\n serialize: (inst) => {\n validate(inst)\n return {\n instance: serializeRewrite(serialize, inst, schemaCopy),\n valid: validate(inst),\n errors: validate.errors || []\n }\n },\n deserialize: (inst) => {\n validate(inst)\n return deserializeRewrite(deserialize, inst)\n }\n }\n}\n\nfunction serializeRewrite(serializeMap, instance, schema) {\n const res = {}\n if (typeof instance !== 'object' || !schema.properties) {\n return instance !== undefined ? instance : schema.default\n }\n\n Object.keys(schema.properties).forEach((p) => {\n if (p in instance) res[p] = instance[serializeMap[p]] || instance[p]\n })\n\n return res\n}\n\nfunction deserializeRewrite(deserializeMap, instance) {\n return instance\n}\n\nfunction getInvalidMessage(item) {\n if (!item.parentSchema.invalidMessage) return item.message\n return typeof item.parentSchema.invalidMessage === 'function'\n ? item.parentSchema.invalidMessage(item.data)\n : item.parentSchema.invalidMessage\n}\n\nfunction getErrorsObj(errors) {\n const errs = {}\n let field\n\n errors.forEach((item) => {\n field = item.instancePath.slice(1)\n if (!errs[field]) errs[field] = getInvalidMessage(item)\n })\n\n return errs\n}\n\nexport { Field, SelectOneOf }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { useCallback, useState } from 'react'\n\nimport { HexColorPicker, HexColorInput } from 'react-colorful'\nimport classes from './ColorPicker.module.less'\nimport clsx from 'clsx'\nimport Icon from '../../../component/view/icon'\n\ninterface ColorPickerProps {\n value: string\n name: string\n schema: any\n type?: string\n}\n\ninterface ColorPickerCallProps {\n onChange: (value: string) => void\n}\n\ntype Props = ColorPickerProps & ColorPickerCallProps\n\nconst presetColors = [\n '#FF4545',\n '#FFAD31',\n '#68D442',\n '#3ACACC',\n '#4434FF',\n '#9C9C9C',\n '#000000'\n]\n\nconst ColorPicker = (props: Props) => {\n const [isOpen, setIsOpen] = useState(false)\n const [isPaletteOpen, setIsPaletteOpen] = useState(false)\n const { onChange, value } = props\n\n const handleChange = useCallback(\n (color) => {\n onChange(color)\n },\n [onChange]\n )\n\n const throttle = useCallback((func, limit) => {\n let inThrottle\n return (e) => {\n if (!inThrottle) {\n func(e)\n inThrottle = true\n setTimeout(() => (inThrottle = false), limit)\n }\n }\n }, [])\n\n const handleClick = useCallback(\n throttle((e) => {\n e.preventDefault()\n setIsOpen((prev) => !prev)\n setIsPaletteOpen(false)\n }, 200),\n []\n )\n\n const handlePaletteOpen = () => {\n setIsPaletteOpen(true)\n }\n const handleColorChange = (color) => {\n handleChange(color)\n }\n\n const handleBlur = (e) => {\n if (!e.currentTarget.contains(e.relatedTarget)) {\n handleClick(e)\n }\n }\n\n return (\n <div\n className={classes.colorPickerWrapper}\n data-testid=\"color-picker-field\"\n onClick={(e) => e.preventDefault()}\n >\n <div\n className={clsx({\n [classes.colorPickerInput]: true,\n [classes.selectedInput]: isOpen\n })}\n onClick={handleClick}\n >\n <div\n className={classes.colorPickerPreview}\n data-testid=\"color-picker-preview\"\n style={{ backgroundColor: value }}\n />\n\n <Icon\n className={clsx({\n [classes.expandIcon]: true,\n [classes.turnedIcon]: !isOpen\n })}\n name=\"chevron\"\n />\n </div>\n {isOpen && (\n <div\n className={clsx(\n classes.colorPickerWrap,\n isPaletteOpen && classes.withPalette\n )}\n onBlur={handleBlur}\n data-testid=\"color-picker-preset\"\n >\n <div className={classes.presetColors}>\n <button\n className={clsx(\n classes.chooseColor,\n isPaletteOpen && classes.clicked\n )}\n onClick={handlePaletteOpen}\n autoFocus\n data-testid=\"color-picker-btn\"\n />\n {presetColors.map((color) => (\n <button\n key={color}\n onClick={() => handleColorChange(color)}\n style={{ backgroundColor: color }}\n className={classes.presetColor}\n />\n ))}\n </div>\n\n {isPaletteOpen && (\n <div className={classes.colorPicker}>\n <HexColorPicker color={value} onChange={handleChange} />\n <div className={classes.colorContainer}>\n <span className={classes.hex}>HEX</span>\n <HexColorInput\n data-testid=\"color-picker-input\"\n color={value}\n onChange={handleChange}\n />\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport default ColorPicker\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport React, { useEffect, useState } from 'react'\n\nimport Input from '../input'\nimport Select from '../Select'\nimport styles from './measure-input.module.less'\nimport { getSelectOptionsFromSchema } from '../../../utils'\n\nconst selectOptions = getSelectOptionsFromSchema({\n enum: ['cm', 'px', 'pt', 'inch']\n})\n\nconst MeasureInput = ({ schema, value, onChange, name, ...rest }) => {\n const [measure, setMeasure] = useState('px')\n const [cust, setCust] = useState(value || schema.default)\n\n useEffect(() => {\n if (measure === 'px' && cust?.toFixed() - 0 !== value) {\n setMeasure('px')\n setCust(value)\n } // Hack: Set init value (RESET)\n }, [])\n\n const handleChange = (value) => {\n const convValue = convertValue(value, measure, 'px')\n setCust(value)\n onChange(convValue)\n }\n\n const handleMeasChange = (m) => {\n setCust((prev) => {\n convertValue(prev, measure, m)\n })\n setMeasure(m)\n }\n\n const calcValue = () => {\n const newValue = convertValue(value, 'px', measure)\n setCust(newValue)\n }\n\n useEffect(() => {\n calcValue()\n }, [value, measure, calcValue])\n\n const desc = schema || schema.properties[name]\n\n return (\n <div className={styles.measureInput} {...rest}>\n <span>{rest.title || desc.title}</span>\n <div style={{ display: 'flex' }}>\n <Input\n schema={schema}\n step={measure === 'px' || measure === 'pt' ? '1' : '0.001'}\n value={cust}\n onChange={handleChange}\n />\n <Select\n onChange={handleMeasChange}\n options={selectOptions}\n value={measure}\n className={styles.select}\n />\n </div>\n </div>\n )\n}\n\nconst measureMap = {\n px: 1,\n cm: 37.795278,\n pt: 1.333333,\n inch: 96\n}\n\nfunction convertValue(value, measureFrom, measureTo) {\n if ((!value && value !== 0) || isNaN(value)) return null // eslint-disable-line\n\n return measureTo === 'px' || measureTo === 'pt'\n ? ((value * measureMap[measureFrom]) / measureMap[measureTo]).toFixed() - 0\n : ((value * measureMap[measureFrom]) / measureMap[measureTo]).toFixed(3) - 0\n}\n\nexport default MeasureInput\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Component } from 'react'\nimport clsx from 'clsx'\n\nimport { fileOpener } from '../../utils'\nimport classes from './buttons.module.less'\n\nclass OpenButton extends Component {\n constructor(props) {\n super(props)\n this.state = {}\n if (props.server) {\n fileOpener(props.server).then((opener) => {\n this.setState({ opener })\n })\n }\n }\n\n open(ev) {\n const files = ev.target.files\n const noop = () => null\n const { onLoad = noop, onError = noop } = this.props\n\n if (this.state.opener && files.length)\n this.state.opener(files[0]).then(onLoad, onError)\n else if (files.length) onLoad(files[0])\n ev.target.value = null\n ev.preventDefault()\n }\n\n render() {\n const { children, type, server, className, ...props } = this.props\n\n return (\n <button\n onClick={() => this.btn.click()}\n className={clsx(classes.openButton, className)}\n {...props}\n >\n <input\n onChange={(ev) => this.open(ev)}\n accept={type}\n type=\"file\"\n ref={(el) => {\n this.btn = el\n }}\n />\n {children}\n </button>\n )\n }\n}\n\nexport default OpenButton\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\nimport { OutputFormatType } from 'ketcher-core'\n\nimport { saveAs } from 'file-saver'\nimport React, { PropsWithChildren } from 'react'\nimport { useAppContext } from '../../../../hooks'\n\ntype Props = {\n server?: any\n filename: string\n outputFormat?: OutputFormatType\n data: any\n type?: string\n mode?: string\n onSave?: () => void\n onError?: (err: any) => void\n className?: string\n title?: string\n}\n\ntype FileSaverReturnType = Promise<\n (data: Blob | string, fn, type: string | undefined) => void | never\n>\n\ntype SaverType = Awaited<FileSaverReturnType>\ntype SaveButtonProps = PropsWithChildren<Props>\n\nconst SaveButton = (props: SaveButtonProps) => {\n const noop = () => null\n const {\n server,\n filename = 'unnamed',\n outputFormat,\n data,\n type,\n mode = 'saveFile',\n onSave = noop,\n onError = noop,\n className,\n title\n } = props\n const { getKetcherInstance } = useAppContext()\n\n const save = (event: React.KeyboardEvent | React.MouseEvent) => {\n event.preventDefault()\n switch (mode) {\n case 'saveImage':\n saveImage()\n break\n case 'saveFile':\n default:\n saveFile()\n }\n }\n\n const saveFile = () => {\n if (data) {\n try {\n fileSaver(server).then((saver: SaverType) => {\n saver(data, filename, type)\n onSave()\n })\n } catch (error) {\n onError(error)\n }\n }\n }\n\n const saveImage = () => {\n const ketcherInstance = getKetcherInstance()\n if (outputFormat) {\n ketcherInstance\n .generateImage(data, { outputFormat })\n .then((blob) => {\n saveAs(blob, `${filename}.${outputFormat}`)\n onSave()\n })\n .catch((error) => {\n onError(error)\n })\n }\n }\n\n return (\n <button\n title={title}\n className={className}\n onClick={(event) => {\n save(event)\n }}\n >\n {props.children}\n </button>\n )\n}\n\nconst fileSaver = (server): FileSaverReturnType => {\n return new Promise((resolve, reject) => {\n if (global.Blob && saveAs) {\n resolve((data, fn, type) => {\n const blob = new Blob([data], { type }) // eslint-disable-line no-undef\n saveAs(blob, fn)\n })\n } else if (server) {\n resolve(\n server.then(() => {\n throw Error(\"Server doesn't still support echo method\")\n })\n )\n } else {\n reject(new Error('Your browser does not support opening files locally'))\n }\n })\n}\n\nexport { SaveButton }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport React, { useState } from 'react'\nimport classes from './Accordion.module.less'\nimport clsx from 'clsx'\nimport Icon from '../../../../../../component/view/icon'\n\nconst Accordion = ({ tabs, className, changedGroups }): React.ReactElement => {\n const [expandedAccordions, setExpandedAccordions] = useState<string[]>([\n 'General'\n ])\n\n const handleAccordionChange = (accordion) => () => {\n const isExpand = !expandedAccordions.includes(accordion)\n setExpandedAccordions(\n isExpand\n ? [...expandedAccordions, accordion]\n : [...expandedAccordions].filter(\n (expandedAccordion) => expandedAccordion !== accordion\n )\n )\n }\n\n return (\n <div className={clsx(classes.accordionWrapper, className)}>\n {tabs.map(({ label, content, key }) => {\n const shouldGroupBeRended = expandedAccordions.includes(label)\n return (\n <div key={key}>\n <div\n onClick={handleAccordionChange(label)}\n className={classes.accordionSummaryWrapper}\n >\n <div className={classes.accordionSummary}>\n <Icon\n className={clsx({\n [classes.expandIcon]: true,\n [classes.turnedIcon]: !shouldGroupBeRended\n })}\n name=\"chevron\"\n />\n <div className={classes.groupLabel}>\n <Icon name=\"elements-group\" className={classes.groupIcon} />\n <span>{label}</span>\n </div>\n {changedGroups.has(label) && (\n <span className={classes.changeMarker}></span>\n )}\n </div>\n </div>\n <div\n className={clsx({\n [classes.accordionDetailsWrapper]: true,\n [classes.hiddenAccordion]: !shouldGroupBeRended\n })}\n >\n <div className={classes.accordionDetails}>{content}</div>\n </div>\n </div>\n )\n })}\n </div>\n )\n}\n\nexport default Accordion\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { useCallback, useEffect, useState } from 'react'\n\nimport FontFaceObserver from 'font-face-observer'\nimport Select from './Select'\n\nconst commonFonts = [\n 'Arial',\n 'Arial Black',\n 'Comic Sans MS',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Charcoal',\n 'Lucida Console',\n 'Monaco',\n 'Palatino Linotype',\n 'Book Antiqua',\n 'Palatino',\n 'Tahoma',\n 'Geneva',\n 'Times New Roman',\n 'Times',\n 'Verdana',\n 'Symbol',\n 'MS Serif',\n 'MS Sans Serif',\n 'New York',\n 'Droid Sans',\n 'Droid Serif',\n 'Droid Sans Mono',\n 'Roboto'\n]\n\nfunction checkInSystem() {\n const availableFontsPromises = commonFonts.map((fontName) => {\n const observer = new FontFaceObserver(fontName)\n return observer.check().then(\n () => fontName,\n () => null\n )\n })\n\n return Promise.all(availableFontsPromises)\n}\n\nfunction SystemFonts(props) {\n const [availableFonts, setAvailableFonts] = useState(null)\n const { value, onChange } = props\n const onChangeCallback = useCallback(\n (value) => {\n onChange(value)\n },\n [onChange]\n )\n\n useEffect(() => {\n let mounted = true\n checkInSystem().then((results) => {\n const fonts = results\n .filter((i) => i !== null)\n .map((font) => {\n return { value: `30px ${font}`, label: font }\n })\n if (mounted) {\n setAvailableFonts(fonts)\n }\n })\n\n return () => (mounted = false)\n }, [])\n\n return (\n <Select\n onChange={onChangeCallback}\n value={value}\n disabled={availableFonts === null}\n options={availableFonts}\n />\n )\n}\n\nexport default SystemFonts\n","const fieldGroups = {\n resetToSelect: 'General',\n rotationStep: 'General',\n showValenceWarnings: 'General',\n atomColoring: 'General',\n font: 'General',\n fontsz: 'General',\n fontszsub: 'General',\n showStereoFlags: 'Stereochemistry',\n stereoLabelStyle: 'Stereochemistry',\n colorOfAbsoluteCenters: 'Stereochemistry',\n colorOfAndCenters: 'Stereochemistry',\n colorOfOrCenters: 'Stereochemistry',\n colorStereogenicCenters: 'Stereochemistry',\n autoFadeOfStereoLabels: 'Stereochemistry',\n absFlagLabel: 'Stereochemistry',\n andFlagLabel: 'Stereochemistry',\n orFlagLabel: 'Stereochemistry',\n mixedFlagLabel: 'Stereochemistry',\n carbonExplicitly: 'Atoms',\n showCharge: 'Atoms',\n showValence: 'Atoms',\n showHydrogenLabels: 'Atoms',\n aromaticCircle: 'Bonds',\n doubleBondWidth: 'Bonds',\n bondThickness: 'Bonds',\n stereoBondWidth: 'Bonds',\n 'smart-layout': 'Server',\n 'ignore-stereochemistry-errors': 'Server',\n 'mass-skip-error-on-pseudoatoms': 'Server',\n 'gross-formula-add-rsites': 'Server',\n 'gross-formula-add-isotopes': 'Server',\n miewMode: '3D Viewer',\n miewTheme: '3D Viewer',\n miewAtomLabel: '3D Viewer',\n showAtomIds: 'Options for Debugging',\n showBondIds: 'Options for Debugging',\n showHalfBondIds: 'Options for Debugging',\n showLoopIds: 'Options for Debugging'\n}\n\nexport default fieldGroups\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { BaseCallProps, BaseProps } from '../../../modal.types'\nimport Form, { Field } from '../../../../../component/form/form/form'\nimport {\n setDefaultSettings,\n updateFormState\n} from '../../../../../state/modal/form'\nimport { useEffect, useState } from 'react'\n\nimport ColorPicker from '../../../../../component/form/colorPicker/ColorPicker'\nimport { Dialog } from '../../../../components'\nimport Icon from '../../../../../component/view/icon'\nimport MeasureInput from '../../../../../component/form/MeasureInput/measure-input'\nimport OpenButton from '../../../../../component/view/openbutton'\nimport { SaveButton } from '../../../../../component/view/savebutton'\nimport Select from '../../../../../component/form/Select'\nimport Accordion from './Accordion'\nimport { StructService } from 'ketcher-core'\nimport SystemFonts from '../../../../../component/form/systemfonts'\nimport classes from './Settings.module.less'\nimport { connect } from 'react-redux'\nimport { getSelectOptionsFromSchema } from '../../../../../utils'\nimport { saveSettings } from '../../../../../state/options'\nimport settingsSchema, {\n getDefaultOptions\n} from '../../../../../data/schema/options-schema'\nimport fieldGroups from './fieldGroups'\nimport { isEqual } from 'lodash'\n\ninterface SettingsProps extends BaseProps {\n initState: any\n appOpts: {\n version: string\n buildDate: string\n buildNumber: string\n indigoVersion: string\n imagoVersions: Array<string>\n server: boolean\n templates: boolean\n }\n server: StructService\n}\n\ninterface SettingsCallProps extends BaseCallProps {\n onOpenFile: (any) => void\n onReset: () => void\n}\n\nconst defaultSettings = getDefaultOptions()\n\nconst HeaderContent = ({\n server,\n onOpenFile,\n onReset,\n formState,\n initState\n}) => {\n const getIsResetDisabled = () => {\n if (formState.result.init) return isEqual(defaultSettings, initState)\n else return isEqual(defaultSettings, formState.result)\n }\n\n return (\n <div className={classes.headerContent}>\n <span className={classes.title}> Settings</span>\n <OpenButton\n title=\"Open from File\"\n key=\"settings\"\n server={server}\n onLoad={onOpenFile}\n className={classes.button}\n >\n <Icon name=\"open-1\" />\n </OpenButton>\n <SaveButton\n title=\"Save to File\"\n key=\"ketcher-settings\"\n data={JSON.stringify(formState.result)}\n filename=\"ketcher-settings\"\n className={classes.button}\n >\n <Icon name=\"save-1\" />\n </SaveButton>\n <button\n title=\"Reset\"\n key=\"settings-button\"\n onClick={onReset}\n className={classes.button}\n disabled={getIsResetDisabled()}\n >\n <Icon name=\"reset\" />\n </button>\n </div>\n )\n}\n\ntype Props = SettingsProps & SettingsCallProps\n\nconst settingsProps = settingsSchema.properties\n\nconst SettingsDialog = (props: Props) => {\n const {\n initState,\n formState,\n server,\n onOpenFile,\n onReset,\n appOpts,\n ...prop\n } = props\n\n const [changedGroups, setChangedGroups] = useState(new Set())\n\n useEffect(() => {\n const changed = new Set<string>()\n\n for (const key in initState) {\n if (initState[key] !== formState.result[key]) {\n const group = fieldGroups[key]\n changed.add(group)\n }\n }\n setChangedGroups(changed)\n }, [initState, formState.result])\n\n const generalTab = {\n key: 'general',\n label: 'General',\n content: (\n <fieldset>\n <Field\n name=\"resetToSelect\"\n component={Select}\n options={getSelectOptionsFromSchema(settingsProps?.resetToSelect)}\n />\n <Field name=\"rotationStep\" />\n <Field name=\"showValenceWarnings\" />\n <Field name=\"atomColoring\" />\n <Field name=\"font\" component={SystemFonts} />\n <Field name=\"fontsz\" component={MeasureInput} labelPos={false} />\n <Field name=\"fontszsub\" component={MeasureInput} labelPos={false} />\n </fieldset>\n )\n }\n const stereoTab = {\n key: 'stereo',\n label: 'Stereochemistry',\n content: (\n <fieldset>\n <Field name=\"showStereoFlags\" />\n <Field\n name=\"stereoLabelStyle\"\n component={Select}\n options={getSelectOptionsFromSchema(settingsProps?.stereoLabelStyle)}\n />\n <Field name=\"colorOfAbsoluteCenters\" component={ColorPicker} />\n <Field name=\"colorOfAndCenters\" component={ColorPicker} />\n <Field name=\"colorOfOrCenters\" component={ColorPicker} />\n <Field\n name=\"colorStereogenicCenters\"\n component={Select}\n options={getSelectOptionsFromSchema(\n settingsProps?.colorStereogenicCenters\n )}\n />\n <Field name=\"autoFadeOfStereoLabels\" />\n <Field name=\"absFlagLabel\" />\n <Field name=\"andFlagLabel\" />\n <Field name=\"orFlagLabel\" />\n <Field name=\"mixedFlagLabel\" />\n </fieldset>\n )\n }\n const atomsTab = {\n key: 'atoms',\n label: 'Atoms',\n content: (\n <fieldset>\n <Field name=\"carbonExplicitly\" />\n <Field name=\"showCharge\" />\n <Field name=\"showValence\" />\n <Field\n name=\"showHydrogenLabels\"\n component={Select}\n options={getSelectOptionsFromSchema(\n settingsProps?.showHydrogenLabels\n )}\n />\n </fieldset>\n )\n }\n const bondsTab = {\n key: 'bonds',\n label: 'Bonds',\n content: (\n <fieldset>\n <Field name=\"aromaticCircle\" />\n <Field\n name=\"doubleBondWidth\"\n component={MeasureInput}\n labelPos={false}\n />\n <Field name=\"bondThickness\" component={MeasureInput} labelPos={false} />\n <Field\n name=\"stereoBondWidth\"\n component={MeasureInput}\n labelPos={false}\n />\n </fieldset>\n )\n }\n const serverTab = {\n key: 'server',\n label: 'Server',\n content: (\n <fieldset disabled={!appOpts.server}>\n <Field name=\"smart-layout\" />\n <Field name=\"ignore-stereochemistry-errors\" />\n <Field name=\"mass-skip-error-on-pseudoatoms\" />\n <Field name=\"gross-formula-add-rsites\" />\n <Field name=\"gross-formula-add-isotopes\" />\n </fieldset>\n )\n }\n const threeDViewerTab = {\n key: '3dviewer',\n label: '3D Viewer',\n content: (\n // eslint-disable-next-line dot-notation\n <fieldset className={classes.viewer}>\n <Field\n name=\"miewMode\"\n component={Select}\n options={getSelectOptionsFromSchema(settingsProps?.miewMode)}\n />\n <Field\n name=\"miewTheme\"\n component={Select}\n options={getSelectOptionsFromSchema(settingsProps?.miewTheme)}\n />\n <Field\n name=\"miewAtomLabel\"\n component={Select}\n options={getSelectOptionsFromSchema(settingsProps?.miewAtomLabel)}\n />\n </fieldset>\n )\n }\n const debuggingTab = {\n key: 'debugging',\n label: 'Options for Debugging',\n content: (\n <fieldset>\n <Field name=\"showAtomIds\" />\n <Field name=\"showBondIds\" />\n <Field name=\"showHalfBondIds\" />\n <Field name=\"showLoopIds\" />\n </fieldset>\n )\n }\n\n const tabs = [\n generalTab,\n stereoTab,\n atomsTab,\n bondsTab,\n serverTab,\n threeDViewerTab,\n debuggingTab\n ]\n\n return (\n <Dialog\n className={classes.settings}\n result={() => formState.result}\n valid={() => formState.valid}\n params={prop}\n buttonsNameMap={{ OK: 'Apply' }}\n buttons={['Cancel', 'OK']}\n withDivider\n needMargin={false}\n headerContent={\n <HeaderContent\n server={server}\n onOpenFile={onOpenFile}\n onReset={onReset}\n formState={formState}\n initState={initState}\n />\n }\n >\n <Form schema={settingsSchema} init={initState} {...formState}>\n <Accordion\n tabs={tabs}\n className={classes.accordion}\n changedGroups={changedGroups}\n />\n </Form>\n </Dialog>\n )\n}\n\nconst mapStateToProps = (state) => ({\n server: state.options.app.server ? state.server : null,\n appOpts: state.options.app,\n initState: state.options.settings,\n formState: state.modal.form\n})\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n onOpenFile: (newOpts) => {\n try {\n dispatch(updateFormState({ result: JSON.parse(newOpts) }))\n } catch (ex) {\n console.info('Bad file')\n }\n },\n onReset: () => dispatch(setDefaultSettings()),\n onOk: (res) => {\n dispatch(saveSettings(res))\n ownProps.onOk(res)\n }\n})\n\nconst Settings = connect(mapStateToProps, mapDispatchToProps)(SettingsDialog)\n\nexport default Settings\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nfunction ErrorsCheck(props) {\n const { moleculeErrors, checkSchema } = props\n const moleculeErrorsTypes = Object.keys(moleculeErrors)\n\n const getOptionName = (option) => {\n const { items } = checkSchema.properties.checkOptions\n const nameIndex = items.enum.indexOf(option)\n return items.enumNames[nameIndex]\n }\n\n return (\n <>\n <fieldset>\n {moleculeErrorsTypes.length === 0 ? (\n <div>\n <dd>No errors detected</dd>\n </div>\n ) : (\n moleculeErrorsTypes.map((type, key) => (\n <div key={key}>\n <dt>{getOptionName(type)} warning:</dt>\n <dd>{moleculeErrors[type]}</dd>\n </div>\n ))\n )}\n </fieldset>\n </>\n )\n}\n\nexport default ErrorsCheck\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Form, { Field } from '../../../../../component/form/form/form'\nimport { Dialog } from '../../../../components'\nimport ErrorsCheck from './components'\nimport { check } from '../../../../../state/server'\nimport { checkOpts } from '../../../../../state/options'\nimport { connect } from 'react-redux'\nimport style from './Check.module.less'\nimport { useEffect, useState } from 'react'\nimport { LoadingCircles } from 'src/script/ui/views/components/Spinner'\n\nconst checkSchema = {\n title: 'Check',\n type: 'object',\n properties: {\n checkOptions: {\n title: 'Settings',\n type: 'array',\n items: {\n type: 'string',\n enum: [\n 'valence',\n 'radicals',\n 'pseudoatoms',\n 'stereo',\n 'query',\n 'overlapping_atoms',\n 'overlapping_bonds',\n 'rgroups',\n 'chiral',\n '3d',\n 'chiral_flag'\n ],\n enumNames: [\n 'Valence',\n 'Radical',\n 'Pseudoatom',\n 'Stereochemistry',\n 'Query',\n 'Overlapping Atoms',\n 'Overlapping Bonds',\n 'R-Groups',\n 'Chirality',\n '3D Structure',\n 'Chiral flag'\n ]\n }\n }\n }\n}\n\nconst getFormattedDateString = (date) => {\n const getFixedString = (num) => (num + '').padStart(2, 0)\n return `${getFixedString(date.getHours())}:${getFixedString(\n date.getMinutes()\n )}:${getFixedString(date.getSeconds())} ${getFixedString(\n date.getDate()\n )}.${getFixedString(date.getMonth() + 1)}.${getFixedString(\n date.getFullYear()\n )}`\n}\n\nconst FooterContent = ({\n handleCheck,\n handleApply,\n onCancel,\n isStuctureChecking,\n isCheckedWithNewSettings\n}) => {\n return (\n <div className={style.buttons}>\n <div>\n <button\n className={\n isCheckedWithNewSettings\n ? style.buttonSecondary\n : style.buttonPrimary\n }\n onClick={handleCheck}\n disabled={!isStuctureChecking}\n >\n Check\n </button>\n </div>\n <div className={style.buttonsRight}>\n <button className={style.buttonSecondary} onClick={onCancel}>\n Cancel\n </button>\n <button\n className={style.buttonPrimary}\n onClick={handleApply}\n disabled={!isStuctureChecking}\n >\n Apply\n </button>\n </div>\n </div>\n )\n}\n\nfunction CheckDialog(props) {\n const { formState, checkState, onCheck, onApply, onCancel, ...restProps } =\n props\n const { result = checkState, moleculeErrors } = formState\n const [isStuctureChecking, setIsStructureChecking] = useState(false)\n const [lastCheckDate, setLastCheckDate] = useState(null)\n const [isCheckedWithNewSettings, setIsCheckedWithNewSettings] =\n useState(false)\n\n const handleApply = () => onApply(result)\n\n const handleCheck = () => {\n setIsStructureChecking(false)\n onCheck(result.checkOptions).then(() => {\n setIsStructureChecking(true)\n setLastCheckDate(new Date())\n setIsCheckedWithNewSettings(true)\n })\n }\n\n const handleSettingsChange = () => setIsCheckedWithNewSettings(false)\n\n useEffect(() => {\n handleCheck()\n }, [])\n\n return (\n <Dialog\n title=\"Structure Check\"\n className={style.dialog_body}\n params={{ ...restProps, onCancel }}\n buttons={[]}\n footerContent={\n <FooterContent\n handleCheck={handleCheck}\n handleApply={handleApply}\n onCancel={onCancel}\n isStuctureChecking={isStuctureChecking}\n isCheckedWithNewSettings={isCheckedWithNewSettings}\n />\n }\n withDivider\n >\n <Form\n schema={checkSchema}\n init={checkState}\n {...formState}\n result={result}\n >\n <div className={style.wrapper}>\n <div className={style.settings}>\n <label>Settings</label>\n <div\n className={!isStuctureChecking ? style.checkBoxesDisabled : ''}\n >\n <Field\n name=\"checkOptions\"\n labelPos={false}\n multiple\n type=\"checkbox\"\n disabled={!isStuctureChecking}\n onChange={handleSettingsChange}\n />\n </div>\n </div>\n <div className={style.checkInfo}>\n <span>\n Last check:{' '}\n {lastCheckDate && getFormattedDateString(lastCheckDate)}\n </span>\n <div\n className={\n !Object.keys(moleculeErrors).length || !isStuctureChecking\n ? style.centeredContainer\n : style.warnings\n }\n >\n {isStuctureChecking ? (\n <div\n className={\n Object.keys(moleculeErrors).length\n ? style.warningsContainer\n : style.centeredContainer\n }\n >\n <ErrorsCheck\n moleculeErrors={moleculeErrors}\n checkSchema={checkSchema}\n />\n </div>\n ) : (\n <LoadingCircles />\n )}\n </div>\n </div>\n </div>\n </Form>\n </Dialog>\n )\n}\n\nconst mapStateToProps = (state) => ({\n formState: state.modal.form,\n checkState: state.options.check\n})\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n onCheck: (opts) => dispatch(check(opts)).catch(ownProps.onCancel),\n onApply: (res) => {\n dispatch(checkOpts(res))\n ownProps.onOk(res)\n }\n})\n\nconst Check = connect(mapStateToProps, mapDispatchToProps)(CheckDialog)\n\nexport default Check\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport styles from './FormulaInput.module.less'\n\nconst formulaRegexp = /\\b(\\d*)([A-Z][a-z]{0,3}#?)(\\d*)\\s*\\b/g\nconst errorRegexp = /error:.*/g\n\nfunction formulaInputMarkdown(contentData) {\n const { content, contentEditable } = contentData\n const onKeyDown = (e) => {\n if (e.keyCode === 8) {\n e.preventDefault()\n return false\n }\n }\n return (\n <div\n className={styles.chem_input}\n onKeyPress={(e) => e.preventDefault()}\n onPaste={(e) => e.preventDefault()}\n onKeyDown={onKeyDown}\n contentEditable={contentEditable}\n suppressContentEditableWarning={true}\n >\n {content}\n </div>\n )\n}\n\nfunction FormulaInput({ value, contentEditable }) {\n if (errorRegexp.test(value)) return formulaInputMarkdown(value)\n\n const content = []\n let cnd\n let pos = 0\n\n while ((cnd = formulaRegexp.exec(value)) !== null) {\n if (cnd[1].length > 0)\n content.push(<sup key={content.length}>{cnd[1]}</sup>)\n content.push(value.substring(pos, cnd.index) + cnd[2])\n if (cnd[3].length > 0)\n content.push(<sub key={content.length}>{cnd[3]}</sub>)\n pos = cnd.index + cnd[0].length\n }\n\n if (pos === 0) content.push(value)\n else content.push(value.substring(pos, value.length))\n\n return formulaInputMarkdown({ content, contentEditable })\n}\n\nexport default FormulaInput\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nfunction FrozenInput({ value }) {\n return (\n <input\n type=\"text\"\n spellCheck={false}\n value={value}\n readOnly\n onChange={(event) => event.preventDefault()}\n />\n )\n}\n\nexport default FrozenInput\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { FormulaInput, FrozenInput } from './components'\n\nimport { Component } from 'react'\nimport { Dialog } from '../../../../components'\nimport { ErrorsContext } from '../../../../../../../contexts'\nimport { analyse } from '../../../../../state/server'\nimport { changeRound } from '../../../../../state/options'\nimport classes from './Analyse.module.less'\nimport { connect } from 'react-redux'\nimport { range } from 'lodash/fp'\nimport Select from '../../../../../component/form/Select'\nimport { getSelectOptionsFromSchema } from '../../../../../utils'\n\nfunction roundOff(value, round) {\n if (typeof value === 'number') return value.toFixed(round)\n return value.replace(/[0-9]*\\.[0-9]+/g, (str) => (+str).toFixed(round))\n}\n\nconst selectOptions = getSelectOptionsFromSchema({ enum: range(0, 8) })\n\nclass AnalyseDialog extends Component {\n static contextType = ErrorsContext\n\n componentDidMount() {\n this.props.onAnalyse()\n }\n\n render() {\n const { values, round, loading, onAnalyse, onChangeRound, ...props } =\n this.props\n return (\n <Dialog\n title=\"Calculated Values\"\n className={classes.analyse}\n withDivider={true}\n needMargin={true}\n valid={() => true}\n buttons={['OK']}\n buttonsNameMap={{ OK: 'Close' }}\n params={props}\n >\n <ul>\n {[\n {\n name: 'Chemical Formula',\n key: 'gross',\n withSelector: false\n },\n {\n name: 'Molecular Weight',\n key: 'molecular-weight',\n round: 'roundWeight',\n withSelector: true\n },\n {\n name: 'Exact Mass',\n key: 'monoisotopic-mass',\n round: 'roundMass',\n withSelector: true\n },\n {\n name: 'Elemental Analysis',\n key: 'mass-composition',\n round: 'roundElAnalysis',\n withSelector: false\n }\n ].map((item) => (\n <li key={item.key} className={classes.contentWrapper}>\n <div className={classes.inputWrapper}>\n <label>{item.name}:</label>\n {item.key === 'gross' ? (\n <FormulaInput\n value={values && !loading ? values[item.key] : ''}\n contentEditable={false}\n />\n ) : item.key === 'mass-composition' ? (\n <textarea\n readOnly\n value={\n values && !loading\n ? roundOff(values[item.key], round[item.round])\n : 0\n }\n />\n ) : (\n <FrozenInput\n value={\n values && !loading\n ? roundOff(values[item.key], round[item.round])\n : 0\n }\n />\n )}\n </div>\n {item.withSelector ? (\n <div className={classes.selectWrapper}>\n <span>Decimal places</span>\n <Select\n options={selectOptions}\n value={round[item.round]}\n onChange={(val) => onChangeRound(item.round, val)}\n className={classes.select}\n />\n </div>\n ) : null}\n </li>\n ))}\n </ul>\n </Dialog>\n )\n }\n}\n\nconst mapStateToProps = (state) => ({\n values: state.options.analyse.values,\n loading: state.options.analyse.loading,\n round: {\n roundWeight: state.options.analyse.roundWeight,\n roundMass: state.options.analyse.roundMass,\n roundElAnalysis: state.options.analyse.roundElAnalysis\n }\n})\n\nconst mapDispatchToProps = (dispatch) => ({\n onAnalyse: () => dispatch(analyse()),\n onChangeRound: (roundName, val) => dispatch(changeRound(roundName, val))\n})\n\nconst Analyse = connect(mapStateToProps, mapDispatchToProps)(AnalyseDialog)\n\nexport default Analyse\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\ntype Props = {\n clickHandler: () => void\n disabled: boolean\n label: string\n styles: string\n title?: string\n}\n\nexport const DialogActionButton = ({\n clickHandler,\n label,\n title,\n styles,\n disabled\n}: Props) => (\n <input\n key=\"Open\"\n type=\"button\"\n className={styles}\n value={label}\n title={title || label}\n disabled={disabled}\n onClick={clickHandler}\n />\n)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { useCallback, useEffect, useState } from 'react'\nimport {\n changeImage,\n changeVersion,\n shouldFragment\n} from '../../../../../state/options'\n\nimport { Dialog } from '../../../../components'\nimport Input from '../../../../../component/form/input'\nimport OpenButton from '../../../../../component/view/openbutton'\nimport { LoadingCircles } from 'src/script/ui/views/components/Spinner'\nimport StructRender from '../../../../../component/structrender'\nimport classes from './Recognize.module.less'\nimport { connect } from 'react-redux'\nimport { load } from '../../../../../state'\nimport { range } from 'lodash/fp'\nimport { recognize } from '../../../../../state/server'\nimport { DialogActionButton } from 'src/script/ui/views/modal/components/document/Open/components/DialogActionButton'\nimport Icon from 'src/script/ui/component/view/icon'\n\nfunction isImage(file) {\n return file?.type?.includes('image')\n}\n\nfunction FooterContent({ onImage, structStr, openHandler, copyHandler }) {\n return (\n <div className={classes.footerContent}>\n <OpenButton\n key=\"choose\"\n onLoad={onImage}\n type=\"image/*\"\n className={classes.openButton}\n >\n <Icon name=\"open\" />\n <span>Change image</span>\n </OpenButton>\n <div>\n <DialogActionButton\n key=\"openButton\"\n disabled={!structStr}\n clickHandler={openHandler}\n styles={classes.secondaryButton}\n label=\"Open as new Project\"\n />\n <DialogActionButton\n key=\"copyButton\"\n disabled={!structStr}\n clickHandler={copyHandler}\n styles={classes.primaryButton}\n label=\"Add to Canvas\"\n title=\"Structure will be loaded as fragment and added to Clipboard\"\n />\n </div>\n </div>\n )\n}\n\nfunction RecognizeDialog(prop) {\n const {\n file,\n structStr,\n fragment,\n version,\n imagoVersions,\n onOk,\n ...partProps\n } = prop\n const { onRecognize, isFragment, onImage, onChangeImago, ...props } =\n partProps\n const [canPreviewImage, setCanPreviewImage] = useState(true)\n const result = () =>\n structStr && !(structStr instanceof Promise)\n ? { structStr, fragment }\n : null\n\n useEffect(() => {\n onRecognize(file, version)\n }, [file, version])\n\n const clearFile = useCallback(() => {\n onImage(null)\n return true\n }, [onImage])\n\n const copyHandler = () => {\n onOk({ structStr, fragment: true })\n }\n\n const openHandler = () => {\n onOk({ structStr, fragment: false })\n }\n\n return (\n <Dialog\n title=\"Import Structure from Image\"\n className={classes.recognize}\n params={{ ...props, onOk }}\n result={() => result(structStr, fragment)}\n withDivider={true}\n needMargin={false}\n footerContent={\n <FooterContent\n onImage={onImage}\n openHandler={openHandler}\n structStr={structStr}\n copyHandler={copyHandler}\n />\n }\n buttons={[]}\n >\n <div className={classes.topBody}>\n <label className={classes.imagoVersion}>\n Imago version\n <Input\n schema={{\n enum: imagoVersions,\n enumNames: range(1, imagoVersions.length + 1).map(\n (i) => `Version ${i}`\n )\n }}\n value={version}\n onChange={onChangeImago}\n />\n </label>\n <span>Original image</span>\n <span>Recognized structure preview</span>\n </div>\n <div className={classes.imagesContainer}>\n <div className={classes.picture}>\n {file && isImage(file) && canPreviewImage && (\n <img\n alt=\"\"\n id=\"pic\"\n src={url(file) || ''}\n onError={() => {\n setCanPreviewImage(false)\n }}\n />\n )}\n <span className={classes.filename}> {file ? file.name : null} </span>\n {file && isImage(file) && !canPreviewImage && (\n <div className={classes.messageContainer}>\n <p>\n Preview of '{file.type}' MIME type is not supported by current\n browser\n </p>\n </div>\n )}\n {(!file || (!isImage(file) && clearFile())) && (\n <div className={classes.messageContainer}>\n <p>Please choose image</p>\n </div>\n )}\n </div>\n <div className={classes.output}>\n {structStr &&\n // in Edge 38: instanceof Promise always `false`\n (structStr instanceof Promise || typeof structStr !== 'string' ? (\n <div className={classes.messageContainer}>\n <LoadingCircles />\n </div>\n ) : (\n <StructRender className={classes.struct} struct={structStr} />\n ))}\n </div>\n </div>\n </Dialog>\n )\n}\n\nfunction url(file) {\n if (!file) return null\n const URL = window.URL || window.webkitURL\n return URL ? URL.createObjectURL(file) : 'No preview'\n}\n\nconst mapStateToProps = (state) => ({\n imagoVersions: state.options.app.imagoVersions,\n file: state.options.recognize.file,\n structStr: state.options.recognize.structStr,\n fragment: state.options.recognize.fragment,\n version: state.options.recognize.version || state.options.app.imagoVersions[1]\n})\n\nconst mapDispatchToProps = (dispatch) => ({\n isFragment: (v) => dispatch(shouldFragment(v)),\n onImage: (file) => dispatch(changeImage(file)),\n onRecognize: (file, ver) => dispatch(recognize(file, ver)),\n onChangeImago: (ver) => dispatch(changeVersion(ver)),\n onOk: (res) => {\n dispatch(\n load(res.structStr, {\n rescale: true,\n fragment: res.fragment\n })\n // TODO: Removed ownProps.onOk call. consider refactoring of load function in release 2.4\n // See PR #731 (https://github.com/epam/ketcher/pull/731)\n )\n }\n})\n\nconst Recognize = connect(mapStateToProps, mapDispatchToProps)(RecognizeDialog)\n\nexport default Recognize\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Dialog } from '../../../../components'\nimport {\n FormatterFactory,\n Struct,\n StructService,\n SupportedFormat\n} from 'ketcher-core'\nimport { MIEW_OPTIONS } from '../../../../../data/schema/options-schema'\nimport classes from './Miew.module.less'\nimport { connect } from 'react-redux'\nimport { load } from '../../../../../state'\nimport { pick } from 'lodash/fp'\nimport Viewer from 'miew-react'\nimport { Miew as MiewAsType } from 'miew'\nimport { useCallback, useRef } from 'react'\n\ntype MiewDialogProps = {\n miewOpts: any\n server: StructService\n struct: Struct\n onCancel: () => void\n onOk: (result: any) => void\n miewTheme: 'dark' | 'light'\n}\ntype MiewDialogCallProps = {\n onExportCML: (cmlStruct: string) => void\n}\ntype Props = MiewDialogProps & MiewDialogCallProps\n\n/* OPTIONS for MIEW */\nconst BACKGROUND_COLOR = {\n dark: '0x202020',\n light: '0xcccccc'\n}\n\nconst MIEW_TX_TYPES = {\n no: null,\n bright: {\n colorer: 'EL'\n },\n blackAndWhite: {\n colorer: ['UN', { color: 0xffffff }],\n bg: '0x000'\n },\n black: {\n colorer: ['UN', { color: 0x000000 }]\n }\n}\n\nconst TXoptions = (userOpts) => {\n const type = userOpts.miewAtomLabel\n if (MIEW_TX_TYPES[type] === null) return null\n return {\n colorer: MIEW_TX_TYPES[type].colorer,\n selector: 'not elem C',\n mode: [\n 'TX',\n {\n bg: MIEW_TX_TYPES[type].bg || BACKGROUND_COLOR[userOpts.miewTheme],\n showBg: true,\n template: '{{elem}}'\n }\n ]\n }\n}\n\nfunction createMiewOptions(userOpts) {\n const options = {\n settings: {\n bg: { color: Number(BACKGROUND_COLOR[userOpts.miewTheme]) },\n autoPreset: false,\n editing: true,\n inversePanning: true\n },\n reps: [\n {\n mode: userOpts.miewMode\n }\n ]\n }\n\n const textMode = TXoptions(userOpts)\n if (textMode) options.reps.push(textMode)\n\n return options\n}\n/* ---------------- */\nconst CHANGING_WARNING =\n 'Stereocenters can be changed after the strong 3D rotation'\n\nconst FooterContent = () => (\n <div className={classes.warning}>{CHANGING_WARNING}</div>\n)\n\nconst MiewDialog = ({\n miewOpts,\n server,\n struct,\n onExportCML,\n miewTheme = 'light',\n ...prop\n}: Props) => {\n const miewRef = useRef<MiewAsType>()\n\n const onMiewInit = useCallback(\n (miew: MiewAsType) => {\n miewRef.current = miew\n const factory = new FormatterFactory(server)\n const service = factory.create(SupportedFormat.cml)\n\n service\n .getStructureFromStructAsync(struct)\n .then((res) =>\n miew.load(res, { sourceType: 'immediate', fileType: 'cml' })\n )\n .then(() => miew.setOptions(miewOpts))\n .catch((ex) => console.error(ex.message))\n },\n [miewOpts, server, struct]\n )\n\n const exportCML = useCallback(() => {\n const cmlStruct = miewRef.current?.exportCML()\n if (!cmlStruct) {\n return\n }\n onExportCML(cmlStruct)\n }, [onExportCML, miewRef])\n\n return (\n <Dialog\n title=\"Miew\"\n needMargin={false}\n params={prop}\n buttons={[\n 'Cancel',\n <button key=\"apply\" onClick={exportCML} className={classes.applyButton}>\n Apply\n </button>\n ]}\n footerContent={<FooterContent />}\n className={classes.miewDialog}\n >\n <div>\n <div\n className={`${classes.miewContainer} ${\n miewTheme === 'dark' ? classes.miewDarkTheme : ''\n }`}\n >\n <Viewer onInit={onMiewInit} />\n </div>\n </div>\n </Dialog>\n )\n}\n\nconst mapStateToProps = (state) => ({\n miewOpts: createMiewOptions(pick(MIEW_OPTIONS, state.options.settings)),\n server: state.options.app.server ? state.server : null,\n struct: state.editor.struct(),\n miewTheme: state.options.settings.miewTheme\n})\n\nconst mapDispatchToProps = (dispatch) => ({\n onExportCML: (cmlStruct) => {\n dispatch(load(cmlStruct))\n // TODO: Removed ownProps.onOk call. consider refactoring of load function in release 2.4\n // See PR #731 (https://github.com/epam/ketcher/pull/731)\n }\n})\n\nconst Miew = connect(mapStateToProps, mapDispatchToProps)(MiewDialog)\n\nexport default Miew\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Elements } from 'ketcher-core'\nimport { capitalize } from 'lodash/fp'\n\ninterface ElementNumberProps {\n label: string\n}\n\ntype Props = ElementNumberProps\n\nconst ElementNumber = (props: Props) => {\n const { label } = props\n const value = Elements.get(capitalize(label))?.number || ''\n\n return (\n <label>\n <span>Number</span>\n <input type=\"text\" readOnly value={value} />\n </label>\n )\n}\n\nexport default ElementNumber\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { BaseCallProps, BaseProps } from '../../../modal.types'\n\nimport Form, { Field } from '../../../../../component/form/form/form'\nimport { FC, useCallback, useState } from 'react'\n\nimport { Dialog } from '../../../../components'\nimport ElementNumber from './ElementNumber'\nimport { Elements } from 'ketcher-core'\nimport { atom as atomSchema } from '../../../../../data/schema/struct-schema'\nimport { capitalize } from 'lodash/fp'\nimport classes from './Atom.module.less'\nimport Select from '../../../../../component/form/Select'\nimport { getSelectOptionsFromSchema } from '../../../../../utils'\nimport Icon from '../../../../../component/view/icon'\nimport clsx from 'clsx'\n\ninterface AtomProps extends BaseCallProps, BaseProps {\n alias: string\n charge: string\n exactChangeFlag: boolean\n explicitValence: number\n hCount: number\n invRet: number\n isotope: number\n label: string\n radical: number\n ringBondCount: number\n stereoParity: number\n substitutionCount: number\n unsaturatedAtom: boolean\n}\n\ntype Props = AtomProps & {\n isMultipleAtoms?: boolean\n}\n\nconst atomProps = atomSchema.properties\n\nconst Atom: FC<Props> = (props: Props) => {\n const { formState, stereoParity, isMultipleAtoms = false, ...rest } = props\n const [currentLabel, setCurrentLabel] = useState<string>(rest.label)\n const [expandedAccordions, setExpandedAccordions] = useState<string[]>([\n 'General'\n ])\n\n const handleAccordionChange = (accordion) => () => {\n const isExpand = !expandedAccordions.includes(accordion)\n setExpandedAccordions(\n isExpand\n ? [...expandedAccordions, accordion]\n : [...expandedAccordions].filter(\n (expandedAccordion) => expandedAccordion !== accordion\n )\n )\n }\n\n const onLabelChangeCallback = useCallback((newValue) => {\n setCurrentLabel(newValue)\n }, [])\n\n const itemGroups = [\n {\n groupName: 'General',\n component: (\n <div>\n <Field name=\"label\" onChange={onLabelChangeCallback} autoFocus />\n <ElementNumber label={currentLabel} />\n\n <Field name=\"alias\" />\n\n <Field name=\"charge\" maxLength=\"5\" />\n <Field name=\"isotope\" />\n\n <Field\n name=\"explicitValence\"\n component={Select}\n options={getSelectOptionsFromSchema(atomProps.explicitValence)}\n />\n\n <Field\n name=\"radical\"\n component={Select}\n options={getSelectOptionsFromSchema(atomProps.radical)}\n />\n </div>\n )\n },\n {\n groupName: 'Query specific',\n component: (\n <div className={classes.querySpecific}>\n <Field\n name=\"ringBondCount\"\n component={Select}\n options={getSelectOptionsFromSchema(atomProps.ringBondCount)}\n />\n <Field\n name=\"hCount\"\n component={Select}\n options={getSelectOptionsFromSchema(atomProps.hCount)}\n />\n <Field\n name=\"substitutionCount\"\n component={Select}\n options={getSelectOptionsFromSchema(atomProps.substitutionCount)}\n />\n <Field\n name=\"unsaturatedAtom\"\n labelPos=\"before\"\n className={classes.checkbox}\n />\n </div>\n )\n },\n {\n groupName: 'Reaction flags',\n component: (\n <div className={classes.reactionFlags}>\n <Field\n name=\"invRet\"\n component={Select}\n options={getSelectOptionsFromSchema(atomProps.invRet)}\n />\n <Field\n name=\"exactChangeFlag\"\n labelPos=\"before\"\n className={classes.checkbox}\n />\n </div>\n )\n }\n ]\n\n return (\n <Dialog\n title=\"Atom Properties\"\n className={classes.atomProps}\n result={() => formState.result}\n valid={() => formState.valid}\n params={rest}\n buttonsNameMap={{ OK: 'Apply' }}\n buttons={['Cancel', 'OK']}\n withDivider\n >\n <Form\n schema={atomSchema}\n customValid={{\n label: (label) => atomValid(label, isMultipleAtoms),\n charge: (charge) => chargeValid(charge, isMultipleAtoms)\n }}\n init={rest}\n {...formState}\n >\n <div className={classes.accordionWrapper}>\n {itemGroups.map(({ groupName, component }) => {\n const shouldGroupBeRended = expandedAccordions.includes(groupName)\n return (\n <div key={groupName}>\n <div\n onClick={handleAccordionChange(groupName)}\n className={classes.accordionSummaryWrapper}\n >\n <div className={classes.accordionSummary}>\n <span>{groupName}</span>\n <Icon\n className={clsx({\n [classes.expandIcon]: true,\n [classes.turnedIcon]: !shouldGroupBeRended\n })}\n name=\"chevron\"\n />\n </div>\n </div>\n <div\n className={clsx({\n [classes.accordionDetailsWrapper]: true,\n [classes.hiddenAccordion]: !shouldGroupBeRended\n })}\n >\n <div className={classes.accordionDetails}>{component}</div>\n </div>\n </div>\n )\n })}\n </div>\n </Form>\n </Dialog>\n )\n}\n\nfunction atomValid(label: string, isMultipleAtoms: boolean) {\n const isChemicalElement = !!Elements.get(capitalize(label))\n if (isMultipleAtoms) {\n return label === '' || isChemicalElement\n }\n return label && isChemicalElement\n}\n\nfunction chargeValid(charge, isMultipleAtoms: boolean) {\n const regex = new RegExp(atomSchema.properties.charge.pattern)\n const result = regex.exec(charge)\n const isValidCharge = result && (result[1] === '' || result[3] === '')\n if (isMultipleAtoms) {\n return charge === '0' || charge === 0 || charge === '' || isValidCharge\n }\n return isValidCharge\n}\n\nexport type { AtomProps }\nexport default Atom\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Atom from './Atom'\nimport { BaseProps } from '../../../modal.types'\nimport { connect } from 'react-redux'\n\ntype StateProps = Pick<BaseProps, 'formState'>\n\nconst mapStateToProps = (state: any): StateProps => ({\n formState: state.modal.form\n})\n\nconst AtomContainer = connect(mapStateToProps)(Atom)\nexport default AtomContainer\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { BaseCallProps, BaseProps } from '../../../modal.types'\nimport Form, { Field } from '../../../../../component/form/form/form'\n\nimport { Dialog } from '../../../../components'\nimport { attachmentPoints as attachmentPointsSchema } from '../../../../../data/schema/struct-schema'\nimport classes from './Attach.module.less'\n\ninterface AttachPointsProps extends BaseProps {\n primary: boolean\n secondary: boolean\n}\n\ntype Props = AttachPointsProps & BaseCallProps\n\nconst AttachPoints = (props: Props) => {\n const { formState, ...rest } = props\n return (\n <Dialog\n title=\"Attachment Points\"\n className={classes.attachPoints}\n result={() => formState.result}\n valid={() => formState.valid}\n params={rest}\n buttonsNameMap={{ OK: 'Apply' }}\n buttons={['Cancel', 'OK']}\n withDivider\n >\n <Form schema={attachmentPointsSchema} init={rest} {...formState}>\n <Field name=\"primary\" />\n <Field name=\"secondary\" />\n </Form>\n </Dialog>\n )\n}\n\nexport type { AttachPointsProps }\nexport default AttachPoints\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport AttachPoints from './Attach'\nimport { BaseProps } from '../../../modal.types'\nimport { connect } from 'react-redux'\n\ntype StateProps = Pick<BaseProps, 'formState'>\n\nconst mapStateToProps = (state: any): StateProps => ({\n formState: state.modal.form\n})\n\nconst AttachPointsContainer = connect(mapStateToProps)(AttachPoints)\nexport default AttachPointsContainer\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { BaseCallProps, BaseProps } from '../../../modal.types'\nimport Form, { Field } from '../../../../../component/form/form/form'\nimport { Dialog } from '../../../../components'\nimport classes from './Automap.module.less'\nimport Select from '../../../../../component/form/Select/Select'\nimport { getSelectOptionsFromSchema } from '../../../../../utils'\n\ntype Props = BaseProps & BaseCallProps\n\nexport const automapSchema = {\n title: 'Reaction Auto-Mapping',\n type: 'object',\n required: ['mode'],\n properties: {\n mode: {\n title: 'Mode',\n enum: ['discard', 'keep', 'alter', 'clear'],\n enumNames: ['Discard', 'Keep', 'Alter', 'Clear'],\n default: 'discard'\n }\n }\n}\n\nconst Automap = (props: Props) => {\n const { formState, ...rest } = props\n return (\n <Dialog\n title=\"Reaction Auto-Mapping\"\n className={classes.automap}\n result={() => formState.result}\n valid={() => formState.valid}\n params={rest}\n withDivider\n buttons={['Cancel', 'OK']}\n buttonsNameMap={{ OK: 'Apply' }}\n >\n <Form schema={automapSchema} {...formState}>\n <Field\n name=\"mode\"\n options={getSelectOptionsFromSchema(automapSchema.properties.mode)}\n {...props}\n component={Select}\n />\n </Form>\n </Dialog>\n )\n}\n\nexport default Automap\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { BaseCallProps, BaseProps } from '../../../modal.types'\n\nimport Automap from './Automap'\nimport { automap } from '../../../../../state/server'\nimport { connect } from 'react-redux'\n\ntype StateProps = Pick<BaseProps, 'formState'>\ntype DispatchProps = Pick<BaseCallProps, 'onOk'>\n\nconst mapStateToProps = (state: any): StateProps => ({\n formState: state.modal.form\n})\n\nconst mapDispatchToProps = (dispatch: any, ownProps: any): DispatchProps => ({\n onOk: (result) => {\n dispatch(automap(result))\n ownProps.onOk(result)\n }\n})\n\nconst AutomapContainer = connect(mapStateToProps, mapDispatchToProps)(Automap)\nexport default AutomapContainer\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { BaseCallProps, BaseProps } from '../../../modal.types'\nimport Form, { Field } from '../../../../../component/form/form/form'\n\nimport { Dialog } from '../../../../components'\nimport Select from '../../../../../component/form/Select'\nimport { getSelectOptionsFromSchema } from '../../../../../utils'\nimport { bond as bondSchema } from '../../../../../data/schema/struct-schema'\nimport classes from './Bond.module.less'\n\ninterface BondProps extends BaseProps {\n center: number\n topology: number\n type: string\n}\n\ntype Props = BondProps & BaseCallProps\n\nconst Bond = (props: Props) => {\n const { formState, ...rest } = props\n const bondProps = bondSchema.properties\n return (\n <Dialog\n title=\"Bond Properties\"\n className={classes.bond}\n result={() => formState.result}\n valid={() => formState.valid}\n params={rest}\n buttonsNameMap={{ OK: 'Apply' }}\n buttons={['Cancel', 'OK']}\n withDivider\n >\n <Form schema={bondSchema} init={rest} {...formState}>\n <Field\n name=\"type\"\n component={Select}\n options={getSelectOptionsFromSchema(bondProps.type)}\n />\n <Field\n name=\"topology\"\n component={Select}\n options={getSelectOptionsFromSchema(bondProps.topology)}\n />\n <Field\n name=\"center\"\n component={Select}\n options={getSelectOptionsFromSchema(bondProps.center)}\n />\n </Form>\n </Dialog>\n )\n}\n\nexport type { BondProps }\nexport default Bond\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { BaseProps } from '../../../modal.types'\nimport Bond from './Bond'\nimport { connect } from 'react-redux'\n\ntype StateProps = Pick<BaseProps, 'formState'>\n\nconst mapStateToProps = (state: any): StateProps => ({\n formState: state.modal.form\n})\n\nconst BondContainer = connect(mapStateToProps)(Bond)\nexport default BondContainer\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Field } from '../../../../../../../component/form/form/form'\nimport { RgroupLogicProps } from '../../RgroupLogic'\nimport classes from './IfThenSelect.module.less'\nimport { useFormContext } from '../../../../../../../../../hooks'\nimport Select from '../../../../../../../component/form/Select'\nimport { getSelectOptionsFromSchema } from '../../../../../../../utils'\n\ntype Props = Pick<RgroupLogicProps, 'label' | 'rgroupLabels' | 'name'>\n\nconst IfThenSelect = (props: Props) => {\n const { rgroupLabels, label, name } = props\n const { schema } = useFormContext() as any\n const desc = {\n title: schema.properties[name!].title,\n enum: [0],\n enumNames: ['Always']\n }\n\n rgroupLabels.forEach((rgroupLabel) => {\n if (label !== rgroupLabel) {\n desc.enum.push(rgroupLabel)\n desc.enumNames.push(`IF R${label} THEN R${rgroupLabel}`)\n }\n })\n\n return (\n <Field\n schema={desc}\n className={classes.field}\n {...props}\n component={Select}\n options={getSelectOptionsFromSchema(desc)}\n />\n )\n}\n\nexport default IfThenSelect\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\nimport { BaseCallProps, BaseProps } from '../../../modal.types'\nimport Form, { Field } from '../../../../../component/form/form/form'\n\nimport { Dialog } from '../../../../components'\nimport IfThenSelect from './components'\nimport classes from './RgroupLogic.module.less'\nimport { rgroupLogic as rgroupSchema } from '../../../../../data/schema/struct-schema'\n\ninterface RgroupLogicProps extends BaseProps {\n frags: Set<number>\n ifthen: number\n label: number\n range: string\n resth: boolean\n rgroupLabels: Array<number>\n name?: string\n}\n\ntype Props = RgroupLogicProps & BaseCallProps\n\nconst RgroupLogic = (props: Props) => {\n const { formState, label, rgroupLabels, ...rest } = props\n return (\n <Dialog\n title=\"R-Group Logic Condition\"\n className={classes.rgroupLogic}\n result={() => formState.result}\n valid={() => formState.valid}\n params={rest}\n buttonsNameMap={{ OK: 'Apply' }}\n buttons={['Cancel', 'OK']}\n withDivider\n >\n <Form\n schema={rgroupSchema}\n customValid={{ range: (r) => rangeConv(r) }}\n init={rest}\n {...formState}\n >\n <Field name=\"range\" />\n <Field name=\"resth\" labelPos=\"after\" className={classes.resth} />\n <IfThenSelect name=\"ifthen\" label={label} rgroupLabels={rgroupLabels} />\n </Form>\n </Dialog>\n )\n}\n\nfunction rangeConv(range) {\n // structConv\n const res = range\n .replace(/\\s*/g, '')\n .replace(/,+/g, ',')\n .replace(/^,/, '')\n .replace(/,$/, '')\n\n return res\n .split(',')\n .every((s) => s.match(/^[>,<=]?[0-9]+$/g) || s.match(/^[0-9]+-[0-9]+$/g))\n}\n\nexport type { RgroupLogicProps }\nexport default RgroupLogic\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { BaseProps } from '../../../modal.types'\nimport RgroupLogic from './RgroupLogic'\nimport { connect } from 'react-redux'\n\ntype StateProps = Pick<BaseProps, 'formState'>\n\nconst mapStateToProps = (state: any): StateProps => ({\n formState: state.modal.form\n})\n\nconst RgroupLogicContainer = connect(mapStateToProps)(RgroupLogic)\nexport default RgroupLogicContainer\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Icon from 'src/script/ui/component/view/icon'\nimport styles from './AnalyzingFile.module.less'\nimport { LoadingCircles } from 'src/script/ui/views/components/Spinner'\n\nexport type AnalyzingFileProps = {\n fileName?: string\n}\n\nconst ICON_NAME = 'file-thumbnail'\n\nexport const AnalyzingFile = ({ fileName }: AnalyzingFileProps) => (\n <div className={styles.analyzingFileWrapper}>\n {fileName && (\n <div className={styles.fileBox}>\n <Icon name={ICON_NAME} />\n <p>{fileName}</p>\n </div>\n )}\n <LoadingCircles />\n </div>\n)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { useMemo } from 'react'\nimport { useDropzone, DropzoneOptions } from 'react-dropzone'\n\nimport parentStyles from './OpenOptions.module.less'\nimport styles from './FileDrop.module.less'\nimport Icon from 'src/script/ui/component/view/icon'\n\ntype FileDropProps = {\n buttonLabel: string\n textLabel: string\n iconName: string\n disabled?: boolean\n disabledText?: string\n} & DropzoneOptions\n\nconst FileDrop = ({\n buttonLabel,\n textLabel,\n iconName,\n disabled,\n disabledText,\n ...rest\n}: FileDropProps) => {\n const { getRootProps, getInputProps, isDragActive, open } = useDropzone({\n multiple: false,\n disabled,\n ...rest\n })\n\n const getClassesString = useMemo((): string => {\n const classes = [\n parentStyles.dropContainer,\n isDragActive ? styles.isHovered : null,\n disabled ? styles.isDisabled : null\n ]\n return classes.join(' ')\n }, [isDragActive])\n\n return (\n <div\n onKeyDown={open}\n {...getRootProps({\n className: getClassesString\n })}\n >\n <input {...getInputProps()} />\n <div className={parentStyles.dropIconWrapper}>\n <Icon name={iconName} />\n </div>\n {disabled ? (\n <p className={parentStyles.textLabel}>{disabledText}</p>\n ) : (\n <>\n <div className={parentStyles.textLabelWrapper}>\n <p className={parentStyles.textLabel}>{textLabel}</p>\n </div>\n <div className={parentStyles.buttonLabelWrapper}>\n <p className={parentStyles.buttonLabel}>{buttonLabel}</p>\n </div>\n </>\n )}\n </div>\n )\n}\n\nexport { FileDrop }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { FC } from 'react'\n\nimport Icon from 'src/script/ui/component/view/icon'\nimport styles from './OpenOptions.module.less'\nimport { FileDrop } from './FileDrop'\n\nconst ICON_NAMES = {\n PASTE: 'open-window-paste-icon',\n FILE: 'open-window-upload-icon',\n IMAGE: 'image-frame'\n}\n\nexport type OpenOptionsProps = {\n selectClipboard: () => void\n errorHandler: (err: string) => void\n fileLoadHandler: (files: File[]) => void\n imageLoadHandler: (files: File[]) => void\n isRecognizeDisabled: boolean\n}\n\nexport const OpenOptions: FC<OpenOptionsProps> = ({\n selectClipboard,\n fileLoadHandler,\n imageLoadHandler,\n isRecognizeDisabled,\n errorHandler\n}) => {\n return (\n <div className={styles.optionsContainer}>\n <div onClick={selectClipboard} className={styles.dropContainer}>\n <div className={styles.dropIconWrapper}>\n <Icon name={ICON_NAMES.PASTE} />\n </div>\n <div className={styles.textLabelWrapper}>\n {/* <p className={styles.textLabel}>or press Ctrl + V</p> */}\n </div>\n <div className={styles.buttonLabelWrapper}>\n <p className={styles.buttonLabel}>Paste from clipboard</p>\n </div>\n </div>\n\n <FileDrop\n onDropAccepted={fileLoadHandler}\n onDropRejected={(e) => errorHandler(`Unable to accept file(s). ${e}`)}\n buttonLabel=\"Open from file\"\n textLabel=\"or drag file here\"\n iconName={ICON_NAMES.FILE}\n />\n\n <FileDrop\n accept=\"image/*\"\n disabled={isRecognizeDisabled}\n disabledText=\"Image Recognition service is not available\"\n onDropAccepted={imageLoadHandler}\n onDropRejected={() =>\n errorHandler(\n 'Unable to accept file(s). Make sure you upload 1 image.'\n )\n }\n buttonLabel=\"Open from image\"\n textLabel=\"or drag file here\"\n iconName={ICON_NAMES.IMAGE}\n />\n </div>\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport classes from '../Open.module.less'\n\nexport type TextEditorProps = {\n structStr: string\n inputHandler: (str: string) => void\n autoFocus?: boolean\n}\n\nexport const TextEditor = ({\n structStr,\n inputHandler,\n autoFocus = false\n}: TextEditorProps) => {\n return (\n <>\n <textarea\n className={classes.textareaEditor}\n value={structStr}\n onChange={(event) => inputHandler(event.target.value)}\n autoFocus={autoFocus}\n />\n </>\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { FC } from 'react'\nimport { AnalyzingFile, AnalyzingFileProps } from './AnalyzingFile'\n\nimport { OpenOptions, OpenOptionsProps } from './OpenOptions'\nimport { TextEditor, TextEditorProps } from './TextEditor'\n\ntype ViewStates = {\n idle: string\n textEditor: string\n imageRec: string\n}\n\ntype SwitchProps = {\n currentState: string\n states: ViewStates\n isAnalyzingFile: boolean\n} & OpenOptionsProps &\n TextEditorProps &\n AnalyzingFileProps\n\nexport const ViewSwitcher: FC<SwitchProps> = (props: SwitchProps) => {\n if (props.isAnalyzingFile) {\n return <AnalyzingFile fileName={props.fileName} />\n } else {\n switch (props.currentState) {\n case props.states.idle:\n return <OpenOptions {...props} />\n case props.states.textEditor:\n return <TextEditor {...props} />\n default:\n return null\n }\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { BaseCallProps, BaseProps } from '../../../modal.types'\nimport { FC, useEffect, useState } from 'react'\nimport { Dialog } from '../../../../components'\nimport classes from './Open.module.less'\nimport Recognize from '../../process/Recognize/Recognize'\nimport { fileOpener } from '../../../../../utils/'\nimport { DialogActionButton } from './components/DialogActionButton'\nimport { ViewSwitcher } from './components/ViewSwitcher'\n\ninterface OpenProps {\n server: any\n errorHandler: (err: string) => void\n isRecognizeDisabled: boolean\n isAnalyzingFile: boolean\n}\n\ntype Props = OpenProps &\n Pick<BaseProps, 'className'> &\n BaseCallProps & { onImageUpload: (file: File) => void }\n\nconst MODAL_STATES = {\n idle: 'idle',\n textEditor: 'textEditor',\n imageRec: 'imageRec'\n}\n\nconst FooterContent = ({ structStr, openHandler, copyHandler, onCancel }) => {\n return (\n <div className={classes.footerContent}>\n <button onClick={onCancel} className={classes.cancelButton}>\n Cancel\n </button>\n <div className={classes.buttonsContainer}>\n <DialogActionButton\n key=\"openButton\"\n disabled={!structStr}\n clickHandler={openHandler}\n styles={classes.openButton}\n label=\"Open as New Project\"\n />\n <DialogActionButton\n key=\"copyButton\"\n disabled={!structStr}\n clickHandler={copyHandler}\n styles={classes.copyButton}\n label=\"Add to Canvas\"\n title=\"Structure will be loaded as fragment and added to Clipboard\"\n />\n </div>\n </div>\n )\n}\n\nconst Open: FC<Props> = (props) => {\n const {\n server,\n onImageUpload,\n errorHandler,\n isAnalyzingFile,\n isRecognizeDisabled,\n ...rest\n } = props\n\n const [structStr, setStructStr] = useState<string>('')\n const [fileName, setFileName] = useState<string>('')\n const [opener, setOpener] = useState<any>()\n const [currentState, setCurrentState] = useState(MODAL_STATES.idle)\n\n useEffect(() => {\n if (server) {\n fileOpener(server).then((chosenOpener) => {\n setOpener({ chosenOpener })\n })\n }\n }, [server])\n\n const onFileLoad = (files) => {\n const onLoad = (fileContent) => {\n setStructStr(fileContent)\n setCurrentState(MODAL_STATES.textEditor)\n }\n const onError = () => errorHandler('Error processing file')\n\n setFileName(files[0].name)\n opener.chosenOpener(files[0]).then(onLoad, onError)\n }\n\n const onImageLoad = (files) => {\n onImageUpload(files[0])\n setCurrentState(MODAL_STATES.imageRec)\n }\n\n // @TODO after Recognize is refactored this will not be necessary\n // currently not destructuring onOk with other props so we can pass it with ...rest to Recognize below\n const { onOk } = rest\n\n const copyHandler = () => {\n onOk({ structStr, fragment: true })\n }\n\n const openHandler = () => {\n onOk({ structStr, fragment: false })\n }\n\n const withFooterContent =\n currentState === MODAL_STATES.textEditor && !isAnalyzingFile\n\n // @TODO after refactoring of Recognize modal\n // add Recognize rendering logic into ViewSwitcher component here\n if (currentState === MODAL_STATES.imageRec) {\n return <Recognize {...rest} />\n }\n\n return (\n <Dialog\n title=\"Open structure\"\n className={classes.open}\n params={rest}\n result={() => null}\n footerContent={\n withFooterContent ? (\n <FooterContent\n structStr={structStr}\n openHandler={openHandler}\n copyHandler={copyHandler}\n onCancel={rest.onCancel}\n />\n ) : undefined\n }\n buttons={[]}\n withDivider\n >\n <ViewSwitcher\n isAnalyzingFile={isAnalyzingFile}\n fileName={fileName}\n currentState={currentState}\n states={MODAL_STATES}\n selectClipboard={() => setCurrentState(MODAL_STATES.textEditor)}\n fileLoadHandler={onFileLoad}\n imageLoadHandler={onImageLoad}\n errorHandler={errorHandler}\n isRecognizeDisabled={isRecognizeDisabled}\n structStr={structStr}\n inputHandler={setStructStr}\n autoFocus\n />\n </Dialog>\n )\n}\n\nexport type { OpenProps }\nexport default Open\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Open, { OpenProps } from './Open'\n\nimport { BaseCallProps } from '../../../modal.types'\nimport { connect } from 'react-redux'\nimport { exec } from '../../../../../component/cliparea/cliparea'\nimport { load } from '../../../../../state'\nimport { changeImage } from '../../../../../state/options'\n\ntype StateProps = OpenProps\n\ntype DispatchProps = {\n onOk: BaseCallProps['onOk']\n onImageUpload: (file: File) => void\n}\n\nconst mapStateToProps = (state): StateProps => ({\n server: state.server,\n errorHandler: state.editor.errorHandler,\n isRecognizeDisabled: state.actionState.recognize?.disabled,\n isAnalyzingFile: state.requestsStatuses.isAnalyzingFile\n})\n\nconst mapDispatchToProps = (dispatch): DispatchProps => ({\n onOk: (result) => {\n if (result.fragment) exec('copy')\n dispatch(\n load(result.structStr, {\n badHeaderRecover: true,\n fragment: result.fragment\n })\n // TODO: Removed ownProps.onOk call. consider refactoring of load function in release 2.4\n // See PR #731 (https://github.com/epam/ketcher/pull/731)\n )\n },\n onImageUpload: (file) => {\n dispatch(changeImage(file))\n }\n})\n\nconst OpenContainer = connect(mapStateToProps, mapDispatchToProps)(Open)\nexport default OpenContainer\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n RxnArrowMode,\n StereoFlag,\n Struct,\n SupportedFormat,\n getPropertiesByFormat\n} from 'ketcher-core'\n\nexport function couldBeSaved(\n struct: Struct,\n format: SupportedFormat\n): string | null {\n const warnings: Array<string> = []\n const formatName: string = getPropertiesByFormat(format).name\n\n const rxnArrowsSize = struct.rxnArrows.size\n const hasRxnArrow = struct.hasRxnArrow()\n\n if (format === 'smiles' || format === 'smarts') {\n warnings.push(\n `Structure contains query properties of atoms and bonds that are not supported in the ${format?.toUpperCase()}. Query properties will not be reflected in the file saved.`\n )\n }\n\n if (format === 'smiles') {\n const arrayOfAtoms: Array<any> = Array.from(struct.atoms.values())\n const hasGenerics = arrayOfAtoms.some((atom) => atom.pseudo)\n if (hasGenerics) {\n warnings.push(\n `Structure contains generic atoms. They will be saved as any atom (*).`\n )\n }\n }\n\n if (format !== 'ket') {\n if (hasRxnArrow) {\n const arrayOfArrows: Array<any> = Array.from(struct.rxnArrows.values())\n const rxnArrowMode: RxnArrowMode = arrayOfArrows[0].mode\n if (rxnArrowMode !== RxnArrowMode.OpenAngle) {\n warnings.push(\n `The ${formatName} format does not support drawn elements: the reaction ${rxnArrowMode} arrow will be replaced with the reaction arrow`\n )\n }\n }\n\n // TODO: find better solution for case when Arrows > 1\n if (rxnArrowsSize > 1) {\n warnings.push(\n `The ${formatName} format does not support drawn elements: reaction arrows will be lost.`\n )\n }\n }\n\n if (\n (\n ['inChI', 'inChIAuxInfo', 'smiles', 'smilesExt'] as SupportedFormat[]\n ).includes(format)\n ) {\n if (struct.rgroups.size !== 0)\n warnings.push(\n `In ${formatName} the structure will be saved without R-group fragments`\n )\n\n struct = struct.clone() // need this: .getScaffold()\n const isRg = struct.atoms.find((_ind, atom) => atom.label === 'R#')\n if (isRg !== null)\n warnings.push(\n `In ${formatName} the structure will be saved without R-group members`\n )\n\n const isSg = struct.sgroups.find(\n (_ind, sg) =>\n sg.type !== 'MUL' && !/^INDIGO_.+_DESC$/i.test(sg.data.fieldName)\n )\n if (isSg !== null)\n warnings.push(\n `In ${formatName} the structure will be saved without S-groups`\n )\n }\n\n if (\n (\n [\n 'smiles',\n 'smilesExt',\n 'smarts',\n 'inChI',\n 'inChIAuxInfo',\n 'cml'\n ] as SupportedFormat[]\n ).includes(format)\n ) {\n const isVal = struct.atoms.find((_ind, atom) => atom.explicitValence >= 0)\n if (isVal !== null)\n warnings.push(`In ${formatName} valence is not supported`)\n }\n\n if (\n (['mol', 'rxn'] as SupportedFormat[]).includes(format) &&\n Array.from(struct.frags.values()).some((fr) => {\n if (fr?.enhancedStereoFlag) {\n return fr.enhancedStereoFlag !== StereoFlag.Abs\n }\n return false\n })\n ) {\n warnings.push(\n `Structure contains enhanced stereochemistry features. Information will be partly lost.`\n )\n }\n\n if (\n (\n ['inChI', 'inChIAuxInfo', 'smiles', 'smilesExt'] as SupportedFormat[]\n ).includes(format)\n ) {\n if (struct.functionalGroups.size !== 0)\n warnings.push(\n `In ${formatName} the structure will be saved without functional groups.`\n )\n }\n\n if ((['cml'] as SupportedFormat[]).includes(format)) {\n if (struct.functionalGroups.size !== 0)\n warnings.push(\n `Structure contains functional groups. In ${formatName} information will be partly lost.`\n )\n }\n\n if (warnings.length !== 0) return warnings.join('\\n')\n\n return null\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Component } from 'react'\nimport classes from './Tabs.module.less'\nimport clsx from 'clsx'\n\nclass Tabs extends Component {\n constructor(props) {\n super(props)\n this.state = {}\n this.state.tabIndex = props.tabIndex || 0\n this.props.changeTab(this.state.tabIndex)\n }\n\n // TODO: refactor the component\n changeTab(ev, index) {\n this.setState({ tabIndex: index })\n if (this.props.changeTab) this.props.changeTab(index)\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.tabIndex !== prevProps.tabIndex) {\n this.setState({ tabIndex: this.props.tabIndex })\n }\n }\n\n render() {\n const { tabs, contentClassName, className, tabIndex } = this.props\n const tabPanel = tabs[this.state.tabIndex]\n const Component = tabPanel?.component\n const componentProps = tabPanel?.props\n return (\n <div>\n <ul className={className} tabIndex={tabIndex}>\n <li className={classes.tabs}>\n {tabs.map((tabPanel, index) => (\n <a // eslint-disable-line\n key={index}\n className={clsx({\n [classes.active]: this.state.tabIndex === index\n })}\n onClick={(ev) => this.changeTab(ev, index)}\n >\n {tabPanel.caption}\n </a>\n ))}\n </li>\n </ul>\n {tabPanel && (\n <div className={contentClassName}>\n <Component {...componentProps} />\n </div>\n )}\n </div>\n )\n }\n}\n\nexport default Tabs\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport * as structFormat from '../../../../../data/convert/structConverter'\n\nimport { Component, createRef } from 'react'\nimport Form, { Field } from '../../../../../component/form/form/form'\nimport {\n FormatterFactory,\n KetSerializer,\n formatProperties,\n getPropertiesByFormat,\n getPropertiesByImgFormat\n} from 'ketcher-core'\n\nimport { Dialog } from '../../../../components'\nimport Tabs from 'src/script/ui/component/view/Tabs'\nimport { ErrorsContext } from '../../../../../../../contexts'\nimport { SaveButton } from '../../../../../component/view/savebutton'\nimport { check } from '../../../../../state/server'\nimport classes from './Save.module.less'\nimport { connect } from 'react-redux'\nimport { saveUserTmpl } from '../../../../../state/templates'\nimport { updateFormState } from '../../../../../state/modal/form'\nimport Select from '../../../../../component/form/Select'\nimport { getSelectOptionsFromSchema } from '../../../../../utils'\nimport { LoadingCircles } from 'src/script/ui/views/components/Spinner'\n\nconst saveSchema = {\n title: 'Save',\n type: 'object',\n properties: {\n filename: {\n title: 'File name:',\n type: 'string',\n maxLength: 128,\n pattern: '^[^.<>:?\"*\\\\\\\\|\\\\/][^<>:?\"*\\\\\\\\|\\\\/]*$',\n invalidMessage: (res) => {\n if (!res) return 'Filename should contain at least one character'\n if (res.length > 128) return 'Filename is too long'\n return \"A filename cannot contain characters: \\\\ / : * ? \\\" < > | and cannot start with '.'\"\n }\n },\n format: {\n title: 'File format:',\n enum: Object.keys(formatProperties),\n enumNames: Object.keys(formatProperties).map(\n (format) => formatProperties[format].name\n )\n }\n }\n}\n\nclass SaveDialog extends Component {\n static contextType = ErrorsContext\n constructor(props) {\n super(props)\n this.state = {\n disableControls: true,\n imageFormat: 'svg',\n tabIndex: 0,\n isLoading: true\n }\n this.isRxn = this.props.struct.hasRxnArrow()\n this.textAreaRef = createRef()\n const formats = [this.isRxn ? 'rxn' : 'mol', 'smiles', 'ket']\n if (this.props.server)\n formats.push(\n this.isRxn ? 'rxnV3000' : 'molV3000',\n 'smilesExt',\n 'smarts',\n 'inChI',\n 'inChIAuxInfo',\n 'cml',\n 'svg',\n 'png',\n 'cdxml'\n // 'cdx' TO DO: Uncomment, when export will be ready on Indigo side\n )\n\n this.saveSchema = saveSchema\n this.saveSchema.properties.format = Object.assign(\n this.saveSchema.properties.format,\n {\n enum: formats,\n enumNames: formats.map((format) => {\n const formatProps =\n getPropertiesByFormat(format) || getPropertiesByImgFormat(format)\n return formatProps.name\n })\n }\n )\n }\n\n componentDidMount() {\n const { checkOptions } = this.props.checkState\n this.props.onCheck(checkOptions)\n this.changeType(this.isRxn ? 'rxn' : 'mol').then(\n (res) => res instanceof Error && this.setState({ disableControls: true })\n )\n }\n\n isImageFormat = (format) => {\n return !!getPropertiesByImgFormat(format)\n }\n\n showStructWarningMessage = (format) => {\n const { errors } = this.props.formState\n return format !== 'mol' && Object.keys(errors).length > 0\n }\n\n changeType = (type) => {\n const { struct, server, options, formState } = this.props\n\n const errorHandler = this.context.errorHandler\n if (this.isImageFormat(type)) {\n const ketSerialize = new KetSerializer()\n const structStr = ketSerialize.serialize(struct)\n this.setState({\n disableControls: true,\n tabIndex: 0,\n imageFormat: type,\n structStr,\n isLoading: true\n })\n const options = {}\n options.outputFormat = type\n\n return server\n .generateImageAsBase64(structStr, options)\n .then((base64) => {\n this.setState({\n disableControls: false,\n tabIndex: 0,\n imageSrc: base64,\n isLoading: false\n })\n })\n .catch((e) => {\n errorHandler(e)\n this.props.onResetForm(formState)\n return e\n })\n } else {\n this.setState({ disableControls: true, isLoading: true })\n const factory = new FormatterFactory(server)\n const service = factory.create(type, options)\n\n return service\n .getStructureFromStructAsync(struct)\n .then(\n (structStr) => {\n this.setState({\n tabIndex: 0,\n structStr\n })\n },\n (e) => {\n errorHandler(e.message)\n this.props.onResetForm(formState)\n return e\n }\n )\n .finally(() => {\n this.setState({\n disableControls: false,\n tabIndex: 0,\n isLoading: false\n })\n })\n }\n }\n\n changeTab = (index) => {\n this.setState({ tabIndex: index })\n }\n\n getWarnings = (format) => {\n const { struct, moleculeErrors } = this.props\n const warnings = []\n const structWarning =\n 'Structure contains errors, please check the data, otherwise you ' +\n 'can lose some properties or the whole structure after saving in this format.'\n if (!this.isImageFormat(format)) {\n const saveWarning = structFormat.couldBeSaved(struct, format)\n const isStructInvalid = this.showStructWarningMessage(format)\n if (isStructInvalid) {\n warnings.push(structWarning)\n }\n if (saveWarning) {\n warnings.push(saveWarning)\n }\n }\n\n if (moleculeErrors) {\n warnings.push(...Object.values(moleculeErrors))\n }\n return warnings\n }\n\n renderForm = () => {\n const formState = Object.assign({}, this.props.formState)\n const { filename, format } = formState.result\n const warnings = this.getWarnings(format)\n const tabs =\n warnings.length === 0\n ? [\n {\n caption: 'Preview',\n component: this.renderSaveFile,\n tabIndex: 0\n }\n ]\n : [\n {\n caption: 'Preview',\n component: this.renderSaveFile,\n tabIndex: 0\n },\n {\n caption: 'Warnings',\n component: this.renderWarnings,\n tabIndex: 1\n }\n ]\n\n return (\n <div className={classes.formContainer}>\n <Form\n schema={this.saveSchema}\n init={{\n filename,\n format: this.isRxn ? 'rxn' : 'mol'\n }}\n {...formState}\n >\n <Field name=\"filename\" />\n <Field\n name=\"format\"\n onChange={this.changeType}\n options={getSelectOptionsFromSchema(\n this.saveSchema.properties.format\n )}\n component={Select}\n />\n </Form>\n <Tabs\n className={classes.tabs}\n captions={tabs}\n tabIndex={this.state.tabIndex}\n changeTab={this.changeTab}\n tabs={tabs}\n />\n </div>\n )\n }\n\n renderSaveFile = () => {\n const formState = Object.assign({}, this.props.formState)\n delete formState.moleculeErrors\n const { filename, format } = formState.result\n const { structStr, imageSrc, isLoading } = this.state\n const isCleanStruct = this.props.struct.isBlank()\n return isLoading ? (\n <div className={classes.loadingCirclesContainer}>\n <LoadingCircles />\n </div>\n ) : this.isImageFormat(format) ? (\n <div className={classes.imageContainer}>\n {!isCleanStruct && (\n <img\n src={`data:image/${format}+xml;base64,${imageSrc}`}\n alt={`${format} preview`}\n />\n )}\n </div>\n ) : (\n <div className={classes.previewBackground}>\n <textarea\n value={structStr}\n className={classes.previewArea}\n readOnly\n ref={this.textAreaRef}\n />\n </div>\n )\n }\n\n renderWarnings = () => {\n const formState = Object.assign({}, this.props.formState)\n const { filename, format } = formState.result\n const warnings = this.getWarnings(format)\n\n return warnings.length ? (\n <div className={classes.warnings}>\n {warnings.map((warning) => (\n <div className={classes.warningsContainer}>\n <span className={classes.warningsArr}>{warning}</span>\n </div>\n ))}\n </div>\n ) : null\n }\n\n getButtons = () => {\n const { disableControls, imageFormat, structStr } = this.state\n const formState = this.props.formState\n const { filename, format } = formState.result\n const isCleanStruct = this.props.struct.isBlank()\n const isMoleculeContain =\n this.props.struct.atoms.size && this.props.struct.bonds.size\n const buttons = [\n <button\n key=\"save-tmpl\"\n className={classes.saveTmpl}\n disabled={disableControls || isCleanStruct || !isMoleculeContain}\n onClick={() => this.props.onTmplSave(this.props.struct)}\n >\n Save to Templates\n </button>\n ]\n\n buttons.push(\n <button\n key=\"cancel\"\n mode=\"onCancel\"\n className={classes.cancel}\n onClick={() => this.props.onOk({})}\n type=\"button\"\n >\n Cancel\n </button>\n )\n\n if (this.isImageFormat(format)) {\n buttons.push(\n <SaveButton\n mode=\"saveImage\"\n data={structStr}\n filename={filename}\n outputFormat={imageFormat}\n key=\"save-image-button\"\n type={`image/${format}+xml`}\n onSave={this.props.onOk}\n disabled={\n disableControls ||\n !formState.valid ||\n isCleanStruct ||\n !this.props.server\n }\n className={classes.ok}\n >\n Save\n </SaveButton>\n )\n } else {\n buttons.push(\n <SaveButton\n mode=\"saveFile\"\n data={structStr}\n filename={filename + getPropertiesByFormat(format).extensions[0]}\n key=\"save-file-button\"\n type={format.mime}\n server={this.props.server}\n onSave={this.props.onOk}\n disabled={disableControls || !formState.valid || isCleanStruct}\n className={classes.ok}\n >\n Save\n </SaveButton>\n )\n }\n return buttons\n }\n\n render() {\n return (\n <Dialog\n className={classes.dialog}\n title=\"Save Structure\"\n params={this.props}\n buttons={this.getButtons()}\n needMargin={false}\n withDivider={true}\n >\n {this.renderForm()}\n </Dialog>\n )\n }\n}\n\nconst mapStateToProps = (state) => ({\n server: state.options.app.server ? state.server : null,\n struct: state.editor.struct(),\n options: state.options.getServerSettings(),\n formState: state.modal.form,\n moleculeErrors: state.modal.form.moleculeErrors,\n checkState: state.options.check\n})\n\nconst mapDispatchToProps = (dispatch) => ({\n onCheck: (checkOptions) => dispatch(check(checkOptions)),\n onTmplSave: (struct) => dispatch(saveUserTmpl(struct)),\n onResetForm: (prevState) => dispatch(updateFormState(prevState))\n})\n\nconst Save = connect(mapStateToProps, mapDispatchToProps)(SaveDialog)\n\nexport default Save\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Form, { Field } from '../../../component/form/form/form'\nimport { StereoLabel, Struct } from 'ketcher-core'\n\nimport { Dialog } from '../../../views/components'\nimport { FC } from 'react'\nimport classes from './enhancedStereo.module.less'\nimport { connect } from 'react-redux'\nimport { range } from 'lodash'\n\ninterface EnhancedStereoResult {\n andNumber: number\n orNumber: number\n type: StereoLabel\n}\n\ninterface EnhancedStereoFormState {\n result: EnhancedStereoResult\n valid: boolean\n errors: string[]\n}\n\ninterface EnhancedStereoProps {\n className: string\n init: EnhancedStereoResult & { init?: true }\n formState: EnhancedStereoFormState\n struct: Struct\n}\n\ninterface EnhancedStereoCallProps {\n onCancel: () => void\n onOk: (res: any) => void\n}\n\ntype Props = EnhancedStereoProps & EnhancedStereoCallProps\n\nconst EnhancedStereo: FC<Props> = (props) => {\n const { struct, formState, init, ...rest } = props\n const { result, valid } = formState\n\n const stereoLabels: Array<string> = findStereLabels(\n struct,\n Array.from(struct.atoms.keys())\n )\n\n const maxAnd: number = maxOfAnds(stereoLabels)\n const maxOr: number = maxOfOrs(stereoLabels)\n\n const enhancedStereoSchema = {\n title: 'Enhanced Stereo',\n type: 'object',\n properties: {\n type: {\n type: 'string'\n },\n andNumber: {\n type: 'integer'\n },\n orNumber: {\n type: 'integer'\n }\n }\n }\n\n return (\n <Dialog\n title=\"Enhanced Stereochemistry\"\n className={classes.enhancedStereo}\n params={rest}\n result={() => result}\n valid={() => valid}\n withDivider\n buttons={['Cancel', 'OK']}\n buttonsNameMap={{ OK: 'Apply' }}\n >\n <Form schema={enhancedStereoSchema} init={init} {...formState}>\n <fieldset>\n <label>\n <Field\n name=\"type\"\n labelPos={false}\n type=\"radio\"\n value={StereoLabel.Abs}\n checked={result.type === StereoLabel.Abs}\n />\n ABS\n </label>\n {maxAnd !== 0 && (\n <label>\n <Field\n name=\"type\"\n labelPos={false}\n type=\"radio\"\n value={StereoLabel.And}\n checked={result.type === StereoLabel.And}\n />\n Add to AND\n <Field\n name=\"andNumber\"\n schema={range(1, maxAnd + 1)}\n type=\"text\"\n className={classes.labelGroupSelect}\n />\n Group\n </label>\n )}\n {maxOr !== 0 && (\n <label>\n <Field\n name=\"type\"\n labelPos={false}\n type=\"radio\"\n value={StereoLabel.Or}\n checked={result.type === StereoLabel.Or}\n />\n Add to OR\n <Field\n name=\"orNumber\"\n schema={range(1, maxOr + 1)}\n type=\"text\"\n className={classes.labelGroupSelect}\n />\n Group\n </label>\n )}\n <label>\n <Field\n name=\"type\"\n labelPos={false}\n type=\"radio\"\n value={`${StereoLabel.And}${maxAnd + 1}`}\n checked={result.type === `${StereoLabel.And}${maxAnd + 1}`}\n />\n Create new AND Group\n </label>\n <label>\n <Field\n name=\"type\"\n labelPos={false}\n type=\"radio\"\n value={`${StereoLabel.Or}${maxOr + 1}`}\n checked={result.type === `${StereoLabel.Or}${maxOr + 1}`}\n />\n Create new OR Group\n </label>\n </fieldset>\n </Form>\n </Dialog>\n )\n}\n\n// TODO: Move the function below to Struct class\nfunction findStereLabels(struct, aids): Array<string> {\n const stereoIds = aids.filter(\n (aid) => struct.atoms.get(aid).stereoLabel !== null\n )\n return stereoIds.map((aid) => struct.atoms.get(aid).stereoLabel)\n}\n\nfunction maxOfAnds(stereLabels): number {\n const numbers = stereLabels.map((label) => {\n return label.match(/&/) ? +label.match(/\\d+/)?.join() : 0\n })\n return Math.max(...numbers)\n}\n\nfunction maxOfOrs(stereLabels): number {\n const numbers = stereLabels.map((label) => {\n return label.match(/or/) ? +label.match(/\\d+/)?.join() : 0\n })\n return Math.max(...numbers)\n}\n\nexport default connect((state) => ({\n formState: (state as any).modal.form || { result: {}, valid: false },\n struct: (state as any).editor.struct()\n}))(EnhancedStereo)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Form, { Field } from '../../component/form/form/form'\n\nimport { Dialog } from '../../views/components'\nimport { Elements } from 'ketcher-core'\nimport { capitalize } from 'lodash/fp'\nimport { connect } from 'react-redux'\nimport { labelEdit as labelEditSchema } from '../../data/schema/struct-schema'\nimport styles from './labelEdit.module.less'\n\nfunction serialize(lc) {\n const charge = Math.abs(lc.charge)\n const radical = ['', ':', '.', '^^'][lc.radical] || ''\n let sign = ''\n if (charge) sign = lc.charge < 0 ? '-' : '+'\n return (\n (lc.isotope || '') + lc.label + radical + (charge > 1 ? charge : '') + sign\n )\n}\n\nfunction deserialize(value) {\n const match = value.match(/^(\\d+)?([a-z*]{1,3})(\\.|:|\\^\\^)?(\\d+[-+]|[-+])?$/i) // TODO: radical on last place\n if (match) {\n const label = match[2] === '*' ? 'A' : capitalize(match[2])\n let charge = 0\n let isotope = 0\n let radical = 0\n\n if (match[1]) isotope = parseInt(match[1])\n\n if (match[3]) radical = { ':': 1, '.': 2, '^^': 3 }[match[3]]\n\n if (match[4]) {\n charge = parseInt(match[4])\n if (isNaN(charge))\n // eslint-disable-line\n charge = 1\n if (match[4].endsWith('-')) charge = -charge\n }\n // Not consistant\n if (\n label === 'A' ||\n label === 'Q' ||\n label === 'X' ||\n label === 'M' ||\n Elements.get(label)\n )\n return { label, charge, isotope, radical }\n }\n return null\n}\n\nfunction LabelEdit(props) {\n const init = { label: props.letter || serialize(props) }\n const { formState, ...prop } = props\n const { result, valid } = formState\n\n return (\n <Dialog\n title=\"Label Edit\"\n valid={() => valid}\n withDivider={true}\n needMargin={false}\n result={() => deserialize(result.label)}\n className={styles.labelEdit}\n buttons={['Cancel', 'OK']}\n buttonsNameMap={{ OK: 'Apply' }}\n focusable={false}\n params={prop}\n >\n <Form\n schema={labelEditSchema}\n customValid={{ label: (l) => deserialize(l) }}\n init={init}\n {...formState}\n >\n <Field\n name=\"label\"\n maxLength=\"20\"\n size=\"10\"\n autoFocus\n className={styles.labelEditInputField}\n />\n </Form>\n </Dialog>\n )\n}\n\nexport default connect((store) => ({ formState: store.modal.form }))(LabelEdit)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { ElementColor } from 'ketcher-core'\nimport classes from './AtomInfo.module.less'\nimport clsx from 'clsx'\n\nfunction AtomInfo({ el, isInfo }) {\n const numberStyle = {\n color: ElementColor[el.label] || 'black',\n fontSize: '12px'\n }\n const elemStyle = {\n color: ElementColor[el.label] || 'black',\n fontWeight: 'bold',\n fontSize: '18px'\n }\n return (\n <div className={clsx(classes.ket_atom_info, !isInfo && classes.none)}>\n <div style={numberStyle}>{el.number}</div>\n <span style={elemStyle}>{el.label}</span>\n <br />\n {el.title}\n <br />\n {el.mass}\n </div>\n )\n}\n\nexport default AtomInfo\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { range } from 'lodash/fp'\n\nconst PERIODIC_TABLE_COLUMNS = 19\n\nfunction Header() {\n return (\n <tbody>\n <tr>\n {range(0, PERIODIC_TABLE_COLUMNS).map((index) => (\n <th key={index}>{index || ''}</th>\n ))}\n </tr>\n </tbody>\n )\n}\n\nexport default Header\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Atom from '../../../../../../../component/view/Atom'\nimport clsx from 'clsx'\n\nfunction MainRow({\n row,\n caption,\n refer,\n onAtomSelect,\n onDoubleClick,\n currentEvents,\n atomClassNames,\n className\n}) {\n return (\n <tbody>\n <tr>\n <th>{caption}</th>\n {row.map((element, index) =>\n typeof element !== 'number' ? ( // eslint-disable-line\n <td key={index}>\n <Atom\n el={element}\n className={clsx(...atomClassNames(element))}\n onClick={() => onAtomSelect(element.label)}\n onDoubleClick={() => onDoubleClick()}\n {...currentEvents(element)}\n />\n </td>\n ) : refer(element) ? (\n <td key={index} className={className}>\n {refer(element)}\n </td>\n ) : (\n <td key={index} colSpan={element} />\n )\n )}\n </tr>\n </tbody>\n )\n}\n\nexport default MainRow\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Atom from '../../../../../../../component/view/Atom'\nimport clsx from 'clsx'\n\nfunction OutinerRow({\n row,\n caption,\n onAtomSelect,\n onDoubleClick,\n currentEvents,\n atomClassNames,\n className\n}) {\n return (\n <tbody>\n <tr>\n <th colSpan=\"3\" className={className}>\n {caption}\n </th>\n {row.map((element) => (\n <td key={element.label}>\n <Atom\n el={element}\n className={clsx(...atomClassNames(element))}\n onClick={() => onAtomSelect(element.label)}\n onDoubleClick={() => onDoubleClick()}\n {...currentEvents(element)}\n />\n </td>\n ))}\n <td />\n </tr>\n </tbody>\n )\n}\n\nexport default OutinerRow\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Header, MainRow, OutinerRow } from './components'\nimport { Component } from 'react'\n\nimport { Elements } from 'ketcher-core'\nimport styles from './ElementsTable.module.less'\n\nconst metalPrefix = [\n 'alkali',\n 'alkaline-earth',\n 'transition',\n 'post-transition'\n] // 'lanthanide', 'actinide'\nconst atomClassNames = {\n metal: 'metal',\n unknownProps: 'unknown-props',\n unknownState: 'unknown-state',\n button: 'button',\n selected: 'selected'\n}\nconst beforeSpan = {\n He: 16,\n B: 10,\n Al: 10,\n Hf: 1,\n Rf: 1\n}\nconst ACTINIDE = 'actinide'\nconst LANTHANIDE = 'lanthanide'\nconst main = rowPartition(\n Elements.filter(\n (item) =>\n item &&\n item.type !== ACTINIDE &&\n item.type !== LANTHANIDE &&\n item.number !== 89 &&\n item.number !== 57\n )\n)\nconst lanthanides = Elements.filter(\n (item) => item && (item.type === LANTHANIDE || item.number === 57)\n)\nconst actinides = Elements.filter(\n (item) => item && (item.type === ACTINIDE || item.number === 89)\n)\n\nfunction rowPartition(elements) {\n return elements.reduce((result, item) => {\n const row = result[item.period - 1]\n if (!row) {\n result.push([item])\n } else {\n if (beforeSpan[item.label]) row.push(beforeSpan[item.label])\n row.push(item)\n }\n return result\n }, [])\n}\n\nclass ElementsTable extends Component {\n // eslint-disable-line\n shouldComponentUpdate(nextProps) {\n return nextProps.value !== this.props.value\n }\n\n getAtomClassNames = (item) => {\n const { selected } = this.props\n\n const type = metalPrefix.includes(item.type)\n ? `${item.type} ${atomClassNames.metal}`\n : item.type || atomClassNames.unknownProps\n\n const classes = [\n ...type.split(' '),\n item.state || atomClassNames.unknownState,\n item.origin,\n atomClassNames.button,\n selected(item.label) && atomClassNames.selected\n ]\n\n return classes.map((className) => {\n return styles[className]\n })\n }\n\n render() {\n const { currentEvents, onAtomSelect, onDoubleClick } = this.props\n const callbacks = { currentEvents, onAtomSelect, onDoubleClick }\n return (\n <table\n className={styles.table}\n summary=\"Periodic table of the chemical elements\"\n >\n <Header />\n {main.map((row, index) => (\n <MainRow\n atomClassNames={this.getAtomClassNames}\n className={styles.main_row}\n key={index}\n row={row}\n caption={index + 1}\n refer={(element) => element === 1 && (index === 5 ? '*' : '**')}\n {...callbacks}\n />\n ))}\n <OutinerRow\n atomClassNames={this.getAtomClassNames}\n className={styles.outiner_row}\n row={lanthanides}\n caption=\"*\"\n {...callbacks}\n />\n <OutinerRow\n atomClassNames={this.getAtomClassNames}\n className={styles.outiner_row}\n row={actinides}\n caption=\"**\"\n {...callbacks}\n />\n </table>\n )\n }\n}\n\nexport default ElementsTable\n","/****************************************************************************\n * Copyright 2022 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport styles from './BoxWithLines.module.less'\n\nexport const HorizontalBoxWithLines = () => {\n return (\n <div className={styles.horizintalNodeLines}>\n <div className={styles.upperLines} />\n <div className={styles.lowerLine} />\n </div>\n )\n}\n\nexport const VerticalBoxWithLines = () => {\n return (\n <div className={styles.verticalNodeLines}>\n <div className={styles.upperLines} />\n <div className={styles.lowerLine} />\n </div>\n )\n}\n","export const isGenericGroup = (group) => {\n const cyclicGroups = [\n 'Acyclic',\n 'Cyclic',\n 'Acyclic Carbo',\n 'Cyclic Carbo',\n 'Acyclic Hetero',\n 'Cyclic Hetero'\n ]\n return cyclicGroups.includes(group)\n}\n","/****************************************************************************\n * Copyright 2022 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport type { GenItemSet } from 'ketcher-core'\nimport classes from './GenSet.module.less'\nimport clsx from 'clsx'\nimport { isGenericGroup } from '../../helpers'\n\ntype GenSetProps = {\n labels: GenItemSet[]\n selected: (label: string) => boolean\n onAtomSelect: (label: string, activateImmediately: boolean) => void\n className?: string\n group: string\n}\n\nconst getGroupClassName = (groupName: string) => groupName.replaceAll(' ', '')\n\nfunction GenSet({\n labels,\n selected,\n onAtomSelect,\n className,\n group\n}: GenSetProps) {\n return (\n <>\n {labels.map((item, index) => {\n const buttons = item.items\n const caption = item.displayName\n return (\n <fieldset className={className} key={index}>\n <div className={classes[getGroupClassName(group)]}>\n {buttons.map((button, index) => (\n <button\n key={index}\n onClick={() => onAtomSelect(button.label, false)}\n onDoubleClick={() => onAtomSelect(button.label, true)}\n title={button.description || button.label}\n className={clsx(\n {\n [classes.selected]: selected(button.label)\n },\n classes.button\n )}\n >\n {button.label}\n </button>\n ))}\n </div>\n {!isGenericGroup(group) && caption && (\n <div className={classes.legendBox}>\n <legend>{caption}</legend>\n </div>\n )}\n {isGenericGroup(group) && caption && (\n <div className={classes.genGroupLegendBox}>\n <legend className={classes.genGroupLegend}>{caption}</legend>\n </div>\n )}\n </fieldset>\n )\n })}\n </>\n )\n}\n\nexport { GenSet }\n","/****************************************************************************\n * Copyright 2022 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport type { GenGroup as GenGroupType } from 'ketcher-core'\nimport { GenSet } from './GenSet'\nimport { isGenericGroup } from '../../helpers'\nimport styles from './GenGroup.module.less'\n\ntype GenProps = {\n selected: (label: string) => boolean\n onAtomSelect: (label: string, activateImmediately: boolean) => void\n group: GenGroupType\n}\n\nconst getLegendClassname = (title: string) => {\n const mainTitles = [\n 'Atom Generics',\n 'Special Nodes',\n 'Group Generics',\n 'Acyclic',\n 'Cyclic'\n ]\n if (mainTitles.includes(title)) return 'legendMain'\n return 'legend'\n}\n\nconst GenGroup = ({ group, onAtomSelect, selected }: GenProps) => {\n return (\n <div className={styles.fieldFlexWrapper}>\n <fieldset className={styles.fieldset}>\n <legend className={styles[getLegendClassname(group.title)]}>\n {group.title}\n </legend>\n <div\n className={\n isGenericGroup(group.title)\n ? styles.genButtonContainer\n : styles.buttonContainer\n }\n >\n {group.itemSets && (\n <GenSet\n labels={group.itemSets}\n selected={selected}\n onAtomSelect={onAtomSelect}\n className={styles.subGroup}\n group={group.title}\n />\n )}\n </div>\n </fieldset>\n </div>\n )\n}\n\nexport { GenGroup }\n","/****************************************************************************\n * Copyright 2022 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { HorizontalBoxWithLines, VerticalBoxWithLines } from './BoxWithLines'\n\nimport { GenGroup } from './GenGroup'\nimport { Generics } from 'ketcher-core'\nimport classes from './GenericGroups.module.less'\nimport { groupNames } from './'\n\ntype GenericGroupsProps = {\n selected: (label: string) => boolean\n onAtomSelect: (label: string, activateImmediately: boolean) => void\n}\n\nconst getGenericsGroupsMap = (tree) => {\n let newGroups = {}\n for (const groupName of Object.keys(tree)) {\n newGroups[groupName] = { ...tree[groupName] }\n if (newGroups[groupName]?.subGroups) {\n newGroups = {\n ...newGroups,\n ...getGenericsGroupsMap(newGroups[groupName].subGroups)\n }\n }\n }\n return newGroups\n}\n\nconst renderGenGroupComponent = (group, selected, onAtomSelect) => (\n <GenGroup\n group={groupsMap[group]}\n selected={selected}\n onAtomSelect={onAtomSelect}\n />\n)\n\nconst groupsMap = getGenericsGroupsMap(Generics)\n\nfunction GenericGroups({ selected, onAtomSelect }: GenericGroupsProps) {\n return (\n <div className={classes.genericGroups}>\n <div className={classes.topGroupsContainer}>\n {renderGenGroupComponent(groupNames.atomsGen, selected, onAtomSelect)}\n {renderGenGroupComponent(\n groupNames.specialNodes,\n selected,\n onAtomSelect\n )}\n </div>\n {renderGenGroupComponent(groupNames.groupGen, selected, onAtomSelect)}\n <HorizontalBoxWithLines />\n <div className={classes.groupGenerics}>\n <div>\n {renderGenGroupComponent(\n groupNames.groupAcyclic,\n selected,\n onAtomSelect\n )}\n <div className={classes.subgroupContainer}>\n <VerticalBoxWithLines />\n <div>\n {renderGenGroupComponent(\n groupNames.acyclicCarbo,\n selected,\n onAtomSelect\n )}\n {renderGenGroupComponent(\n groupNames.acyclicHetero,\n selected,\n onAtomSelect\n )}\n </div>\n </div>\n </div>\n <div>\n {renderGenGroupComponent(\n groupNames.groupCyclic,\n selected,\n onAtomSelect\n )}\n <div className={classes.subgroupContainer}>\n <VerticalBoxWithLines />\n <div>\n {renderGenGroupComponent(\n groupNames.cyclicCarbo,\n selected,\n onAtomSelect\n )}\n {renderGenGroupComponent(\n groupNames.cyclicHetero,\n selected,\n onAtomSelect\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default GenericGroups\n","/****************************************************************************\n * Copyright 2022 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nexport { default } from './GenericGroups'\n\nexport enum groupNames {\n atomsGen = 'atoms-gen',\n specialNodes = 'special-nodes',\n groupGen = 'group-gen',\n groupAcyclic = 'group-acyclic',\n acyclicCarbo = 'acyclic-carbo',\n acyclicHetero = 'acyclic-hetero',\n groupCyclic = 'group-cyclic',\n cyclicHetero = 'cyclic-hetero',\n cyclicCarbo = 'cyclic-carbo'\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport classes from './TypeChoice.module.less'\nimport { GenericInput } from 'src/script/ui/component/form/input'\n\nconst typeSchema = [\n { title: 'Single', value: 'atom' },\n { title: 'List', value: 'list' },\n { title: 'Not List', value: 'not-list' }\n]\n\nfunction TypeChoice({ value, onChange, ...props }) {\n return (\n <fieldset className={classes.fieldset}>\n {typeSchema.map((type) => (\n <label key={type.title}>\n <GenericInput\n type=\"radio\"\n value={type.value}\n checked={type.value === value}\n onChange={() => onChange(type.value)}\n {...props}\n />\n {type.title}\n </label>\n ))}\n </fieldset>\n )\n}\n\nexport default TypeChoice\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { AtomInfo, ElementsTable, TypeChoice } from './components'\nimport { fromElement, toElement } from '../../../../data/convert/structconv'\n\nimport { Component } from 'react'\nimport { Dialog } from '../../../components'\nimport { Elements } from 'ketcher-core'\nimport Icon from '../../../../component/view/icon'\nimport Tabs from '../../../../component/view/Tabs'\nimport { addAtoms } from '../../../../state/toolbar'\nimport classes from './PeriodTable.module.less'\nimport { connect } from 'react-redux'\nimport { onAction } from '../../../../state'\nimport { xor } from 'lodash/fp'\n\nclass Table extends Component {\n constructor(props) {\n super(props)\n this.state = {\n type: props.type || 'atom',\n value: props.values || (!props.pseudo ? props.label : null) || null,\n current: Elements.get(2),\n isInfo: false\n }\n }\n\n changeType = (type) => {\n const prevChoice =\n this.state.type === 'list' || this.state.type === 'not-list'\n const currentChoice = type === 'list' || type === 'not-list'\n if (prevChoice && currentChoice) {\n this.setState({ type })\n } else {\n this.setState({\n type,\n value: type === 'atom' || type === 'gen' ? null : []\n })\n }\n }\n\n headerContent = () => (\n <div className={classes.dialogHeader}>\n <Icon name=\"period-table\" />\n <span>Periodic Table</span>\n </div>\n )\n\n selected = (label) => {\n const { type, value } = this.state\n return type === 'atom' || type === 'gen'\n ? value === label\n : value.includes(label)\n }\n\n onAtomSelect = (label, activateImmediately = false) => {\n if (activateImmediately) {\n const result = this.result()\n const { type } = this.state\n if (result && type === 'atom') {\n this.props.onOk(this.result())\n }\n } else {\n const { type, value } = this.state\n this.setState({\n value: type === 'atom' || type === 'gen' ? label : xor([label], value)\n })\n }\n }\n\n result = () => {\n const { type, value } = this.state\n if (!value || !value.length) {\n return null\n }\n if (type === 'atom') {\n return { label: value, pseudo: null }\n } else if (type === 'gen') {\n return { type, label: value, pseudo: value }\n }\n return { type, values: value }\n }\n\n currentEvents = (element) => {\n return {\n onMouseEnter: () => this.setState({ current: element, isInfo: true }),\n onMouseLeave: () => this.setState({ isInfo: false })\n }\n }\n\n render() {\n const { type, value } = this.state\n const HeaderContent = this.headerContent\n\n return (\n <Dialog\n headerContent={<HeaderContent />}\n className={classes.elementsTable}\n params={this.props}\n result={this.result}\n buttons={['Cancel', 'OK']}\n buttonsNameMap={{ OK: 'Add' }}\n needMargin={false}\n footerContent={\n <TypeChoice value={this.state.type} onChange={this.changeType} />\n }\n >\n <div className={classes.periodTable}>\n <AtomInfo el={this.state.current} isInfo={this.state.isInfo} />\n <ElementsTable\n value={value}\n currentEvents={this.currentEvents}\n selected={this.selected}\n onAtomSelect={(label) => this.onAtomSelect(label)}\n onDoubleClick={(label) => this.onAtomSelect(label, true)}\n />\n </div>\n </Dialog>\n )\n }\n}\n\nfunction mapSelectionToProps(editor) {\n const selection = editor.selection()\n\n if (\n selection &&\n Object.keys(selection).length === 1 &&\n selection.atoms &&\n Object.keys(selection.atoms).length === 1\n ) {\n const struct = editor.struct()\n const atom = struct.atoms.get(selection.atoms[0])\n return { ...fromElement(atom) }\n }\n\n return {}\n}\n\nconst mapStateToProps = (state, ownProps) => {\n if (ownProps.values || ownProps.label) {\n return {}\n }\n return mapSelectionToProps(state.editor)\n}\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n onOk: (result) => {\n if (!result.type || result.type === 'atom') {\n dispatch(addAtoms(result.label))\n }\n dispatch(onAction({ tool: 'atom', opts: toElement(result) }))\n ownProps.onOk(result)\n }\n }\n}\n\nconst PeriodTable = connect(mapStateToProps, mapDispatchToProps)(Table)\n\nexport default PeriodTable\n","/****************************************************************************\n * Copyright 2022 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { fromElement, toElement } from '../../../../data/convert/structconv'\n\nimport { Dialog } from '../../../components'\nimport GenericGroups from './components/GenericGroups'\nimport classes from './ExtendedTable.module.less'\nimport { connect } from 'react-redux'\nimport { onAction } from '../../../../state'\nimport { useState } from 'react'\n\nconst Table = (props) => {\n const [value, setValue] = useState(props.pseudo ? props.label : null)\n\n const selected = (label) => value === label\n\n const result = () => {\n if (!value || !value.length) {\n return null\n }\n return { type: 'gen', label: value, pseudo: value }\n }\n\n const onAtomSelect = (label, activateImmediately = false) => {\n setValue(label)\n\n if (activateImmediately) {\n props.onOk(result())\n }\n }\n\n return (\n <Dialog\n title=\"Extended Table\"\n withDivider\n className={classes.extendedTable}\n params={props}\n result={result}\n buttons={['Cancel', 'OK']}\n buttonsNameMap={{ OK: 'Add' }}\n needMargin={false}\n >\n <GenericGroups\n selected={selected}\n onAtomSelect={onAtomSelect}\n ></GenericGroups>\n </Dialog>\n )\n}\n\nfunction mapSelectionToProps(editor) {\n const selection = editor.selection()\n if (selection?.atoms?.length === 1) {\n const struct = editor.struct()\n const atom = struct.atoms.get(selection.atoms[0])\n return { ...fromElement(atom) }\n }\n\n return {}\n}\n\nconst mapStateToProps = (state, ownProps) => {\n if (ownProps.values || ownProps.label) {\n return {}\n }\n return mapSelectionToProps(state.editor)\n}\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n onOk: (result) => {\n dispatch(onAction({ tool: 'atom', opts: toElement(result) }))\n ownProps.onOk(result)\n }\n }\n}\n\nconst ExtendedTable = connect(mapStateToProps, mapDispatchToProps)(Table)\n\nexport default ExtendedTable\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { BaseCallProps, BaseProps } from '../../../modal.types'\nimport classes from './RemoveFG.module.less'\nimport { useAppContext } from '../../../../../../../hooks'\nimport { fromSgroupDeletion } from 'ketcher-core'\n\ninterface RemoveFGProps extends BaseProps {\n fgIds: any\n}\n\ntype Props = RemoveFGProps & BaseCallProps\n\nconst RemoveFG = (props: Props) => {\n const { getKetcherInstance } = useAppContext()\n const editor = getKetcherInstance().editor as any\n const { fgIds } = props\n\n const remove = function () {\n if (fgIds.length > 0)\n for (const id of fgIds) {\n editor.update(fromSgroupDeletion(editor.render.ctab, id))\n }\n return true\n }\n\n const exit = (key, res) => {\n props[key](res)\n }\n\n return (\n <div\n onSubmit={(event) => event.preventDefault()}\n tabIndex={-1}\n className={classes.window}\n >\n <header className={classes.header}>Edit Abbreviation</header>\n <div className={classes.question}>\n A change was detected for the abbreviation. Do you want to remove the\n abbreviation information from the structure and continue work with\n separate atoms and bonds?\n </div>\n <footer className={classes.footer}>\n <input\n type=\"button\"\n value={'Cancel'}\n className={classes.buttonCancel}\n onClick={() => exit('onOk', false)}\n />\n <input\n type=\"button\"\n value={'Remove Abbreviation'}\n className={classes.buttonOk}\n onClick={() => exit('onOk', remove())}\n />\n </footer>\n </div>\n )\n}\n\nexport type { RemoveFGProps }\nexport { RemoveFG }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { xor } from 'lodash/fp'\n\nfunction oneOrMore(multipl, values, item) {\n if (multipl) return xor(values, [item])\n return xor(values, values.concat([item]))\n}\n\nfunction ButtonList({\n value,\n onChange,\n schema,\n disabledIds,\n multiple,\n classes\n}) {\n let className\n const selected = classes.selected || 'selected'\n return (\n <ul>\n {schema.items.enum.map((item, i) => {\n className = value.includes(item) ? selected : ''\n return (\n <li key={item}>\n <button\n disabled={disabledIds.includes(item)}\n type=\"button\"\n className={className}\n onClick={() => onChange(oneOrMore(multiple, value, item))}\n >\n {schema.items.enumNames[i]}\n </button>\n </li>\n )\n })}\n </ul>\n )\n}\n\nexport default ButtonList\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Form, { Field } from '../../../component/form/form/form'\n\nimport ButtonList from '../../../component/form/buttonlist'\nimport { Dialog } from '../../../views/components'\nimport classes from './rgroup.module.less'\nimport { connect } from 'react-redux'\nimport { rgroupSchema } from '../../../data/schema/struct-schema'\n\nfunction RGroup({ disabledIds, values, formState, type, ...props }) {\n return (\n <Dialog\n title=\"R-Group\"\n className={classes.rgroup}\n params={props}\n result={() => formState.result}\n buttonsNameMap={{ OK: 'Apply' }}\n buttons={['Cancel', 'OK']}\n withDivider\n >\n <Form schema={rgroupSchema} init={{ values }} {...formState}>\n <Field\n name=\"values\"\n multiple={type === 'atom'}\n labelPos={false}\n component={ButtonList}\n disabledIds={disabledIds}\n classes={classes}\n />\n </Form>\n </Dialog>\n )\n}\n\nexport default connect((store) => ({ formState: store.modal.form }))(RGroup)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Form, { Field } from '../../component/form/form/form'\nimport {\n getSdataDefault,\n sdataCustomSchema\n} from '../../data/schema/sdata-schema'\nimport { getSelectOptionsFromSchema } from '../../utils'\n\nimport { Dialog } from '../../views/components'\nimport Select from '../../component/form/Select'\nimport classes from './sgroup.module.less'\nimport { connect } from 'react-redux'\n\nfunction SData({\n context,\n fieldName,\n fieldValue,\n type,\n radiobuttons,\n formState,\n ...prop\n}) {\n const { result, valid } = formState\n\n const formSchema = sdataCustomSchema\n\n const init = {\n context: context || getSdataDefault(formSchema, 'context'),\n fieldName: fieldName || getSdataDefault(formSchema, 'fieldName'),\n type,\n radiobuttons: radiobuttons || getSdataDefault(formSchema, 'radiobuttons')\n }\n\n init.fieldValue = fieldValue || getSdataDefault(formSchema, 'fieldValue')\n\n const serialize = {\n context: result.context.trim(),\n fieldName: result.fieldName.trim(),\n fieldValue:\n typeof result.fieldValue === 'string'\n ? result.fieldValue.trim()\n : result.fieldValue\n }\n\n return (\n <Dialog\n title=\"S-Group Properties\"\n className={classes.sgroup}\n result={() => result}\n valid={() => valid}\n buttons={['Cancel', 'OK']}\n buttonsNameMap={{ OK: 'Apply' }}\n withDivider={true}\n needMargin={false}\n params={prop}\n >\n <Form\n serialize={serialize}\n schema={formSchema}\n init={init}\n {...formState}\n >\n <fieldset className=\"sdata\">\n <Field\n name=\"context\"\n options={getSelectOptionsFromSchema(formSchema.properties.context)}\n component={Select}\n />\n <Field name=\"fieldName\" placeholder=\"Enter name\" />\n {content(\n formSchema,\n result.context,\n result.fieldName,\n result.fieldValue,\n result.radiobuttons\n )}\n </fieldset>\n </Form>\n </Dialog>\n )\n}\n\nconst content = (schema, context, fieldName, fieldValue, checked) =>\n Object.keys(schema.properties)\n .filter(\n (prop) => prop !== 'type' && prop !== 'context' && prop !== 'fieldName'\n )\n .map((prop) => {\n return prop === 'radiobuttons' ? (\n <Field\n name={prop}\n checked={checked}\n type=\"radio\"\n key={`${context}-${fieldName}-${prop}-radio`}\n labelPos={false}\n />\n ) : prop === 'fieldValue' ? (\n <Field\n name={prop}\n key={`${context}-${fieldName}-${prop}-select`}\n placeholder=\"Enter value\"\n />\n ) : (\n <Field\n name={prop}\n type=\"textarea\"\n key={`${context}-${fieldName}-${prop}-select`}\n />\n )\n })\n\nexport default connect((store) => ({ formState: store.modal.form }))(SData)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Form, { Field, SelectOneOf } from '../../component/form/form/form'\n\nimport { Dialog } from '../../views/components'\nimport Select from '../../component/form/Select'\nimport classes from './sgroup.module.less'\nimport { connect } from 'react-redux'\nimport { getSelectOptionsFromSchema } from '../../utils'\nimport { sgroupMap as schemes } from '../../data/schema/struct-schema'\n\nfunction Sgroup({ formState, ...prop }) {\n const { result, valid } = formState\n\n const type = result.type\n\n return (\n <Dialog\n title=\"S-Group Properties\"\n className={classes.sgroup}\n result={() => result}\n valid={() => valid}\n buttons={['Cancel', 'OK']}\n buttonsNameMap={{ OK: 'Apply' }}\n withDivider={true}\n params={prop}\n >\n <Form schema={schemes[type]} init={prop} {...formState}>\n <SelectOneOf title=\"Type\" name=\"type\" schema={schemes} />\n {type !== 'GEN' && (\n <fieldset className={type === 'DAT' ? classes.data : 'base'}>\n {content(type)}\n </fieldset>\n )}\n </Form>\n </Dialog>\n )\n}\n\nconst content = (type) =>\n Object.keys(schemes[type].properties)\n .filter((prop) => prop !== 'type')\n .map((prop) => {\n const props = {}\n if (prop === 'name') props.maxLength = 15\n if (prop === 'fieldName') props.maxLength = 30\n if (prop === 'fieldValue') props.type = 'textarea'\n if (prop === 'radiobuttons') props.type = 'radio'\n if (prop === 'connectivity')\n return (\n <Field\n name={prop}\n key={`${type}-${prop}`}\n {...props}\n component={Select}\n options={getSelectOptionsFromSchema(schemes[type].properties[prop])}\n />\n )\n\n return <Field name={prop} key={`${type}-${prop}`} {...props} />\n })\n\nexport default connect((store) => ({ formState: store.modal.form }))(Sgroup)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Dialog, StructEditor } from '../../views/components'\nimport { Component } from 'react'\nimport { initAttach, setAttachPoints, setTmplName } from '../../state/templates'\n\nimport { connect } from 'react-redux'\nimport { storage } from '../../storage-ext'\nimport Form, { Field } from '../../component/form/form/form'\nimport { attachSchema } from '../../data/schema/struct-schema'\nimport styled from '@emotion/styled'\nimport classes from './template-lib.module.less'\nimport { css } from '@emotion/react'\nimport { Button } from '@mui/material'\n\n// @TODO When theming is implemented, use theme wherever possible\nconst TemplateEditDialog = styled(Dialog)`\n background-color: #fff;\n\n & header {\n text-transform: none;\n border-bottom: 1px solid #e1e5ea;\n margin: 0;\n padding: 12px;\n }\n\n & form {\n display: flex;\n\n & label::after {\n top: 92px;\n margin-right: 12px;\n }\n }\n`\n\nconst Editor = styled('div')`\n border: 1px solid #b4b9d6;\n background-color: #ffff;\n border-radius: 5px;\n position: relative;\n height: 300px;\n width: 330px;\n overflow: hidden;\n\n & .structEditor {\n height: 100%;\n width: 100%;\n border: none;\n }\n`\n\nconst Warning = styled('div')`\n padding: 0 5px;\n`\n\nconst LeftColumn = styled('div')`\n padding: 12px;\n border-radius: 0 0 0 8px;\n background-color: #eff2f5;\n`\n\nconst RightColumn = styled('div')`\n width: 40%;\n min-width: 200px;\n box-sizing: border-box;\n padding: 12px;\n display: flex;\n flex-direction: column;\n`\n\nconst NameInput = styled(Field)`\n display: flex;\n flex-direction: column;\n margin-bottom: 12px;\n\n & > input[type='text'] {\n display: block;\n width: 100%;\n box-sizing: border-box;\n padding: 4px 16px 4px 8px;\n border: 1px solid #cad3dd;\n border-radius: 4px;\n line-height: 16px;\n font-size: 14px;\n margin-top: 2px;\n\n &:hover {\n border-color: #43b5c0;\n }\n\n &:hover,\n :focus {\n box-shadow: none;\n }\n }\n\n & span {\n display: block;\n width: 100%;\n }\n`\n\nconst AttachmentOutput = styled('span')`\n display: block;\n width: 100%;\n height: 24px;\n box-sizing: border-box;\n padding: 4px 8px;\n border: 1px solid #cad3dd;\n border-radius: 4px;\n line-height: 14px;\n font-size: 14px;\n background-color: #eff2f5;\n margin-top: 2px;\n`\n\nconst Buttons = styled('div')`\n display: flex;\n flex-direction: row;\n margin-top: auto;\n justify-content: flex-end;\n gap: 8px;\n`\n\nconst buttonCommonStyles = css`\n width: fit-content;\n padding: 5px 8px;\n text-transform: none;\n font-size: 12px;\n line-height: 14px;\n box-shadow: none;\n`\n\nconst SaveButton = styled(Button)`\n ${buttonCommonStyles}\n background-color: #167782;\n\n &:hover {\n background-color: #43b5c0;\n box-shadow: none;\n }\n\n &:disabled {\n background-color: #e1e5ea;\n color: #333333;\n }\n`\n\nconst CancelButton = styled(Button)`\n ${buttonCommonStyles}\n border-color: #585858;\n color: #585858;\n\n &:hover {\n border-color: #333333;\n color: #333333;\n box-shadow: none;\n }\n`\n\nconst editorStyles = {\n selectionStyle: {\n fill: '#167782',\n 'fill-opacity': '0.28',\n stroke: '#167782'\n },\n hoverStyle: { stroke: '#1a7090', 'stroke-width': 1.2 },\n hoverStyleSimpleObject: { 'stroke-opacity': 0.3 }\n}\n\nclass Attach extends Component {\n constructor({ onInit, ...props }) {\n super()\n this.tmpl = initTmpl(props.tmpl)\n onInit(this.tmpl.struct.name, this.tmpl.props)\n this.onResult = this.onResult.bind(this)\n }\n\n onResult() {\n const { name, atomid, bondid } = this.props\n return name &&\n (name !== this.tmpl.struct.name ||\n atomid !== this.tmpl.props.atomid ||\n bondid !== this.tmpl.props.bondid) &&\n name.trim().length\n ? { name, attach: { atomid, bondid } }\n : null\n }\n\n checkIsValidName(name) {\n return (\n !!name &&\n !this.props.templateLib.some(\n (tmpl) =>\n tmpl.struct.name === name && tmpl.props.group === 'User Templates'\n ) &&\n name.length <= 128\n )\n }\n\n render() {\n const { name, onNameEdit, onAttachEdit, ...prop } = this.props\n const struct = this.tmpl.struct\n const { atomid, bondid } =\n struct.atoms.get(this.props.atomid) && struct.bonds.get(this.props.bondid)\n ? this.props\n : this.tmpl.props\n const options = Object.assign(editorStyles, this.props.globalSettings, {\n scale: getScale(struct)\n })\n\n return (\n <TemplateEditDialog\n title=\"Template edit\"\n result={this.onResult}\n valid={() => this.props.formState.valid && name}\n params={prop}\n buttons={[]}\n needMargin={false}\n >\n <Form\n schema={attachSchema}\n customValid={{\n name: (name) => this.checkIsValidName(name)\n }}\n {...this.props.formState}\n >\n <LeftColumn>\n <Editor>\n <StructEditor\n className=\"structEditor\"\n struct={struct}\n onAttachEdit={onAttachEdit}\n tool=\"attach\"\n toolOpts={{ atomid, bondid }}\n options={options}\n showAttachmentPoints={false}\n />\n </Editor>\n {!storage.isAvailable() ? (\n <Warning>{storage.warningMessage}</Warning>\n ) : null}\n </LeftColumn>\n <RightColumn>\n <NameInput\n name=\"name\"\n value={name}\n onChange={this.props.onNameEdit}\n placeholder=\"template\"\n />\n <span>Selected attachment points</span>\n <AttachmentOutput>\n Atom ID: <strong>{atomid}</strong> Bond ID:{' '}\n <strong>{bondid}</strong>\n </AttachmentOutput>\n <Buttons>\n <CancelButton\n variant=\"outlined\"\n onClick={this.props.onCancel}\n className={classes.button}\n >\n Cancel\n </CancelButton>\n <SaveButton\n variant=\"contained\"\n onClick={() => this.props.onOk(this.onResult())}\n className={classes.button}\n disabled={!this.checkIsValidName(name)}\n >\n Apply\n </SaveButton>\n </Buttons>\n </RightColumn>\n </Form>\n </TemplateEditDialog>\n )\n }\n}\n\nexport default connect(\n (store) => ({\n ...store.templates.attach,\n templateLib: store.templates.lib,\n formState: store.modal.form,\n globalSettings: store.options.settings\n }),\n (dispatch) => ({\n onInit: (name, ap) => dispatch(initAttach(name, ap)),\n onAttachEdit: (ap) => dispatch(setAttachPoints(ap)),\n onNameEdit: (name) => dispatch(setTmplName(name))\n })\n)(Attach)\n\nfunction initTmpl(tmpl) {\n const normTmpl = {\n struct: structNormalization(tmpl.struct),\n props: {\n atomid: +tmpl.props.atomid || 0,\n bondid: +tmpl.props.bondid || 0\n }\n }\n normTmpl.struct.name = tmpl.struct.name\n return normTmpl\n}\n\nfunction structNormalization(struct) {\n const normStruct = struct.clone()\n const cbb = normStruct.getCoordBoundingBox()\n\n normStruct.atoms.forEach((atom) => {\n atom.pp = atom.pp.sub(cbb.min)\n })\n\n normStruct.sgroups.forEach((sg) => {\n sg.pp = sg.pp ? sg.pp.sub(cbb.min) : cbb.min\n })\n\n normStruct.rxnArrows.forEach((rxnArrow) => {\n rxnArrow.pos = rxnArrow.pos.map((p) => p.sub(cbb.min))\n })\n\n normStruct.rxnPluses.forEach((rxnPlus) => {\n rxnPlus.pp = rxnPlus.pp.sub(cbb.min)\n })\n\n normStruct.simpleObjects.forEach((simpleObject) => {\n simpleObject.pos = simpleObject.pos.map((p) => p.sub(cbb.min))\n })\n\n normStruct.texts.forEach((text) => {\n text.position = text.position.sub(cbb.min)\n })\n\n return normStruct\n}\n\nfunction getScale(struct) {\n const cbb = struct.getCoordBoundingBox()\n const VIEW_SIZE = 220\n const scale =\n VIEW_SIZE / Math.max(cbb.max.y - cbb.min.y, cbb.max.x - cbb.min.x)\n if (scale < 35) return 35\n if (scale > 50) return 50\n return 40\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { FC } from 'react'\nimport { Struct } from 'ketcher-core'\nimport StructRender from '../../component/structrender'\nimport classes from './TemplateTable.module.less'\nimport { greekify } from '../../utils'\nimport Icon from 'src/script/ui/component/view/icon'\n\nexport interface Template {\n struct: Struct\n props: {\n atomid: number\n bondid: number\n group: string\n prerender?: string\n abbreviation: string\n name: string\n }\n}\n\ninterface TemplateTableProps {\n templates: Array<Template>\n selected: Template | null\n onSelect: (tmpl: Template) => void\n onDelete?: (tmpl: Template) => void\n onAttach?: (tmpl: Template) => void\n titleRows?: 1 | 2\n renderOptions?: any\n}\n\nconst isSaltOrSolventTemplate = (template) =>\n template.props.group === 'Salts and Solvents'\nconst isFunctionalGroupTemplate = (template) =>\n template.props.group === 'Functional Groups'\n\nfunction getTemplateTitle(template: Template, index: number): string {\n if (isSaltOrSolventTemplate(template)) {\n return template.props.name\n }\n return template.struct.name || `${template.props.group} template ${index + 1}`\n}\n\nfunction tmplName(tmpl: Template, i: number): string {\n if (isSaltOrSolventTemplate(tmpl)) {\n return tmpl.props.abbreviation\n }\n return tmpl.struct.name || `${tmpl.props.group} template ${i + 1}`\n}\n\nconst RenderTmpl: FC<{\n tmpl: Template\n options: any\n className: string\n}> = ({ tmpl, options, ...props }) => {\n return (\n <StructRender\n struct={tmpl.struct}\n {...props}\n options={{\n ...options,\n autoScaleMargin: 10,\n cachePrefix: 'templates',\n downScale: true\n }}\n />\n )\n}\n\nconst TemplateTable: FC<TemplateTableProps> = (props) => {\n const {\n templates,\n selected,\n onSelect,\n onDelete,\n onAttach,\n titleRows = 2,\n renderOptions\n } = props\n\n return (\n <div\n className={`${classes.tableContent} ${\n titleRows === 1 ? classes.oneRowTitleTable : classes.twoRowsTitleTable\n }`}\n >\n {templates.map((tmpl, i) => {\n return (\n <div\n className={\n tmpl.struct !== selected?.struct\n ? classes.td\n : `${classes.td} ${classes.selected}`\n }\n title={greekify(getTemplateTitle(tmpl, i))}\n key={\n tmpl.struct.name !== selected?.struct.name\n ? `${tmpl.struct.name}_${i}`\n : `${tmpl.struct.name}_${i}_selected`\n }\n onClick={() => onSelect(tmpl)}\n >\n <RenderTmpl\n tmpl={tmpl}\n options={renderOptions}\n className={classes.struct}\n />\n <div\n className={`${classes.structTitle} ${\n selected?.struct === tmpl.struct ? classes.selectedTitle : ''\n }`}\n >\n {greekify(tmplName(tmpl, i))}\n </div>\n {tmpl.props.group === 'User Templates' && (\n <button\n className={`${classes.button} ${classes.deleteButton}`}\n onClick={() => onDelete!(tmpl)}\n >\n <Icon name=\"delete\" />\n </button>\n )}\n {!isFunctionalGroupTemplate(tmpl) &&\n !isSaltOrSolventTemplate(tmpl) && (\n <button\n className={`${classes.button} ${classes.editButton}`}\n onClick={(e) => {\n e.stopPropagation()\n onAttach!(tmpl)\n }}\n >\n <Icon name=\"edit\" />\n </button>\n )}\n </div>\n )\n })}\n </div>\n )\n}\n\nexport default TemplateTable\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nexport const saltsAndSolventsSelector = (state) => {\n return state.saltsAndSolvents.lib\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport classes from './emptySearchResult.module.less'\nimport Icon from '../../component/view/icon'\n\nconst EmptySearchResult = ({ textInfo }) => {\n return (\n <div className={classes.emptySearch}>\n <p>{textInfo}</p>\n <Icon name=\"not-found\" />\n </div>\n )\n}\n\nexport default EmptySearchResult\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport { filterFGLib } from '../../utils'\nimport { Template } from './TemplateTable'\n\nconst SALTS_AND_SOLVENTS = 'Salts and Solvents'\nconst batchDelay = 300\n\nexport default function useSaltsAndSolvents(\n saltsAndSolvents: Template[],\n filter: string\n) {\n const [isFirstRender, setIsFirstRender] = useState(true)\n const timerId = useRef<null | ReturnType<typeof setTimeout>>(null)\n const [filteredSaltsAndSolvents, setFilteredSaltsAndSolvents] = useState(\n saltsAndSolvents[SALTS_AND_SOLVENTS]\n )\n\n const addToSaSWithBatches = useCallback((fullFilteredArray) => {\n const batchSize = 16\n setFilteredSaltsAndSolvents((filteredSaltsAndSolvents) => [\n ...(filteredSaltsAndSolvents ?? []),\n ...fullFilteredArray.splice(0, batchSize)\n ])\n if (fullFilteredArray.length > 0) {\n timerId.current = setTimeout(\n () => addToSaSWithBatches(fullFilteredArray),\n batchDelay\n )\n }\n }, [])\n\n useEffect(() => {\n const filteredSaS =\n filterFGLib(saltsAndSolvents, filter)[SALTS_AND_SOLVENTS] ?? []\n addToSaSWithBatches(filteredSaS)\n }, [saltsAndSolvents, addToSaSWithBatches])\n\n useEffect(() => {\n if (isFirstRender) {\n setIsFirstRender(false)\n return\n }\n clearTimeout(timerId.current as unknown as number)\n const filteredSaS = filterFGLib(saltsAndSolvents, filter)[\n SALTS_AND_SOLVENTS\n ]\n setFilteredSaltsAndSolvents(filteredSaS)\n }, [saltsAndSolvents, filter])\n\n return filteredSaltsAndSolvents\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Dispatch, FC, useState, useEffect, useRef } from 'react'\nimport TemplateTable, { Template } from './TemplateTable'\nimport {\n changeFilter,\n changeGroup,\n deleteTmpl,\n editTmpl,\n selectTmpl,\n changeTab\n} from '../../state/templates'\nimport { filterLib, filterFGLib, greekify } from '../../utils'\nimport Accordion from '@mui/material/Accordion'\nimport AccordionSummary from '@mui/material/AccordionSummary'\nimport AccordionDetails from '@mui/material/AccordionDetails'\nimport Icon from '../../component/view/icon'\n\nimport { Dialog } from '../../views/components'\nimport Input from '../../component/form/input'\nimport { SaveButton } from '../../component/view/savebutton'\nimport { SdfSerializer } from 'ketcher-core'\nimport classes from './template-lib.module.less'\nimport { connect } from 'react-redux'\nimport { createSelector } from 'reselect'\nimport { omit } from 'lodash/fp'\nimport { onAction } from '../../state'\nimport { functionalGroupsSelector } from '../../state/functionalGroups/selectors'\nimport { saltsAndSolventsSelector } from '../../state/saltsAndSolvents/selectors'\nimport EmptySearchResult from '../../../ui/dialog/template/EmptySearchResult'\n\nimport Tabs from '@mui/material/Tabs'\nimport Tab from '@mui/material/Tab'\nimport useSaltsAndSolvents from './useSaltsAndSolvets'\n\nfunction TabPanel(props) {\n const { children, value, index, ...other } = props\n return (\n <div\n className={classes.tabPanel}\n component=\"div\"\n role=\"tabpanel\"\n id={`scrollable-auto-tabpanel-${index}`}\n aria-labelledby={`scrollable-auto-tab-${index}`}\n {...other}\n >\n {value === index && children}\n </div>\n )\n}\n\nfunction a11yProps(index) {\n return {\n id: `scrollable-auto-tab-${index}`,\n 'aria-controls': `scrollable-auto-tabpanel-${index}`\n }\n}\n\ninterface TemplateLibProps {\n filter: string\n group: string\n lib: Array<Template>\n selected: Template | null\n mode: string\n tab: number\n saltsAndSolvents: Template[]\n renderOptions?: any\n}\n\ninterface TemplateLibCallProps {\n onAttach: (tmpl: Template) => void\n onCancel: () => void\n onChangeGroup: (group: string) => void\n onDelete: (tmpl: Template) => void\n onFilter: (filter: string) => void\n onOk: (res: any) => void\n onSelect: (res: any) => void\n onTabChange: (tab: number) => void\n functionalGroups: Template[]\n}\n\ntype Props = TemplateLibProps & TemplateLibCallProps\n\nenum TemplateTabs {\n TemplateLibrary = 0,\n FunctionalGroupLibrary = 1,\n SaltsAndSolvents = 2\n}\n\nconst filterLibSelector = createSelector(\n (props: Props) => props.lib,\n (props: Props) => props.filter,\n filterLib\n)\n\nconst FUNCTIONAL_GROUPS = 'Functional Groups'\n\nconst HeaderContent = () => (\n <div className={classes.dialogHeader}>\n <Icon name=\"template-dialog\" />\n <span>Templates</span>\n </div>\n)\n\nconst FooterContent = ({ data, tab }) => {\n const clickToAddToCanvas = <span>Click to add to canvas</span>\n if (tab === TemplateTabs.SaltsAndSolvents) {\n return clickToAddToCanvas\n }\n return (\n <div\n style={{\n flexGrow: 1,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center'\n }}\n >\n <SaveButton\n key=\"save-to-SDF\"\n data={data}\n className={classes.saveButton}\n filename={\n tab === TemplateTabs.TemplateLibrary\n ? 'ketcher-tmpls.sdf'\n : 'ketcher-fg-tmpls.sdf'\n }\n >\n Save to SDF\n </SaveButton>\n {clickToAddToCanvas}\n </div>\n )\n}\n\nconst TemplateDialog: FC<Props> = (props) => {\n const {\n filter,\n onFilter,\n onTabChange,\n onChangeGroup,\n mode,\n tab,\n functionalGroups,\n lib: templateLib,\n saltsAndSolvents,\n onSelect,\n ...rest\n } = props\n\n const searchInputRef = useRef<HTMLInputElement>(null)\n\n const [expandedAccordions, setExpandedAccordions] = useState<string[]>([\n props.group\n ])\n const filteredSaltsAndSolvents = useSaltsAndSolvents(saltsAndSolvents, filter)\n const [filteredFG, setFilteredFG] = useState(\n functionalGroups[FUNCTIONAL_GROUPS]\n )\n\n const filteredTemplateLib = filterLibSelector(props)\n\n useEffect(() => {\n setFilteredFG(filterFGLib(functionalGroups, filter)[FUNCTIONAL_GROUPS])\n }, [functionalGroups, filter])\n\n useEffect(() => {\n searchInputRef.current?.focus()\n onSelect(null)\n }, [tab, onSelect])\n\n const handleAccordionChange = (accordion) => (_, isExpanded) => {\n setExpandedAccordions(\n isExpanded\n ? [...expandedAccordions, accordion]\n : [...expandedAccordions].filter(\n (expandedAccordion) => expandedAccordion !== accordion\n )\n )\n }\n\n const sdfSerializer = new SdfSerializer()\n const serializerMapper = {\n [TemplateTabs.TemplateLibrary]: templateLib,\n [TemplateTabs.FunctionalGroupLibrary]: functionalGroups,\n [TemplateTabs.SaltsAndSolvents]: saltsAndSolvents\n }\n const data = sdfSerializer.serialize(serializerMapper[tab])\n\n const select = (tmpl: Template): void => {\n onChangeGroup(tmpl.props.group)\n props.onSelect(tmpl)\n }\n\n return (\n <Dialog\n headerContent={<HeaderContent />}\n footerContent={<FooterContent tab={tab} data={data} />}\n className={`${classes.dialog_body}`}\n params={omit(['group'], rest)}\n buttons={[]}\n needMargin={false}\n >\n <div className={classes.inputContainer}>\n <Input\n ref={searchInputRef}\n className={classes.input}\n type=\"search\"\n value={filter}\n onChange={(value) => onFilter(value)}\n placeholder=\"Search by elements...\"\n isFocused={true}\n />\n <Icon name=\"search\" className={classes.searchIcon} />\n </div>\n <Tabs\n value={tab}\n onChange={(_, value) => onTabChange(value)}\n className={classes.tabs}\n >\n <Tab\n label=\"Template Library\"\n {...a11yProps(TemplateTabs.TemplateLibrary)}\n />\n <Tab\n label=\"Functional Groups\"\n {...a11yProps(TemplateTabs.FunctionalGroupLibrary)}\n />\n <Tab\n label=\"Salts and Solvents\"\n {...a11yProps(TemplateTabs.SaltsAndSolvents)}\n />\n </Tabs>\n <div className={classes.tabsContent}>\n <TabPanel value={tab} index={TemplateTabs.TemplateLibrary}>\n <div>\n {Object.keys(filteredTemplateLib).length ? (\n Object.keys(filteredTemplateLib).map((groupName) => {\n const shouldGroupBeRended =\n expandedAccordions.includes(groupName)\n return (\n <Accordion\n square={true}\n key={groupName}\n onChange={handleAccordionChange(groupName)}\n expanded={shouldGroupBeRended}\n >\n <AccordionSummary\n className={classes.accordionSummary}\n expandIcon={\n <Icon className={classes.expandIcon} name=\"chevron\" />\n }\n >\n <Icon\n name=\"elements-group\"\n className={classes.groupIcon}\n />\n {`${greekify(groupName)} (${\n filteredTemplateLib[groupName].length\n })`}\n </AccordionSummary>\n <AccordionDetails>\n <TemplateTable\n templates={\n shouldGroupBeRended\n ? filteredTemplateLib[groupName]\n : []\n }\n onSelect={(templ) => select(templ)}\n selected={props.selected}\n onDelete={props.onDelete}\n onAttach={props.onAttach}\n renderOptions={props.renderOptions}\n />\n </AccordionDetails>\n </Accordion>\n )\n })\n ) : (\n <div className={classes.resultsContainer}>\n <EmptySearchResult textInfo=\"No items found\" />\n </div>\n )}\n </div>\n </TabPanel>\n <TabPanel value={tab} index={TemplateTabs.FunctionalGroupLibrary}>\n {filteredFG?.length ? (\n <div className={classes.resultsContainer}>\n <TemplateTable\n titleRows={1}\n templates={filteredFG}\n onSelect={(templ) => select(templ)}\n selected={props.selected}\n renderOptions={props.renderOptions}\n />\n </div>\n ) : (\n <div className={classes.resultsContainer}>\n <EmptySearchResult textInfo=\"No items found\" />\n </div>\n )}\n </TabPanel>\n <TabPanel value={tab} index={TemplateTabs.SaltsAndSolvents}>\n {filteredSaltsAndSolvents?.length ? (\n <div className={classes.resultsContainer}>\n <TemplateTable\n titleRows={1}\n templates={filteredSaltsAndSolvents}\n onSelect={(templ) => select(templ)}\n selected={props.selected}\n renderOptions={props.renderOptions}\n />\n </div>\n ) : (\n <div className={classes.resultsContainer}>\n <EmptySearchResult textInfo=\"No items found\" />\n </div>\n )}\n </TabPanel>\n </div>\n </Dialog>\n )\n}\n\nconst selectTemplate = (template, props, dispatch) => {\n dispatch(selectTmpl(null))\n if (!template) return\n dispatch(changeFilter(''))\n dispatch(selectTmpl(template))\n dispatch(onAction({ tool: 'template', opts: template }))\n props.onOk(template)\n}\n\nconst onModalClose = (props, dispatch) => {\n dispatch(changeFilter(''))\n props.onCancel()\n}\n\nexport default connect(\n (store) => ({\n ...omit(['attach'], (store as any).templates),\n initialTab: (store as any).modal?.prop?.tab || TemplateTabs.TemplateLibrary,\n renderOptions: (store as any).editor?.render?.options,\n functionalGroups: functionalGroupsSelector(store),\n saltsAndSolvents: saltsAndSolventsSelector(store)\n }),\n (dispatch: Dispatch<any>, props: Props) => ({\n onFilter: (filter) => dispatch(changeFilter(filter)),\n onTabChange: (tab) => dispatch(changeTab(tab)),\n onSelect: (tmpl) => selectTemplate(tmpl, props, dispatch),\n onChangeGroup: (group) => dispatch(changeGroup(group)),\n onAttach: (tmpl) => dispatch(editTmpl(tmpl)),\n onCancel: () => onModalClose(props, dispatch),\n onDelete: (tmpl) => dispatch(deleteTmpl(tmpl))\n })\n)(TemplateDialog)\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { useEffect, useMemo, useState } from 'react'\n\nimport classes from './FontControl.module.less'\n\nimport { range } from 'lodash/fp'\n\nexport const FontControl = ({ editorState, setEditorState, styles }) => {\n const defaultFontSize = '13px'\n const [isShowingFontSizeMenu, setIsShowingFontSizeMenu] = useState(false)\n const [currentFontSize, setCurrentFontSize] = useState(defaultFontSize)\n\n const setFontSize = (e, value) => {\n e.preventDefault()\n setCurrentFontSize(value)\n const newEditorState = styles.fontSize.remove(editorState)\n setEditorState(styles.fontSize.add(newEditorState, value))\n setIsShowingFontSizeMenu(false)\n }\n\n const currentStyle = styles.fontSize.current(editorState)\n\n useEffect(() => {\n setCurrentFontSize(currentStyle || defaultFontSize)\n }, [currentStyle])\n\n const MIN_FONT_SIZE = 4\n const MAX_FONT_SIZE = 144\n const fontSizes = range(MIN_FONT_SIZE, MAX_FONT_SIZE + 1)\n\n const fontSizeOptions = useMemo(\n () =>\n fontSizes.map((fontSize) => (\n <div\n key={fontSize}\n className={classes.fontSizeOption}\n onMouseDown={(e) => setFontSize(e, `${fontSize}px`)}\n >\n {fontSize}\n </div>\n )),\n [isShowingFontSizeMenu]\n )\n\n return (\n <div>\n <button\n className={classes.fontBtn}\n onMouseDown={(e) => {\n e.preventDefault()\n setIsShowingFontSizeMenu(!isShowingFontSizeMenu)\n }}\n >\n {parseFloat(currentFontSize)}\n </button>\n {isShowingFontSizeMenu ? (\n <div className={classes.fontSizeMenu}>{fontSizeOptions}</div>\n ) : null}\n </div>\n )\n}\n\nexport default FontControl\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport classes from './SpecialSymbolsList.module.less'\nimport Icon from 'src/script/ui/component/view/icon'\n\nconst SpecialSymbolsList = ({ select }) => {\n const symbols = [\n 'α',\n 'β',\n 'γ',\n 'δ',\n 'ε',\n 'ζ',\n 'η',\n 'θ',\n 'ι',\n 'κ',\n 'λ',\n 'μ',\n 'ν',\n 'ξ',\n 'ο',\n 'π',\n 'ρ',\n 'σ',\n 'τ',\n 'υ',\n 'φ',\n 'χ',\n 'ψ',\n 'ω',\n '℃',\n '℉',\n 'Å',\n '°',\n 'ħ',\n '±',\n '‰',\n '√',\n '←',\n '→',\n '←/',\n '/→',\n '↔',\n '∏',\n '∑',\n '∞',\n '∂',\n '∆',\n '∫',\n '≈',\n '=/',\n '≤',\n '≥'\n ]\n return (\n <div className={classes.window}>\n {symbols.map((symbol, id) => {\n return (\n <button\n className={classes.button}\n key={`symbol-${id}`}\n value={symbol}\n onMouseDown={(event) => {\n select(event, symbol)\n }}\n >\n <Icon name={symbol} />\n </button>\n )\n })}\n </div>\n )\n}\nexport { SpecialSymbolsList }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { EditorState, Modifier } from 'draft-js'\n\nimport Icon from '../../../../../component/view/icon'\nimport { SpecialSymbolsList } from '../SpecialSymbolsList/SpecialSymbolsList'\nimport classes from './SpecialSymbolsButton.module.less'\nimport { useState } from 'react'\n\nconst SpecialSymbolsButton = ({ editorState, setEditorState, styles }) => {\n const [showSpecialSymbols, setShowSpecialSymbols] = useState(false)\n\n const handleClose = (event) => {\n event.stopPropagation()\n event.preventDefault()\n setShowSpecialSymbols(false)\n }\n\n const closeSymbolsList = (event) => {\n if (!event.currentTarget.contains(event.relatedTarget)) {\n handleClose(event)\n }\n }\n\n const addSymbol = (e, value) => {\n e.preventDefault()\n const selection = editorState.getSelection()\n const contentState = editorState.getCurrentContent()\n const nextContentState = Modifier.replaceText(\n contentState,\n selection,\n value,\n styles\n )\n const nextEditorState = EditorState.push(\n editorState,\n nextContentState,\n 'insert-characters'\n )\n setEditorState(nextEditorState)\n setShowSpecialSymbols(false)\n }\n\n return (\n <div onBlur={closeSymbolsList}>\n <button\n title=\"symbols\"\n onMouseDown={(e) => {\n e.preventDefault()\n setShowSpecialSymbols(!showSpecialSymbols)\n }}\n className={\n showSpecialSymbols ? classes.activeTextButton : classes.textButton\n }\n >\n <Icon name=\"text-special-symbols\" />\n </button>\n {showSpecialSymbols && <SpecialSymbolsList select={addSymbol} />}\n </div>\n )\n}\n\nexport { SpecialSymbolsButton }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Icon from '../../../../../component/view/icon'\nimport React from 'react'\nimport { TextCommand } from 'ketcher-core'\nimport clsx from 'clsx'\nimport styles from './TextButton.module.less'\n\ninterface TextButtonProps {\n button: { command: TextCommand; name: string }\n active: boolean\n}\n\ninterface TextButtonPropsCallProps {\n toggleStyle: (command: TextCommand) => void\n}\n\ntype Props = TextButtonProps & TextButtonPropsCallProps\n\nexport const TextButton = (props: Props) => {\n const toggleStyle = (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n command: TextCommand\n ) => {\n event.preventDefault()\n props.toggleStyle(command)\n }\n\n return (\n <button\n className={clsx(styles.textButton, { [styles.isActive]: props.active })}\n title={props.button.command.toLowerCase()}\n onMouseDown={(event) => {\n toggleStyle(event, props.button.command)\n }}\n >\n <Icon name={props.button.name} />\n </button>\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport 'draft-js/dist/Draft.css'\n\nimport {\n DraftStyleMap,\n Editor,\n EditorState,\n RawDraftContentState,\n RichUtils,\n convertFromRaw,\n convertToRaw,\n getDefaultKeyBinding\n} from 'draft-js'\nimport React, {\n useCallback,\n useState,\n useRef,\n MutableRefObject,\n useEffect\n} from 'react'\n\nimport { Dialog } from '../../../components'\nimport { DialogParams } from '../../../components/Dialog/Dialog'\nimport { FontControl } from './FontControl'\nimport { SpecialSymbolsButton } from './SpecialSymbols/SpecialSymbolsButton'\nimport { TextButton } from './TextButton'\nimport { TextCommand } from 'ketcher-core'\nimport classes from './Text.module.less'\nimport { connect } from 'react-redux'\nimport createStyles from 'draft-js-custom-styles'\n\nconst { styles, customStyleFn } = createStyles(['font-size'])\n\ninterface TextProps extends DialogParams {\n formState: any\n id?: any\n content: string\n position?: string\n}\n\nconst buttons: Array<{ command: TextCommand; name: string }> = [\n {\n command: TextCommand.Bold,\n name: 'text-bold'\n },\n {\n command: TextCommand.Italic,\n name: 'text-italic'\n },\n {\n command: TextCommand.Superscript,\n name: 'text-superscript'\n },\n {\n command: TextCommand.Subscript,\n name: 'text-subscript'\n }\n]\n\nconst Text = (props: TextProps) => {\n const { formState, position, id } = props\n const rawContentState: RawDraftContentState | null = props.content\n ? (JSON.parse(props.content) as RawDraftContentState)\n : null\n const [editorState, setEditorState] = useState<EditorState>(\n EditorState.moveFocusToEnd(\n EditorState.createWithContent(\n convertFromRaw(rawContentState || { blocks: [], entityMap: {} })\n )\n )\n )\n\n const result = () => {\n const content = editorState.getCurrentContent()\n return {\n content: content.hasText() ? JSON.stringify(convertToRaw(content)) : '',\n position,\n id\n }\n }\n\n const keyBindingFn = (e: React.KeyboardEvent): string | null => {\n if (e.key === 'Enter') {\n e.stopPropagation()\n }\n\n return getDefaultKeyBinding(e)\n }\n\n const onContentChange = (state: EditorState): void => {\n setEditorState(state)\n }\n\n const currentStyle = editorState.getCurrentInlineStyle()\n\n const toggleStyle = useCallback(\n (command: TextCommand): void => {\n let newEditorState: EditorState = editorState\n switch (command) {\n case TextCommand.Subscript: {\n if (currentStyle.has(TextCommand.Superscript)) {\n newEditorState = RichUtils.toggleInlineStyle(\n newEditorState,\n TextCommand.Superscript\n )\n }\n break\n }\n case TextCommand.Superscript: {\n if (currentStyle.has(TextCommand.Subscript)) {\n newEditorState = RichUtils.toggleInlineStyle(\n newEditorState,\n TextCommand.Subscript\n )\n }\n break\n }\n }\n newEditorState = RichUtils.toggleInlineStyle(newEditorState, command)\n\n setEditorState(newEditorState)\n },\n [currentStyle, editorState]\n )\n\n const customStyleMap: DraftStyleMap = {\n SUBSCRIPT: {\n verticalAlign: 'sub',\n transform: 'scale(0.7)',\n transformOrigin: 'left'\n },\n SUPERSCRIPT: {\n verticalAlign: 'super',\n transform: 'scale(0.7)',\n transformOrigin: 'left',\n lineHeight: 0\n }\n }\n\n const refEditor = useRef() as MutableRefObject<Editor>\n const setFocusInEditor = useCallback(() => {\n refEditor.current.focus()\n }, [refEditor])\n\n // set focut on component mount\n useEffect(() => {\n setFocusInEditor()\n }, [setFocusInEditor])\n\n return (\n <Dialog\n className={classes.textEditor}\n title=\"Text Editor\"\n params={props}\n result={result}\n valid={() => formState.form.valid}\n buttonsNameMap={{ OK: 'Apply' }}\n buttons={['Cancel', 'OK']}\n withDivider\n >\n <div className={classes.controlPanel} onClick={setFocusInEditor}>\n {buttons.map((button) => {\n return (\n <TextButton\n button={button}\n key={button.name}\n active={currentStyle.has(button.command)}\n toggleStyle={toggleStyle}\n />\n )\n })}\n <SpecialSymbolsButton\n editorState={editorState}\n setEditorState={setEditorState}\n styles={currentStyle}\n />\n <span>Font Size</span>\n <FontControl\n editorState={editorState}\n setEditorState={setEditorState}\n styles={styles}\n />\n </div>\n <span>Text:</span>\n <Editor\n keyBindingFn={keyBindingFn}\n editorState={editorState}\n onChange={onContentChange}\n customStyleMap={customStyleMap}\n customStyleFn={customStyleFn}\n ref={refEditor}\n />\n </Dialog>\n )\n}\n\nexport default connect((store) => ({ formState: (store as any).modal }))(Text)\n","import classes from '../toolbox/FG/RemoveFG.module.less'\n\ntype ConfirmProps = {\n onOk: () => void\n onCancel: () => void\n}\n\nexport const Confirm = ({ onOk, onCancel }: ConfirmProps) => {\n return (\n <div className={classes.window}>\n <header className={classes.header}>Warning!</header>\n <div className={classes.question}>\n Unsupported S-group type found. Would you like to import structure\n without it?\n </div>\n <footer className={classes.footer}>\n <input\n type=\"button\"\n value={'Cancel'}\n className={classes.buttonCancel}\n onClick={() => onCancel()}\n />\n <input\n type=\"button\"\n value={'OK'}\n className={classes.buttonOk}\n onClick={() => onOk()}\n />\n </footer>\n </div>\n )\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { About, Settings } from '../views/modal/components/meta'\nimport {\n Analyse,\n Check,\n Miew,\n Recognize\n} from '../views/modal/components/process'\n// schemify dialogs\nimport {\n Atom,\n AttachPoints,\n Automap,\n Bond,\n RgroupLogic\n} from '../views/modal/components/toolbox'\nimport { Open, Save } from '../views/modal/components/document'\n\nimport EnhancedStereo from './toolbox/enhancedStereo/enhancedStereo'\nimport LabelEdit from './toolbox/labeledit'\nimport PeriodTable from '../views/modal/components/PeriodTable'\nimport ExtendedTable from '../views/modal/components/ExtendedTable'\nimport { RemoveFG } from '../views/modal/components/toolbox/FG/RemoveFG'\nimport Rgroup from './toolbox/rgroup/rgroup'\nimport Sdata from './toolbox/sdata'\nimport Sgroup from './toolbox/sgroup'\nimport TemplateAttach from './template/template-attach'\nimport TemplatesDialog from './template/TemplateDialog'\nimport Text from '../views/modal/components/Text'\nimport { Confirm } from '../views/modal/components/Confirm'\n\nexport default {\n open: Open,\n analyse: Analyse,\n recognize: Recognize,\n 'period-table': PeriodTable,\n 'extended-table': ExtendedTable,\n rgroup: Rgroup,\n attach: TemplateAttach,\n templates: TemplatesDialog,\n about: About,\n miew: Miew,\n atomProps: Atom,\n attachmentPoints: AttachPoints,\n automap: Automap,\n bondProps: Bond,\n check: Check,\n enhancedStereo: EnhancedStereo,\n labelEdit: LabelEdit,\n rgroupLogic: RgroupLogic,\n removeFG: RemoveFG,\n save: Save,\n settings: Settings,\n sgroup: Sgroup,\n sdata: Sdata,\n text: Text,\n confirm: Confirm\n} as any\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { useRef } from 'react'\n\nimport { BaseCallProps } from './modal.types'\nimport classes from './Modal.module.less'\nimport selectClasses from '../../component/form/Select/Select.module.less'\nimport clsx from 'clsx'\nimport mediaSizes from './mediaSizes'\nimport modals from '../../dialog'\nimport useResizeObserver from 'use-resize-observer/polyfilled'\n\ninterface ModalProps extends BaseCallProps {\n modal: {\n name: string\n form: any\n prop: any\n }\n}\n\ntype Props = ModalProps & BaseCallProps\n\nfunction Modal(props: Props) {\n const { modal, ...rest } = props\n const containerRef = useRef<HTMLDivElement>(null)\n const { height, width } = useResizeObserver<HTMLDivElement>({\n ref: containerRef\n })\n\n if (!modal) return null\n\n const Component = modals[modal.name]\n\n if (!Component)\n throw new Error(`There is no modal window named ${modal.name}`)\n\n return (\n <div\n className={clsx(classes.modalOverlay, selectClasses.selectContainer)}\n ref={containerRef}\n >\n <Component\n className={clsx({\n [classes.smallScreen]:\n (height && height <= mediaSizes.smallHeight) ||\n (width && width <= mediaSizes.smallWidth)\n })}\n {...rest}\n />\n </div>\n )\n}\n\nexport type { ModalProps }\nexport { Modal }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Modal, ModalProps } from './Modal'\n\nimport { BaseCallProps } from './modal.types'\nimport { Dispatch } from 'redux'\nimport { connect } from 'react-redux'\nimport { omit } from 'lodash/fp'\n\ntype StateProps = Pick<ModalProps, 'modal'>\n\nconst mapStateToProps = (state): StateProps => ({\n modal: state.modal\n})\n\nconst mapDispatchToProps = (dispatch: Dispatch): BaseCallProps => ({\n onOk: (_result) => {\n dispatch({ type: 'MODAL_CLOSE' })\n },\n onCancel: () => {\n dispatch({ type: 'MODAL_CLOSE' })\n }\n})\n\nconst mergeProps = (\n stateProps: StateProps,\n dispatchProps: BaseCallProps\n): ModalProps => {\n const prop = stateProps.modal && stateProps.modal.prop\n const initProps = prop ? omit(['onResult', 'onCancel'], prop) : {}\n return {\n modal: stateProps.modal,\n ...initProps,\n onOk: (result) => {\n if (prop && prop.onResult) prop.onResult(result)\n dispatchProps.onOk(result)\n },\n onCancel: () => {\n if (prop && prop.onCancel) prop.onCancel()\n dispatchProps.onCancel()\n }\n }\n}\n\nconst ModalContainer = connect(\n mapStateToProps,\n mapDispatchToProps,\n mergeProps\n)(Modal)\n\nexport default ModalContainer\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n fromBond,\n fromElement,\n fromSgroup,\n fromStereoLabel,\n toBond,\n toElement,\n toSgroup,\n toStereoLabel\n} from '../../data/convert/structconv'\n\nimport { Elements } from 'ketcher-core'\nimport acts from '../../action'\nimport { debounce } from 'lodash/fp'\nimport { openDialog } from '../modal'\nimport { highlightFG } from '../functionalGroups'\nimport { serverCall } from '../server'\nimport { generateCommonProperties, isAtomsArray } from '../modal/atoms'\n\nexport default function initEditor(dispatch, getState) {\n const updateAction = debounce(100, () => dispatch({ type: 'UPDATE' }))\n const sleep = (time) => new Promise((resolve) => setTimeout(resolve, time))\n\n function resetToSelect(dispatch) {\n // eslint-disable-line no-shadow\n const state = global.currentState\n const activeTool = state.actionState.activeTool.tool\n if (activeTool === 'select') return\n const selectMode = state.toolbar.visibleTools.select\n const resetOption = state.options.settings.resetToSelect\n if (resetOption === true || resetOption === activeTool)\n // example: 'paste'\n dispatch({ type: 'ACTION', action: acts[selectMode].action })\n else updateAction()\n }\n\n return {\n onInit: (editor) => {\n dispatch({ type: 'INIT', editor })\n },\n onChange: (action) => {\n if (action === undefined) sleep(0).then(() => dispatch(resetToSelect))\n // new tool in reducer\n else dispatch(resetToSelect)\n },\n onSelectionChange: () => {\n updateAction()\n },\n onElementEdit: (selem) => {\n if (isAtomsArray(selem)) {\n const atomAttributes = generateCommonProperties(selem)\n return openDialog(dispatch, 'atomProps', {\n ...atomAttributes,\n isMultipleAtoms: true\n }).then(toElement)\n }\n const elem = selem.type === 'text' ? selem : fromElement(selem)\n let dlg = null\n if (elem.type === 'text') {\n // TODO: move textdialog opening logic to another place\n return openDialog(dispatch, 'text', elem)\n } else if (Elements.get(elem.label)) {\n dlg = openDialog(dispatch, 'atomProps', elem)\n } else if (Object.keys(elem).length === 1 && 'ap' in elem) {\n dlg = openDialog(dispatch, 'attachmentPoints', elem.ap).then((res) => ({\n ap: res\n }))\n } else if (elem.type === 'list' || elem.type === 'not-list') {\n dlg = openDialog(\n dispatch,\n !elem.pseudo ? 'period-table' : 'extended-table',\n { ...elem, pseudo: elem.pseudo }\n )\n } else if (elem.type === 'rlabel') {\n const rgroups = getState().editor.struct().rgroups\n const params = {\n type: 'atom',\n values: elem.values,\n disabledIds: Array.from(rgroups.entries()).reduce(\n (acc, [rgid, rg]) => {\n if (rg.frags.has(elem.fragId)) acc.push(rgid)\n\n return acc\n },\n []\n )\n }\n dlg = openDialog(dispatch, 'rgroup', params).then((res) => ({\n values: res.values,\n type: 'rlabel'\n }))\n } else {\n dlg = openDialog(\n dispatch,\n !elem.pseudo ? 'period-table' : 'extended-table',\n { ...elem, pseudo: elem.pseudo }\n )\n }\n return dlg.then(toElement)\n },\n\n // TODO: correct\n onEnhancedStereoEdit: ({ ...init }) =>\n sleep(0).then(() => {\n init = fromStereoLabel(init.stereoLabel)\n return openDialog(dispatch, 'enhancedStereo', {\n init\n }).then(\n (res) => toStereoLabel(res),\n () => null\n )\n }),\n\n onQuickEdit: (atom) => openDialog(dispatch, 'labelEdit', atom),\n onBondEdit: (bond) =>\n openDialog(dispatch, 'bondProps', fromBond(bond)).then(toBond),\n onRgroupEdit: (rgroup) => {\n const struct = getState().editor.struct()\n\n if (Object.keys(rgroup).length > 2) {\n const rgroupLabels = Array.from(struct.rgroups.keys())\n if (!rgroup.range) rgroup.range = '>0'\n\n return openDialog(\n dispatch,\n 'rgroupLogic',\n Object.assign({ rgroupLabels }, rgroup)\n )\n }\n\n const disabledIds = Array.from(struct.atoms.values()).reduce(\n (acc, atom) => {\n if (atom.fragment === rgroup.fragId && atom.rglabel !== null)\n return acc.concat(fromElement(atom).values)\n\n return acc\n },\n []\n )\n const params = {\n type: 'fragment',\n values: [rgroup.label],\n disabledIds\n }\n return openDialog(dispatch, 'rgroup', params).then((res) => ({\n label: res.values[0]\n }))\n },\n onSgroupEdit: (sgroup) =>\n sleep(0) // huck to open dialog after dispatch sgroup tool action\n .then(() => openDialog(dispatch, 'sgroup', fromSgroup(sgroup)))\n .then(toSgroup),\n onRemoveFG: (result) =>\n sleep(0).then(() => openDialog(dispatch, 'removeFG', result)),\n onSdataEdit: (sgroup) =>\n sleep(0)\n .then(() =>\n openDialog(\n dispatch,\n sgroup.type === 'DAT' ? 'sdata' : 'sgroup',\n fromSgroup(sgroup)\n )\n )\n .then(toSgroup),\n onMessage: (msg) => {\n if (msg.error) {\n // TODO: add error handler call\n }\n },\n onAromatizeStruct: (struct) => {\n const state = getState()\n const serverOpts = state.options.getServerSettings()\n return serverCall(\n state.editor,\n state.server,\n 'aromatize',\n serverOpts,\n struct\n ).catch((e) => state.editor.errorHandler(e))\n },\n onDearomatizeStruct: (struct) => {\n const state = getState()\n const serverOpts = state.options.getServerSettings()\n return serverCall(\n state.editor,\n state.server,\n 'dearomatize',\n serverOpts,\n struct\n ).catch((e) => state.editor.errorHandler(e))\n },\n onMouseDown: () => {\n updateAction()\n },\n onConfirm: () => openDialog(dispatch, 'confirm'),\n onShowInfo: (payload) => {\n if (payload) {\n const { groupStruct, event, sGroup } = payload\n highlightFG(dispatch, { groupStruct, event, sGroup })\n } else {\n highlightFG(dispatch, { groupStruct: null, sGroup: null })\n }\n }\n }\n}\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { StructEditor } from './components'\nimport { connect } from 'react-redux'\nimport initEditor from '../state/editor'\n\nconst Editor = connect(\n (state) => ({\n options: state.options.settings,\n indigoVerification: state.requestsStatuses.indigoVerification\n }),\n (dispatch) => dispatch(initEditor)\n)(StructEditor)\n\nexport default Editor\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n BottomToolbarContainer,\n LeftToolbarContainer,\n RightToolbarContainer,\n TopToolbarContainer\n} from '../views/toolbars'\nimport { useEffect } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { createTheme, ThemeProvider } from '@mui/material'\nimport AppClipArea from '../views/AppClipArea'\nimport { AppHiddenContainer } from './AppHidden'\nimport AppModalContainer from '../views/modal'\nimport Editor from '../views/Editor'\nimport classes from './App.module.less'\nimport { initFGTemplates } from '../state/functionalGroups'\nimport { initSaltsAndSolventsTemplates } from '../state/saltsAndSolvents'\nimport { useSubscriptionOnEvents } from '../../../hooks'\n\ninterface AppCallProps {\n checkServer: () => void\n}\n\nconst muiTheme = createTheme({\n components: {\n MuiButtonBase: {\n defaultProps: {\n disableRipple: true\n }\n }\n }\n})\n\ntype Props = AppCallProps\n\nconst App = (props: Props) => {\n const dispatch = useDispatch()\n const { checkServer } = props\n\n useSubscriptionOnEvents()\n\n useEffect(() => {\n checkServer()\n dispatch(initFGTemplates())\n dispatch(initSaltsAndSolventsTemplates())\n window.scrollTo(0, 0)\n }, [])\n\n return (\n <ThemeProvider theme={muiTheme}>\n <div className={classes.app}>\n <AppHiddenContainer />\n <Editor className={classes.canvas} />\n\n <TopToolbarContainer className={classes.top} />\n <LeftToolbarContainer className={classes.left} />\n <BottomToolbarContainer className={classes.bottom} />\n <RightToolbarContainer className={classes.right} />\n\n <AppClipArea />\n <AppModalContainer />\n </div>\n </ThemeProvider>\n )\n}\n\nexport type { AppCallProps }\nexport { App }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { App, AppCallProps } from './App'\n\nimport { checkServer } from '../state/server'\nimport { connect } from 'react-redux'\n\nconst mapDispatchToProps: AppCallProps = {\n checkServer\n}\n\nconst AppContainer = connect(null, mapDispatchToProps)(App)\n\nexport { AppContainer }\nexport default AppContainer\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { AppContext, ErrorsContext, SettingsContext } from './../../../contexts'\nimport { Ketcher, StructService } from 'ketcher-core'\n\nimport App from './App.container'\nimport { Provider } from 'react-redux'\nimport ReactDOM from 'react-dom'\nimport createStore from '../state'\nimport { initKeydownListener } from '../state/hotkeys'\nimport { initResize } from '../state/toolbar'\n\nfunction initApp(\n element: HTMLDivElement | null,\n staticResourcesUrl: string,\n options: any,\n server: StructService,\n setEditor: (editor: any) => void\n) {\n const store = createStore(options, server, setEditor)\n store.dispatch(initKeydownListener(element))\n store.dispatch(initResize())\n\n ReactDOM.render(\n <Provider store={store}>\n <SettingsContext.Provider value={{ staticResourcesUrl }}>\n <ErrorsContext.Provider value={{ errorHandler: options.errorHandler }}>\n <AppContext.Provider\n value={{\n getKetcherInstance: () => (window as any).ketcher as Ketcher\n }}\n >\n <App />\n </AppContext.Provider>\n </ErrorsContext.Provider>\n </SettingsContext.Provider>\n </Provider>,\n element\n )\n}\n\nexport { initApp }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport {\n FormatterFactory,\n Ketcher,\n ServiceMode,\n StructService,\n StructServiceProvider\n} from 'ketcher-core'\n\nimport { ButtonsConfig } from './ButtonsConfig'\nimport { Editor } from '../../editor'\nimport createApi from '../../api'\nimport { initApp } from '../../ui'\n\nclass KetcherBuilder {\n private structService: StructService | null\n private editor: Editor | null\n private serviceMode: ServiceMode | null\n private formatterFactory: FormatterFactory | null\n\n constructor() {\n this.structService = null\n this.editor = null\n this.serviceMode = null\n this.formatterFactory = null\n }\n\n async appendApiAsync(structServiceProvider: StructServiceProvider) {\n this.structService = createApi(structServiceProvider, {\n 'smart-layout': true,\n 'ignore-stereochemistry-errors': true,\n 'mass-skip-error-on-pseudoatoms': false,\n 'gross-formula-add-rsites': true,\n 'aromatize-skip-superatoms': true,\n 'dearomatize-on-load': false\n })\n }\n\n appendServiceMode(mode: ServiceMode) {\n this.serviceMode = mode\n }\n\n async appendUiAsync(\n element: HTMLDivElement | null,\n staticResourcesUrl: string,\n errorHandler: (message: string) => void,\n buttons?: ButtonsConfig\n ): Promise<void> {\n const { structService } = this\n\n const editor = await new Promise<Editor>((resolve) => {\n initApp(\n element,\n staticResourcesUrl,\n {\n buttons: buttons || {},\n errorHandler: errorHandler || null,\n version: process.env.VERSION || '',\n buildDate: process.env.BUILD_DATE || '',\n buildNumber: process.env.BUILD_NUMBER || ''\n },\n structService!,\n resolve\n )\n })\n\n this.editor = editor\n this.editor.errorHandler =\n errorHandler && typeof errorHandler === 'function'\n ? errorHandler\n : // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {}\n this.formatterFactory = new FormatterFactory(structService!)\n }\n\n build() {\n if (!this.serviceMode) {\n throw new Error('You should append ServiceMode before building')\n }\n\n if (!this.structService) {\n throw new Error('You should append Api before building')\n }\n\n if (!this.formatterFactory) {\n throw new Error(\n 'You should append StructureServiceFactory before building'\n )\n }\n\n const ketcher = new Ketcher(\n this.editor!,\n this.structService,\n this.formatterFactory\n )\n ketcher[this.serviceMode] = true\n\n const params = new URLSearchParams(document.location.search)\n const initialMol = params.get('moll')\n if (initialMol) {\n ketcher.setMolecule(initialMol)\n }\n\n return ketcher\n }\n}\n\nexport { KetcherBuilder }\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { ButtonsConfig, KetcherBuilder } from './builders'\n\nimport { StructServiceProvider } from 'ketcher-core'\n\ninterface Config {\n element: HTMLDivElement | null\n staticResourcesUrl: string\n structServiceProvider: StructServiceProvider\n buttons?: ButtonsConfig\n errorHandler: (message: string) => void\n}\n\nasync function buildKetcherAsync({\n element,\n staticResourcesUrl,\n structServiceProvider,\n buttons,\n errorHandler\n}: Config) {\n const builder = new KetcherBuilder()\n\n await builder.appendApiAsync(structServiceProvider)\n builder.appendServiceMode(structServiceProvider.mode)\n await builder.appendUiAsync(\n element,\n staticResourcesUrl,\n errorHandler,\n buttons\n )\n\n return builder.build()\n}\n\nexport type { Config, ButtonsConfig }\nexport default buildKetcherAsync\n","/****************************************************************************\n * Copyright 2021 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport 'intersection-observer'\nimport 'element-closest-polyfill'\nimport 'regenerator-runtime/runtime'\nimport 'url-search-params-polyfill'\nimport 'whatwg-fetch'\nimport './index.less'\n\nimport init, { Config } from './script'\nimport { useEffect, useRef } from 'react'\n\nimport { Ketcher } from 'ketcher-core'\nimport classes from './Editor.module.less'\nimport clsx from 'clsx'\nimport { useResizeObserver } from './hooks'\nimport { KETCHER_INIT_EVENT_NAME } from './constants'\n\nconst mediaSizes = {\n smallWidth: 1040,\n smallHeight: 600\n}\n\ninterface EditorProps extends Omit<Config, 'element'> {\n onInit?: (ketcher: Ketcher) => void\n}\n\nfunction Editor(props: EditorProps) {\n const rootElRef = useRef<HTMLDivElement>(null)\n const { onInit } = props\n const { height, width } = useResizeObserver<HTMLDivElement>({\n ref: rootElRef\n })\n\n const ketcherInitEvent = new Event(KETCHER_INIT_EVENT_NAME)\n\n useEffect(() => {\n init({\n ...props,\n element: rootElRef.current\n }).then((ketcher: Ketcher) => {\n if (typeof onInit === 'function') {\n onInit(ketcher)\n window.dispatchEvent(ketcherInitEvent)\n }\n })\n // TODO: provide the list of dependencies after implementing unsubscribe function\n }, [])\n\n return (\n <div\n ref={rootElRef}\n className={clsx('Ketcher-root', classes.editor, {\n [classes.small]:\n (height && height <= mediaSizes.smallHeight) ||\n (width && width <= mediaSizes.smallWidth)\n })}\n />\n )\n}\n\nexport { Editor }\n"],"names":["createApi","structServiceProvider","defaultOptions","structService","createStructService","info","Object","assign","bind","convert","layout","clean","aromatize","dearomatize","calculateCip","automap","check","calculate","recognize","generateImageAsBase64","generateInchIKey","appContext","React","createContext","errorsContext","settingsContext","formContext","basicAtoms","atomCuts","H","C","N","O","S","P","F","Cl","Br","I","A","Q","R","K","M","Si","Na","X","D","B","keys","reduce","res","label","toLowerCase","title","shortcut","action","tool","opts","copyAs","type","state","global","currentState","editor","struct","structSelected","errorHandler","serializer","MolSerializer","KetSerializer","simpleObjectOrText","Boolean","simpleObjects","size","texts","structData","serialize","window","clipboardData","setData","navigator","clipboard","writeText","copyImageToClipboard","server","options","factory","FormatterFactory","service","create","getStructureFromStructAsync","structStr","ketcher","Ketcher","generateImage","outputFormat","backgroundColor","image","item","ClipboardItem","write","isHidden","buttonName","buttons","hidden","debugObj","update","molSerializer","molStr","molQs","encodeURIComponent","replace","qs","document","location","search","ieCb","ClipArea","props","textAreaRef","createRef","el","current","target","parentNode","listeners","mouseup","event","isActiveElement","focused","autoselect","mousedown","shiftKey","preventDefault","copy","onCopy","data","cut","onCut","paste","onPaste","formats","forEach","en","addEventListener","removeEventListener","_jsx","clsx","classes","cliparea","Component","tagName","includes","value","select","cb","curFmt","fmt","ex","getData","d","actions","exec","enabled","queryCommandSupported","execCommand","ClipboardEvent","resetToSelect","enumNames","rotationStep","minimum","maximum","render","showValenceWarnings","description","atomColoring","showStereoFlags","stereoLabelStyle","StereLabelStyleType","IUPAC","Classic","On","Off","colorOfAbsoluteCenters","colorOfAndCenters","colorOfOrCenters","colorStereogenicCenters","StereoColoringType","LabelsOnly","BondsOnly","LabelsAndBonds","autoFadeOfStereoLabels","absFlagLabel","andFlagLabel","mixedFlagLabel","orFlagLabel","font","fontsz","fontszsub","carbonExplicitly","showCharge","showValence","showHydrogenLabels","aromaticCircle","doubleBondWidth","bondThickness","stereoBondWidth","SERVER_OPTIONS","debug","showAtomIds","showBondIds","showHalfBondIds","showLoopIds","miew","miewMode","miewTheme","miewAtomLabel","MIEW_OPTIONS","optionsSchema","required","properties","getDefaultOptions","prop","validation","settings","ajv","Ajv","allErrors","keywords","keyword","schemaType","validate","compile","errors","errorsProps","map","instancePath","slice","indexOf","storage","warningMessage","isAvailable","localStorage","getItem","key","JSON","parse","setItem","isSet","stringify","initOptionsState","app","templates","functionalGroups","saltsAndSolvents","analyse","values","roundWeight","roundMass","roundElAnalysis","checkOptions","file","fragment","version","getServerSettings","pick","appUpdate","dispatch","saveSettings","newSettings","changeRound","roundName","recognizeActions","setStruct","str","changeVersion","changeImage","shouldFragment","isFrag","checkOpts","optionsReducer","loading","_objectSpread","constant","schema","desc","mapOf","oneOf","radioButtonsSchema","contextSchema","sData","Fragment","fieldName","fieldValue","radiobuttons","minLength","invalidMessage","Multifragment","Bond","Atom","Group","sdataCustomSchema","context","sdataSchema","acc","firstKeyOf","obj","getSdataDefault","initSdata","isCustomShema","valid","result","sdataReducer","init","correctErrors","actionContext","actionFieldName","newstate","onContextChange","onFieldNameChange","payload","fValue","formsState","atomProps","charge","explicitValence","hCount","invRet","isotope","radical","ringBondCount","substitutionCount","attachmentPoints","primary","secondary","mode","bondProps","topology","center","moleculeErrors","labelEdit","rgroup","rgroupLogic","ifthen","range","resth","save","filename","format","sgroup","text","attach","sdata","updateFormState","checkErrors","setDefaultSettings","formReducer","formName","INDIGO_VERIFICATION","ANALYZING_FILE","indigoVerification","setAnalyzingFile","initialState","isAnalyzingFile","supportedSGroupTypes","MUL","SRU","SUP","DAT","GEN","atom","maxLength","alias","pattern","unsaturatedAtom","exactChangeFlag","rgroupSchema","items","bond","mul","subscript","connectivity","name","sgroupMap","minium","attachSchema","DefaultStereoGroupNumber","fromElement","selem","fromRlabel","rglabel","fromAtomList","Elements","get","fromAtom","ap","fromApoint","attpnt","toElement","elem","length","toRlabel","toAtomList","toApoint","capitalize","toAtom","pseudo","satom","toString","stereoParity","chargeRegexp","RegExp","atomSchema","pch","parseInt","conv","undefined","atomList","notList","ids","i","AtomList","number","fromStereoLabel","stereoLabel","match","StereoLabel","Abs","orNumber","andNumber","And","Or","toStereoLabel","sap","rg","rgi","val","push","fromBond","sbond","stereo","fromBondType","reactingCenterStatus","toBond","toBondType","caption","bondCaptionMap","Error","single","PATTERN","TYPE","SINGLE","STEREO","NONE","up","UP","down","DOWN","updown","EITHER","DOUBLE","crossed","CIS_TRANS","triple","TRIPLE","aromatic","AROMATIC","singledouble","SINGLE_OR_DOUBLE","singlearomatic","SINGLE_OR_AROMATIC","doublearomatic","DOUBLE_OR_AROMATIC","any","ANY","hydrogen","HYDROGEN","dative","DATIVE","fromSgroup","ssgroup","attrs","absolute","attached","split","toSgroup","_excluded","trim","isFlipDisabled","selection","restruct","ctab","bonds","atoms","getBondIdsForAtom","atomId","_createForOfIteratorHelper","entries","bondId","b","begin","end","getBondIdsForAttachmentAtoms","atomBondIds","atomBondId","isAttachmentBond","getAmountOfAttachmentBonds","amountOfAttachmentBonds","totalBondIds","Set","toolActions","hand","erase","chain","disabled","findStereoAtoms","Array","from","transforms","arrows","RxnArrowMode","OpenAngle","FilledTriangle","FilledBow","DashedOpenAngle","Failed","BothEndsFilledTriangle","EquilibriumFilledHalfBow","EquilibriumFilledTriangle","EquilibriumOpenAngle","UnbalancedEquilibriumFilledHalfBow","UnbalancedEquilibriumOpenHalfAngle","UnbalancedEquilibriumLargeFilledHalfBow","UnbalancedEquilibriumFilledHalfTriangle","EllipticalArcFilledBow","EllipticalArcFilledTriangle","EllipticalArcOpenAngle","EllipticalArcOpenHalfAngle","shapes","SimpleObjectMode","ellipse","rectangle","line","bondCuts","typeSchema","bondSchema","KETCHER_INIT_EVENT_NAME","KETCHER_SAVED_SETTINGS_KEY","SettingsManager","e","getSettings","selectionTool","onAction","dialog","thunk","parseStruct","rescale","formatterOptions","identifyStructFormat","SupportedFormat","cdx","getStructureFromStringAsync","Promise","resolve","load","getState","parsedStruct","hasUnsupportedGroups","sgroups","some","sGroup","confirm","filter","_key","oldStruct","clone","sg","sgId","offset","SGroup","getOffset","atomSet","Pile","crossBonds","getCrossBonds","bracketPos","updateOffset","findConnectedComponents","setImplicitHydrogen","stereAtomsMap","getStereoAtomsMap","id","atomGetNeighbors","stereoProp","markFragments","isBlank","savedSelectedTool","tools","message","checkServer","then","indigoVersion","imagoVersions","rec","process","ketcherCheck","checkParams","isAbs","frags","fr","enhancedStereoFlag","chiral_flag","badVal","badConn","valence","optsTypes","ketcherErrors","types","without","serverCall","serverTransform","serverSettings","method","loadedStruct","deserialize","reactionRelayout","selectedAtoms","aidMap","Map","currentStruct","explicitSelected","aid","ketSerializer","output_format","ChemicalMimeType","KET","selected","omit","config","arom","dearom","cip","templateLib","_tool","zoomList","zoom","findLastIndex","z","findIndex","openHelpLink","open","focus","help","functionalGroupsLib","tab","_","__","requestFullscreen","element","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","exitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","getIfFullScreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","toggleFullscreen","querySelector","documentElement","fullscreen","clear","undo","historySize","redo","dontClipMessage","hasSelection","copies","active","about","hasRxnArrow","toolbar","visibleTools","alignDescriptors","icons","α","β","γ","δ","ε","ζ","η","θ","ι","κ","λ","μ","ν","ξ","ο","π","ρ","σ","τ","υ","φ","χ","ψ","ω","Å","AngstromIcon","DegreeIcon","ħ","PlanckDiracConstantIcon","PlusMinusIcon","PromilleIcon","RootIcon","LeftArrowIcon","RightArrowIcon","LeftArrowCrossedOutIcon","RightArrowCrossedOutIcon","LeftAndRightArrowIcon","CapitalPiIcon","SumIcon","InfinityIcon","PartialDerivativeIcon","DeltaIcon","IntegralIcon","ApproximatelyEqualIcon","NotEqualIcon","LessOrEqualIcon","MoreOrEqualIcon","DegreeFahreinheitIcon","DegreeCelseusIcon","AboutIcon","AnalyseIcon","AnyAtomIcon","AromIcon","ArrowUpwardIcon","BondAnyIcon","BondAromaticIcon","BondCrossedIcon","BondHydrogenIcon","BondDative","BondDoubleIcon","BondDoubleAromaticIcon","BondDownIcon","BondSingleIcon","BondSingleAromaticIcon","BondSingleDoubleIcon","BondTripleIcon","BondUpIcon","BondUpdownIcon","CapitalTIcon","ChainIcon","ChargeMinusIcon","ChargePlusIcon","CheckIcon","ChiralFlagIcon","CipIcon","CleanIcon","CopyIcon","CopyImageIcon","CopyMolIcon","CopyKetIcon","CutIcon","DearomIcon","DeleteIcon","dropdown","DropdownIcon","EnhancedStereoIcon","edit","EditIcon","ElementsGroupIcon","ExtendedTableIcon","EraseIcon","FileThumbnailIcon","FullscreenEnterIcon","FullscreenExitIcon","GenericGroupsIcon","HandIcon","compressedhand","CompressedHandIcon","HelpIcon","history","HistoryIcon","ImageFrameIcon","LayoutIcon","logo","LogoIcon","MiewIcon","ClearIcon","OpenIcon","PasteIcon","PeriodTableIcon","ReactionArrowEllipticalArcArrowFilledBow","ReactionArrowEllipticalArcArrowFilledTriangle","ReactionArrowEllipticalArcArrowOpenAngle","ReactionArrowEllipticalArcArrowOpenHalfAngle","ReactionArrowOpenAngleIcon","ReactionArrowFilledTriangle","ReactionArrowFilledBow","ReactionArrowDashedOpenAngle","ReactionArrowFailed","ReactionArrowBothEndsFilledTriangle","ReactionArrowEquilibriumFilledHalfBow","ReactionArrowEquilibriumFilledTriangle","ReactionArrowEquilibriumOpenAngle","ReactionArrowUnbalancedEquilibriumFilledHalfBow","ReactionArrowUnbalancedEquilibriumOpenHalfAngle","ReactionArrowUnbalancedEquilibriumLargeFilledHalfBow","ReactionArrowUnbalancedEquilibriumFilledHalfTriangle","ReactionAutomapIcon","ReactionMapIcon","ReactionPlusIcon","ReactionUnmapIcon","RecognizeIcon","RedoIcon","RgroupAttpointsIcon","RgroupFragmentIcon","RgroupLabelIcon","SaveIcon","SearchIcon","SelectFragmentIcon","SelectLassoIcon","SelectRectangleIcon","SettingsIcon","SgroupDataIcon","SgroupIcon","Template0Icon","Template1Icon","Template2Icon","Template3Icon","Template4Icon","Template5Icon","Template6Icon","Template7Icon","TemplateDialogIcon","TemplateLibIcon","TextIcon","TextBold","TextItalic","TextSubscript","TextSuperscript","TransformFlipHIcon","TransformFlipVIcon","TransformRotateIcon","UndoIcon","ZoomInIcon","ZoomOutIcon","ShapeEllipseIcon","ShapeRectangleIcon","ShapePolylineIcon","ShapeLineIcon","NotFoundIcon","Save1Icon","Open1Icon","reset","ResetIcon","close","CloseIcon","general","GeneralIcon","GeneralWhiteIcon","StereoIcon","StereoWhiteIcon","AtomsIcon","AtomsWhiteIcon","BondsIcon","BondsWhiteIcon","ServerIcon","ServerWhiteIcon","ThreeDViewerIcon","ThreeDViewerWhiteIcon","debugging","DebuggingIcon","DebuggingWhiteIcon","DropdownIndicatorIcon","TextSpecialSymbolsIcon","chevron","ChevronIcon","OpenWindowPasteIcon","OpenWindowUploadIcon","emptyIcon","findIconByName","hasOwnProperty","component","Icon","shortcutAliasMap","Escape","Delete","Mod","isMacOs","shortcutStr","shortcutKey","isArray","toUpperCase","ActionButton","status","disableableButtons","className","handleClick","_jsxs","onClick","button","children","CLASSNAME_SEPARATOR","Portal","createElement","isElementInDom","isOpen","addElementInDOM","style","addClassName","updateStyle","removeElementFromDOM","prevProps","removeClassNames","appendChild","removeChild","classNames","classList","remove","add","prevStyle","property","ReactDOM","createPortal","DefaultMultiTool","toolbarItem","currentStatus","GroupedMultiTool","groups","_Fragment","descriptor","group","start","chooseMultiTool","variant","defaultClasses","usePortalOpening","opened","useState","setIsOpen","useEffect","currentId","newState","usePortalStyle","ref","portalStyle","setPortalStyle","editorRect","getBoundingClientRect","top","left","menuItemRect","spaceBetween","width","ToolbarMultiToolItem","vertical","onOpen","useRef","selectedTool","find","allInnerItemsHidden","every","option","displayMultiToolItem","savedSelectionTool","savedSelectionToolId","actionButtonProps","onOpenOptions","portalClassName","root","icon","iconSelected","portal","ToolbarGroupItem","TemplatesList","isTemplate","makeAction","index","BottomToolbar","rest","initLib","lib","initTmplLib","baseUrl","cacheEl","deserializeSdfTemplates","concat","userTmpls","fileName","sdfSerializer","SdfSerializer","tmpls","templatesRawData","prefetch","prefetchRender","cachedFiles","tmpl","pr","prefetchSplit","prerender","userLib","prefetchStatic","url","fetch","credentials","resp","ok","files","all","fn","svgs","svgContent","innerHTML","openDialog","dialogName","reject","onResult","onCancel","modalReducer","formState","form","selectTmpl","changeGroup","changeFilter","changeTab","initAttach","atomid","bondid","setAttachPoints","setTmplName","editTmpl","formData","updateLocalStore","deleteUserTmpl","deleteTmpl","saveUserTmpl","initTmplsState","tmplActions","attachActions","templatesReducer","execute","activeTool","actObj","isEqual","actionName","params","pickBy","x","isEmpty","functionalGroupInfo","functionalGroupsReducer","initFGroups","highlightFGroup","highlightFG","initFGTemplates","provider","FunctionalGroupsProvider","getInstance","setFunctionalGroupsList","renderCache","RenderStruct","newStruct","cachePrefix","cacheKey","has","preparedStruct","prepareStruct","initHalfBonds","initNeighbors","rnd","Render","autoScale","setMolecule","viewSz","set","clientArea","fileOpener","FileReader","throughFileReader","ActiveXObject","fso","throughFileSystemObject","isCDX","endsWith","rd","onload","content","msClose","onerror","readAsDataURL","readAsText","fd","OpenTextFile","ReadAll","Close","GREEK_SIMBOLS","Alpha","alpha","Beta","beta","Gamma","gamma","greekRe","join","greekify","sym","filterLib","trimmedFilter","re","escapeRegExp","flow","_filter","test","filterFGLib","searchFunction","fields","abbreviation","field","getSelectOptionsFromSchema","saltsAndSolventsReducer","initSaltsAndSolvents","prerenderPartOfStructures","part","div","height","display","body","autoScaleMargin","downScale","initSaltsAndSolventsTemplates","saltsAndSolventsProvider","SaltsAndSolventsProvider","functionalGroupsProvider","String","setSaltsAndSolventsList","addToFunctionalGroupsList","initial","freqAtoms","currentAtom","MAX_ATOMS","updateVisibleTools","visibleTool","regExp","menuHeight","innerHeight","initResize","onResize","throttle","actionState","toolInMenu","addFreqAtom","correctTools","isSelected","menuName","addAtoms","atomLabel","toolName","sel","getElementById","hiddenAncestor","base","findEl","getComputedStyle","overflow","contains","shared","combineReducers","actionStateReducer","toolbarReducer","modal","store","requestsStatuses","requestReducer","getRootReducer","setEditor","sh","finalState","restOptions","_excluded2","initState","middleware","rootReducer","createStore","applyMiddleware","mapStateToProps","mapDispatchToProps","BottomToolbarContainer","connect","makeItems","bondCommon","bondStereo","bondQuery","bondSpecial","groupOptions","flat","groupDescriptors","accum","rGroupOptions","shapeOptions","transformOptions","selectOptions","arrowsOptions","mappingOptions","useSettingsContext","useContext","SettingsContext","throttleMilliseconds","useThrottleResizeObserver","setSize","useMemo","useResizeObserver","useFormContext","FormContext","useAppContext","AppContext","useInterval","callback","delay","savedCallback","setInterval","clearInterval","useSubscriptionOnEvents","useDispatch","getKetcherInstance","loadingHandler","actionResultHandler","subscribe","eventBus","addListener","KetcherAsyncEvents","LOADING","SUCCESS","FAILURE","unsubscribe","removeListener","subscribeOnInit","unsubscribeOnUnMount","ArrowScroll","startInView","endInView","scrollUp","scrollDown","isScrollDown","setScrollDown","isScrollUp","setScrollUp","scroll","onMouseUp","onMouseDown","mediaSizes","topSeparatorsShowingWidth","bondCollapsableHeight","rGroupCollapsableHeight","shapeCollapsableHeight","transformCollapsableHeight","RGroup","Shape","Transform","LeftToolbar","scrollRef","useInView","threshold","startRef","endRef","sizeRef","Item","scrollTop","offsetHeight","visibleItems","visible","_createElement","listener","groupItem","LeftToolbarContainer","names","StyledAtom","styled","atomColor","ElementColor","AtomsList","forwardRef","isAtom","RightToolbar","atomsList","RightToolbarContainer","Button","MuiButton","_templateObject","IconButton","iconName","combinedTitle","FileControls","onFileOpen","onSave","shortcuts","hiddenButtons","ElementAndDropdown","DropDownContent","_templateObject2","DropDownButton","_templateObject3","DropDownArrow","_templateObject4","MenuItemWithDropdown","topElement","dropDownElements","onToolOpen","isExpanded","setIsExpanded","collapse","expand","Collapse","timeout","unmountOnExit","ClickAwayListener","onClickAway","ElementWithDropdown","ClipboardControls","onCopyMol","onCopyKet","onCopyImage","disabledButtons","copyButtons","handler","getButtonElement","firstButtonObj","collapsibleElements","VerticalDivider","Divider","UndoRedo","onUndo","onRedo","StyledInput","onFocusHandler","updateInputString","inputElement","ZoomInput","onZoomSubmit","currentZoom","inputRef","inputEl","activeElement","onKeyDown","useCallback","zoomShortcuts","nativeEvent","stopImmediatePropagation","onFocus","ZoomLabel","Dropdown","Popover","_templateObject5","ZoomControlButton","_templateObject6","ShortcutLabel","_templateObject7","getIntegerFromString","zoomInput","zoomNumber","isNaN","getValidZoom","minAllowed","Math","min","maxAllowed","max","ZoomControls","onZoom","onZoomIn","onZoomOut","containerRef","userInput","zoomToSet","onClose","reason","onExpand","resetZoom","round","anchorEl","container","anchorOrigin","horizontal","ControlsPanel","SystemControls","onSettingsOpen","onFullscreen","onHelp","onAboutOpen","ExternalFuncControls","isCollapsed","onLayout","onClean","onAromatize","onDearomatize","onCalculate","onCheck","onAnalyse","onMiew","externalFuncButtons","collapseLimit","TopToolbar","onClear","onAbout","resizeRef","onHistoryClick","processedShortcut","dispatchAction","zoomValue","TopToolbarContainer","mac","platform","normalizeKeyName","parts","alt","ctrl","shift","meta","mod","normalizeKeyMap","modifiers","altKey","ctrlKey","metaKey","rusToEng","KN","keyCode","normalizeKeyEvent","keyName","isChar","keyNorm","KeyboardEvent","arguments","lookup","baseName","APointTool","molecule","closestItem","findItem","hover","ci","atomResult","FunctionalGroup","atomsInFunctionalGroup","fgId","findFunctionalGroupByAtom","removeFG","fgIds","elementEdit","newatom","fromAtomsAttrs","calcAngle","pos0","pos1","v","Vec2","diff","atan2","y","calcNewAtomPos","rotate","fracAngle","add_","degrees","angle","degree","PI","BONDS_MERGE_ANGLE","BONDS_MERGE_SCALE","mergeBondsParams","struct1","bond1","struct2","bond2","begin1","begin2","end1","end2","pp","mergeAngle","abs","scale","dist","merged","inRange","cross","AtomTool","_classPrivateFieldInitSpec","hoverIcon","show","attr","updateHoverIconPosition","isNotActiveTool","isContractedFunctionalGroup","Action","selectedSgroup","sGroupAtoms","getAtoms","firstAtom","atomNeighbours","extraNeighbour","mergeWith","fromSgroupDeletion","fromFragmentDeletion","firstAtomPp","a","getBonds","fromAtomAddition","dragCtx","hide","layerX","layerY","getBBox","utils","page2obj","newAtomPos","perform","fromBondAddition","atomLongtapEvent","fgs","setTimeout","quickEdit","xy0","stopTapping","clearTimeout","AttachTool","attachPoints","bondResult","bondsInFunctionalGroup","findFunctionalGroupByBond","attachEdit","BondTool","fromBondsAttrs","pos","beginAtom","endAtom","beginPos","endPos","closestSGroup","fGroupId","fGroup","fGroupAtoms","nei","Number","MAX_VALUE","xy1","get_xy0","getExistingBond","existingBondId","existedBond","fromOneBondDeletion","restoreBondWhenHoveringOnCanvas","xy","bondAddition","sum","bondChangingAction","isHoveringOverAtom","bondEnd","alreadyHasBondInOtherDirection","ChainTool","sectCount","ceil","fromChain","newItems","mergeItems","getItemsToFuse","getHoverToFuse","next","fromItemsFuse","ChargeTool","EnhancedStereoTool","stereoAtoms","changeAtomsStereoAction","stereoLabels","stereoAtom","hasAnotherLabel","enhancedStereoEdit","fromStereoFlagUpdate","operations","reverse","getElementsInRectangle","p0","p1","bondList","sGroups","x0","x1","y0","y1","bid","centre","lc2","isBondInContractedFunctionalGroup","relatedFGId","isAtomInContractedFunctionalGroup","rxnArrowsList","rxnPlusesList","simpleObjectsList","rxnArrows","rxnPluses","referencePoints","getReferencePoints","referencePointInRectangle","point","enhancedFlagList","enhancedFlags","sgroupDataList","sgroupData","textsList","getElementsInPolygon","rr","r","isPointInPolygon","referencePointInPolygon","p","n","v0","n0","dot","d0","w0","counter","eps","flag1","flag0","v1","w1","n1","d1","inRectangle","inPolygon","LassoHelper","locate","points","getSelection","dp","Scale","obj2scaled","selectionPolygon","selectionRectangle","ret","searchMaps","SGroupTool","lassoHelper","checkSelection","newSelected","actualSgroupId","atomsResult","extraAtoms","atomFromStruct","sgs","sgroupAtoms","sgroupBonds","sgroupDialog","bondFromStruct","isFunctionalGroup","running","addPoint","bondsResult","extraBonds","cancel","selMerge","isAtomsOrBondsSelected","defaultType","eventName","getAttrs","getContextBySgroup","getContextBySelection","newSg","checkOverlapping","error","isDataSg","fromSeveralSgroupAddition","fromContextType","sgAtoms","SgContexts","manyComponentsSelected","singleComponentSelected","sgBonds","anyChainedBonds","allBondsSelected","currSelection","sourceAtoms","fromSgroupAction","fixedBond","j","countOfSelectedComponents","connectedComponents","isSuperset","isAtomsArray","selectedElements","generateCommonProperties","normalizedAtom","getOwnPropertyNames","resultAtomAttributes","uniqueValues","allAtomsHaveTheSameValue","updateOnlyChangedProperties","userChangedAtom","unchangedAtom","updatedKeys","updatedAtom","isPropertyChanged","updateSelectedAtoms","changeAtomPromise","selectionAtoms","atomWithChangedProperties","SelectTool","selectedSgroups","selectFragment","sGroupId","closestToSel","frag","fragGetAtoms","fragGetBonds","rgroups","shouldDisplayDegree","neighbors","sub","fromSimpleObjectResizing","showInfo","previous","fromArrowResizing","expSel","fromMultipleMove","maps","possibleSaltOrSolvent","isDraggingSaltOrSolventOnStructure","isSaltOrSolvent","isDraggingStructureOnSaltOrSolvent","preventSaltAndSolventsMerge","selectElementsOnCanvas","getSelectedAtoms","rb","bondEdit","bondsSelection","newbond","fromTextDeletion","fromTextUpdating","elements","isDraggingOnSaltOrSolventAtom","isDraggingOnSaltOrSolventBond","mergeAtoms","mergeBonds","sgroupsOnCanvas","isAtomInSaltOrSolvent","isBondInSaltOrSolvent","reversible","uniqArray","mapAtomIdsToAtoms","atomsIds","atomOrReAtom","dest","xor","EraserTool","preResult","fromOneAtomDeletion","fromArrowDeletion","fromPlusDeletion","fromSimpleObjectDeletion","HandTool","lastEvent","clientX","clientY","cursor","cursorPosition","begPos","scaled","translate","PasteTool","clientHeight","clientWidth","pageX","pageY","fromPaste","pasteItems","RGroupAtomTool","propsDialog","fragId","attrlist","aam","RGroupFragmentTool","ce","findRGroupByFragment","rgroupEdit","newRg","rgidOld","fromRGroupFragment","fromUpdateIfThen","fromRGroupAttrs","ReactionArrowTool","isNew","fromArrowAddition","addOperation","itemId","getDefaultLengthPos","getArrowParams","x2","y2","sqrt","pos2","defaultLength","arrowParams","newPos","cos","sin","ReactionMapTool","rcs","getComponents","updateLine","p2","selectionLine","atom1","atom2","aam1","aam2","ReactionPlusTool","fromPlusAddition","ReactionUnmapTool","RotateTool","dir","singleBond","fromFlip","fromBondAlign","rotId","rotAll","hb","halfBonds","loop","neiAtom","neiNei","neiHb","angle1","fromRotate","SimpleObjectTool","fromSimpleObjectAddition","TemplateTool","getTemplateMode","template","findItems","angle0","sign","getSign","sGroupResult","frid","frIds","getFragmentIds","count","hb1","hb2","loopHbs","loops","hbs","halfBondBegin","hbbAtom","atomById","sign1","sign2","fromTemplateOnBondAction","extraBond","extra_bond","fromTemplateOnAtom","promise","isFunctionalGroupReplace","addSaltsAndSolventsOnCanvasWithoutMerge","fromTemplateOnCanvas","neiId","completeAction","isDummy","TextTool","position","origilContent","fromTextCreation","rgroupatom","eraser","rgroupfragment","apoint","reactionarrow","reactionplus","reactionmap","reactionunmap","enhancedStereo","simpleobject","handleHotkeyOverAtom","hoveredItemId","newAction","toolsMapping","handleAtomTool","handleBondTool","handleEraserTool","handleChargeTool","handleRGroupAtomTool","Tools","toolHandler","isChangeStructureTool","isChangingFunctionalGroup","isFunctionalGroupChange","updatedAtoms","newBond","existingAtom","initKeydownListener","hotKeys","initHotKeys","keyHandle","removeNotRenderedStruct","actionTool","code","atomsSelected","letter","checkGroupOnTool","groupLength","newIndex","actName","clipArea","getHoveredAtomId","getCurrentAction","isIE","prevActName","setHotKey","act","rxnTextPlain","initClipboard","formatProperties","mime","debAction","debounce","loadStruct","clipData","Mol","Rxn","ket","isReaction","AppClipArea","AppHidden","onInitTmpls","staticResourcesUrl","AppHiddenContainer","smallWidth","smallHeight","Dialog","headerContent","footerContent","buttonsNameMap","needMargin","withDivider","focusable","dialogRef","useLayoutEffect","closest","getElementsByClassName","isButtonOk","exit","keyDown","activeTextarea","stopPropagation","role","onSubmit","tabIndex","styles","header","btnContainer","buttonTop","closeButton","withMargin","footer","LoadingCircles","SELECTION_DISTANCE_COEFFICIENT","SELECTION_WITHIN_TEXT","findMaps","findClosestAtom","findClosestBond","findClosestEnhancedFlag","findClosestDataSGroupData","findClosestSGroup","findClosestFG","findClosestRxnArrow","findClosestRxnPlus","findClosestFrag","findClosestRGroup","findClosestSimpleObject","findClosestText","rectangleContainsPoint","startX","startY","minDist","topX","topY","bottomX","bottomY","distances","refPoint","simpleObject","calcDistance","skip","closestAtom","maxMinDist","skipId","closestBond","closestBondCenter","minCDist","a1","a2","mid","cdist","norm","inStripe","_minDist","stereoFlagPosition","getDefaultStereoFlagPosition","box","dataArea","inBox","xDist","rgid","labelBox","rxnArrow","plus","sgid","functionalGroup","expanded","firstSgroupAtom","bracketDir","rotateSC","pg","areas","reSGroup","getTextHighlightDimensions","centerX","centerY","rectangleCenter","findClosestItem","mp","other","findCloseMerge","srcId","merge","customOnChangeHandler","operation","op","_inverted","OperationType","ATOM_ADD","ATOM_DELETE","toFixed","ATOM_ATTR","attribute","to","data2","ATOM_MOVE","BOND_ADD","BOND_DELETE","FRAGMENT_ADD","FRAGMENT_DELETE","FRAGMENT_ADD_STEREO_ATOM","FRAGMENT_DELETE_STEREO_ATOM","S_GROUP_ATOM_ADD","S_GROUP_ATOM_REMOVE","S_GROUP_CREATE","S_GROUP_DELETE","RXN_ARROW_ADD","RXN_ARROW_DELETE","RXN_ARROW_RESIZE","RXN_ARROW_MOVE","R_GROUP_FRAGMENT","SIMPLE_OBJECT_ADD","SIMPLE_OBJECT_DELETE","SIMPLE_OBJECT_RESIZE","SIMPLE_OBJECT_MOVE","Highlighter","highlightsMap","highlights","highlightsArray","highlight","createdHighlights","args","arg","color","getValidInputOnly","validAtoms","validBonds","fromHighlightCreate","fromHighlightClear","structAtoms","structBonds","SCALE","HISTORY_SIZE","HOVER_ICON_OPACITY","structObjects","highlightTargets","selectStereoFlagsIfNecessary","expAtoms","atomsOfFragments","stereoFlags","shouldSelSFlag","Editor","_selection","historyStack","historyPtr","renderAndRecoordinateStruct","setOptions","lastCursorPosition","createHoverIcon","Subscription","PipelineSubscription","sgroupEdit","sdataEdit","change","selectionChange","aromatizeStruct","dearomatizeStruct","domEventSetup","toolMap","isAtomToolChosen","paper","fromNewCanvas","structCenter","getStructCenter","recoordinate","Struct","superStruct","mergeInto","updateOptions","setZoom","ReStruct","setSelection","newTool","infoPanelData","setHover","checkFunctionGroupTypes","closestCollapsibleStructures","groupName","groupStruct","getFunctionalGroupByName","ignoreHistory","splice","stack","subscriber","subscribeFuncWrapper","srcItems","dst","isRxn","fromDescriptorsAlign","isMouseRight","which","resetSelectionOnCanvasClick","updateLastCursorPosition","events","useToolIfNeeded","EditorTool","conditions","isSelectionRunning","condition","toolEventName","DOMSubscription","subs","nodeName","isToolUsed","rp","setScrollOffset","bb","getVBoxObj","dstId","item1","item2","FGContextMenu","handleExpand","expandData","targetItems","setExpandSGroup","relatedSGroupId","setShowSGroupMenu","setTargetItems","handleRemove","showSGroupMenu","showMenu","selectedItems","detail","fg","fgroup","ContextMenu","onShow","MenuItem","divider","Cursor","PressedIcon","enableHandTool","setPosition","setMouseDown","updatePosition","handleMouseDown","handleMouseUp","bottom","right","zIndex","pointerEvents","formatTitle","getBondNames","startsWith","queryBondNames","getNonQueryBondNames","allBondNames","difference","isBatchOperationHidden","useDisabled","isDisabled","triggerEvent","selectedAtomIds","AtomBatchEdit","newAtom","AtomStereoBatchEdit","stereoAtomIdsRef","isStereoDisabled","stereoAtomIds","AtomSingleOperations","handleEdit","handleStereoEdit","stereoAtomId","handleDelete","BatchDelete","bondNames","selectedBondIds","BondBatchEdit","defaultBond","selectedBonds","BondTypeBatchChange","Submenu","subMenu","nonQueryBondNames","BondSingleOperations","handleTypeChange","CONTEXT_MENU_ID","Menu","animation","contextMenu","fixContextMenuPosition","computedStyles","contextMenuHeight","currentTopPosition","screenSize","ContextMenuTrigger","useContextMenu","hideAll","hasConflictWithFunctionalGroupMenu","functionalGroupId","hasRelatedSGroup","hasSelectedFunctionalGroup","hasRelatedSGroupId","handleDisplay","isRightClickingSelection","selectedItemId","onContextMenu","StructRender","tagRef","previousProps","molSerialzer","childNodes","node","Tag","functionalGroupsSelector","functionGroupInfoSelector","HOVER_DELAY","HOVER_PANEL_PADDING","getSGroupFirstAtom","firstAtomId","getPanelPosition","groupBoundingBox","firstAtomPosition","panelPosition","viewportRightLimit","viewportLeftLimit","viewportBottomLimit","scrollOffsetX","scrollLeft","scrollOffsetY","InfoPanel","sGroupData","setSGroupData","childRef","timer","infoPanel","rescaleAmount","setupEditor","oldProps","toolOpts","upperFirst","removeEditorHandlers","StructEditor","enableCursor","editorRef","logRef","nextProps","nextState","onInit","msg","showAttachmentPoints","parsedInfo","csr","handShouldBeShown","setState","onSelectionChange","onElementEdit","onEnhancedStereoEdit","onQuickEdit","onBondEdit","onRgroupEdit","onSgroupEdit","onSdataEdit","onRemoveFG","onMessage","onAromatizeStruct","onDearomatizeStruct","onAttachEdit","onCipChange","onConfirm","onShowInfo","canvas","FunctionalGroupTrigger","hideMenu","intermediateCanvas","handIcon","compressedHandIcon","measureLog","spinnerOverlay","AboutDialog","indigoInfo","dialog_body","onOk","okButton","overviewLink","Logo","verionsInfo","ketcherVersionInfo","date","infoLinks","feedbackLink","lifeScienciesLink","indigoMachine","buildDate","_result","About","ErrorMessage","ErrorPopover","handleClose","GenericInput","onChange","innerRef","isFocused","onInput","input","genericInput","checkbox","radioButton","ev","isNumber","TextArea","CheckBox","_excluded3","fieldSetItem","checked","Select","onSelect","multiple","enumSchema","selectedIndex","o","FieldSet","_excluded4","fieldSetLabel","defaultChecked","fieldset","inputCollection","querySelectorAll","inp","Slider","_excluded5","slider","cbOrIndex","isTypeValue","inputCtrl","singleSelectCtrl","testVal","multipleSelectCtrl","ctrlMap","componentMap","AnyComponentWithRef","_excluded6","Input","restProps","PureComponent","chevronIcon","currentValue","setCurrentValue","handleChange","MuiSelect","selectContainer","MenuProps","dropdownList","IconComponent","disableRipple","Form","onUpdate","propSchema","errs","getErrorsObj","customValid","updateState","instance","dataError","stateStore","Label","labelPos","Field","setAnchorEl","handlePopoverOpen","currentTarget","handlePopoverClose","fieldOpts","formField","inputWrapper","SelectOneOf","selectDesc","verbose","strictSchema","schemaCopy","cloneDeep","formatName","formatValidator","addFormat","inst","serializeRewrite","deserializeRewrite","serializeMap","deserializeMap","getInvalidMessage","parentSchema","presetColors","ColorPicker","isPaletteOpen","setIsPaletteOpen","func","limit","inThrottle","prev","handlePaletteOpen","handleColorChange","handleBlur","relatedTarget","colorPickerWrapper","colorPickerInput","selectedInput","colorPickerPreview","expandIcon","turnedIcon","colorPickerWrap","withPalette","onBlur","chooseColor","clicked","autoFocus","presetColor","colorPicker","HexColorPicker","colorContainer","hex","HexColorInput","MeasureInput","measure","setMeasure","cust","setCust","convValue","convertValue","handleMeasChange","m","calcValue","newValue","measureInput","measureMap","px","cm","pt","inch","measureFrom","measureTo","OpenButton","opener","noop","onLoad","onError","btn","click","openButton","SaveButton","saveImage","saveFile","fileSaver","saver","ketcherInstance","blob","saveAs","Blob","Accordion","tabs","changedGroups","expandedAccordions","setExpandedAccordions","handleAccordionChange","accordion","isExpand","expandedAccordion","accordionWrapper","shouldGroupBeRended","accordionSummaryWrapper","accordionSummary","groupLabel","groupIcon","changeMarker","accordionDetailsWrapper","hiddenAccordion","accordionDetails","commonFonts","checkInSystem","availableFontsPromises","fontName","observer","FontFaceObserver","SystemFonts","availableFonts","setAvailableFonts","onChangeCallback","mounted","results","fonts","fieldGroups","defaultSettings","HeaderContent","onOpenFile","onReset","getIsResetDisabled","settingsProps","settingsSchema","SettingsDialog","appOpts","setChangedGroups","changed","generalTab","stereoTab","atomsTab","bondsTab","serverTab","threeDViewerTab","viewer","debuggingTab","OK","ownProps","newOpts","Settings","ErrorsCheck","checkSchema","moleculeErrorsTypes","getOptionName","nameIndex","getFormattedDateString","getFixedString","num","padStart","getHours","getMinutes","getSeconds","getDate","getMonth","getFullYear","FooterContent","handleCheck","handleApply","isStuctureChecking","isCheckedWithNewSettings","buttonSecondary","buttonPrimary","buttonsRight","CheckDialog","checkState","onApply","setIsStructureChecking","lastCheckDate","setLastCheckDate","setIsCheckedWithNewSettings","Date","handleSettingsChange","wrapper","checkBoxesDisabled","checkInfo","centeredContainer","warnings","warningsContainer","Check","formulaRegexp","errorRegexp","formulaInputMarkdown","contentData","contentEditable","chem_input","FormulaInput","cnd","substring","FrozenInput","roundOff","AnalyseDialog","onChangeRound","withSelector","contentWrapper","selectWrapper","ErrorsContext","Analyse","DialogActionButton","clickHandler","isImage","onImage","openHandler","copyHandler","secondaryButton","primaryButton","RecognizeDialog","partProps","onRecognize","isFragment","onChangeImago","canPreviewImage","setCanPreviewImage","clearFile","topBody","imagoVersion","imagesContainer","picture","messageContainer","output","URL","webkitURL","createObjectURL","ver","Recognize","BACKGROUND_COLOR","dark","light","MIEW_TX_TYPES","no","bright","colorer","blackAndWhite","bg","black","TXoptions","userOpts","selector","showBg","createMiewOptions","autoPreset","editing","inversePanning","reps","textMode","CHANGING_WARNING","warning","MiewDialog","miewOpts","onExportCML","miewRef","onMiewInit","cml","sourceType","fileType","exportCML","cmlStruct","applyButton","miewDialog","miewContainer","miewDarkTheme","Viewer","Miew","ElementNumber","readOnly","isMultipleAtoms","currentLabel","setCurrentLabel","onLabelChangeCallback","itemGroups","querySpecific","reactionFlags","atomValid","chargeValid","isChemicalElement","regex","isValidCharge","AtomContainer","AttachPoints","attachmentPointsSchema","AttachPointsContainer","automapSchema","Automap","AutomapContainer","BondContainer","IfThenSelect","rgroupLabels","rgroupLabel","RgroupLogic","rangeConv","s","RgroupLogicContainer","ICON_NAME","AnalyzingFile","analyzingFileWrapper","fileBox","FileDrop","buttonLabel","textLabel","disabledText","useDropzone","getRootProps","getInputProps","isDragActive","getClassesString","parentStyles","dropContainer","isHovered","dropIconWrapper","textLabelWrapper","buttonLabelWrapper","ICON_NAMES","PASTE","FILE","IMAGE","OpenOptions","selectClipboard","fileLoadHandler","imageLoadHandler","isRecognizeDisabled","optionsContainer","onDropAccepted","onDropRejected","accept","TextEditor","inputHandler","textareaEditor","ViewSwitcher","states","idle","textEditor","MODAL_STATES","imageRec","cancelButton","buttonsContainer","copyButton","Open","onImageUpload","setStructStr","setFileName","setOpener","setCurrentState","chosenOpener","onFileLoad","fileContent","onImageLoad","withFooterContent","badHeaderRecover","OpenContainer","couldBeSaved","getPropertiesByFormat","rxnArrowsSize","arrayOfAtoms","hasGenerics","arrayOfArrows","rxnArrowMode","isRg","_ind","isSg","isVal","StereoFlag","Tabs","contentClassName","tabPanel","componentProps","saveSchema","SaveDialog","getPropertiesByImgFormat","isImageFormat","ketSerialize","disableControls","imageFormat","isLoading","base64","imageSrc","onResetForm","structWarning","saveWarning","structFormat","isStructInvalid","showStructWarningMessage","getWarnings","renderSaveFile","renderWarnings","formContainer","changeType","isCleanStruct","loadingCirclesContainer","imageContainer","previewBackground","previewArea","warningsArr","isMoleculeContain","saveTmpl","onTmplSave","extensions","formatProps","getButtons","renderForm","prevState","Save","EnhancedStereo","findStereLabels","maxAnd","maxOfAnds","maxOr","maxOfOrs","enhancedStereoSchema","labelGroupSelect","aids","stereoIds","stereLabels","numbers","lc","LabelEdit","labelEditSchema","l","labelEditInputField","AtomInfo","isInfo","numberStyle","fontSize","elemStyle","fontWeight","ket_atom_info","none","mass","PERIODIC_TABLE_COLUMNS","Header","MainRow","row","refer","onAtomSelect","onDoubleClick","currentEvents","atomClassNames","OutinerRow","metalPrefix","metal","unknownProps","unknownState","beforeSpan","He","Al","Hf","Rf","ACTINIDE","LANTHANIDE","main","rowPartition","lanthanides","actinides","period","ElementsTable","origin","callbacks","table","getAtomClassNames","main_row","outiner_row","HorizontalBoxWithLines","horizintalNodeLines","upperLines","lowerLine","VerticalBoxWithLines","verticalNodeLines","isGenericGroup","cyclicGroups","getGroupClassName","replaceAll","GenSet","labels","displayName","legendBox","genGroupLegendBox","genGroupLegend","getLegendClassname","mainTitles","GenGroup","fieldFlexWrapper","genButtonContainer","buttonContainer","itemSets","subGroup","getGenericsGroupsMap","tree","newGroups","subGroups","renderGenGroupComponent","groupsMap","Generics","GenericGroups","genericGroups","topGroupsContainer","groupNames","atomsGen","specialNodes","groupGen","groupGenerics","groupAcyclic","subgroupContainer","acyclicCarbo","acyclicHetero","groupCyclic","cyclicCarbo","cyclicHetero","TypeChoice","Table","prevChoice","currentChoice","dialogHeader","activateImmediately","onMouseEnter","onMouseLeave","elementsTable","periodTable","mapSelectionToProps","PeriodTable","setValue","extendedTable","ExtendedTable","RemoveFG","question","buttonCancel","buttonOk","oneOrMore","multipl","ButtonList","disabledIds","SData","formSchema","Sgroup","schemes","TemplateEditDialog","Warning","LeftColumn","RightColumn","NameInput","AttachmentOutput","Buttons","buttonCommonStyles","css","CancelButton","editorStyles","selectionStyle","fill","stroke","hoverStyle","hoverStyleSimpleObject","Attach","initTmpl","onNameEdit","globalSettings","getScale","checkIsValidName","normTmpl","structNormalization","normStruct","cbb","getCoordBoundingBox","rxnPlus","VIEW_SIZE","isSaltOrSolventTemplate","isFunctionalGroupTemplate","getTemplateTitle","tmplName","RenderTmpl","TemplateTable","onDelete","onAttach","titleRows","renderOptions","tableContent","oneRowTitleTable","twoRowsTitleTable","td","structTitle","selectedTitle","deleteButton","editButton","saltsAndSolventsSelector","EmptySearchResult","textInfo","emptySearch","SALTS_AND_SOLVENTS","batchDelay","useSaltsAndSolvents","isFirstRender","setIsFirstRender","timerId","filteredSaltsAndSolvents","setFilteredSaltsAndSolvents","addToSaSWithBatches","fullFilteredArray","batchSize","filteredSaS","TabPanel","a11yProps","TemplateTabs","filterLibSelector","createSelector","FUNCTIONAL_GROUPS","clickToAddToCanvas","SaltsAndSolvents","flexGrow","justifyContent","alignItems","saveButton","TemplateLibrary","TemplateDialog","onFilter","onTabChange","onChangeGroup","searchInputRef","filteredFG","setFilteredFG","filteredTemplateLib","serializerMapper","FunctionalGroupLibrary","inputContainer","placeholder","searchIcon","Tab","tabsContent","square","AccordionSummary","AccordionDetails","templ","resultsContainer","selectTemplate","onModalClose","initialTab","FontControl","editorState","setEditorState","defaultFontSize","isShowingFontSizeMenu","setIsShowingFontSizeMenu","currentFontSize","setCurrentFontSize","setFontSize","newEditorState","currentStyle","MIN_FONT_SIZE","MAX_FONT_SIZE","fontSizes","fontSizeOptions","fontSizeOption","fontBtn","parseFloat","fontSizeMenu","SpecialSymbolsList","symbols","symbol","SpecialSymbolsButton","showSpecialSymbols","setShowSpecialSymbols","closeSymbolsList","addSymbol","contentState","getCurrentContent","nextContentState","Modifier","replaceText","nextEditorState","EditorState","activeTextButton","textButton","TextButton","toggleStyle","command","isActive","createStyles","customStyleFn","TextCommand","Bold","Italic","Superscript","Subscript","Text","rawContentState","moveFocusToEnd","createWithContent","convertFromRaw","blocks","entityMap","hasText","convertToRaw","keyBindingFn","getDefaultKeyBinding","onContentChange","getCurrentInlineStyle","RichUtils","toggleInlineStyle","customStyleMap","SUBSCRIPT","verticalAlign","transform","transformOrigin","SUPERSCRIPT","lineHeight","refEditor","setFocusInEditor","controlPanel","Confirm","Rgroup","TemplateAttach","TemplatesDialog","Sdata","Modal","modals","modalOverlay","selectClasses","smallScreen","mergeProps","stateProps","dispatchProps","initProps","ModalContainer","initEditor","updateAction","sleep","time","selectMode","resetOption","acts","atomAttributes","dlg","_extends","serverOpts","muiTheme","createTheme","components","MuiButtonBase","defaultProps","App","scrollTo","ThemeProvider","theme","AppModalContainer","AppContainer","initApp","Provider","KetcherBuilder","serviceMode","formatterFactory","buildNumber","URLSearchParams","initialMol","buildKetcherAsync","builder","appendApiAsync","appendServiceMode","appendUiAsync","build","rootElRef","ketcherInitEvent","Event","dispatchEvent","small"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|