ketcher-react 3.8.0-rc.2 → 3.8.0-rc.4

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.
@@ -5906,6 +5906,8 @@ var PresetPosition;
5906
5906
  PresetPosition["ChainEnd"] = "chainEnd";
5907
5907
  })(PresetPosition || (PresetPosition = {}));
5908
5908
 
5909
+ var SELECT_SUBMENU_ID = 'select-submenu';
5910
+
5909
5911
  function ownKeys$r(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5910
5912
  function _objectSpread$r(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$r(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$r(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5911
5913
  var MolarMeasurementUnit;
@@ -5936,11 +5938,12 @@ var initialState$3 = {
5936
5938
  unipositiveIonsValue: 140,
5937
5939
  oligonucleotidesValue: 200,
5938
5940
  app: {
5939
- buildDate: "2025-09-05T18:51:37" ,
5941
+ buildDate: "2025-09-17T17:05:47" ,
5940
5942
  indigoVersion: process.env.INDIGO_VERSION || '',
5941
5943
  indigoMachine: process.env.INDIGO_MACHINE || '',
5942
- version: "3.8.0-rc.2"
5943
- }
5944
+ version: "3.8.0-rc.4"
5945
+ },
5946
+ selectedMenuGroupItems: {}
5944
5947
  };
5945
5948
  var editorSlice = createSlice({
5946
5949
  name: 'editor',
@@ -6015,6 +6018,9 @@ var editorSlice = createSlice({
6015
6018
  },
6016
6019
  setAppMeta: function setAppMeta(state, action) {
6017
6020
  state.app = action.payload;
6021
+ },
6022
+ setSelectedMenuGroupItem: function setSelectedMenuGroupItem(state, action) {
6023
+ state.selectedMenuGroupItems = _objectSpread$r(_objectSpread$r({}, state.selectedMenuGroupItems), {}, _defineProperty({}, action.payload.groupName, action.payload.activeItemName));
6018
6024
  }
6019
6025
  }
6020
6026
  });
@@ -6037,7 +6043,8 @@ var _editorSlice$actions = editorSlice.actions;
6037
6043
  setEditorLineLength = _editorSlice$actions.setEditorLineLength,
6038
6044
  setUnipositiveIonsValue = _editorSlice$actions.setUnipositiveIonsValue,
6039
6045
  setOligonucleotidesValue = _editorSlice$actions.setOligonucleotidesValue,
6040
- setAppMeta = _editorSlice$actions.setAppMeta;
6046
+ setAppMeta = _editorSlice$actions.setAppMeta,
6047
+ setSelectedMenuGroupItem = _editorSlice$actions.setSelectedMenuGroupItem;
6041
6048
  var selectShowPreview = function selectShowPreview(state) {
6042
6049
  return state.editor.preview;
6043
6050
  };
@@ -6096,6 +6103,14 @@ var selectEditorLineLength = function selectEditorLineLength(state) {
6096
6103
  var selectAppMeta = function selectAppMeta(state) {
6097
6104
  return state.editor.app;
6098
6105
  };
6106
+ var selectSelectedMenuGroupItem = function selectSelectedMenuGroupItem(groupItemName) {
6107
+ return function (state) {
6108
+ return state.editor.selectedMenuGroupItems[groupItemName];
6109
+ };
6110
+ };
6111
+ var selectLastSelectedSelectionMenuItem = function selectLastSelectedSelectionMenuItem(state) {
6112
+ return state.editor.selectedMenuGroupItems[SELECT_SUBMENU_ID] || 'select-rectangle';
6113
+ };
6099
6114
  var editorReducer = editorSlice.reducer;
6100
6115
 
6101
6116
  var MONOMER_LIBRARY_FAVORITES = 'FAVORITES';
@@ -8308,8 +8323,9 @@ var useLibraryItemDrag = function useLibraryItemDrag(item, itemRef) {
8308
8323
  var cardMouseOverHandler = function cardMouseOverHandler(editor, libraryItem, setAutochainErrorMessage) {
8309
8324
  setAutochainErrorMessage('');
8310
8325
  var _editor$getDataForAut = editor.getDataForAutochain(),
8311
- selectedMonomersWithFreeR2 = _editor$getDataForAut.selectedMonomersWithFreeR2;
8312
- if (selectedMonomersWithFreeR2.length > 1) {
8326
+ selectedMonomersWithFreeR2 = _editor$getDataForAut.selectedMonomersWithFreeR2,
8327
+ selectedMonomers = _editor$getDataForAut.selectedMonomers;
8328
+ if (selectedMonomers.length > 0 && selectedMonomersWithFreeR2.length !== 1) {
8313
8329
  setAutochainErrorMessage('Select a monomer or a chain that has one R2 available.');
8314
8330
  return;
8315
8331
  }
@@ -14374,7 +14390,9 @@ var SubMenu = function SubMenu(_ref) {
14374
14390
  _ref$layoutModeButton = _ref.layoutModeButton,
14375
14391
  layoutModeButton = _ref$layoutModeButton === void 0 ? false : _ref$layoutModeButton,
14376
14392
  generalTitle = _ref.generalTitle,
14377
- activeItem = _ref.activeItem;
14393
+ activeItem = _ref.activeItem,
14394
+ subMenuId = _ref.subMenuId;
14395
+ var dispatch = useAppDispatch();
14378
14396
  var ref = useRef(null);
14379
14397
  var _useState = useState(false),
14380
14398
  _useState2 = _slicedToArray(_useState, 2),
@@ -14385,6 +14403,9 @@ var SubMenu = function SubMenu(_ref) {
14385
14403
  var _usePortalStyle = usePortalStyle([ref, open, vertical, KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR]),
14386
14404
  _usePortalStyle2 = _slicedToArray(_usePortalStyle, 1),
14387
14405
  portalStyle = _usePortalStyle2[0];
14406
+ var selectedMenuGroupItem = useAppSelector(
14407
+ selectSelectedMenuGroupItem(subMenuId));
14408
+ var lastActiveOption = subMenuId ? selectedMenuGroupItem : null;
14388
14409
  var handleDropDownClick = function handleDropDownClick() {
14389
14410
  if (disabled) return;
14390
14411
  setOpen(function (prev) {
@@ -14402,10 +14423,17 @@ var SubMenu = function SubMenu(_ref) {
14402
14423
  }).filter(function (item) {
14403
14424
  return item;
14404
14425
  });
14405
- var activeOption = options.filter(function (itemKey) {
14426
+ var activeOptions = options.filter(function (itemKey) {
14406
14427
  return isActive(itemKey);
14407
14428
  });
14408
- var visibleItemId = activeItem !== null && activeItem !== void 0 ? activeItem : activeOption.length ? activeOption[0] : options[0];
14429
+ var activeOption = activeOptions[0];
14430
+ if (subMenuId && activeOption && activeOption !== lastActiveOption) {
14431
+ dispatch(setSelectedMenuGroupItem({
14432
+ groupName: subMenuId,
14433
+ activeItemName: activeOption
14434
+ }));
14435
+ }
14436
+ var visibleItemId = activeItem !== null && activeItem !== void 0 ? activeItem : activeOption || lastActiveOption || options[0];
14409
14437
  var visibleItem = subComponents.find(function (option) {
14410
14438
  return option.props.itemId === visibleItemId;
14411
14439
  });
@@ -17174,6 +17202,7 @@ function TopMenuComponent() {
17174
17202
  setAntisenseActiveOption = _useState6[1];
17175
17203
  var activeMenuItems = [activeTool];
17176
17204
  var isDisabled = isSequenceEditInRNABuilderMode;
17205
+ var lastSelectedSelectionMenuItem = useAppSelector(selectLastSelectedSelectionMenuItem);
17177
17206
  useEffect(function () {
17178
17207
  var selectEntitiesHandler = function selectEntitiesHandler(selectedEntities) {
17179
17208
  setSelectedEntities(selectedEntities);
@@ -17201,8 +17230,8 @@ function TopMenuComponent() {
17201
17230
  editor === null || editor === void 0 || editor.events.selectHistory.dispatch(name);
17202
17231
  } else if (name === 'clear') {
17203
17232
  editor === null || editor === void 0 || editor.events.selectTool.dispatch([name]);
17204
- dispatch(selectTool('select-rectangle'));
17205
- editor === null || editor === void 0 || editor.events.selectTool.dispatch(['select-rectangle']);
17233
+ dispatch(selectTool(lastSelectedSelectionMenuItem));
17234
+ editor === null || editor === void 0 || editor.events.selectTool.dispatch([lastSelectedSelectionMenuItem]);
17206
17235
  if (isSequenceEditInRNABuilderMode) resetRnaBuilderAfterSequenceUpdate(dispatch, editor);
17207
17236
  } else if (name === 'antisenseRnaStrand' || name === 'antisenseDnaStrand') {
17208
17237
  editor === null || editor === void 0 || editor.events.createAntisenseChain.dispatch(name === 'antisenseDnaStrand');
@@ -17295,18 +17324,19 @@ function LeftMenuComponent() {
17295
17324
  }), jsx(Menu.Group, {
17296
17325
  children: jsxs(Menu.Submenu, {
17297
17326
  testId: "select-drop-down-button",
17327
+ subMenuId: SELECT_SUBMENU_ID,
17298
17328
  needOpenByMenuItemClick: false,
17299
17329
  children: [jsx(Menu.Item, {
17300
17330
  itemId: "select-rectangle",
17301
- title: "Select Rectangle (".concat(hotkeysShortcuts.exit, ")"),
17331
+ title: "Select Rectangle (".concat(hotkeysShortcuts.switchSelectTool, ")"),
17302
17332
  testId: "select-rectangle"
17303
17333
  }), jsx(Menu.Item, {
17304
17334
  itemId: "select-lasso",
17305
- title: "Lasso selection (".concat(hotkeysShortcuts.exit, ")"),
17335
+ title: "Lasso selection (".concat(hotkeysShortcuts.switchSelectTool, ")"),
17306
17336
  testId: "select-lasso"
17307
17337
  }), jsx(Menu.Item, {
17308
17338
  itemId: "select-fragment",
17309
- title: "Fragment selection (".concat(hotkeysShortcuts.exit, ")"),
17339
+ title: "Fragment selection (".concat(hotkeysShortcuts.switchSelectTool, ")"),
17310
17340
  testId: "select-fragment"
17311
17341
  })]
17312
17342
  })
@@ -17594,6 +17624,7 @@ var EditorEvents = function EditorEvents() {
17594
17624
  var dispatch = useAppDispatch();
17595
17625
  var presets = useAppSelector(selectAllPresets);
17596
17626
  var hasAtLeastOneAntisense = useAppSelector(hasAntisenseChains);
17627
+ var lastSelectedSelectionMenuItem = useAppSelector(selectLastSelectedSelectionMenuItem);
17597
17628
  var handleMonomersLibraryUpdate = useCallback(function () {
17598
17629
  dispatch(loadMonomerLibrary(editor === null || editor === void 0 ? void 0 : editor.monomersLibrary));
17599
17630
  }, [editor]);
@@ -17603,6 +17634,18 @@ var EditorEvents = function EditorEvents() {
17603
17634
  editor === null || editor === void 0 || editor.events.updateMonomersLibrary.remove(handleMonomersLibraryUpdate);
17604
17635
  };
17605
17636
  }, [editor]);
17637
+ useEffect(function () {
17638
+ var onSelectSelectionTool = function onSelectSelectionTool() {
17639
+ editor === null || editor === void 0 || editor.events.selectTool.dispatch([lastSelectedSelectionMenuItem]);
17640
+ dispatch(selectTool(lastSelectedSelectionMenuItem));
17641
+ };
17642
+ if (editor) {
17643
+ editor.events.selectSelectionTool.add(onSelectSelectionTool);
17644
+ }
17645
+ return function () {
17646
+ editor === null || editor === void 0 || editor.events.selectSelectionTool.remove(onSelectSelectionTool);
17647
+ };
17648
+ }, [dispatch, editor, lastSelectedSelectionMenuItem]);
17606
17649
  useEffect(function () {
17607
17650
  var handler = function handler(_ref) {
17608
17651
  var _ref2 = _slicedToArray(_ref, 1),
@@ -17776,6 +17819,8 @@ var EditorEvents = function EditorEvents() {
17776
17819
  useEffect(function () {
17777
17820
  editor === null || editor === void 0 || editor.events.mouseOverMonomer.add(handleOpenPreview);
17778
17821
  editor === null || editor === void 0 || editor.events.mouseLeaveMonomer.add(handleClosePreview);
17822
+ editor === null || editor === void 0 || editor.events.mouseLeaveAttachmentPoint.add(handleClosePreview);
17823
+ editor === null || editor === void 0 || editor.events.mouseDownAttachmentPoint.add(handleClosePreview);
17779
17824
  editor === null || editor === void 0 || editor.events.mouseOverSequenceItem.add(handleOpenPreview);
17780
17825
  editor === null || editor === void 0 || editor.events.mouseLeaveSequenceItem.add(handleClosePreview);
17781
17826
  editor === null || editor === void 0 || editor.events.mouseOverPolymerBond.add(handleOpenPreview);
@@ -17788,17 +17833,20 @@ var EditorEvents = function EditorEvents() {
17788
17833
  }
17789
17834
  };
17790
17835
  editor === null || editor === void 0 || editor.events.mouseOnMoveMonomer.add(onMoveHandler);
17836
+ editor === null || editor === void 0 || editor.events.mouseMoveAttachmentPoint.add(onMoveHandler);
17791
17837
  editor === null || editor === void 0 || editor.events.mouseOnMoveSequenceItem.add(onMoveHandler);
17792
17838
  editor === null || editor === void 0 || editor.events.mouseOnMovePolymerBond.add(onMoveHandler);
17793
17839
  window.addEventListener('hidePreview', handleClosePreview);
17794
17840
  return function () {
17795
17841
  editor === null || editor === void 0 || editor.events.mouseOverMonomer.remove(handleOpenPreview);
17796
17842
  editor === null || editor === void 0 || editor.events.mouseLeaveMonomer.remove(handleClosePreview);
17843
+ editor === null || editor === void 0 || editor.events.mouseLeaveAttachmentPoint.remove(handleClosePreview);
17797
17844
  editor === null || editor === void 0 || editor.events.mouseOverSequenceItem.remove(handleOpenPreview);
17798
17845
  editor === null || editor === void 0 || editor.events.mouseLeaveSequenceItem.remove(handleClosePreview);
17799
17846
  editor === null || editor === void 0 || editor.events.mouseOverPolymerBond.remove(handleOpenPreview);
17800
17847
  editor === null || editor === void 0 || editor.events.mouseLeavePolymerBond.remove(handleClosePreview);
17801
17848
  editor === null || editor === void 0 || editor.events.mouseOnMoveMonomer.remove(onMoveHandler);
17849
+ editor === null || editor === void 0 || editor.events.mouseMoveAttachmentPoint.remove(onMoveHandler);
17802
17850
  editor === null || editor === void 0 || editor.events.mouseOnMoveSequenceItem.remove(onMoveHandler);
17803
17851
  editor === null || editor === void 0 || editor.events.mouseOnMovePolymerBond.remove(onMoveHandler);
17804
17852
  window.removeEventListener('hidePreview', handleClosePreview);
@@ -19316,4 +19364,4 @@ function Editor(_ref2) {
19316
19364
  }
19317
19365
 
19318
19366
  export { EditorContainer as default };
19319
- //# sourceMappingURL=index.modern-7694d091.js.map
19367
+ //# sourceMappingURL=index.modern-eb9aa0eb.js.map