ketcher-react 2.8.0-rc.4 → 2.8.0-rc.6

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
@@ -2990,7 +2990,10 @@ var templateLib = {
2990
2990
  shortcut: 'Shift+t',
2991
2991
  title: 'Custom Templates',
2992
2992
  action: {
2993
- dialog: 'templates'
2993
+ dialog: 'templates',
2994
+ prop: {
2995
+ tab: null
2996
+ }
2994
2997
  },
2995
2998
  selected: function selected(editor) {
2996
2999
  return editor._tool.mode === 'classic';
@@ -3070,7 +3073,7 @@ var zoom = {
3070
3073
 
3071
3074
  var openHelpLink = function openHelpLink() {
3072
3075
  var _window$open;
3073
- return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v2.8.0-rc.4\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
3076
+ return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v2.8.0-rc.6\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
3074
3077
  };
3075
3078
  var help = {
3076
3079
  help: {
@@ -10913,7 +10916,7 @@ var BondTool = function () {
10913
10916
  existingBondId = _this$getExistingBond2[0],
10914
10917
  bond = _this$getExistingBond2[1];
10915
10918
  dragCtx.action = ketcherCore.fromBondAddition(rnd.ctab, this.bondProps, beginAtom, endAtom, beginPos, endPos)[0];
10916
- if (existingBondId) {
10919
+ if (existingBondId !== null) {
10917
10920
  this.dragCtx.existedBond = bond;
10918
10921
  this.dragCtx.action.mergeWith(ketcherCore.fromOneBondDeletion(rnd.ctab, existingBondId));
10919
10922
  }
@@ -11347,7 +11350,7 @@ function getElementsInRectangle(restruct, p0, p1) {
11347
11350
  var y1 = Math.max(p0.y, p1.y);
11348
11351
  restruct.bonds.forEach(function (bond, bid) {
11349
11352
  var centre = ketcherCore.Vec2.lc2(restruct.atoms.get(bond.b.begin).a.pp, 0.5, restruct.atoms.get(bond.b.end).a.pp, 0.5);
11350
- if (centre.x > x0 && centre.x < x1 && centre.y > y0 && centre.y < y1 && !ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups, true)) {
11353
+ if (centre.x > x0 && centre.x < x1 && centre.y > y0 && centre.y < y1 && !ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups)) {
11351
11354
  bondList.push(bid);
11352
11355
  }
11353
11356
  });
@@ -11425,7 +11428,7 @@ function getElementsInPolygon(restruct, rr) {
11425
11428
  }
11426
11429
  restruct.bonds.forEach(function (bond, bid) {
11427
11430
  var centre = ketcherCore.Vec2.lc2(restruct.atoms.get(bond.b.begin).a.pp, 0.5, restruct.atoms.get(bond.b.end).a.pp, 0.5);
11428
- if (isPointInPolygon(r, centre) && !ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups, true)) {
11431
+ if (isPointInPolygon(r, centre) && !ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups)) {
11429
11432
  bondList.push(bid);
11430
11433
  }
11431
11434
  });
@@ -11749,7 +11752,7 @@ var SGroupTool = function () {
11749
11752
  var _struct$bonds$get;
11750
11753
  var bondId = ketcherCore.FunctionalGroup.bondsInFunctionalGroup(molecule, functionalGroups, ci.id);
11751
11754
  var bondFromStruct = bondId !== null && ((_struct$bonds$get = struct.bonds.get(bondId)) === null || _struct$bonds$get === void 0 ? void 0 : _struct$bonds$get.b);
11752
- if (bondFromStruct && !ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bondFromStruct, sgroups, functionalGroups, true)) {
11755
+ if (bondFromStruct && !ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bondFromStruct, sgroups, functionalGroups)) {
11753
11756
  bondResult.push(bondId);
11754
11757
  }
11755
11758
  }
@@ -12537,8 +12540,8 @@ var SelectTool = function () {
12537
12540
  var _struct$bonds$get;
12538
12541
  var bondId = ketcherCore.FunctionalGroup.bondsInFunctionalGroup(molecule, functionalGroups, ci.id);
12539
12542
  var bondFromStruct = bondId !== null && ((_struct$bonds$get = struct.bonds.get(bondId)) === null || _struct$bonds$get === void 0 ? void 0 : _struct$bonds$get.b);
12540
- if (bondId !== null && !ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(
12541
- bondFromStruct, sgroups, functionalGroups, true)) bondResult.push(bondId);
12543
+ if (bondFromStruct && !ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(
12544
+ bondFromStruct, sgroups, functionalGroups)) bondResult.push(bondId);
12542
12545
  }
12543
12546
  if (atomResult.length > 0) {
12544
12547
  var _iterator7 = _createForOfIteratorHelper$9(atomResult),
@@ -12814,7 +12817,7 @@ var EraserTool = function () {
12814
12817
  var bond = _step3.value;
12815
12818
  var bondId = ketcherCore.FunctionalGroup.bondsInFunctionalGroup(molecule, functionalGroups, bond);
12816
12819
  var bondFromStruct = bondId !== null && ((_struct$bonds$get = struct.bonds.get(bondId)) === null || _struct$bonds$get === void 0 ? void 0 : _struct$bonds$get.b);
12817
- if (bondFromStruct && !ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bondFromStruct, sgroups, functionalGroups, true)) {
12820
+ if (bondFromStruct && !ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bondFromStruct, sgroups, functionalGroups)) {
12818
12821
  bondsResult.push(bondId);
12819
12822
  }
12820
12823
  }
@@ -12906,7 +12909,7 @@ var EraserTool = function () {
12906
12909
  var _restruct$bonds$get;
12907
12910
  var bondId = ketcherCore.FunctionalGroup.bondsInFunctionalGroup(molecule, functionalGroups, ci.id);
12908
12911
  var bondFromStruct = bondId !== null && ((_restruct$bonds$get = restruct.bonds.get(bondId)) === null || _restruct$bonds$get === void 0 ? void 0 : _restruct$bonds$get.b);
12909
- if (bondFromStruct && !ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bondFromStruct, sgroups, functionalGroups, true)) {
12912
+ if (bondFromStruct && !ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bondFromStruct, sgroups, functionalGroups)) {
12910
12913
  bondResult.push(bondId);
12911
12914
  }
12912
12915
  }
@@ -14314,38 +14317,28 @@ var TemplateTool = function () {
14314
14317
  });
14315
14318
  return true;
14316
14319
  }
14317
- var action;
14320
+ var action, functionalGroupRemoveAction;
14318
14321
  var pasteItems = null;
14319
14322
  if (ketcherCore.SGroup.isSaltOrSolvent(this.template.molecule.name)) {
14320
14323
  addSaltsAndSolventsOnCanvasWithoutMerge(restruct, this.template, dragCtx, this.editor);
14321
14324
  return true;
14322
14325
  } else if (((_ci = ci) === null || _ci === void 0 ? void 0 : _ci.map) === 'functionalGroups' && ketcherCore.FunctionalGroup.isContractedFunctionalGroup(ci.id, functionalGroups) && this.mode === 'fg') {
14323
- var closestGroup = this.editor.struct().sgroups.get(ci.id);
14324
- var isClosestGroupAttached = closestGroup && closestGroup.isGroupAttached(this.editor.struct());
14325
- if (isClosestGroupAttached) {
14326
- var groupAttachmentAtomId = this.editor.struct().atoms.find(function (atomId) {
14327
- var _this$editor$struct$a;
14328
- return !!((_this$editor$struct$a = _this.editor.struct().atomGetNeighbors(atomId)) !== null && _this$editor$struct$a !== void 0 && _this$editor$struct$a.find(function (neighbor) {
14329
- return neighbor.aid === closestGroup.getAttAtomId(_this.editor.struct());
14330
- }));
14331
- });
14332
- if (groupAttachmentAtomId !== null) {
14333
- var _this$editor$struct$a2;
14334
- var targetPos = ((_this$editor$struct$a2 = this.editor.struct().atoms.get(groupAttachmentAtomId)) === null || _this$editor$struct$a2 === void 0 ? void 0 : _this$editor$struct$a2.pp) || dragCtx.xy0;
14335
- var eventPos = this.editor.render.page2obj(event);
14336
- var dist = ketcherCore.Vec2.dist(targetPos, eventPos);
14337
- ci = {
14338
- map: 'atoms',
14339
- dist: dist,
14340
- id: groupAttachmentAtomId
14341
- };
14342
- }
14343
- }
14344
- this.editor.update(ketcherCore.fromFragmentDeletion(this.editor.render.ctab, {
14345
- atoms: _toConsumableArray__default["default"](ketcherCore.SGroup.getAtoms(struct, closestGroup)),
14346
- bonds: _toConsumableArray__default["default"](ketcherCore.SGroup.getBonds(struct, closestGroup))
14326
+ functionalGroupRemoveAction = new ketcherCore.Action();
14327
+ var _struct = this.editor.struct();
14328
+ var _restruct = this.editor.render.ctab;
14329
+ var functionalGroupToReplace = _struct.sgroups.get(ci.id);
14330
+ var attachmentAtomId = functionalGroupToReplace.getAttAtomId(_struct);
14331
+ var atomsWithoutAttachmentAtom = ketcherCore.SGroup.getAtoms(_struct, functionalGroupToReplace).filter(function (id) {
14332
+ return id !== attachmentAtomId;
14333
+ });
14334
+ functionalGroupRemoveAction.mergeWith(ketcherCore.fromSgroupDeletion(_restruct, ci.id));
14335
+ functionalGroupRemoveAction.mergeWith(ketcherCore.fromFragmentDeletion(_restruct, {
14336
+ atoms: atomsWithoutAttachmentAtom
14347
14337
  }));
14348
- if (!isClosestGroupAttached) ci = null;
14338
+ ci = {
14339
+ map: 'atoms',
14340
+ id: attachmentAtomId
14341
+ };
14349
14342
  }
14350
14343
  if (!dragCtx.action) {
14351
14344
  if (!ci) {
@@ -14377,6 +14370,9 @@ var TemplateTool = function () {
14377
14370
  var _fromTemplateOnAtom4 = _slicedToArray__default["default"](_fromTemplateOnAtom3, 2);
14378
14371
  action = _fromTemplateOnAtom4[0];
14379
14372
  pasteItems = _fromTemplateOnAtom4[1];
14373
+ if (functionalGroupRemoveAction) {
14374
+ action = functionalGroupRemoveAction.mergeWith(action);
14375
+ }
14380
14376
  dragCtx.action = action;
14381
14377
  } else if (ci.map === 'bonds' && this.mode !== 'fg') {
14382
14378
  var _promise = ketcherCore.fromTemplateOnBondAction(restruct, this.template, ci.id, this.editor.event, dragCtx.sign1 * dragCtx.sign2 > 0, true);
@@ -15298,7 +15294,7 @@ function findClosestBond(restruct, pos, skip, minDist, scale) {
15298
15294
  if (bid === skipId) return;
15299
15295
  var a1 = restruct.atoms.get(bond.b.begin).a;
15300
15296
  var a2 = restruct.atoms.get(bond.b.end).a;
15301
- if (ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups, true)) return null;
15297
+ if (ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups)) return null;
15302
15298
  var mid = ketcherCore.Vec2.lc2(a1.pp, 0.5, a2.pp, 0.5);
15303
15299
  var cdist = ketcherCore.Vec2.dist(pos, mid);
15304
15300
  if (cdist < minCDist) {
@@ -15308,7 +15304,7 @@ function findClosestBond(restruct, pos, skip, minDist, scale) {
15308
15304
  });
15309
15305
  restruct.bonds.forEach(function (bond, bid) {
15310
15306
  if (bid === skipId) return;
15311
- if (ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups, true)) return null;
15307
+ if (ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups)) return null;
15312
15308
  var hb = restruct.molecule.halfBonds.get(bond.b.hb1);
15313
15309
  var dir = hb.dir;
15314
15310
  var norm = hb.norm;
@@ -22775,19 +22771,15 @@ var TemplateDialog = function TemplateDialog(props) {
22775
22771
  onSelect = props.onSelect,
22776
22772
  rest = _objectWithoutProperties__default["default"](props, _excluded2);
22777
22773
  var searchInputRef = React.useRef(null);
22778
- var _useState = React.useState(initialTab),
22774
+ var _useState = React.useState([props.group]),
22779
22775
  _useState2 = _slicedToArray__default["default"](_useState, 2),
22780
- thisInitialTab = _useState2[0],
22781
- setThisInitialTab = _useState2[1];
22782
- var _useState3 = React.useState([props.group]),
22783
- _useState4 = _slicedToArray__default["default"](_useState3, 2),
22784
- expandedAccordions = _useState4[0],
22785
- setExpandedAccordions = _useState4[1];
22776
+ expandedAccordions = _useState2[0],
22777
+ setExpandedAccordions = _useState2[1];
22786
22778
  var filteredSaltsAndSolvents = useSaltsAndSolvents(saltsAndSolvents, filter);
22787
- var _useState5 = React.useState(functionalGroups[FUNCTIONAL_GROUPS]),
22788
- _useState6 = _slicedToArray__default["default"](_useState5, 2),
22789
- filteredFG = _useState6[0],
22790
- setFilteredFG = _useState6[1];
22779
+ var _useState3 = React.useState(functionalGroups[FUNCTIONAL_GROUPS]),
22780
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
22781
+ filteredFG = _useState4[0],
22782
+ setFilteredFG = _useState4[1];
22791
22783
  var filteredTemplateLib = filterLibSelector(props);
22792
22784
  React.useEffect(function () {
22793
22785
  setFilteredFG(filterFGLib(functionalGroups, filter)[FUNCTIONAL_GROUPS]);
@@ -22797,6 +22789,11 @@ var TemplateDialog = function TemplateDialog(props) {
22797
22789
  (_searchInputRef$curre = searchInputRef.current) === null || _searchInputRef$curre === void 0 ? void 0 : _searchInputRef$curre.focus();
22798
22790
  onSelect(null);
22799
22791
  }, [tab, onSelect]);
22792
+ React.useEffect(function () {
22793
+ if (initialTab !== null) {
22794
+ onTabChange(initialTab);
22795
+ }
22796
+ }, [initialTab, onTabChange]);
22800
22797
  var handleAccordionChange = function handleAccordionChange(accordion) {
22801
22798
  return function (_, isExpanded) {
22802
22799
  setExpandedAccordions(isExpanded ? [].concat(_toConsumableArray__default["default"](expandedAccordions), [accordion]) : _toConsumableArray__default["default"](expandedAccordions).filter(function (expandedAccordion) {
@@ -22805,7 +22802,6 @@ var TemplateDialog = function TemplateDialog(props) {
22805
22802
  };
22806
22803
  };
22807
22804
  var handleTabChange = function handleTabChange(value) {
22808
- setThisInitialTab(null);
22809
22805
  onTabChange(value);
22810
22806
  };
22811
22807
  var sdfSerializer = new ketcherCore.SdfSerializer();
@@ -22842,7 +22838,7 @@ var TemplateDialog = function TemplateDialog(props) {
22842
22838
  className: classes$8.searchIcon
22843
22839
  })]
22844
22840
  }), jsxRuntime.jsxs(Tabs__default["default"], {
22845
- value: thisInitialTab !== null ? initialTab : tab,
22841
+ value: tab,
22846
22842
  onChange: function onChange(_, value) {
22847
22843
  return handleTabChange(value);
22848
22844
  },
@@ -22958,7 +22954,7 @@ var onModalClose = function onModalClose(props, dispatch) {
22958
22954
  var TemplatesDialog = reactRedux.connect(function (store) {
22959
22955
  var _store$modal, _store$modal$prop, _store$editor, _store$editor$render;
22960
22956
  return _objectSpread$4(_objectSpread$4({}, fp.omit(['attach'], store.templates)), {}, {
22961
- initialTab: ((_store$modal = store.modal) === null || _store$modal === void 0 ? void 0 : (_store$modal$prop = _store$modal.prop) === null || _store$modal$prop === void 0 ? void 0 : _store$modal$prop.tab) || TemplateTabs.TemplateLibrary,
22957
+ initialTab: (_store$modal = store.modal) === null || _store$modal === void 0 ? void 0 : (_store$modal$prop = _store$modal.prop) === null || _store$modal$prop === void 0 ? void 0 : _store$modal$prop.tab,
22962
22958
  renderOptions: (_store$editor = store.editor) === null || _store$editor === void 0 ? void 0 : (_store$editor$render = _store$editor.render) === null || _store$editor$render === void 0 ? void 0 : _store$editor$render.options,
22963
22959
  functionalGroups: functionalGroupsSelector(store),
22964
22960
  saltsAndSolvents: saltsAndSolventsSelector(store)
@@ -23724,8 +23720,8 @@ var KetcherBuilder = function () {
23724
23720
  initApp(element, staticResourcesUrl, {
23725
23721
  buttons: buttons || {},
23726
23722
  errorHandler: errorHandler || null,
23727
- version: "2.8.0-rc.4" ,
23728
- buildDate: "2023-02-22T09:16:14" ,
23723
+ version: "2.8.0-rc.6" ,
23724
+ buildDate: "2023-03-09T13:41:33" ,
23729
23725
  buildNumber: ''
23730
23726
  }, structService, resolve);
23731
23727
  });