ketcher-react 3.2.0-rc.1 → 3.2.0-rc.3
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/dist/cjs/index.js +39 -18
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/{index.modern-dc72bcd6.js → index.modern-429c1d39.js} +65 -5
- package/dist/cjs/index.modern-429c1d39.js.map +1 -0
- package/dist/cjs/script/editor/Editor.d.ts +4 -2
- package/dist/cjs/script/ui/state/editor/index.d.ts +1 -0
- package/dist/index.js +40 -19
- package/dist/index.js.map +1 -1
- package/dist/{index.modern-17b0bd64.js → index.modern-7550b98e.js} +66 -6
- package/dist/index.modern-7550b98e.js.map +1 -0
- package/dist/script/editor/Editor.d.ts +4 -2
- package/dist/script/ui/state/editor/index.d.ts +1 -0
- package/package.json +1 -1
- package/dist/cjs/index.modern-dc72bcd6.js.map +0 -1
- package/dist/index.modern-17b0bd64.js.map +0 -1
|
@@ -23,7 +23,7 @@ import { merge, debounce, flatten, get as get$2 } from 'lodash';
|
|
|
23
23
|
import { combineReducers, applyMiddleware, createStore, compose as compose$1 } from 'redux';
|
|
24
24
|
import { createSelector } from 'reselect';
|
|
25
25
|
import thunkMiddleware from 'redux-thunk';
|
|
26
|
-
import { KetcherLogger, MonomerGroups as MonomerGroups$1, KetMonomerClass, ChemicalMimeType as ChemicalMimeType$1, KetSerializer, CoreEditor, generateMenuShortcuts, hotkeysConfiguration, ToolName, modesMap, isAmbiguousMonomerLibraryItem, MONOMER_CONST, macromoleculesFilesInputFormats, EditorHistory, SequenceMode, SnakeMode, FlexMode, ModeTypes, ketcherProvider, KetcherAsyncEvents, isTwoStrandedNodeRestrictedForHydrogenBondCreation, UsageInMacromolecule, ZoomTool, SequenceType, HydrogenBond, BackBoneSequenceNode, AmbiguousMonomer, Nucleotide, Nucleoside, RNABase, getSugarFromRnaBase, Sugar, getRnaBaseFromSugar, setAmbiguousMonomerTemplatePrefix, setMonomerTemplatePrefix, monomerFactory, Entities, isRnaBaseOrAmbiguousRnaBase, MonomerToAtomBond, DEFAULT_LAYOUT_MODE, HAS_CONTENT_LAYOUT_MODE, Vec2, Coordinates, AmbiguousMonomerRenderer, Phosphate, KetAmbiguousMonomerTemplateSubType, getSvgFromDrawnStructures, isClipboardAPIAvailable, legacyCopy } from 'ketcher-core';
|
|
26
|
+
import { KetcherLogger, MonomerGroups as MonomerGroups$1, KetMonomerClass, ChemicalMimeType as ChemicalMimeType$1, KetSerializer, CoreEditor, generateMenuShortcuts, hotkeysConfiguration, ToolName, modesMap, isAmbiguousMonomerLibraryItem, MONOMER_CONST, macromoleculesFilesInputFormats, EditorHistory, SequenceMode, SnakeMode, FlexMode, ModeTypes, ketcherProvider, KetcherAsyncEvents, isTwoStrandedNodeRestrictedForHydrogenBondCreation, UsageInMacromolecule, ZoomTool, SequenceType, HydrogenBond, BackBoneSequenceNode, AmbiguousMonomer, Nucleotide, Nucleoside, RNABase, getSugarFromRnaBase, Sugar, getRnaBaseFromSugar, setAmbiguousMonomerTemplatePrefix, setMonomerTemplatePrefix, monomerFactory, Entities, isRnaBaseOrAmbiguousRnaBase, SequenceRenderer, EmptySequenceNode, MonomerToAtomBond, DEFAULT_LAYOUT_MODE, HAS_CONTENT_LAYOUT_MODE, Vec2, Coordinates, AmbiguousMonomerRenderer, Phosphate, KetAmbiguousMonomerTemplateSubType, getSvgFromDrawnStructures, isClipboardAPIAvailable, legacyCopy } from 'ketcher-core';
|
|
27
27
|
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
28
28
|
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
29
29
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
@@ -12306,7 +12306,8 @@ var ConfirmationText = _styled("p", process.env.NODE_ENV === "production" ? {
|
|
|
12306
12306
|
});
|
|
12307
12307
|
|
|
12308
12308
|
var ConfirmationDialog = function ConfirmationDialog(_ref) {
|
|
12309
|
-
var
|
|
12309
|
+
var title = _ref.title,
|
|
12310
|
+
confirmationText = _ref.confirmationText,
|
|
12310
12311
|
onConfirm = _ref.onConfirm,
|
|
12311
12312
|
isModalOpen = _ref.isModalOpen,
|
|
12312
12313
|
onClose = _ref.onClose;
|
|
@@ -12316,7 +12317,7 @@ var ConfirmationDialog = function ConfirmationDialog(_ref) {
|
|
|
12316
12317
|
};
|
|
12317
12318
|
return jsxs(Modal, {
|
|
12318
12319
|
isOpen: isModalOpen,
|
|
12319
|
-
title:
|
|
12320
|
+
title: title || 'Confirm your action',
|
|
12320
12321
|
onClose: onClose,
|
|
12321
12322
|
children: [jsx(Modal.Content, {
|
|
12322
12323
|
children: jsx(ConfirmationText, {
|
|
@@ -13770,8 +13771,61 @@ var SequenceItemContextMenu = function SequenceItemContextMenu(_ref) {
|
|
|
13770
13771
|
editor.events.establishHydrogenBond.dispatch(props.sequenceItemRenderer);
|
|
13771
13772
|
break;
|
|
13772
13773
|
case SequenceItemContextMenuNames.deleteHydrogenBond:
|
|
13773
|
-
|
|
13774
|
-
|
|
13774
|
+
{
|
|
13775
|
+
var _props$sequenceItemRe3;
|
|
13776
|
+
var sequenceViewModel = SequenceRenderer.sequenceViewModel;
|
|
13777
|
+
var monomerToChain = sequenceViewModel.chainsCollection.monomerToChain;
|
|
13778
|
+
var antisenseChainToSelectedNodeMap = new Map();
|
|
13779
|
+
var selectedTwoStrandedNodes = selections !== null && selections !== void 0 && selections.length ? selections.reduce(function (acc, selectionRange) {
|
|
13780
|
+
return [].concat(_toConsumableArray(acc), _toConsumableArray(selectionRange));
|
|
13781
|
+
}, []).map(function (nodeSelection) {
|
|
13782
|
+
return nodeSelection.twoStrandedNode;
|
|
13783
|
+
}) : [(_props$sequenceItemRe3 = props.sequenceItemRenderer) === null || _props$sequenceItemRe3 === void 0 ? void 0 : _props$sequenceItemRe3.twoStrandedNode];
|
|
13784
|
+
selectedTwoStrandedNodes.forEach(function (selectedTwoStrandedNode) {
|
|
13785
|
+
if (selectedTwoStrandedNode.antisenseChain && selectedTwoStrandedNode.antisenseNode && !(selectedTwoStrandedNode.antisenseNode instanceof EmptySequenceNode || selectedTwoStrandedNode.antisenseNode instanceof BackBoneSequenceNode)) {
|
|
13786
|
+
if (!antisenseChainToSelectedNodeMap.has(selectedTwoStrandedNode.antisenseChain)) {
|
|
13787
|
+
antisenseChainToSelectedNodeMap.set(selectedTwoStrandedNode.antisenseChain, new Set());
|
|
13788
|
+
}
|
|
13789
|
+
var antisenseChainSelectedNodes = antisenseChainToSelectedNodeMap.get(selectedTwoStrandedNode.antisenseChain);
|
|
13790
|
+
if (!antisenseChainSelectedNodes) {
|
|
13791
|
+
return;
|
|
13792
|
+
}
|
|
13793
|
+
antisenseChainSelectedNodes.add(selectedTwoStrandedNode);
|
|
13794
|
+
}
|
|
13795
|
+
});
|
|
13796
|
+
var isGoingToDeleteAllHydrogenBondsForAnyChain = false;
|
|
13797
|
+
antisenseChainToSelectedNodeMap.forEach(function (selectedTwoStrandedNodes, chain) {
|
|
13798
|
+
var firstSelectedTwoStrandedNode = _toConsumableArray(selectedTwoStrandedNodes.values())[0];
|
|
13799
|
+
var senseChain = firstSelectedTwoStrandedNode.chain;
|
|
13800
|
+
var selectedAntisenseNodes = new Set(_toConsumableArray(selectedTwoStrandedNodes.values()).map(function (node) {
|
|
13801
|
+
return node.antisenseNode;
|
|
13802
|
+
}));
|
|
13803
|
+
var hasMoreHydrogenConnectionsThanSelected = chain.nodes.some(function (node) {
|
|
13804
|
+
return !selectedAntisenseNodes.has(node) && node.monomers.some(function (monomer) {
|
|
13805
|
+
return monomer.hydrogenBonds.some(function (hydrogenBond) {
|
|
13806
|
+
var anotherMonomer = hydrogenBond.getAnotherMonomer(monomer);
|
|
13807
|
+
var anotherChain = anotherMonomer && monomerToChain.get(anotherMonomer);
|
|
13808
|
+
return anotherChain === senseChain;
|
|
13809
|
+
});
|
|
13810
|
+
});
|
|
13811
|
+
});
|
|
13812
|
+
if (!hasMoreHydrogenConnectionsThanSelected) {
|
|
13813
|
+
isGoingToDeleteAllHydrogenBondsForAnyChain = true;
|
|
13814
|
+
}
|
|
13815
|
+
});
|
|
13816
|
+
if (isGoingToDeleteAllHydrogenBondsForAnyChain) {
|
|
13817
|
+
editor.events.openConfirmationDialog.dispatch({
|
|
13818
|
+
title: 'Deletion of all Hydrogen Bonds',
|
|
13819
|
+
confirmationText: 'Deleting all hydrogen bonds will cause the separation of two chains. Do you wish to proceed?',
|
|
13820
|
+
onConfirm: function onConfirm() {
|
|
13821
|
+
editor.events.deleteHydrogenBond.dispatch(props.sequenceItemRenderer);
|
|
13822
|
+
}
|
|
13823
|
+
});
|
|
13824
|
+
} else {
|
|
13825
|
+
editor.events.deleteHydrogenBond.dispatch(props.sequenceItemRenderer);
|
|
13826
|
+
}
|
|
13827
|
+
break;
|
|
13828
|
+
}
|
|
13775
13829
|
}
|
|
13776
13830
|
};
|
|
13777
13831
|
var ketcherEditorRootElement = document.querySelector(KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR);
|
|
@@ -15074,6 +15128,7 @@ var EditorEvents = function EditorEvents() {
|
|
|
15074
15128
|
var activeTool = useAppSelector(selectEditorActiveTool);
|
|
15075
15129
|
var dispatch = useAppDispatch();
|
|
15076
15130
|
var presets = useAppSelector(selectAllPresets);
|
|
15131
|
+
var hasAtLeastOneAntisense = useAppSelector(hasAntisenseChains);
|
|
15077
15132
|
var handleMonomersLibraryUpdate = useCallback(function () {
|
|
15078
15133
|
dispatch(loadMonomerLibrary(editor === null || editor === void 0 ? void 0 : editor.monomersLibrary));
|
|
15079
15134
|
}, [editor]);
|
|
@@ -15271,6 +15326,11 @@ var EditorEvents = function EditorEvents() {
|
|
|
15271
15326
|
editor === null || editor === void 0 || editor.events.mouseLeavePolymerBond.remove(handleClosePreview);
|
|
15272
15327
|
};
|
|
15273
15328
|
}, [editor, activeTool, handleOpenPreview, handleClosePreview]);
|
|
15329
|
+
useEffect(function () {
|
|
15330
|
+
if (!hasAtLeastOneAntisense) {
|
|
15331
|
+
editor === null || editor === void 0 || editor.events.resetSequenceEditMode.dispatch();
|
|
15332
|
+
}
|
|
15333
|
+
}, [hasAtLeastOneAntisense]);
|
|
15274
15334
|
return jsx(Fragment, {});
|
|
15275
15335
|
};
|
|
15276
15336
|
|
|
@@ -15672,4 +15732,4 @@ function Editor(_ref2) {
|
|
|
15672
15732
|
}
|
|
15673
15733
|
|
|
15674
15734
|
export { EditorContainer as default };
|
|
15675
|
-
//# sourceMappingURL=index.modern-
|
|
15735
|
+
//# sourceMappingURL=index.modern-7550b98e.js.map
|