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 +50 -54
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +50 -54
- package/dist/index.modern.js.map +1 -1
- package/dist/script/editor/tool/bond.d.ts +2 -1
- package/dist/script/ui/action/index.d.ts +3 -0
- package/dist/script/ui/action/templates.d.ts +3 -0
- package/package.json +1 -1
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.
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
12541
|
-
bondFromStruct, sgroups, functionalGroups
|
|
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
|
|
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
|
|
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
|
-
|
|
14324
|
-
var
|
|
14325
|
-
|
|
14326
|
-
|
|
14327
|
-
|
|
14328
|
-
|
|
14329
|
-
|
|
14330
|
-
|
|
14331
|
-
|
|
14332
|
-
|
|
14333
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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(
|
|
22774
|
+
var _useState = React.useState([props.group]),
|
|
22779
22775
|
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
22780
|
-
|
|
22781
|
-
|
|
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
|
|
22788
|
-
|
|
22789
|
-
filteredFG =
|
|
22790
|
-
setFilteredFG =
|
|
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:
|
|
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: (
|
|
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.
|
|
23728
|
-
buildDate: "2023-
|
|
23723
|
+
version: "2.8.0-rc.6" ,
|
|
23724
|
+
buildDate: "2023-03-09T13:41:33" ,
|
|
23729
23725
|
buildNumber: ''
|
|
23730
23726
|
}, structService, resolve);
|
|
23731
23727
|
});
|