ketcher-react 2.26.0-rc.9 → 2.27.0-rc.2

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/index.js CHANGED
@@ -3798,7 +3798,7 @@ var zoom = {
3798
3798
 
3799
3799
  var openHelpLink = function openHelpLink() {
3800
3800
  var _window$open;
3801
- return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v2.26.0-rc.9\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
3801
+ return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v2.27.0-rc.2\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
3802
3802
  };
3803
3803
  var help = {
3804
3804
  help: {
@@ -8315,11 +8315,6 @@ var DetailsContainer = styled__default["default"].div({
8315
8315
  overflowX: 'hidden',
8316
8316
  overflowY: 'auto',
8317
8317
  transition: 'all .3s'
8318
- }, function (_ref) {
8319
- var expanded = _ref.expanded;
8320
- return {
8321
- maxHeight: expanded ? '9999px' : '0'
8322
- };
8323
8318
  });
8324
8319
 
8325
8320
  var Accordion$1 = function Accordion(_ref) {
@@ -8334,7 +8329,7 @@ var Accordion$1 = function Accordion(_ref) {
8334
8329
  children: [jsxRuntime.jsx(SummaryContainer, {
8335
8330
  onClick: onSummaryClick,
8336
8331
  children: summary
8337
- }), jsxRuntime.jsx(DetailsContainer, {
8332
+ }), expanded && jsxRuntime.jsx(DetailsContainer, {
8338
8333
  "data-testid": dataTestIdDetails,
8339
8334
  expanded: expanded,
8340
8335
  children: details
@@ -8501,7 +8496,8 @@ var MonomerName = styled__default["default"].div(_templateObject6$2 || (_templat
8501
8496
 
8502
8497
  var AmbiguousMonomerPreview = function AmbiguousMonomerPreview(_ref) {
8503
8498
  var className = _ref.className,
8504
- preview = _ref.preview;
8499
+ preview = _ref.preview,
8500
+ style = _ref.style;
8505
8501
  var monomer = preview.monomer,
8506
8502
  presetMonomers = preview.presetMonomers;
8507
8503
  var isAlternatives = monomer.subtype === 'alternatives';
@@ -8559,6 +8555,7 @@ var AmbiguousMonomerPreview = function AmbiguousMonomerPreview(_ref) {
8559
8555
  return sortedData.slice(0, 5);
8560
8556
  }, [previewData, isAlternatives]);
8561
8557
  return jsxRuntime.jsxs(Container, {
8558
+ style: style,
8562
8559
  className: className,
8563
8560
  "data-testid": "polymer-library-preview",
8564
8561
  children: [jsxRuntime.jsx(Header$1, {
@@ -14625,7 +14622,7 @@ var groupDescriptors = groups.reduce(function (accum, group, index) {
14625
14622
  var rGroupOptions = makeItems(['rgroup-label', 'rgroup-fragment', 'rgroup-attpoints']);
14626
14623
  var shapeOptions = makeItems(['shape-ellipse', 'shape-rectangle', 'shape-line']);
14627
14624
  var selectOptions$2 = makeItems(['select-rectangle', 'select-lasso', 'select-fragment']);
14628
- var arrowsOptions = makeItems(['reaction-arrow-open-angle', 'reaction-arrow-filled-triangle', 'reaction-arrow-filled-bow', 'reaction-arrow-dashed-open-angle', 'reaction-arrow-failed', 'reaction-arrow-retrosynthetic', 'reaction-arrow-both-ends-filled-triangle', 'reaction-arrow-equilibrium-filled-half-bow', 'reaction-arrow-equilibrium-filled-triangle', 'reaction-arrow-equilibrium-open-angle', 'reaction-arrow-unbalanced-equilibrium-filled-half-bow', 'reaction-arrow-unbalanced-equilibrium-open-half-angle', 'reaction-arrow-unbalanced-equilibrium-large-filled-half-bow', 'reaction-arrow-unbalanced-equilibrium-filled-half-triangle', 'reaction-arrow-elliptical-arc-arrow-open-angle', 'reaction-arrow-elliptical-arc-arrow-filled-triangle', 'reaction-arrow-elliptical-arc-arrow-filled-bow', 'reaction-arrow-elliptical-arc-arrow-open-half-angle', ketcherCore.MULTITAIL_ARROW_TOOL_NAME]);
14625
+ var arrowsOptions = makeItems(['reaction-arrow-open-angle', 'reaction-arrow-filled-triangle', 'reaction-arrow-filled-bow', 'reaction-arrow-dashed-open-angle', 'reaction-arrow-failed', 'reaction-arrow-retrosynthetic', 'reaction-arrow-both-ends-filled-triangle', 'reaction-arrow-equilibrium-filled-half-bow', 'reaction-arrow-equilibrium-filled-triangle', 'reaction-arrow-equilibrium-open-angle', 'reaction-arrow-unbalanced-equilibrium-filled-half-bow', 'reaction-arrow-unbalanced-equilibrium-open-half-angle', 'reaction-arrow-unbalanced-equilibrium-large-filled-half-bow', 'reaction-arrow-unbalanced-equilibrium-filled-half-triangle', 'reaction-arrow-elliptical-arc-arrow-filled-bow', 'reaction-arrow-elliptical-arc-arrow-filled-triangle', 'reaction-arrow-elliptical-arc-arrow-open-angle', 'reaction-arrow-elliptical-arc-arrow-open-half-angle', ketcherCore.MULTITAIL_ARROW_TOOL_NAME]);
14629
14626
  var mappingOptions = makeItems(['reaction-map', 'reaction-unmap', 'reaction-automap']);
14630
14627
 
14631
14628
  var classes$M = {"scroll":"ArrowScroll-module_scroll__h9kCx","button":"ArrowScroll-module_button__ygMgL","down":"ArrowScroll-module_down__yDzZX","up":"ArrowScroll-module_up__Q1ubd"};
@@ -15410,14 +15407,16 @@ var UndoRedo = function UndoRedo(_ref) {
15410
15407
  iconName: "undo",
15411
15408
  disabled: disabledButtons.includes('undo'),
15412
15409
  isHidden: hiddenButtons.includes('undo'),
15413
- shortcut: shortcuts.undo
15410
+ shortcut: shortcuts.undo,
15411
+ testId: "undo"
15414
15412
  }), jsxRuntime.jsx(TopToolbarIconButton, {
15415
15413
  title: "Redo",
15416
15414
  onClick: onRedo,
15417
15415
  iconName: "redo",
15418
15416
  disabled: disabledButtons.includes('redo'),
15419
15417
  isHidden: hiddenButtons.includes('redo'),
15420
- shortcut: shortcuts.redo
15418
+ shortcut: shortcuts.redo,
15419
+ testId: "redo"
15421
15420
  }), jsxRuntime.jsx(Divider$1, {})]
15422
15421
  });
15423
15422
  };
@@ -21551,7 +21550,12 @@ var EnhancedStereoTool = function () {
21551
21550
  }
21552
21551
  var action = stereoAtoms.reduce(function (acc, stereoAtom) {
21553
21552
  var _struct$atoms$get;
21554
- return acc.mergeWith(ketcherCore.fromStereoFlagUpdate(restruct, (_struct$atoms$get = struct.atoms.get(stereoAtom)) === null || _struct$atoms$get === void 0 ? void 0 : _struct$atoms$get.fragment));
21553
+ var frid = (_struct$atoms$get = struct.atoms.get(stereoAtom)) === null || _struct$atoms$get === void 0 ? void 0 : _struct$atoms$get.fragment;
21554
+ var frag = frid !== undefined ? restruct.molecule.frags.get(frid) : null;
21555
+ if (frag && frag.stereoAtoms) {
21556
+ return acc.mergeWith(ketcherCore.fromStereoFlagUpdate(restruct, frid));
21557
+ }
21558
+ return acc;
21555
21559
  }, ketcherCore.fromAtomsAttrs(restruct, stereoAtoms, {
21556
21560
  stereoLabel: stereoLabel
21557
21561
  }, false));
@@ -23587,23 +23591,26 @@ var Highlighter = function () {
23587
23591
  args.forEach(function (arg) {
23588
23592
  var atoms = arg.atoms,
23589
23593
  bonds = arg.bonds,
23594
+ rgroupAttachmentPoints = arg.rgroupAttachmentPoints,
23590
23595
  color = arg.color;
23591
23596
  if (typeof color !== 'string') {
23592
23597
  return;
23593
23598
  }
23594
- if (!atoms && !bonds) {
23599
+ if (!atoms && !bonds && !rgroupAttachmentPoints) {
23595
23600
  return;
23596
23601
  }
23597
23602
  var restruct = _this.editor.render.ctab;
23598
- var _getValidInputOnly = getValidInputOnly(restruct.molecule, atoms, bonds),
23603
+ var _getValidInputOnly = getValidInputOnly(restruct.molecule, atoms, bonds, rgroupAttachmentPoints),
23599
23604
  validAtoms = _getValidInputOnly.validAtoms,
23600
- validBonds = _getValidInputOnly.validBonds;
23601
- if (validAtoms.length === 0 && validBonds.length === 0) {
23605
+ validBonds = _getValidInputOnly.validBonds,
23606
+ validRgroupAttachmentPoints = _getValidInputOnly.validRgroupAttachmentPoints;
23607
+ if (validAtoms.length === 0 && validBonds.length === 0 && validRgroupAttachmentPoints.length === 0) {
23602
23608
  return;
23603
23609
  }
23604
23610
  createdHighlights.push({
23605
23611
  atoms: validAtoms,
23606
23612
  bonds: validBonds,
23613
+ rgroupAttachmentPoints: validRgroupAttachmentPoints,
23607
23614
  color: color
23608
23615
  });
23609
23616
  });
@@ -23619,15 +23626,19 @@ var Highlighter = function () {
23619
23626
  }]);
23620
23627
  return Highlighter;
23621
23628
  }();
23622
- function getValidInputOnly(struct, atoms, bonds) {
23629
+ function getValidInputOnly(struct, atoms, bonds, rgroupAttachmentPoints) {
23623
23630
  if (!Array.isArray(atoms)) {
23624
23631
  atoms = [];
23625
23632
  }
23626
23633
  if (!Array.isArray(bonds)) {
23627
23634
  bonds = [];
23628
23635
  }
23636
+ if (!Array.isArray(rgroupAttachmentPoints)) {
23637
+ rgroupAttachmentPoints = [];
23638
+ }
23629
23639
  var structAtoms = struct.atoms,
23630
- structBonds = struct.bonds;
23640
+ structBonds = struct.bonds,
23641
+ structRgroupAttachmentPoints = struct.rgroupAttachmentPoints;
23631
23642
  if (atoms.length > 0) {
23632
23643
  atoms = atoms.filter(function (aid) {
23633
23644
  return structAtoms.has(aid);
@@ -23638,9 +23649,15 @@ function getValidInputOnly(struct, atoms, bonds) {
23638
23649
  return structBonds.has(bid);
23639
23650
  });
23640
23651
  }
23652
+ if (rgroupAttachmentPoints.length > 0) {
23653
+ rgroupAttachmentPoints = rgroupAttachmentPoints.filter(function (rgroupAPId) {
23654
+ return structRgroupAttachmentPoints.has(rgroupAPId);
23655
+ });
23656
+ }
23641
23657
  return {
23642
23658
  validAtoms: atoms,
23643
- validBonds: bonds
23659
+ validBonds: bonds,
23660
+ validRgroupAttachmentPoints: rgroupAttachmentPoints
23644
23661
  };
23645
23662
  }
23646
23663
 
@@ -24426,7 +24443,7 @@ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedec
24426
24443
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
24427
24444
  var SCALE = ketcherCore.provideEditorSettings().microModeScale;
24428
24445
  var HISTORY_SIZE = 32;
24429
- var structObjects = ['atoms', 'bonds', 'frags', 'sgroups', 'sgroupData', 'rgroups', 'rxnArrows', 'rxnPluses', 'enhancedFlags', 'simpleObjects', 'texts', ketcherCore.IMAGE_KEY, ketcherCore.MULTITAIL_ARROW_KEY];
24446
+ var structObjects = ['atoms', 'bonds', 'frags', 'sgroups', 'sgroupData', 'rgroups', 'rxnArrows', 'rxnPluses', 'enhancedFlags', 'simpleObjects', 'texts', 'rgroupAttachmentPoints', ketcherCore.IMAGE_KEY, ketcherCore.MULTITAIL_ARROW_KEY];
24430
24447
  var highlightTargets = ['atoms', 'bonds', 'rxnArrows', 'rxnPluses', 'functionalGroups', 'frags', 'merge', 'rgroups', 'rgroupAttachmentPoints', 'sgroups', 'sgroupData', 'enhancedFlags', 'simpleObjects', 'texts', ketcherCore.IMAGE_KEY, ketcherCore.MULTITAIL_ARROW_KEY];
24431
24448
  function selectStereoFlagsIfNecessary(atoms, expAtoms) {
24432
24449
  var atomsOfFragments = {};
@@ -25599,15 +25616,20 @@ var AtomMenuItems = function AtomMenuItems(props) {
25599
25616
  var atomIds = ((_props$propsFromTrigg6 = props.propsFromTrigger) === null || _props$propsFromTrigg6 === void 0 ? void 0 : _props$propsFromTrigg6.atomIds) || [];
25600
25617
  editor.highlights.create({
25601
25618
  atoms: atomIds,
25619
+ rgroupAttachmentPoints: [],
25602
25620
  bonds: [],
25603
25621
  color: color === '' ? 'transparent' : color
25604
25622
  });
25605
25623
  };
25606
25624
  if (isAtomSuperatomLeavingGroup && onlyOneAtomSelected) {
25607
- return jsxRuntime.jsx(reactContexify.Item, _objectSpread$O(_objectSpread$O({}, props), {}, {
25608
- onClick: handleDelete,
25609
- children: "Delete"
25610
- }));
25625
+ return jsxRuntime.jsxs(jsxRuntime.Fragment, {
25626
+ children: [jsxRuntime.jsx(HighlightMenu, {
25627
+ onHighlight: highlightAtomWithColor
25628
+ }), jsxRuntime.jsx(reactContexify.Item, _objectSpread$O(_objectSpread$O({}, props), {}, {
25629
+ onClick: handleDelete,
25630
+ children: "Delete"
25631
+ }))]
25632
+ });
25611
25633
  }
25612
25634
  return jsxRuntime.jsxs(jsxRuntime.Fragment, {
25613
25635
  children: [jsxRuntime.jsx(reactContexify.Item, _objectSpread$O(_objectSpread$O({}, props), {}, {
@@ -25721,6 +25743,7 @@ var useBondSGroupAttach = function useBondSGroupAttach() {
25721
25743
  SGroupTool.sgroupDialog(editor, null);
25722
25744
  }, [getKetcherInstance]);
25723
25745
  var hidden = React.useCallback(function (_ref2) {
25746
+ var _struct$sgroups$get;
25724
25747
  var props = _ref2.props;
25725
25748
  var editor = getKetcherInstance().editor;
25726
25749
  var struct = editor.render.ctab;
@@ -25730,6 +25753,12 @@ var useBondSGroupAttach = function useBondSGroupAttach() {
25730
25753
  }
25731
25754
  var bond = struct.bonds.get(bondIds[0]);
25732
25755
  var attachedSGroups = bond.b.getAttachedSGroups(struct.molecule);
25756
+ var _attachedSGroups = _slicedToArray__default["default"](attachedSGroups, 1),
25757
+ sgGroupId = _attachedSGroups[0];
25758
+ var sgroup = (_struct$sgroups$get = struct.sgroups.get(sgGroupId)) === null || _struct$sgroups$get === void 0 ? void 0 : _struct$sgroups$get.item;
25759
+ if (sgroup !== null && sgroup !== void 0 && sgroup.isSuperatomWithoutLabel) {
25760
+ return false;
25761
+ }
25733
25762
  return attachedSGroups.size > 0;
25734
25763
  }, [getKetcherInstance]);
25735
25764
  return [handler, hidden];
@@ -25757,8 +25786,17 @@ var useBondSGroupEdit = function useBondSGroupEdit() {
25757
25786
  return sGroupsRef.current.size > 1;
25758
25787
  }, [getKetcherInstance]);
25759
25788
  var hidden = React.useCallback(function () {
25789
+ var _struct$sgroups$get;
25790
+ var editor = getKetcherInstance().editor;
25791
+ var struct = editor.render.ctab;
25792
+ var _sGroupsRef$current = _slicedToArray__default["default"](sGroupsRef.current, 1),
25793
+ sgGroupId = _sGroupsRef$current[0];
25794
+ var sgroup = (_struct$sgroups$get = struct.sgroups.get(sgGroupId)) === null || _struct$sgroups$get === void 0 ? void 0 : _struct$sgroups$get.item;
25795
+ if (sgroup !== null && sgroup !== void 0 && sgroup.isSuperatomWithoutLabel) {
25796
+ return true;
25797
+ }
25760
25798
  return sGroupsRef.current.size === 0;
25761
- }, []);
25799
+ }, [getKetcherInstance]);
25762
25800
  return [handler, disabled, hidden];
25763
25801
  };
25764
25802
 
@@ -25874,6 +25912,7 @@ var BondMenuItems = function BondMenuItems(props) {
25874
25912
  editor.highlights.create({
25875
25913
  atoms: [],
25876
25914
  bonds: bondIds,
25915
+ rgroupAttachmentPoints: [],
25877
25916
  color: color === '' ? 'transparent' : color
25878
25917
  });
25879
25918
  };
@@ -26064,12 +26103,14 @@ var SelectionMenuItems = function SelectionMenuItems(props) {
26064
26103
  atomStereoDisabled = _useAtomStereo2[1];
26065
26104
  var handleDelete = useDelete$1();
26066
26105
  var highlightBondWithColor = function highlightBondWithColor(color) {
26067
- var _props$propsFromTrigg, _props$propsFromTrigg2;
26106
+ var _props$propsFromTrigg, _props$propsFromTrigg2, _props$propsFromTrigg3;
26068
26107
  var bondIds = ((_props$propsFromTrigg = props.propsFromTrigger) === null || _props$propsFromTrigg === void 0 ? void 0 : _props$propsFromTrigg.bondIds) || [];
26069
26108
  var atomIds = ((_props$propsFromTrigg2 = props.propsFromTrigger) === null || _props$propsFromTrigg2 === void 0 ? void 0 : _props$propsFromTrigg2.atomIds) || [];
26109
+ var rgroupAttachmentPoints = ((_props$propsFromTrigg3 = props.propsFromTrigger) === null || _props$propsFromTrigg3 === void 0 ? void 0 : _props$propsFromTrigg3.rgroupAttachmentPoints) || [];
26070
26110
  editor.highlights.create({
26071
26111
  atoms: atomIds,
26072
26112
  bonds: bondIds,
26113
+ rgroupAttachmentPoints: rgroupAttachmentPoints,
26073
26114
  color: color === '' ? 'transparent' : color
26074
26115
  });
26075
26116
  };
@@ -26191,19 +26232,34 @@ var useRGroupAttachmentPointEdit = function useRGroupAttachmentPointEdit() {
26191
26232
  function ownKeys$K(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; }
26192
26233
  function _objectSpread$K(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$K(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$K(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26193
26234
  var RGroupAttachmentPointMenuItems = function RGroupAttachmentPointMenuItems(props) {
26235
+ var _useAppContext = useAppContext(),
26236
+ getKetcherInstance = _useAppContext.getKetcherInstance;
26194
26237
  var handleRemove = useDelete();
26195
26238
  var _useRGroupAttachmentP = useRGroupAttachmentPointEdit(),
26196
26239
  _useRGroupAttachmentP2 = _slicedToArray__default["default"](_useRGroupAttachmentP, 3),
26197
26240
  handleEditRGroupAttachmentPoint = _useRGroupAttachmentP2[0],
26198
26241
  rgroupAttachmentPointDisabled = _useRGroupAttachmentP2[1],
26199
26242
  rgroupAttachmentPointHidden = _useRGroupAttachmentP2[2];
26243
+ var editor = getKetcherInstance().editor;
26244
+ var highlight = function highlight(color) {
26245
+ var _props$propsFromTrigg;
26246
+ var rgroupAttachmentPoints = ((_props$propsFromTrigg = props.propsFromTrigger) === null || _props$propsFromTrigg === void 0 ? void 0 : _props$propsFromTrigg.rgroupAttachmentPoints) || [];
26247
+ editor.highlights.create({
26248
+ rgroupAttachmentPoints: rgroupAttachmentPoints,
26249
+ atoms: [],
26250
+ bonds: [],
26251
+ color: color === '' ? 'transparent' : color
26252
+ });
26253
+ };
26200
26254
  return jsxRuntime.jsxs(jsxRuntime.Fragment, {
26201
26255
  children: [jsxRuntime.jsx(reactContexify.Item, _objectSpread$K(_objectSpread$K({}, props), {}, {
26202
26256
  disabled: rgroupAttachmentPointDisabled,
26203
26257
  hidden: rgroupAttachmentPointHidden,
26204
26258
  onClick: handleEditRGroupAttachmentPoint,
26205
26259
  children: "Edit..."
26206
- })), jsxRuntime.jsx(reactContexify.Item, _objectSpread$K(_objectSpread$K({}, props), {}, {
26260
+ })), jsxRuntime.jsx(HighlightMenu, {
26261
+ onHighlight: highlight
26262
+ }), jsxRuntime.jsx(reactContexify.Item, _objectSpread$K(_objectSpread$K({}, props), {}, {
26207
26263
  onClick: handleRemove,
26208
26264
  children: "Remove"
26209
26265
  }))]
@@ -26307,10 +26363,14 @@ var useMonomerExpansionHandlers = function useMonomerExpansionHandlers() {
26307
26363
  function ownKeys$I(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; }
26308
26364
  function _objectSpread$I(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$I(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$I(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26309
26365
  var MacromoleculeMenuItems = function MacromoleculeMenuItems(props) {
26366
+ var _props$propsFromTrigg;
26310
26367
  var _useMonomerExpansionH = useMonomerExpansionHandlers(),
26311
26368
  _useMonomerExpansionH2 = _slicedToArray__default["default"](_useMonomerExpansionH, 2),
26312
26369
  action = _useMonomerExpansionH2[0],
26313
26370
  _hidden = _useMonomerExpansionH2[1];
26371
+ var multipleMonomersSelected = (props === null || props === void 0 || (_props$propsFromTrigg = props.propsFromTrigger) === null || _props$propsFromTrigg === void 0 ? void 0 : _props$propsFromTrigg.functionalGroups) && props.propsFromTrigger.functionalGroups.length > 1;
26372
+ var expandText = multipleMonomersSelected ? 'Expand monomers' : 'Expand monomer';
26373
+ var collapseText = multipleMonomersSelected ? 'Collapse monomers' : 'Collapse monomer';
26314
26374
  return jsxRuntime.jsxs(jsxRuntime.Fragment, {
26315
26375
  children: [jsxRuntime.jsx(reactContexify.Item, _objectSpread$I(_objectSpread$I({}, props), {}, {
26316
26376
  hidden: function hidden(params) {
@@ -26319,7 +26379,7 @@ var MacromoleculeMenuItems = function MacromoleculeMenuItems(props) {
26319
26379
  onClick: function onClick(params) {
26320
26380
  return action(params, true);
26321
26381
  },
26322
- children: "Expand monomer"
26382
+ children: expandText
26323
26383
  })), jsxRuntime.jsx(reactContexify.Item, _objectSpread$I(_objectSpread$I({}, props), {}, {
26324
26384
  hidden: function hidden(params) {
26325
26385
  return _hidden(params, false);
@@ -26327,7 +26387,7 @@ var MacromoleculeMenuItems = function MacromoleculeMenuItems(props) {
26327
26387
  onClick: function onClick(params) {
26328
26388
  return action(params, false);
26329
26389
  },
26330
- children: "Collapse monomer"
26390
+ children: collapseText
26331
26391
  }))]
26332
26392
  });
26333
26393
  };
@@ -26610,7 +26670,8 @@ function getMenuPropsForSelection(selection, selectedFunctionalGroups) {
26610
26670
  return {
26611
26671
  id: CONTEXT_MENU_ID.FOR_SELECTION,
26612
26672
  bondIds: bonds,
26613
- atomIds: atoms
26673
+ atomIds: atoms,
26674
+ rgroupAttachmentPoints: rgroupAttachmentPoints
26614
26675
  };
26615
26676
  }
26616
26677
  }
@@ -26911,16 +26972,17 @@ var InfoPanel = function InfoPanel(props) {
26911
26972
  return isAmbiguousMonomer ? jsxRuntime.jsx(AmbiguousMonomerPreview, {
26912
26973
  preview: {
26913
26974
  type: exports.PreviewType.AmbiguousMonomer,
26914
- monomer: sGroup.monomer.variantMonomerItem,
26915
- style: {
26916
- left: "".concat(clientX - 50, "px"),
26917
- top: calculateAmbiguousMonomerPreviewTop(sGroup.monomer.variantMonomerItem)({
26918
- left: clientX - 50,
26919
- top: clientY - 65,
26920
- bottom: clientY - 25
26921
- }),
26922
- transform: 'translate(-50%, 0)'
26923
- }
26975
+ monomer: sGroup.monomer.variantMonomerItem
26976
+ },
26977
+ style: {
26978
+ position: 'absolute',
26979
+ left: "".concat(clientX - 50, "px"),
26980
+ top: calculateAmbiguousMonomerPreviewTop(sGroup.monomer.variantMonomerItem)({
26981
+ left: clientX - 50,
26982
+ top: clientY - 65,
26983
+ bottom: clientY - 25
26984
+ }),
26985
+ transform: 'translate(-50%, 0)'
26924
26986
  }
26925
26987
  }) : showMolecule ? jsxRuntime.jsx("div", {
26926
26988
  style: {
@@ -34887,8 +34949,8 @@ var KetcherBuilder = function () {
34887
34949
  cleanup = initApp(element, appRoot, staticResourcesUrl, {
34888
34950
  buttons: buttons || {},
34889
34951
  errorHandler: errorHandler || null,
34890
- version: "2.26.0-rc.9" ,
34891
- buildDate: "2024-11-11T12:08:18" ,
34952
+ version: "2.27.0-rc.2" ,
34953
+ buildDate: "2024-11-12T19:33:40" ,
34892
34954
  buildNumber: '',
34893
34955
  customButtons: customButtons || []
34894
34956
  }, structService, resolve, togglerComponent);