ketcher-react 3.7.0-rc.1 → 3.7.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/cjs/constants.d.ts +2 -2
- package/dist/cjs/index.css +1 -1
- package/dist/cjs/index.css.map +1 -1
- package/dist/cjs/index.js +263 -108
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/{index.modern-5eda67eb.js → index.modern-c52e0e6a.js} +636 -210
- package/dist/cjs/index.modern-c52e0e6a.js.map +1 -0
- package/dist/cjs/script/editor/Editor.d.ts +1 -1
- package/dist/cjs/script/editor/tool/create-monomer.d.ts +1 -0
- package/dist/cjs/script/index.d.ts +2 -0
- package/dist/cjs/script/ui/component/form/Select/Select.d.ts +2 -1
- package/dist/cjs/script/ui/views/components/MonomerCreationWizard/MonomerCreationWizard.constants.d.ts +5 -0
- package/dist/cjs/script/ui/views/components/MonomerCreationWizard/MonomerCreationWizard.types.d.ts +5 -1
- package/dist/cjs/script/ui/views/components/MonomerCreationWizard/components/NaturalAnaloguePicker/NaturalAnaloguePicker.d.ts +1 -0
- package/dist/cjs/script/ui/views/toolbars/ArrowScroll/ArrowScroll.d.ts +4 -3
- package/dist/cjs/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/usePortalStyle.d.ts +2 -2
- package/dist/constants.d.ts +2 -2
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.js +254 -106
- package/dist/index.js.map +1 -1
- package/dist/{index.modern-eab54238.js → index.modern-43985e95.js} +637 -211
- package/dist/index.modern-43985e95.js.map +1 -0
- package/dist/script/editor/Editor.d.ts +1 -1
- package/dist/script/editor/tool/create-monomer.d.ts +1 -0
- package/dist/script/index.d.ts +2 -0
- package/dist/script/ui/component/form/Select/Select.d.ts +2 -1
- package/dist/script/ui/views/components/MonomerCreationWizard/MonomerCreationWizard.constants.d.ts +5 -0
- package/dist/script/ui/views/components/MonomerCreationWizard/MonomerCreationWizard.types.d.ts +5 -1
- package/dist/script/ui/views/components/MonomerCreationWizard/components/NaturalAnaloguePicker/NaturalAnaloguePicker.d.ts +1 -0
- package/dist/script/ui/views/toolbars/ArrowScroll/ArrowScroll.d.ts +4 -3
- package/dist/script/ui/views/toolbars/ToolbarGroupItem/ToolbarMultiToolItem/usePortalStyle.d.ts +2 -2
- package/package.json +1 -1
- package/dist/cjs/index.modern-5eda67eb.js.map +0 -1
- package/dist/index.modern-eab54238.js.map +0 -1
package/dist/cjs/index.js
CHANGED
|
@@ -344,6 +344,16 @@ function _isNativeReflectConstruct$g() { try { var t = !Boolean.prototype.valueO
|
|
|
344
344
|
var ieCb = typeof window !== 'undefined' ? window.clipboardData : {};
|
|
345
345
|
var CLIP_AREA_BASE_CLASS = 'cliparea';
|
|
346
346
|
var needSkipCopyEvent = false;
|
|
347
|
+
var isUserEditing = function isUserEditing() {
|
|
348
|
+
var el = document.activeElement;
|
|
349
|
+
if (!el) {
|
|
350
|
+
return false;
|
|
351
|
+
}
|
|
352
|
+
if (el.hasAttribute && el.hasAttribute('data-cliparea')) {
|
|
353
|
+
return false;
|
|
354
|
+
}
|
|
355
|
+
return Boolean(el.tagName === 'TEXTAREA' || el.tagName === 'INPUT' && el.type !== 'button' && el.type !== 'submit' && el.type !== 'reset' || el.contentEditable === 'true');
|
|
356
|
+
};
|
|
347
357
|
var ClipArea = function (_Component) {
|
|
348
358
|
_inherits__default["default"](ClipArea, _Component);
|
|
349
359
|
function ClipArea(props) {
|
|
@@ -369,7 +379,7 @@ var ClipArea = function (_Component) {
|
|
|
369
379
|
if (event.shiftKey && !isActiveElement(event.target)) event.preventDefault();
|
|
370
380
|
},
|
|
371
381
|
copy: function copy(event) {
|
|
372
|
-
if (!_this2.props.focused()) {
|
|
382
|
+
if (!_this2.props.focused() || isUserEditing()) {
|
|
373
383
|
return;
|
|
374
384
|
}
|
|
375
385
|
if (ketcherCore.isClipboardAPIAvailable()) {
|
|
@@ -406,7 +416,7 @@ var ClipArea = function (_Component) {
|
|
|
406
416
|
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
|
|
407
417
|
while (1) switch (_context.prev = _context.next) {
|
|
408
418
|
case 0:
|
|
409
|
-
if (_this2.props.focused()) {
|
|
419
|
+
if (!(!_this2.props.focused() || isUserEditing())) {
|
|
410
420
|
_context.next = 2;
|
|
411
421
|
break;
|
|
412
422
|
}
|
|
@@ -441,7 +451,7 @@ var ClipArea = function (_Component) {
|
|
|
441
451
|
return cut;
|
|
442
452
|
}(),
|
|
443
453
|
paste: function paste(event) {
|
|
444
|
-
if (!_this2.props.focused()) {
|
|
454
|
+
if (!_this2.props.focused() || isUserEditing()) {
|
|
445
455
|
return;
|
|
446
456
|
}
|
|
447
457
|
if (ketcherCore.isClipboardAPIAvailable()) {
|
|
@@ -532,6 +542,7 @@ var ClipArea = function (_Component) {
|
|
|
532
542
|
return jsxRuntime.jsx("textarea", {
|
|
533
543
|
ref: this.textAreaRef,
|
|
534
544
|
className: clsx__default["default"](CLIP_AREA_BASE_CLASS, classes$Q.cliparea),
|
|
545
|
+
"data-cliparea": true,
|
|
535
546
|
contentEditable: true,
|
|
536
547
|
autoFocus: true
|
|
537
548
|
,
|
|
@@ -3840,7 +3851,7 @@ var zoom = {
|
|
|
3840
3851
|
|
|
3841
3852
|
var openHelpLink = function openHelpLink() {
|
|
3842
3853
|
var _window$open;
|
|
3843
|
-
return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v3.7.0-rc.
|
|
3854
|
+
return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v3.7.0-rc.2\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
|
|
3844
3855
|
};
|
|
3845
3856
|
var help = {
|
|
3846
3857
|
help: {
|
|
@@ -3867,8 +3878,6 @@ var STRUCT_TYPE = {
|
|
|
3867
3878
|
};
|
|
3868
3879
|
var KETCHER_ROOT_NODE_CLASS_NAME = 'Ketcher-root';
|
|
3869
3880
|
var KETCHER_ROOT_NODE_CSS_SELECTOR = ".".concat(KETCHER_ROOT_NODE_CLASS_NAME);
|
|
3870
|
-
var EditorClassName = 'Ketcher-polymer-editor-root';
|
|
3871
|
-
var KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR = ".".concat(EditorClassName);
|
|
3872
3881
|
var STRUCT_SERVICE_NO_RENDER_INITIALIZED_EVENT = 'struct-service-no-render-initialized';
|
|
3873
3882
|
var STRUCT_SERVICE_INITIALIZED_EVENT = 'struct-service-initialized';
|
|
3874
3883
|
var ACS_STYLE_DEFAULT_SETTINGS = {
|
|
@@ -3948,6 +3957,9 @@ var disableIfViewOnly = function disableIfViewOnly(editor) {
|
|
|
3948
3957
|
var disableIfMonomerCreationWizardActive = function disableIfMonomerCreationWizardActive(editor) {
|
|
3949
3958
|
return editor.isMonomerCreationWizardActive;
|
|
3950
3959
|
};
|
|
3960
|
+
var combinedDisable = function combinedDisable(editor) {
|
|
3961
|
+
return disableIfViewOnly(editor) || disableIfMonomerCreationWizardActive(editor);
|
|
3962
|
+
};
|
|
3951
3963
|
var updateConfigItem = function updateConfigItem(item) {
|
|
3952
3964
|
if (typeof item.disabled === 'boolean' || item.enabledInViewOnly === true) {
|
|
3953
3965
|
return item;
|
|
@@ -3960,7 +3972,7 @@ var updateConfigItem = function updateConfigItem(item) {
|
|
|
3960
3972
|
});
|
|
3961
3973
|
} else {
|
|
3962
3974
|
return _objectSpread$1p(_objectSpread$1p({}, item), {}, {
|
|
3963
|
-
disabled:
|
|
3975
|
+
disabled: combinedDisable
|
|
3964
3976
|
});
|
|
3965
3977
|
}
|
|
3966
3978
|
};
|
|
@@ -13432,7 +13444,7 @@ assert.strict.strict = assert.strict;
|
|
|
13432
13444
|
var calculateMonomerPreviewTop = createCalculatePreviewTopFunction(preview.height);
|
|
13433
13445
|
var calculateNucleoElementPreviewTop = createCalculatePreviewTopFunction(preview.heightForNucleotide);
|
|
13434
13446
|
function calculateTop(target, height) {
|
|
13435
|
-
var ketcherEditorRoot = document.querySelector(KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR);
|
|
13447
|
+
var ketcherEditorRoot = document.querySelector(ketcherCore.KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR);
|
|
13436
13448
|
var ketcherEditorRootBoundingClientRect = ketcherEditorRoot === null || ketcherEditorRoot === void 0 ? void 0 : ketcherEditorRoot.getBoundingClientRect();
|
|
13437
13449
|
var relativeTargetTop = target.top - ((ketcherEditorRootBoundingClientRect === null || ketcherEditorRootBoundingClientRect === void 0 ? void 0 : ketcherEditorRootBoundingClientRect.top) || 0);
|
|
13438
13450
|
var relativeTargetBottom = target.bottom - ((ketcherEditorRootBoundingClientRect === null || ketcherEditorRootBoundingClientRect === void 0 ? void 0 : ketcherEditorRootBoundingClientRect.top) || 0);
|
|
@@ -13771,9 +13783,11 @@ function usePortalOpening(_ref) {
|
|
|
13771
13783
|
}
|
|
13772
13784
|
|
|
13773
13785
|
function usePortalStyle(_ref) {
|
|
13774
|
-
var _ref2 = _slicedToArray__default["default"](_ref,
|
|
13786
|
+
var _ref2 = _slicedToArray__default["default"](_ref, 4),
|
|
13775
13787
|
ref = _ref2[0],
|
|
13776
|
-
isOpen = _ref2[1]
|
|
13788
|
+
isOpen = _ref2[1],
|
|
13789
|
+
isTop = _ref2[2],
|
|
13790
|
+
rootElementSelector = _ref2[3];
|
|
13777
13791
|
var _useState = React.useState({}),
|
|
13778
13792
|
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
13779
13793
|
portalStyle = _useState2[0],
|
|
@@ -13783,19 +13797,20 @@ function usePortalStyle(_ref) {
|
|
|
13783
13797
|
if (!ref.current) {
|
|
13784
13798
|
return;
|
|
13785
13799
|
}
|
|
13786
|
-
var editorRect = ((_document$querySelect = document.querySelector(KETCHER_ROOT_NODE_CSS_SELECTOR)) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.getBoundingClientRect()) || {
|
|
13800
|
+
var editorRect = ((_document$querySelect = document.querySelector(rootElementSelector || KETCHER_ROOT_NODE_CSS_SELECTOR)) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.getBoundingClientRect()) || {
|
|
13787
13801
|
top: 0,
|
|
13788
13802
|
left: 0
|
|
13789
13803
|
};
|
|
13790
13804
|
var menuItemRect = ref.current.getBoundingClientRect();
|
|
13791
|
-
var top = menuItemRect.top - editorRect.top;
|
|
13792
13805
|
var spaceBetween = 4;
|
|
13793
|
-
var
|
|
13806
|
+
var alignmentOffset = 2;
|
|
13807
|
+
var top = menuItemRect.top - editorRect.top + (isTop ? spaceBetween + menuItemRect.height : 0) - (isTop ? 0 : alignmentOffset);
|
|
13808
|
+
var left = menuItemRect.left - editorRect.left + (isTop ? 0 : spaceBetween + menuItemRect.width) - (isTop ? alignmentOffset : 0);
|
|
13794
13809
|
setPortalStyle({
|
|
13795
13810
|
top: "".concat(top, "px"),
|
|
13796
13811
|
left: "".concat(left, "px")
|
|
13797
13812
|
});
|
|
13798
|
-
}, [ref, isOpen]);
|
|
13813
|
+
}, [ref, isOpen, isTop, rootElementSelector]);
|
|
13799
13814
|
return [portalStyle];
|
|
13800
13815
|
}
|
|
13801
13816
|
|
|
@@ -15135,7 +15150,7 @@ var selectOptions$2 = makeItems(['select-rectangle', 'select-lasso', 'select-fra
|
|
|
15135
15150
|
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]);
|
|
15136
15151
|
var mappingOptions = makeItems(['reaction-map', 'reaction-unmap', 'reaction-automap']);
|
|
15137
15152
|
|
|
15138
|
-
var classes$L = {"scroll":"ArrowScroll-module_scroll__h9kCx","button":"ArrowScroll-module_button__ygMgL","down":"ArrowScroll-module_down__yDzZX","up":"ArrowScroll-module_up__Q1ubd"};
|
|
15153
|
+
var classes$L = {"scroll":"ArrowScroll-module_scroll__h9kCx","upDown":"ArrowScroll-module_upDown__zT-Uf","button":"ArrowScroll-module_button__ygMgL","down":"ArrowScroll-module_down__yDzZX","up":"ArrowScroll-module_up__Q1ubd","left":"ArrowScroll-module_left__ND2ZB","right":"ArrowScroll-module_right__A3fNm"};
|
|
15139
15154
|
|
|
15140
15155
|
function useSettingsContext() {
|
|
15141
15156
|
return React__default["default"].useContext(settingsContext);
|
|
@@ -15230,8 +15245,9 @@ var useSubscriptionOnEvents = function useSubscriptionOnEvents() {
|
|
|
15230
15245
|
var ArrowScroll = function ArrowScroll(_ref) {
|
|
15231
15246
|
var startInView = _ref.startInView,
|
|
15232
15247
|
endInView = _ref.endInView,
|
|
15233
|
-
|
|
15234
|
-
|
|
15248
|
+
scrollForward = _ref.scrollForward,
|
|
15249
|
+
scrollBack = _ref.scrollBack,
|
|
15250
|
+
isLeftRight = _ref.isLeftRight;
|
|
15235
15251
|
var _useState = React.useState(false),
|
|
15236
15252
|
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
15237
15253
|
isScrollDown = _useState2[0],
|
|
@@ -15240,8 +15256,8 @@ var ArrowScroll = function ArrowScroll(_ref) {
|
|
|
15240
15256
|
_useState4 = _slicedToArray__default["default"](_useState3, 2),
|
|
15241
15257
|
isScrollUp = _useState4[0],
|
|
15242
15258
|
setScrollUp = _useState4[1];
|
|
15243
|
-
useInterval(
|
|
15244
|
-
useInterval(
|
|
15259
|
+
useInterval(scrollBack, isScrollDown ? 100 : null);
|
|
15260
|
+
useInterval(scrollForward, isScrollUp ? 100 : null);
|
|
15245
15261
|
React.useEffect(function () {
|
|
15246
15262
|
return function () {
|
|
15247
15263
|
setScrollUp(false);
|
|
@@ -15253,31 +15269,27 @@ var ArrowScroll = function ArrowScroll(_ref) {
|
|
|
15253
15269
|
};
|
|
15254
15270
|
}, [endInView]);
|
|
15255
15271
|
return jsxRuntime.jsxs("div", {
|
|
15256
|
-
className: classes$L.scroll,
|
|
15272
|
+
className: [classes$L.scroll, isLeftRight ? classes$L.leftRight : classes$L.upDown].join(' '),
|
|
15257
15273
|
children: [endInView ? jsxRuntime.jsx(jsxRuntime.Fragment, {}) : jsxRuntime.jsx("button", {
|
|
15258
|
-
onClick:
|
|
15259
|
-
return scrollDown();
|
|
15260
|
-
},
|
|
15274
|
+
onClick: scrollForward,
|
|
15261
15275
|
onMouseUp: function onMouseUp() {
|
|
15262
15276
|
return setScrollDown(false);
|
|
15263
15277
|
},
|
|
15264
15278
|
onMouseDown: function onMouseDown() {
|
|
15265
15279
|
return setScrollDown(true);
|
|
15266
15280
|
},
|
|
15267
|
-
className: clsx__default["default"](classes$L.button, classes$L.down),
|
|
15268
|
-
children:
|
|
15281
|
+
className: clsx__default["default"](classes$L.button, isLeftRight ? classes$L.right : classes$L.down),
|
|
15282
|
+
children: isLeftRight ? '►' : '▼'
|
|
15269
15283
|
}), startInView ? jsxRuntime.jsx(jsxRuntime.Fragment, {}) : jsxRuntime.jsx("button", {
|
|
15270
|
-
onClick:
|
|
15271
|
-
return scrollUp();
|
|
15272
|
-
},
|
|
15284
|
+
onClick: scrollBack,
|
|
15273
15285
|
onMouseUp: function onMouseUp() {
|
|
15274
15286
|
return setScrollUp(false);
|
|
15275
15287
|
},
|
|
15276
15288
|
onMouseDown: function onMouseDown() {
|
|
15277
15289
|
return setScrollUp(true);
|
|
15278
15290
|
},
|
|
15279
|
-
className: clsx__default["default"](classes$L.button, classes$L.up),
|
|
15280
|
-
children:
|
|
15291
|
+
className: clsx__default["default"](classes$L.button, isLeftRight ? classes$L.left : classes$L.up),
|
|
15292
|
+
children: isLeftRight ? '◄' : '▲'
|
|
15281
15293
|
})]
|
|
15282
15294
|
});
|
|
15283
15295
|
};
|
|
@@ -15511,8 +15523,8 @@ var LeftToolbar = function LeftToolbar(props) {
|
|
|
15511
15523
|
}), height && (scrollRef === null || scrollRef === void 0 || (_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : _scrollRef$current.scrollHeight) > height && jsxRuntime.jsx(ArrowScroll, {
|
|
15512
15524
|
startInView: startInView,
|
|
15513
15525
|
endInView: endInView,
|
|
15514
|
-
|
|
15515
|
-
|
|
15526
|
+
scrollForward: scrollDown,
|
|
15527
|
+
scrollBack: scrollUp
|
|
15516
15528
|
})]
|
|
15517
15529
|
});
|
|
15518
15530
|
};
|
|
@@ -15715,8 +15727,8 @@ var RightToolbar = function RightToolbar(props) {
|
|
|
15715
15727
|
}), height && (scrollRef === null || scrollRef === void 0 || (_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : _scrollRef$current.scrollHeight) > height && jsxRuntime.jsx(ArrowScroll, {
|
|
15716
15728
|
startInView: startInView,
|
|
15717
15729
|
endInView: endInView,
|
|
15718
|
-
|
|
15719
|
-
|
|
15730
|
+
scrollForward: scrollDown,
|
|
15731
|
+
scrollBack: scrollUp
|
|
15720
15732
|
})]
|
|
15721
15733
|
});
|
|
15722
15734
|
};
|
|
@@ -16073,7 +16085,7 @@ var ZoomControls = function ZoomControls(_ref) {
|
|
|
16073
16085
|
open: isExpanded,
|
|
16074
16086
|
onClose: onClose,
|
|
16075
16087
|
anchorEl: containerRef.current,
|
|
16076
|
-
container: document.querySelector(KETCHER_ROOT_NODE_CSS_SELECTOR) || document.querySelector(KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR),
|
|
16088
|
+
container: document.querySelector(KETCHER_ROOT_NODE_CSS_SELECTOR) || document.querySelector(ketcherCore.KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR),
|
|
16077
16089
|
anchorOrigin: {
|
|
16078
16090
|
vertical: 'bottom',
|
|
16079
16091
|
horizontal: 'left'
|
|
@@ -24136,6 +24148,10 @@ var CreateMonomerTool = function () {
|
|
|
24136
24148
|
value: function cancel() {
|
|
24137
24149
|
this.editor.closeMonomerCreationWizard();
|
|
24138
24150
|
}
|
|
24151
|
+
}, {
|
|
24152
|
+
key: "mousemove",
|
|
24153
|
+
value: function mousemove() {
|
|
24154
|
+
}
|
|
24139
24155
|
}]);
|
|
24140
24156
|
return CreateMonomerTool;
|
|
24141
24157
|
}();
|
|
@@ -25365,13 +25381,27 @@ var Editor$3 = function () {
|
|
|
25365
25381
|
}, {
|
|
25366
25382
|
key: "isMonomerCreationWizardEnabled",
|
|
25367
25383
|
get: function get() {
|
|
25368
|
-
var _selection$atoms,
|
|
25384
|
+
var _selection$atoms,
|
|
25385
|
+
_selection$bonds,
|
|
25386
|
+
_this = this;
|
|
25369
25387
|
if (this._monomerCreationState) {
|
|
25370
25388
|
return true;
|
|
25371
25389
|
}
|
|
25372
|
-
var selection = this.explicitSelected();
|
|
25390
|
+
var selection = this.explicitSelected(false);
|
|
25373
25391
|
if (selection && (_selection$atoms = selection.atoms) !== null && _selection$atoms !== void 0 && _selection$atoms.length && (_selection$bonds = selection.bonds) !== null && _selection$bonds !== void 0 && _selection$bonds.length) {
|
|
25374
25392
|
var currentStruct = this.render.ctab.molecule;
|
|
25393
|
+
var selectionInvalid = selection.atoms.some(function (atomId) {
|
|
25394
|
+
var atom = _this.render.ctab.molecule.atoms.get(atomId);
|
|
25395
|
+
if (!atom) {
|
|
25396
|
+
return false;
|
|
25397
|
+
}
|
|
25398
|
+
return atom.sgs.size > 0 || ketcherCore.genericsList.includes(atom.label) || _this.render.ctab.molecule.rgroups.some(function (rgroup) {
|
|
25399
|
+
return rgroup.frags.has(atom.fragment);
|
|
25400
|
+
});
|
|
25401
|
+
});
|
|
25402
|
+
if (selectionInvalid) {
|
|
25403
|
+
return false;
|
|
25404
|
+
}
|
|
25375
25405
|
var isSelectionContinuous = Editor.isSelectionContinuous(selection, currentStruct);
|
|
25376
25406
|
if (!isSelectionContinuous) {
|
|
25377
25407
|
return false;
|
|
@@ -25380,9 +25410,12 @@ var Editor$3 = function () {
|
|
|
25380
25410
|
var bondsToOutside = currentStruct.bonds.filter(function (_, bond) {
|
|
25381
25411
|
return selectionAtoms.has(bond.begin) && !selectionAtoms.has(bond.end) || selectionAtoms.has(bond.end) && !selectionAtoms.has(bond.begin);
|
|
25382
25412
|
});
|
|
25383
|
-
|
|
25384
|
-
return bond.type
|
|
25385
|
-
})
|
|
25413
|
+
if (bondsToOutside.some(function (bond) {
|
|
25414
|
+
return bond.type !== ketcherCore.Bond.PATTERN.TYPE.SINGLE;
|
|
25415
|
+
})) {
|
|
25416
|
+
return false;
|
|
25417
|
+
}
|
|
25418
|
+
this.singleBondsToOutsideOfSelection = bondsToOutside;
|
|
25386
25419
|
return this.singleBondsToOutsideOfSelection.size > 0 && this.singleBondsToOutsideOfSelection.size <= 8;
|
|
25387
25420
|
}
|
|
25388
25421
|
return false;
|
|
@@ -25391,7 +25424,7 @@ var Editor$3 = function () {
|
|
|
25391
25424
|
key: "openMonomerCreationWizard",
|
|
25392
25425
|
value: function openMonomerCreationWizard() {
|
|
25393
25426
|
var _selection$atoms2,
|
|
25394
|
-
|
|
25427
|
+
_this2 = this;
|
|
25395
25428
|
var currentStruct = this.render.ctab.molecule;
|
|
25396
25429
|
var selection = this.explicitSelected();
|
|
25397
25430
|
this.originalSelection = selection;
|
|
@@ -25403,7 +25436,7 @@ var Editor$3 = function () {
|
|
|
25403
25436
|
return a - b;
|
|
25404
25437
|
}).forEach(function (atomId, i) {
|
|
25405
25438
|
atomIdsMap.set(atomId, i);
|
|
25406
|
-
|
|
25439
|
+
_this2.atomIdsMap.set(i, atomId);
|
|
25407
25440
|
});
|
|
25408
25441
|
var attachmentPoints = new Map();
|
|
25409
25442
|
this.singleBondsToOutsideOfSelection.forEach(function (bond) {
|
|
@@ -25415,7 +25448,7 @@ var Editor$3 = function () {
|
|
|
25415
25448
|
pp: leavingAtom === null || leavingAtom === void 0 ? void 0 : leavingAtom.pp
|
|
25416
25449
|
});
|
|
25417
25450
|
var newLeavingAtomId = selectedStruct.atoms.add(newLeavingAtom);
|
|
25418
|
-
|
|
25451
|
+
_this2.atomIdsMap.set(newLeavingAtomId, leavingAtomId);
|
|
25419
25452
|
var bondEdgeForAttachmentAtom = bondEdgeForLeavingAtom === 'end' ? 'begin' : 'end';
|
|
25420
25453
|
var attachmentAtomId = bond[bondEdgeForAttachmentAtom];
|
|
25421
25454
|
var attachmentAtomIdInSelectedStruct = atomIdsMap.get(attachmentAtomId);
|
|
@@ -25429,10 +25462,10 @@ var Editor$3 = function () {
|
|
|
25429
25462
|
});
|
|
25430
25463
|
selectedStruct.bonds.add(newBond);
|
|
25431
25464
|
attachmentPoints.set(attachmentAtomIdInSelectedStruct, newLeavingAtomId);
|
|
25432
|
-
|
|
25465
|
+
_this2.atomIdsMap.set(attachmentAtomIdInSelectedStruct, attachmentAtomId);
|
|
25433
25466
|
});
|
|
25434
25467
|
this._monomerCreationState = {
|
|
25435
|
-
originalStruct: currentStruct
|
|
25468
|
+
originalStruct: currentStruct,
|
|
25436
25469
|
attachmentAtomIdToLeavingAtomId: attachmentPoints
|
|
25437
25470
|
};
|
|
25438
25471
|
this.render.monomerCreationRenderState = {
|
|
@@ -25454,6 +25487,8 @@ var Editor$3 = function () {
|
|
|
25454
25487
|
}, {
|
|
25455
25488
|
key: "saveNewMonomer",
|
|
25456
25489
|
value: function saveNewMonomer(data) {
|
|
25490
|
+
var _this$originalSelecti,
|
|
25491
|
+
_this3 = this;
|
|
25457
25492
|
if (!this._monomerCreationState) {
|
|
25458
25493
|
throw new Error('Monomer creation wizard is not active, cannot save new monomer');
|
|
25459
25494
|
}
|
|
@@ -25477,6 +25512,7 @@ var Editor$3 = function () {
|
|
|
25477
25512
|
var monomerId = "".concat(symbol, "___").concat(name);
|
|
25478
25513
|
var monomerRef = ketcherCore.setMonomerTemplatePrefix(monomerId);
|
|
25479
25514
|
var monomerHELMClass = ketcherCore.getHELMClassByKetMonomerClass(type);
|
|
25515
|
+
var naturalAnalogueToUse = ketcherCore.fillNaturalAnalogueForPhosphateAndSugar(naturalAnalogue, type);
|
|
25480
25516
|
var monomerTemplate = {
|
|
25481
25517
|
type: ketcherCore.KetTemplateType.MONOMER_TEMPLATE,
|
|
25482
25518
|
id: monomerId,
|
|
@@ -25484,8 +25520,8 @@ var Editor$3 = function () {
|
|
|
25484
25520
|
classHELM: monomerHELMClass,
|
|
25485
25521
|
alias: symbol,
|
|
25486
25522
|
fullName: name,
|
|
25487
|
-
naturalAnalogShort:
|
|
25488
|
-
atoms: ketMicromolecule.mol0.atoms,
|
|
25523
|
+
naturalAnalogShort: naturalAnalogueToUse,
|
|
25524
|
+
atoms: ketcherCore.normalizeMonomerAtomsPositions(ketMicromolecule.mol0.atoms),
|
|
25489
25525
|
bonds: ketMicromolecule.mol0.bonds,
|
|
25490
25526
|
attachmentPoints: attachmentPoints,
|
|
25491
25527
|
root: {
|
|
@@ -25510,9 +25546,24 @@ var Editor$3 = function () {
|
|
|
25510
25546
|
var monomerPosition = new ketcherCore.Vec2((this.selectionBBox.min.x + this.selectionBBox.max.x) / 2, (this.selectionBBox.min.y + this.selectionBBox.max.y) / 2);
|
|
25511
25547
|
var monomer = new Monomer(monomerItem, monomerPosition);
|
|
25512
25548
|
this.closeMonomerCreationWizard();
|
|
25549
|
+
var sGroupAttachmentPoints = ketcherCore.MacromoleculesConverter.convertMonomerAttachmentPointsToSGroupAttachmentPoints(monomer, this.atomIdsMap);
|
|
25550
|
+
this.singleBondsToOutsideOfSelection.forEach(function (bond) {
|
|
25551
|
+
var attachmentPointToBond = sGroupAttachmentPoints.find(function (point) {
|
|
25552
|
+
return point.atomId === bond.begin || point.atomId === bond.end;
|
|
25553
|
+
});
|
|
25554
|
+
if (attachmentPointToBond) {
|
|
25555
|
+
bond.beginSuperatomAttachmentPointNumber = attachmentPointToBond.attachmentPointNumber;
|
|
25556
|
+
}
|
|
25557
|
+
});
|
|
25513
25558
|
var action = ketcherCore.fromSgroupAddition(this.render.ctab, ketcherCore.SGroup.TYPES.SUP, this.originalSelection.atoms, {
|
|
25514
25559
|
expanded: true
|
|
25515
|
-
}, this.render.ctab.molecule.sgroups.newId(),
|
|
25560
|
+
}, this.render.ctab.molecule.sgroups.newId(), sGroupAttachmentPoints, monomer.position, true, monomer.monomerItem.props.MonomerName, null, monomer);
|
|
25561
|
+
(_this$originalSelecti = this.originalSelection.atoms) === null || _this$originalSelecti === void 0 || _this$originalSelecti.forEach(function (atomId) {
|
|
25562
|
+
var atom = _this3.render.ctab.molecule.atoms.get(atomId);
|
|
25563
|
+
if (atom) {
|
|
25564
|
+
atom.fragment = -1;
|
|
25565
|
+
}
|
|
25566
|
+
});
|
|
25516
25567
|
this.update(action);
|
|
25517
25568
|
}
|
|
25518
25569
|
}, {
|
|
@@ -25700,6 +25751,11 @@ var Editor$3 = function () {
|
|
|
25700
25751
|
ketcherCore.ketcherProvider.getKetcher(this.ketcherId).changeEvent.add(subscribeFuncWrapper);
|
|
25701
25752
|
break;
|
|
25702
25753
|
}
|
|
25754
|
+
case 'libraryUpdate':
|
|
25755
|
+
{
|
|
25756
|
+
ketcherCore.ketcherProvider.getKetcher(this.ketcherId).libraryUpdateEvent.add(handler);
|
|
25757
|
+
break;
|
|
25758
|
+
}
|
|
25703
25759
|
default:
|
|
25704
25760
|
this.event[eventName].add(handler);
|
|
25705
25761
|
}
|
|
@@ -25725,6 +25781,7 @@ var Editor$3 = function () {
|
|
|
25725
25781
|
}, {
|
|
25726
25782
|
key: "explicitSelected",
|
|
25727
25783
|
value: function explicitSelected() {
|
|
25784
|
+
var autoSelectBonds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
25728
25785
|
var selection = this.selection() || {};
|
|
25729
25786
|
var res = structObjects.reduce(function (acc, key) {
|
|
25730
25787
|
acc[key] = selection[key] ? selection[key].slice() : [];
|
|
@@ -25745,7 +25802,7 @@ var Editor$3 = function () {
|
|
|
25745
25802
|
}
|
|
25746
25803
|
});
|
|
25747
25804
|
}
|
|
25748
|
-
if (res.atoms && res.bonds) {
|
|
25805
|
+
if (autoSelectBonds && res.atoms && res.bonds) {
|
|
25749
25806
|
struct.bonds.forEach(function (bond, bid) {
|
|
25750
25807
|
if (res.bonds.indexOf(bid) < 0 && res.atoms.indexOf(bond.begin) >= 0 && res.atoms.indexOf(bond.end) >= 0) {
|
|
25751
25808
|
res.bonds = res.bonds || [];
|
|
@@ -27696,6 +27753,47 @@ function getMenuPropsForSelection(selection, selectedFunctionalGroups, ketcherId
|
|
|
27696
27753
|
}
|
|
27697
27754
|
}
|
|
27698
27755
|
|
|
27756
|
+
var MonomerTypeSelectConfig = [{
|
|
27757
|
+
value: ketcherCore.KetMonomerClass.AminoAcid,
|
|
27758
|
+
label: 'Amino acid',
|
|
27759
|
+
iconName: 'peptide'
|
|
27760
|
+
}, {
|
|
27761
|
+
value: ketcherCore.KetMonomerClass.Sugar,
|
|
27762
|
+
label: 'Sugar',
|
|
27763
|
+
iconName: 'sugar'
|
|
27764
|
+
}, {
|
|
27765
|
+
value: ketcherCore.KetMonomerClass.Base,
|
|
27766
|
+
label: 'Base',
|
|
27767
|
+
iconName: 'base'
|
|
27768
|
+
}, {
|
|
27769
|
+
value: ketcherCore.KetMonomerClass.Phosphate,
|
|
27770
|
+
label: 'Phosphate',
|
|
27771
|
+
iconName: 'phosphate'
|
|
27772
|
+
}, {
|
|
27773
|
+
value: ketcherCore.KetMonomerClass.RNA,
|
|
27774
|
+
label: 'Nucleotide',
|
|
27775
|
+
iconName: 'nucleotide'
|
|
27776
|
+
}, {
|
|
27777
|
+
value: ketcherCore.KetMonomerClass.CHEM,
|
|
27778
|
+
label: 'CHEM',
|
|
27779
|
+
iconName: 'chem'
|
|
27780
|
+
}];
|
|
27781
|
+
var NotificationMessages = {
|
|
27782
|
+
defaultAttachmentPoints: 'Attachment points are set by default with hydrogens as leaving groups.',
|
|
27783
|
+
emptyMandatoryFields: 'Mandatory fields must be filled.',
|
|
27784
|
+
invalidSymbol: 'The monomer symbol must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).',
|
|
27785
|
+
symbolExists: 'The symbol must be unique amongst peptide, RNA, or CHEM monomers.',
|
|
27786
|
+
editingIsNotAllowed: 'Editing of the structure is not allowed.'
|
|
27787
|
+
};
|
|
27788
|
+
var NotificationTypes = {
|
|
27789
|
+
defaultAttachmentPoints: 'info',
|
|
27790
|
+
emptyMandatoryFields: 'error',
|
|
27791
|
+
invalidSymbol: 'error',
|
|
27792
|
+
symbolExists: 'error',
|
|
27793
|
+
editingIsNotAllowed: 'error'
|
|
27794
|
+
};
|
|
27795
|
+
var MonomerCreationExternalNotificationAction = 'MonomerCreationExternalNotification';
|
|
27796
|
+
|
|
27699
27797
|
function ownKeys$J(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; }
|
|
27700
27798
|
function _objectSpread$J(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$J(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$J(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
27701
27799
|
var ContextMenuTrigger = function ContextMenuTrigger(_ref) {
|
|
@@ -27728,6 +27826,12 @@ var ContextMenuTrigger = function ContextMenuTrigger(_ref) {
|
|
|
27728
27826
|
event.preventDefault();
|
|
27729
27827
|
var ketcher = ketcherCore.ketcherProvider.getKetcher(ketcherId);
|
|
27730
27828
|
var editor = ketcher.editor;
|
|
27829
|
+
if (editor.monomerCreationState !== null) {
|
|
27830
|
+
window.dispatchEvent(new CustomEvent(MonomerCreationExternalNotificationAction, {
|
|
27831
|
+
detail: 'editingIsNotAllowed'
|
|
27832
|
+
}));
|
|
27833
|
+
return;
|
|
27834
|
+
}
|
|
27731
27835
|
if (editor.render.options.viewOnlyMode) {
|
|
27732
27836
|
return;
|
|
27733
27837
|
}
|
|
@@ -28161,7 +28265,8 @@ var Select$1 = function Select(_ref2) {
|
|
|
28161
28265
|
formName = _ref2.formName,
|
|
28162
28266
|
name = _ref2.name,
|
|
28163
28267
|
placeholder = _ref2.placeholder,
|
|
28164
|
-
testId = _ref2['data-testid']
|
|
28268
|
+
testId = _ref2['data-testid'],
|
|
28269
|
+
error = _ref2.error;
|
|
28165
28270
|
var _useState = React.useState(),
|
|
28166
28271
|
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
28167
28272
|
currentValue = _useState2[0],
|
|
@@ -28190,6 +28295,7 @@ var Select$1 = function Select(_ref2) {
|
|
|
28190
28295
|
},
|
|
28191
28296
|
IconComponent: ChevronIcon$1,
|
|
28192
28297
|
"data-testid": testId,
|
|
28298
|
+
error: error,
|
|
28193
28299
|
children: options && options.map(function (option) {
|
|
28194
28300
|
var _option$children;
|
|
28195
28301
|
var isDivider = typeof (option === null || option === void 0 ? void 0 : option.value) === 'string' ? option.value.includes('Divider') : false;
|
|
@@ -28360,7 +28466,8 @@ var NaturalAnaloguePicker = function NaturalAnaloguePicker(_ref2) {
|
|
|
28360
28466
|
var monomerType = _ref2.monomerType,
|
|
28361
28467
|
value = _ref2.value,
|
|
28362
28468
|
onChange = _ref2.onChange,
|
|
28363
|
-
className = _ref2.className
|
|
28469
|
+
className = _ref2.className,
|
|
28470
|
+
error = _ref2.error;
|
|
28364
28471
|
var disabled = !isNaturalAnalogueRequired(monomerType);
|
|
28365
28472
|
var options = monomerType === ketcherCore.KetMonomerClass.AminoAcid ? aminoAcidOptions : rnaOptions;
|
|
28366
28473
|
var renderValue = React.useCallback(function (selected) {
|
|
@@ -28404,6 +28511,7 @@ var NaturalAnaloguePicker = function NaturalAnaloguePicker(_ref2) {
|
|
|
28404
28511
|
IconComponent: ChevronIcon,
|
|
28405
28512
|
"data-testid": "natural-analogue-picker",
|
|
28406
28513
|
disabled: disabled,
|
|
28514
|
+
error: error,
|
|
28407
28515
|
children: options.map(function (option) {
|
|
28408
28516
|
return jsxRuntime.jsx(MenuItem__default["default"], {
|
|
28409
28517
|
value: option.value,
|
|
@@ -28448,7 +28556,7 @@ var AttributeField = function AttributeField(_ref) {
|
|
|
28448
28556
|
});
|
|
28449
28557
|
};
|
|
28450
28558
|
|
|
28451
|
-
var styles$f = {"notification":"Notification-module_notification__yHqXk","notificationStrip":"Notification-module_notificationStrip__gSCg2","info":"Notification-module_info__M2qqL","
|
|
28559
|
+
var styles$f = {"notification":"Notification-module_notification__yHqXk","notificationStrip":"Notification-module_notificationStrip__gSCg2","info":"Notification-module_info__M2qqL","error":"Notification-module_error__I3OUR","notificationIcon":"Notification-module_notificationIcon__weZ-g","notificationText":"Notification-module_notificationText__4-qhV","notificationButton":"Notification-module_notificationButton__Bgw5u"};
|
|
28452
28560
|
|
|
28453
28561
|
var iconMap = {
|
|
28454
28562
|
info: 'checkFilled',
|
|
@@ -28485,37 +28593,6 @@ var Notification = function Notification(_ref) {
|
|
|
28485
28593
|
|
|
28486
28594
|
function ownKeys$H(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; }
|
|
28487
28595
|
function _objectSpread$H(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$H(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$H(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
28488
|
-
var MonomerTypeSelectConfig = [{
|
|
28489
|
-
value: ketcherCore.KetMonomerClass.AminoAcid,
|
|
28490
|
-
label: 'Amino acid',
|
|
28491
|
-
iconName: 'peptide'
|
|
28492
|
-
}, {
|
|
28493
|
-
value: ketcherCore.KetMonomerClass.Sugar,
|
|
28494
|
-
label: 'Sugar',
|
|
28495
|
-
iconName: 'sugar'
|
|
28496
|
-
}, {
|
|
28497
|
-
value: ketcherCore.KetMonomerClass.Base,
|
|
28498
|
-
label: 'Base',
|
|
28499
|
-
iconName: 'base'
|
|
28500
|
-
}, {
|
|
28501
|
-
value: ketcherCore.KetMonomerClass.Phosphate,
|
|
28502
|
-
label: 'Phosphate',
|
|
28503
|
-
iconName: 'phosphate'
|
|
28504
|
-
}, {
|
|
28505
|
-
value: ketcherCore.KetMonomerClass.RNA,
|
|
28506
|
-
label: 'Nucleotide',
|
|
28507
|
-
iconName: 'nucleotide'
|
|
28508
|
-
}, {
|
|
28509
|
-
value: ketcherCore.KetMonomerClass.CHEM,
|
|
28510
|
-
label: 'CHEM',
|
|
28511
|
-
iconName: 'chem'
|
|
28512
|
-
}];
|
|
28513
|
-
var notificationMessages = {
|
|
28514
|
-
defaultAttachmentPoints: 'Attachment points are set by default with hydrogens as leaving groups.',
|
|
28515
|
-
emptyMandatoryFields: 'Mandatory fields must be filled.',
|
|
28516
|
-
invalidSymbol: 'The monomer symbol must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).',
|
|
28517
|
-
symbolExists: 'The symbol must be unique amongst peptide, RNA, or CHEM monomers.'
|
|
28518
|
-
};
|
|
28519
28596
|
var initialWizardState = {
|
|
28520
28597
|
values: {
|
|
28521
28598
|
type: undefined,
|
|
@@ -28526,7 +28603,7 @@ var initialWizardState = {
|
|
|
28526
28603
|
errors: {},
|
|
28527
28604
|
notifications: new Map([['defaultAttachmentPoints', {
|
|
28528
28605
|
type: 'info',
|
|
28529
|
-
message:
|
|
28606
|
+
message: NotificationMessages.defaultAttachmentPoints
|
|
28530
28607
|
}]])
|
|
28531
28608
|
};
|
|
28532
28609
|
var wizardReducer = function wizardReducer(state, action) {
|
|
@@ -28535,8 +28612,12 @@ var wizardReducer = function wizardReducer(state, action) {
|
|
|
28535
28612
|
{
|
|
28536
28613
|
var fieldId = action.fieldId,
|
|
28537
28614
|
value = action.value;
|
|
28615
|
+
var values = _objectSpread$H(_objectSpread$H({}, state.values), {}, _defineProperty__default["default"]({}, fieldId, value));
|
|
28616
|
+
if (fieldId === 'type') {
|
|
28617
|
+
values.naturalAnalogue = '';
|
|
28618
|
+
}
|
|
28538
28619
|
return _objectSpread$H(_objectSpread$H({}, state), {}, {
|
|
28539
|
-
values:
|
|
28620
|
+
values: values,
|
|
28540
28621
|
errors: _objectSpread$H(_objectSpread$H({}, state.errors), {}, _defineProperty__default["default"]({}, fieldId, undefined))
|
|
28541
28622
|
});
|
|
28542
28623
|
}
|
|
@@ -28552,6 +28633,20 @@ var wizardReducer = function wizardReducer(state, action) {
|
|
|
28552
28633
|
notifications: new Map([].concat(_toConsumableArray__default["default"](state.notifications), _toConsumableArray__default["default"](action.notifications)))
|
|
28553
28634
|
});
|
|
28554
28635
|
}
|
|
28636
|
+
case 'AddNotification':
|
|
28637
|
+
{
|
|
28638
|
+
var notifications = new Map(state.notifications);
|
|
28639
|
+
var id = action.id;
|
|
28640
|
+
if (!notifications.has(id)) {
|
|
28641
|
+
notifications.set(id, {
|
|
28642
|
+
type: NotificationTypes[id],
|
|
28643
|
+
message: NotificationMessages[id]
|
|
28644
|
+
});
|
|
28645
|
+
}
|
|
28646
|
+
return _objectSpread$H(_objectSpread$H({}, state), {}, {
|
|
28647
|
+
notifications: notifications
|
|
28648
|
+
});
|
|
28649
|
+
}
|
|
28555
28650
|
case 'ResetErrors':
|
|
28556
28651
|
{
|
|
28557
28652
|
return _objectSpread$H(_objectSpread$H({}, state), {}, {
|
|
@@ -28564,10 +28659,10 @@ var wizardReducer = function wizardReducer(state, action) {
|
|
|
28564
28659
|
}
|
|
28565
28660
|
case 'RemoveNotification':
|
|
28566
28661
|
{
|
|
28567
|
-
var
|
|
28568
|
-
|
|
28662
|
+
var _notifications = new Map(state.notifications);
|
|
28663
|
+
_notifications["delete"](action.id);
|
|
28569
28664
|
return _objectSpread$H(_objectSpread$H({}, state), {}, {
|
|
28570
|
-
notifications:
|
|
28665
|
+
notifications: _notifications
|
|
28571
28666
|
});
|
|
28572
28667
|
}
|
|
28573
28668
|
default:
|
|
@@ -28586,7 +28681,7 @@ var validateInputs = function validateInputs(values) {
|
|
|
28586
28681
|
errors[key] = true;
|
|
28587
28682
|
notifications.set('emptyMandatoryFields', {
|
|
28588
28683
|
type: 'error',
|
|
28589
|
-
message:
|
|
28684
|
+
message: NotificationMessages.emptyMandatoryFields
|
|
28590
28685
|
});
|
|
28591
28686
|
}
|
|
28592
28687
|
return;
|
|
@@ -28597,7 +28692,16 @@ var validateInputs = function validateInputs(values) {
|
|
|
28597
28692
|
errors[key] = true;
|
|
28598
28693
|
notifications.set('invalidSymbol', {
|
|
28599
28694
|
type: 'error',
|
|
28600
|
-
message:
|
|
28695
|
+
message: NotificationMessages.invalidSymbol
|
|
28696
|
+
});
|
|
28697
|
+
return;
|
|
28698
|
+
}
|
|
28699
|
+
var editor = ketcherCore.CoreEditor.provideEditorInstance();
|
|
28700
|
+
if (editor.checkIfMonomerSymbolClassPairExists(value, values.type)) {
|
|
28701
|
+
errors[key] = true;
|
|
28702
|
+
notifications.set('symbolExists', {
|
|
28703
|
+
type: 'error',
|
|
28704
|
+
message: NotificationMessages.symbolExists
|
|
28601
28705
|
});
|
|
28602
28706
|
}
|
|
28603
28707
|
}
|
|
@@ -28620,6 +28724,21 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
28620
28724
|
symbol = values.symbol,
|
|
28621
28725
|
name = values.name,
|
|
28622
28726
|
naturalAnalogue = values.naturalAnalogue;
|
|
28727
|
+
React.useEffect(function () {
|
|
28728
|
+
var externalNotificationEventListener = function externalNotificationEventListener(event) {
|
|
28729
|
+
var notificationId = event.detail;
|
|
28730
|
+
if (notificationId) {
|
|
28731
|
+
wizardStateDispatch({
|
|
28732
|
+
type: 'AddNotification',
|
|
28733
|
+
id: notificationId
|
|
28734
|
+
});
|
|
28735
|
+
}
|
|
28736
|
+
};
|
|
28737
|
+
window.addEventListener(MonomerCreationExternalNotificationAction, externalNotificationEventListener);
|
|
28738
|
+
return function () {
|
|
28739
|
+
window.removeEventListener(MonomerCreationExternalNotificationAction, externalNotificationEventListener);
|
|
28740
|
+
};
|
|
28741
|
+
}, []);
|
|
28623
28742
|
var handleFieldChange = function handleFieldChange(fieldId, value) {
|
|
28624
28743
|
if (fieldId === 'type') {
|
|
28625
28744
|
wizardStateDispatch({
|
|
@@ -28724,13 +28843,14 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
28724
28843
|
children: [jsxRuntime.jsx(AttributeField, {
|
|
28725
28844
|
title: "Type",
|
|
28726
28845
|
control: jsxRuntime.jsx(Select$1, {
|
|
28727
|
-
className:
|
|
28846
|
+
className: styles$j.input,
|
|
28728
28847
|
options: monomerTypeSelectOptions,
|
|
28729
28848
|
placeholder: "Select monomer type",
|
|
28730
28849
|
value: type,
|
|
28731
28850
|
onChange: function onChange(value) {
|
|
28732
28851
|
return handleFieldChange('type', value);
|
|
28733
|
-
}
|
|
28852
|
+
},
|
|
28853
|
+
error: errors.type
|
|
28734
28854
|
}),
|
|
28735
28855
|
required: true
|
|
28736
28856
|
}), jsxRuntime.jsx(AttributeField, {
|
|
@@ -28738,7 +28858,7 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
28738
28858
|
control: jsxRuntime.jsx("input", {
|
|
28739
28859
|
type: "text",
|
|
28740
28860
|
className: clsx__default["default"](styles$j.input, errors.symbol && styles$j.error),
|
|
28741
|
-
placeholder: "
|
|
28861
|
+
placeholder: "e.g. PEG-2",
|
|
28742
28862
|
value: symbol,
|
|
28743
28863
|
onChange: function onChange(event) {
|
|
28744
28864
|
return handleFieldChange('symbol', event.target.value);
|
|
@@ -28750,7 +28870,7 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
28750
28870
|
control: jsxRuntime.jsx("input", {
|
|
28751
28871
|
type: "text",
|
|
28752
28872
|
className: clsx__default["default"](styles$j.input, errors.name && styles$j.error),
|
|
28753
|
-
placeholder: "
|
|
28873
|
+
placeholder: "e.g. Diethylene Glycol",
|
|
28754
28874
|
value: name,
|
|
28755
28875
|
onChange: function onChange(event) {
|
|
28756
28876
|
return handleFieldChange('name', event.target.value);
|
|
@@ -28760,12 +28880,12 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
28760
28880
|
}), jsxRuntime.jsx(AttributeField, {
|
|
28761
28881
|
title: "Natural analogue",
|
|
28762
28882
|
control: jsxRuntime.jsx(NaturalAnaloguePicker, {
|
|
28763
|
-
className: clsx__default["default"](errors.type && styles$j.error),
|
|
28764
28883
|
monomerType: type,
|
|
28765
28884
|
value: naturalAnalogue,
|
|
28766
28885
|
onChange: function onChange(value) {
|
|
28767
28886
|
return handleFieldChange('naturalAnalogue', value);
|
|
28768
|
-
}
|
|
28887
|
+
},
|
|
28888
|
+
error: errors.naturalAnalogue
|
|
28769
28889
|
}),
|
|
28770
28890
|
disabled: !isNaturalAnalogueRequired(type),
|
|
28771
28891
|
required: true
|
|
@@ -36795,8 +36915,8 @@ var KetcherBuilder = function () {
|
|
|
36795
36915
|
cleanup = initApp(prevKetcherId, ketcherId, element, appRoot, staticResourcesUrl, {
|
|
36796
36916
|
buttons: buttons || {},
|
|
36797
36917
|
errorHandler: errorHandler || null,
|
|
36798
|
-
version: "3.7.0-rc.
|
|
36799
|
-
buildDate: "2025-08-
|
|
36918
|
+
version: "3.7.0-rc.2" ,
|
|
36919
|
+
buildDate: "2025-08-20T17:19:11" ,
|
|
36800
36920
|
buildNumber: '',
|
|
36801
36921
|
customButtons: customButtons || []
|
|
36802
36922
|
}, structService, resolve, togglerComponent);
|
|
@@ -37091,7 +37211,7 @@ var ModeControl = function ModeControl(_ref3) {
|
|
|
37091
37211
|
function ownKeys(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; }
|
|
37092
37212
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
37093
37213
|
var MacromoleculesEditorComponent = React.lazy(function () {
|
|
37094
|
-
return Promise.resolve().then(function () { return require('./index.modern-
|
|
37214
|
+
return Promise.resolve().then(function () { return require('./index.modern-c52e0e6a.js'); });
|
|
37095
37215
|
});
|
|
37096
37216
|
var Editor = function Editor(props) {
|
|
37097
37217
|
var _useState = React.useState(false),
|
|
@@ -37104,12 +37224,16 @@ var Editor = function Editor(props) {
|
|
|
37104
37224
|
setMoleculesEditor = _useState4[1];
|
|
37105
37225
|
var _useState5 = React.useState(),
|
|
37106
37226
|
_useState6 = _slicedToArray__default["default"](_useState5, 2),
|
|
37107
|
-
|
|
37108
|
-
|
|
37109
|
-
var _useState7 = React.useState(
|
|
37227
|
+
ketcher = _useState6[0],
|
|
37228
|
+
setKetcher = _useState6[1];
|
|
37229
|
+
var _useState7 = React.useState(),
|
|
37110
37230
|
_useState8 = _slicedToArray__default["default"](_useState7, 2),
|
|
37111
|
-
|
|
37112
|
-
|
|
37231
|
+
macromoleculesEditor = _useState8[0],
|
|
37232
|
+
setMacromoleculesEditor = _useState8[1];
|
|
37233
|
+
var _useState9 = React.useState(''),
|
|
37234
|
+
_useState10 = _slicedToArray__default["default"](_useState9, 2),
|
|
37235
|
+
ketcherId = _useState10[0],
|
|
37236
|
+
setKetcherId = _useState10[1];
|
|
37113
37237
|
var togglePolymerEditor = function togglePolymerEditor(toggleValue) {
|
|
37114
37238
|
setShowPolymerEditor(toggleValue);
|
|
37115
37239
|
window.isPolymerEditorTurnedOn = toggleValue;
|
|
@@ -37118,6 +37242,24 @@ var Editor = function Editor(props) {
|
|
|
37118
37242
|
toggle: togglePolymerEditor,
|
|
37119
37243
|
isPolymerEditor: showPolymerEditor
|
|
37120
37244
|
}) : undefined;
|
|
37245
|
+
React.useEffect(function () {
|
|
37246
|
+
var switchToMacromoleculesModeHandler = function switchToMacromoleculesModeHandler() {
|
|
37247
|
+
togglePolymerEditor(true);
|
|
37248
|
+
};
|
|
37249
|
+
var switchToMoleculesModeHandler = function switchToMoleculesModeHandler() {
|
|
37250
|
+
togglePolymerEditor(false);
|
|
37251
|
+
};
|
|
37252
|
+
if (macromoleculesEditor) {
|
|
37253
|
+
macromoleculesEditor.events.switchToMacromoleculesMode.add(switchToMacromoleculesModeHandler);
|
|
37254
|
+
macromoleculesEditor.events.switchToMoleculesMode.add(switchToMoleculesModeHandler);
|
|
37255
|
+
}
|
|
37256
|
+
return function () {
|
|
37257
|
+
if (macromoleculesEditor) {
|
|
37258
|
+
macromoleculesEditor.events.switchToMacromoleculesMode.remove(switchToMacromoleculesModeHandler);
|
|
37259
|
+
macromoleculesEditor.events.switchToMoleculesMode.remove(switchToMoleculesModeHandler);
|
|
37260
|
+
}
|
|
37261
|
+
};
|
|
37262
|
+
}, [macromoleculesEditor]);
|
|
37121
37263
|
React.useEffect(function () {
|
|
37122
37264
|
return function () {
|
|
37123
37265
|
window.isPolymerEditorTurnedOn = false;
|
|
@@ -37133,9 +37275,14 @@ var Editor = function Editor(props) {
|
|
|
37133
37275
|
}
|
|
37134
37276
|
}
|
|
37135
37277
|
}, [showPolymerEditor]);
|
|
37278
|
+
React.useEffect(function () {
|
|
37279
|
+
if (ketcher && moleculesEditor && (macromoleculesEditor || props.disableMacromoleculesEditor)) {
|
|
37280
|
+
var _props$onInit;
|
|
37281
|
+
(_props$onInit = props.onInit) === null || _props$onInit === void 0 || _props$onInit.call(props, ketcher);
|
|
37282
|
+
}
|
|
37283
|
+
}, [moleculesEditor, macromoleculesEditor]);
|
|
37136
37284
|
var onInitMoleculesEditor = function onInitMoleculesEditor(ketcher) {
|
|
37137
|
-
|
|
37138
|
-
(_props$onInit = props.onInit) === null || _props$onInit === void 0 || _props$onInit.call(props, ketcher);
|
|
37285
|
+
setKetcher(ketcher);
|
|
37139
37286
|
setMoleculesEditor(ketcher.editor);
|
|
37140
37287
|
};
|
|
37141
37288
|
var onInitMacromoleculesEditor = function onInitMacromoleculesEditor(macromoleculesEditor) {
|
|
@@ -37174,17 +37321,25 @@ var Editor = function Editor(props) {
|
|
|
37174
37321
|
});
|
|
37175
37322
|
};
|
|
37176
37323
|
|
|
37324
|
+
Object.defineProperty(exports, 'EditorClassName', {
|
|
37325
|
+
enumerable: true,
|
|
37326
|
+
get: function () { return ketcherCore.EditorClassName; }
|
|
37327
|
+
});
|
|
37328
|
+
Object.defineProperty(exports, 'KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR', {
|
|
37329
|
+
enumerable: true,
|
|
37330
|
+
get: function () { return ketcherCore.KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR; }
|
|
37331
|
+
});
|
|
37177
37332
|
exports.ACS_STYLE_DEFAULT_SETTINGS = ACS_STYLE_DEFAULT_SETTINGS;
|
|
37178
37333
|
exports.Accordion = Accordion$1;
|
|
37179
37334
|
exports.AmbiguousMonomerPreview = AmbiguousMonomerPreview;
|
|
37180
37335
|
exports.AppContext = appContext;
|
|
37336
|
+
exports.ArrowScroll = ArrowScroll;
|
|
37181
37337
|
exports.Button = Button;
|
|
37182
37338
|
exports.Container = Container;
|
|
37183
37339
|
exports.Content = Content;
|
|
37184
37340
|
exports.ContentLine = ContentLine;
|
|
37185
37341
|
exports.Dialog = Dialog;
|
|
37186
37342
|
exports.Editor = Editor;
|
|
37187
|
-
exports.EditorClassName = EditorClassName;
|
|
37188
37343
|
exports.Header = Header$1;
|
|
37189
37344
|
exports.Icon = Icon;
|
|
37190
37345
|
exports.IconButton = IconButton;
|
|
@@ -37192,7 +37347,6 @@ exports.IconButtonCustomIcon = IconButtonCustomIcon;
|
|
|
37192
37347
|
exports.IndigoProvider = IndigoProvider;
|
|
37193
37348
|
exports.InfoModal = InfoModal$1;
|
|
37194
37349
|
exports.Input = Input$2;
|
|
37195
|
-
exports.KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR = KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR;
|
|
37196
37350
|
exports.KETCHER_ROOT_NODE_CLASS_NAME = KETCHER_ROOT_NODE_CLASS_NAME;
|
|
37197
37351
|
exports.KETCHER_ROOT_NODE_CSS_SELECTOR = KETCHER_ROOT_NODE_CSS_SELECTOR;
|
|
37198
37352
|
exports.MODES = MODES;
|
|
@@ -37210,4 +37364,5 @@ exports.calculateNucleoElementPreviewTop = calculateNucleoElementPreviewTop;
|
|
|
37210
37364
|
exports.getIconName = getIconName;
|
|
37211
37365
|
exports.ketcherInitEventName = ketcherInitEventName;
|
|
37212
37366
|
exports.preview = preview;
|
|
37367
|
+
exports.usePortalStyle = usePortalStyle;
|
|
37213
37368
|
//# sourceMappingURL=index.js.map
|