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.
@@ -2928,7 +2928,10 @@ var templateLib = {
2928
2928
  shortcut: 'Shift+t',
2929
2929
  title: 'Custom Templates',
2930
2930
  action: {
2931
- dialog: 'templates'
2931
+ dialog: 'templates',
2932
+ prop: {
2933
+ tab: null
2934
+ }
2932
2935
  },
2933
2936
  selected: function selected(editor) {
2934
2937
  return editor._tool.mode === 'classic';
@@ -3008,7 +3011,7 @@ var zoom = {
3008
3011
 
3009
3012
  var openHelpLink = function openHelpLink() {
3010
3013
  var _window$open;
3011
- 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();
3014
+ 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();
3012
3015
  };
3013
3016
  var help = {
3014
3017
  help: {
@@ -10851,7 +10854,7 @@ var BondTool = function () {
10851
10854
  existingBondId = _this$getExistingBond2[0],
10852
10855
  bond = _this$getExistingBond2[1];
10853
10856
  dragCtx.action = fromBondAddition(rnd.ctab, this.bondProps, beginAtom, endAtom, beginPos, endPos)[0];
10854
- if (existingBondId) {
10857
+ if (existingBondId !== null) {
10855
10858
  this.dragCtx.existedBond = bond;
10856
10859
  this.dragCtx.action.mergeWith(fromOneBondDeletion(rnd.ctab, existingBondId));
10857
10860
  }
@@ -11285,7 +11288,7 @@ function getElementsInRectangle(restruct, p0, p1) {
11285
11288
  var y1 = Math.max(p0.y, p1.y);
11286
11289
  restruct.bonds.forEach(function (bond, bid) {
11287
11290
  var centre = Vec2.lc2(restruct.atoms.get(bond.b.begin).a.pp, 0.5, restruct.atoms.get(bond.b.end).a.pp, 0.5);
11288
- if (centre.x > x0 && centre.x < x1 && centre.y > y0 && centre.y < y1 && !FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups, true)) {
11291
+ if (centre.x > x0 && centre.x < x1 && centre.y > y0 && centre.y < y1 && !FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups)) {
11289
11292
  bondList.push(bid);
11290
11293
  }
11291
11294
  });
@@ -11363,7 +11366,7 @@ function getElementsInPolygon(restruct, rr) {
11363
11366
  }
11364
11367
  restruct.bonds.forEach(function (bond, bid) {
11365
11368
  var centre = Vec2.lc2(restruct.atoms.get(bond.b.begin).a.pp, 0.5, restruct.atoms.get(bond.b.end).a.pp, 0.5);
11366
- if (isPointInPolygon(r, centre) && !FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups, true)) {
11369
+ if (isPointInPolygon(r, centre) && !FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups)) {
11367
11370
  bondList.push(bid);
11368
11371
  }
11369
11372
  });
@@ -11687,7 +11690,7 @@ var SGroupTool = function () {
11687
11690
  var _struct$bonds$get;
11688
11691
  var bondId = FunctionalGroup.bondsInFunctionalGroup(molecule, functionalGroups, ci.id);
11689
11692
  var bondFromStruct = bondId !== null && ((_struct$bonds$get = struct.bonds.get(bondId)) === null || _struct$bonds$get === void 0 ? void 0 : _struct$bonds$get.b);
11690
- if (bondFromStruct && !FunctionalGroup.isBondInContractedFunctionalGroup(bondFromStruct, sgroups, functionalGroups, true)) {
11693
+ if (bondFromStruct && !FunctionalGroup.isBondInContractedFunctionalGroup(bondFromStruct, sgroups, functionalGroups)) {
11691
11694
  bondResult.push(bondId);
11692
11695
  }
11693
11696
  }
@@ -12475,8 +12478,8 @@ var SelectTool = function () {
12475
12478
  var _struct$bonds$get;
12476
12479
  var bondId = FunctionalGroup.bondsInFunctionalGroup(molecule, functionalGroups, ci.id);
12477
12480
  var bondFromStruct = bondId !== null && ((_struct$bonds$get = struct.bonds.get(bondId)) === null || _struct$bonds$get === void 0 ? void 0 : _struct$bonds$get.b);
12478
- if (bondId !== null && !FunctionalGroup.isBondInContractedFunctionalGroup(
12479
- bondFromStruct, sgroups, functionalGroups, true)) bondResult.push(bondId);
12481
+ if (bondFromStruct && !FunctionalGroup.isBondInContractedFunctionalGroup(
12482
+ bondFromStruct, sgroups, functionalGroups)) bondResult.push(bondId);
12480
12483
  }
12481
12484
  if (atomResult.length > 0) {
12482
12485
  var _iterator7 = _createForOfIteratorHelper$9(atomResult),
@@ -12752,7 +12755,7 @@ var EraserTool = function () {
12752
12755
  var bond = _step3.value;
12753
12756
  var bondId = FunctionalGroup.bondsInFunctionalGroup(molecule, functionalGroups, bond);
12754
12757
  var bondFromStruct = bondId !== null && ((_struct$bonds$get = struct.bonds.get(bondId)) === null || _struct$bonds$get === void 0 ? void 0 : _struct$bonds$get.b);
12755
- if (bondFromStruct && !FunctionalGroup.isBondInContractedFunctionalGroup(bondFromStruct, sgroups, functionalGroups, true)) {
12758
+ if (bondFromStruct && !FunctionalGroup.isBondInContractedFunctionalGroup(bondFromStruct, sgroups, functionalGroups)) {
12756
12759
  bondsResult.push(bondId);
12757
12760
  }
12758
12761
  }
@@ -12844,7 +12847,7 @@ var EraserTool = function () {
12844
12847
  var _restruct$bonds$get;
12845
12848
  var bondId = FunctionalGroup.bondsInFunctionalGroup(molecule, functionalGroups, ci.id);
12846
12849
  var bondFromStruct = bondId !== null && ((_restruct$bonds$get = restruct.bonds.get(bondId)) === null || _restruct$bonds$get === void 0 ? void 0 : _restruct$bonds$get.b);
12847
- if (bondFromStruct && !FunctionalGroup.isBondInContractedFunctionalGroup(bondFromStruct, sgroups, functionalGroups, true)) {
12850
+ if (bondFromStruct && !FunctionalGroup.isBondInContractedFunctionalGroup(bondFromStruct, sgroups, functionalGroups)) {
12848
12851
  bondResult.push(bondId);
12849
12852
  }
12850
12853
  }
@@ -14252,38 +14255,28 @@ var TemplateTool = function () {
14252
14255
  });
14253
14256
  return true;
14254
14257
  }
14255
- var action;
14258
+ var action, functionalGroupRemoveAction;
14256
14259
  var pasteItems = null;
14257
14260
  if (SGroup.isSaltOrSolvent(this.template.molecule.name)) {
14258
14261
  addSaltsAndSolventsOnCanvasWithoutMerge(restruct, this.template, dragCtx, this.editor);
14259
14262
  return true;
14260
14263
  } else if (((_ci = ci) === null || _ci === void 0 ? void 0 : _ci.map) === 'functionalGroups' && FunctionalGroup.isContractedFunctionalGroup(ci.id, functionalGroups) && this.mode === 'fg') {
14261
- var closestGroup = this.editor.struct().sgroups.get(ci.id);
14262
- var isClosestGroupAttached = closestGroup && closestGroup.isGroupAttached(this.editor.struct());
14263
- if (isClosestGroupAttached) {
14264
- var groupAttachmentAtomId = this.editor.struct().atoms.find(function (atomId) {
14265
- var _this$editor$struct$a;
14266
- return !!((_this$editor$struct$a = _this.editor.struct().atomGetNeighbors(atomId)) !== null && _this$editor$struct$a !== void 0 && _this$editor$struct$a.find(function (neighbor) {
14267
- return neighbor.aid === closestGroup.getAttAtomId(_this.editor.struct());
14268
- }));
14269
- });
14270
- if (groupAttachmentAtomId !== null) {
14271
- var _this$editor$struct$a2;
14272
- 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;
14273
- var eventPos = this.editor.render.page2obj(event);
14274
- var dist = Vec2.dist(targetPos, eventPos);
14275
- ci = {
14276
- map: 'atoms',
14277
- dist: dist,
14278
- id: groupAttachmentAtomId
14279
- };
14280
- }
14281
- }
14282
- this.editor.update(fromFragmentDeletion(this.editor.render.ctab, {
14283
- atoms: _toConsumableArray(SGroup.getAtoms(struct, closestGroup)),
14284
- bonds: _toConsumableArray(SGroup.getBonds(struct, closestGroup))
14264
+ functionalGroupRemoveAction = new Action();
14265
+ var _struct = this.editor.struct();
14266
+ var _restruct = this.editor.render.ctab;
14267
+ var functionalGroupToReplace = _struct.sgroups.get(ci.id);
14268
+ var attachmentAtomId = functionalGroupToReplace.getAttAtomId(_struct);
14269
+ var atomsWithoutAttachmentAtom = SGroup.getAtoms(_struct, functionalGroupToReplace).filter(function (id) {
14270
+ return id !== attachmentAtomId;
14271
+ });
14272
+ functionalGroupRemoveAction.mergeWith(fromSgroupDeletion(_restruct, ci.id));
14273
+ functionalGroupRemoveAction.mergeWith(fromFragmentDeletion(_restruct, {
14274
+ atoms: atomsWithoutAttachmentAtom
14285
14275
  }));
14286
- if (!isClosestGroupAttached) ci = null;
14276
+ ci = {
14277
+ map: 'atoms',
14278
+ id: attachmentAtomId
14279
+ };
14287
14280
  }
14288
14281
  if (!dragCtx.action) {
14289
14282
  if (!ci) {
@@ -14315,6 +14308,9 @@ var TemplateTool = function () {
14315
14308
  var _fromTemplateOnAtom4 = _slicedToArray(_fromTemplateOnAtom3, 2);
14316
14309
  action = _fromTemplateOnAtom4[0];
14317
14310
  pasteItems = _fromTemplateOnAtom4[1];
14311
+ if (functionalGroupRemoveAction) {
14312
+ action = functionalGroupRemoveAction.mergeWith(action);
14313
+ }
14318
14314
  dragCtx.action = action;
14319
14315
  } else if (ci.map === 'bonds' && this.mode !== 'fg') {
14320
14316
  var _promise = fromTemplateOnBondAction(restruct, this.template, ci.id, this.editor.event, dragCtx.sign1 * dragCtx.sign2 > 0, true);
@@ -15236,7 +15232,7 @@ function findClosestBond(restruct, pos, skip, minDist, scale) {
15236
15232
  if (bid === skipId) return;
15237
15233
  var a1 = restruct.atoms.get(bond.b.begin).a;
15238
15234
  var a2 = restruct.atoms.get(bond.b.end).a;
15239
- if (FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups, true)) return null;
15235
+ if (FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups)) return null;
15240
15236
  var mid = Vec2.lc2(a1.pp, 0.5, a2.pp, 0.5);
15241
15237
  var cdist = Vec2.dist(pos, mid);
15242
15238
  if (cdist < minCDist) {
@@ -15246,7 +15242,7 @@ function findClosestBond(restruct, pos, skip, minDist, scale) {
15246
15242
  });
15247
15243
  restruct.bonds.forEach(function (bond, bid) {
15248
15244
  if (bid === skipId) return;
15249
- if (FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups, true)) return null;
15245
+ if (FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups)) return null;
15250
15246
  var hb = restruct.molecule.halfBonds.get(bond.b.hb1);
15251
15247
  var dir = hb.dir;
15252
15248
  var norm = hb.norm;
@@ -22713,19 +22709,15 @@ var TemplateDialog = function TemplateDialog(props) {
22713
22709
  onSelect = props.onSelect,
22714
22710
  rest = _objectWithoutProperties(props, _excluded2);
22715
22711
  var searchInputRef = useRef(null);
22716
- var _useState = useState(initialTab),
22712
+ var _useState = useState([props.group]),
22717
22713
  _useState2 = _slicedToArray(_useState, 2),
22718
- thisInitialTab = _useState2[0],
22719
- setThisInitialTab = _useState2[1];
22720
- var _useState3 = useState([props.group]),
22721
- _useState4 = _slicedToArray(_useState3, 2),
22722
- expandedAccordions = _useState4[0],
22723
- setExpandedAccordions = _useState4[1];
22714
+ expandedAccordions = _useState2[0],
22715
+ setExpandedAccordions = _useState2[1];
22724
22716
  var filteredSaltsAndSolvents = useSaltsAndSolvents(saltsAndSolvents, filter);
22725
- var _useState5 = useState(functionalGroups[FUNCTIONAL_GROUPS]),
22726
- _useState6 = _slicedToArray(_useState5, 2),
22727
- filteredFG = _useState6[0],
22728
- setFilteredFG = _useState6[1];
22717
+ var _useState3 = useState(functionalGroups[FUNCTIONAL_GROUPS]),
22718
+ _useState4 = _slicedToArray(_useState3, 2),
22719
+ filteredFG = _useState4[0],
22720
+ setFilteredFG = _useState4[1];
22729
22721
  var filteredTemplateLib = filterLibSelector(props);
22730
22722
  useEffect(function () {
22731
22723
  setFilteredFG(filterFGLib(functionalGroups, filter)[FUNCTIONAL_GROUPS]);
@@ -22735,6 +22727,11 @@ var TemplateDialog = function TemplateDialog(props) {
22735
22727
  (_searchInputRef$curre = searchInputRef.current) === null || _searchInputRef$curre === void 0 ? void 0 : _searchInputRef$curre.focus();
22736
22728
  onSelect(null);
22737
22729
  }, [tab, onSelect]);
22730
+ useEffect(function () {
22731
+ if (initialTab !== null) {
22732
+ onTabChange(initialTab);
22733
+ }
22734
+ }, [initialTab, onTabChange]);
22738
22735
  var handleAccordionChange = function handleAccordionChange(accordion) {
22739
22736
  return function (_, isExpanded) {
22740
22737
  setExpandedAccordions(isExpanded ? [].concat(_toConsumableArray(expandedAccordions), [accordion]) : _toConsumableArray(expandedAccordions).filter(function (expandedAccordion) {
@@ -22743,7 +22740,6 @@ var TemplateDialog = function TemplateDialog(props) {
22743
22740
  };
22744
22741
  };
22745
22742
  var handleTabChange = function handleTabChange(value) {
22746
- setThisInitialTab(null);
22747
22743
  onTabChange(value);
22748
22744
  };
22749
22745
  var sdfSerializer = new SdfSerializer();
@@ -22780,7 +22776,7 @@ var TemplateDialog = function TemplateDialog(props) {
22780
22776
  className: classes$8.searchIcon
22781
22777
  })]
22782
22778
  }), jsxs(Tabs$1, {
22783
- value: thisInitialTab !== null ? initialTab : tab,
22779
+ value: tab,
22784
22780
  onChange: function onChange(_, value) {
22785
22781
  return handleTabChange(value);
22786
22782
  },
@@ -22896,7 +22892,7 @@ var onModalClose = function onModalClose(props, dispatch) {
22896
22892
  var TemplatesDialog = connect(function (store) {
22897
22893
  var _store$modal, _store$modal$prop, _store$editor, _store$editor$render;
22898
22894
  return _objectSpread$4(_objectSpread$4({}, omit(['attach'], store.templates)), {}, {
22899
- 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,
22895
+ 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,
22900
22896
  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,
22901
22897
  functionalGroups: functionalGroupsSelector(store),
22902
22898
  saltsAndSolvents: saltsAndSolventsSelector(store)
@@ -23662,8 +23658,8 @@ var KetcherBuilder = function () {
23662
23658
  initApp(element, staticResourcesUrl, {
23663
23659
  buttons: buttons || {},
23664
23660
  errorHandler: errorHandler || null,
23665
- version: "2.8.0-rc.4" ,
23666
- buildDate: "2023-02-22T09:16:14" ,
23661
+ version: "2.8.0-rc.6" ,
23662
+ buildDate: "2023-03-09T13:41:33" ,
23667
23663
  buildNumber: ''
23668
23664
  }, structService, resolve);
23669
23665
  });