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.
@@ -12328,7 +12328,8 @@ var ConfirmationText = _styled__default["default"]("p", process.env.NODE_ENV ===
12328
12328
  });
12329
12329
 
12330
12330
  var ConfirmationDialog = function ConfirmationDialog(_ref) {
12331
- var confirmationText = _ref.confirmationText,
12331
+ var title = _ref.title,
12332
+ confirmationText = _ref.confirmationText,
12332
12333
  onConfirm = _ref.onConfirm,
12333
12334
  isModalOpen = _ref.isModalOpen,
12334
12335
  onClose = _ref.onClose;
@@ -12338,7 +12339,7 @@ var ConfirmationDialog = function ConfirmationDialog(_ref) {
12338
12339
  };
12339
12340
  return jsxRuntime.jsxs(Modal, {
12340
12341
  isOpen: isModalOpen,
12341
- title: "Confirm your action",
12342
+ title: title || 'Confirm your action',
12342
12343
  onClose: onClose,
12343
12344
  children: [jsxRuntime.jsx(Modal.Content, {
12344
12345
  children: jsxRuntime.jsx(ConfirmationText, {
@@ -13792,8 +13793,61 @@ var SequenceItemContextMenu = function SequenceItemContextMenu(_ref) {
13792
13793
  editor.events.establishHydrogenBond.dispatch(props.sequenceItemRenderer);
13793
13794
  break;
13794
13795
  case SequenceItemContextMenuNames.deleteHydrogenBond:
13795
- editor.events.deleteHydrogenBond.dispatch(props.sequenceItemRenderer);
13796
- break;
13796
+ {
13797
+ var _props$sequenceItemRe3;
13798
+ var sequenceViewModel = ketcherCore.SequenceRenderer.sequenceViewModel;
13799
+ var monomerToChain = sequenceViewModel.chainsCollection.monomerToChain;
13800
+ var antisenseChainToSelectedNodeMap = new Map();
13801
+ var selectedTwoStrandedNodes = selections !== null && selections !== void 0 && selections.length ? selections.reduce(function (acc, selectionRange) {
13802
+ return [].concat(_toConsumableArray__default["default"](acc), _toConsumableArray__default["default"](selectionRange));
13803
+ }, []).map(function (nodeSelection) {
13804
+ return nodeSelection.twoStrandedNode;
13805
+ }) : [(_props$sequenceItemRe3 = props.sequenceItemRenderer) === null || _props$sequenceItemRe3 === void 0 ? void 0 : _props$sequenceItemRe3.twoStrandedNode];
13806
+ selectedTwoStrandedNodes.forEach(function (selectedTwoStrandedNode) {
13807
+ if (selectedTwoStrandedNode.antisenseChain && selectedTwoStrandedNode.antisenseNode && !(selectedTwoStrandedNode.antisenseNode instanceof ketcherCore.EmptySequenceNode || selectedTwoStrandedNode.antisenseNode instanceof ketcherCore.BackBoneSequenceNode)) {
13808
+ if (!antisenseChainToSelectedNodeMap.has(selectedTwoStrandedNode.antisenseChain)) {
13809
+ antisenseChainToSelectedNodeMap.set(selectedTwoStrandedNode.antisenseChain, new Set());
13810
+ }
13811
+ var antisenseChainSelectedNodes = antisenseChainToSelectedNodeMap.get(selectedTwoStrandedNode.antisenseChain);
13812
+ if (!antisenseChainSelectedNodes) {
13813
+ return;
13814
+ }
13815
+ antisenseChainSelectedNodes.add(selectedTwoStrandedNode);
13816
+ }
13817
+ });
13818
+ var isGoingToDeleteAllHydrogenBondsForAnyChain = false;
13819
+ antisenseChainToSelectedNodeMap.forEach(function (selectedTwoStrandedNodes, chain) {
13820
+ var firstSelectedTwoStrandedNode = _toConsumableArray__default["default"](selectedTwoStrandedNodes.values())[0];
13821
+ var senseChain = firstSelectedTwoStrandedNode.chain;
13822
+ var selectedAntisenseNodes = new Set(_toConsumableArray__default["default"](selectedTwoStrandedNodes.values()).map(function (node) {
13823
+ return node.antisenseNode;
13824
+ }));
13825
+ var hasMoreHydrogenConnectionsThanSelected = chain.nodes.some(function (node) {
13826
+ return !selectedAntisenseNodes.has(node) && node.monomers.some(function (monomer) {
13827
+ return monomer.hydrogenBonds.some(function (hydrogenBond) {
13828
+ var anotherMonomer = hydrogenBond.getAnotherMonomer(monomer);
13829
+ var anotherChain = anotherMonomer && monomerToChain.get(anotherMonomer);
13830
+ return anotherChain === senseChain;
13831
+ });
13832
+ });
13833
+ });
13834
+ if (!hasMoreHydrogenConnectionsThanSelected) {
13835
+ isGoingToDeleteAllHydrogenBondsForAnyChain = true;
13836
+ }
13837
+ });
13838
+ if (isGoingToDeleteAllHydrogenBondsForAnyChain) {
13839
+ editor.events.openConfirmationDialog.dispatch({
13840
+ title: 'Deletion of all Hydrogen Bonds',
13841
+ confirmationText: 'Deleting all hydrogen bonds will cause the separation of two chains. Do you wish to proceed?',
13842
+ onConfirm: function onConfirm() {
13843
+ editor.events.deleteHydrogenBond.dispatch(props.sequenceItemRenderer);
13844
+ }
13845
+ });
13846
+ } else {
13847
+ editor.events.deleteHydrogenBond.dispatch(props.sequenceItemRenderer);
13848
+ }
13849
+ break;
13850
+ }
13797
13851
  }
13798
13852
  };
13799
13853
  var ketcherEditorRootElement = document.querySelector(ketcherReact.KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR);
@@ -15096,6 +15150,7 @@ var EditorEvents = function EditorEvents() {
15096
15150
  var activeTool = useAppSelector(selectEditorActiveTool);
15097
15151
  var dispatch = useAppDispatch();
15098
15152
  var presets = useAppSelector(selectAllPresets);
15153
+ var hasAtLeastOneAntisense = useAppSelector(hasAntisenseChains);
15099
15154
  var handleMonomersLibraryUpdate = React.useCallback(function () {
15100
15155
  dispatch(loadMonomerLibrary(editor === null || editor === void 0 ? void 0 : editor.monomersLibrary));
15101
15156
  }, [editor]);
@@ -15293,6 +15348,11 @@ var EditorEvents = function EditorEvents() {
15293
15348
  editor === null || editor === void 0 || editor.events.mouseLeavePolymerBond.remove(handleClosePreview);
15294
15349
  };
15295
15350
  }, [editor, activeTool, handleOpenPreview, handleClosePreview]);
15351
+ React.useEffect(function () {
15352
+ if (!hasAtLeastOneAntisense) {
15353
+ editor === null || editor === void 0 || editor.events.resetSequenceEditMode.dispatch();
15354
+ }
15355
+ }, [hasAtLeastOneAntisense]);
15296
15356
  return jsxRuntime.jsx(jsxRuntime.Fragment, {});
15297
15357
  };
15298
15358
 
@@ -15694,4 +15754,4 @@ function Editor(_ref2) {
15694
15754
  }
15695
15755
 
15696
15756
  exports["default"] = EditorContainer;
15697
- //# sourceMappingURL=index.modern-dc72bcd6.js.map
15757
+ //# sourceMappingURL=index.modern-429c1d39.js.map