ketcher-react 2.23.0-rc.4 → 2.24.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/components/Icon/utils/iconNameToIcon.d.ts +1 -0
- package/dist/constants.d.ts +2 -0
- package/dist/index.js +545 -182
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +545 -184
- package/dist/index.modern.js.map +1 -1
- package/dist/script/builders/ketcher/KetcherBuilder.d.ts +5 -1
- package/dist/script/editor/Editor.d.ts +3 -4
- package/dist/script/editor/index.d.ts +1 -0
- package/dist/script/editor/shared/closest.d.ts +28 -13
- package/dist/script/editor/shared/closest.types.d.ts +9 -0
- package/dist/script/editor/tool/helper/isMacroMolecule.d.ts +1 -1
- package/dist/script/editor/tool/helper/lasso.d.ts +3 -0
- package/dist/script/editor/tool/helper/locate.d.ts +5 -2
- package/dist/script/editor/tool/image.d.ts +18 -0
- package/dist/script/editor/tool/index.d.ts +0 -15
- package/dist/script/editor/utils/structLayout.d.ts +1 -1
- package/dist/script/index.d.ts +4 -1
- package/dist/script/ui/App/initApp.d.ts +2 -1
- package/dist/script/ui/action/index.d.ts +7 -0
- package/dist/script/ui/action/tools.d.ts +7 -0
- package/dist/script/ui/state/hotkeys.d.ts +1 -0
- package/dist/script/ui/state/index.d.ts +5 -0
- package/dist/script/ui/state/mouse.d.ts +1 -0
- package/dist/script/ui/views/components/ContextMenu/ContextMenu.d.ts +1 -1
- package/dist/script/ui/views/modal/components/toolbox/Atom/helper.d.ts +1 -1
- package/dist/script/ui/views/toolbars/toolbar.types.d.ts +2 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -79,7 +79,7 @@ require('draft-js/dist/Draft.css');
|
|
|
79
79
|
var draftJs = require('draft-js');
|
|
80
80
|
var createStyles = require('draft-js-custom-styles');
|
|
81
81
|
var _objectDestructuringEmpty = require('@babel/runtime/helpers/objectDestructuringEmpty');
|
|
82
|
-
var _extends$
|
|
82
|
+
var _extends$3k = require('@babel/runtime/helpers/extends');
|
|
83
83
|
var MuiAutocomplete = require('@mui/material/Autocomplete');
|
|
84
84
|
var client = require('react-dom/client');
|
|
85
85
|
|
|
@@ -142,10 +142,11 @@ var Tabs__default = /*#__PURE__*/_interopDefaultLegacy(Tabs$1);
|
|
|
142
142
|
var Tab__default = /*#__PURE__*/_interopDefaultLegacy(Tab);
|
|
143
143
|
var createStyles__default = /*#__PURE__*/_interopDefaultLegacy(createStyles);
|
|
144
144
|
var _objectDestructuringEmpty__default = /*#__PURE__*/_interopDefaultLegacy(_objectDestructuringEmpty);
|
|
145
|
-
var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends$
|
|
145
|
+
var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends$3k);
|
|
146
146
|
var MuiAutocomplete__default = /*#__PURE__*/_interopDefaultLegacy(MuiAutocomplete);
|
|
147
147
|
|
|
148
148
|
function createApi(structServiceProvider, defaultOptions) {
|
|
149
|
+
var _structService$destro;
|
|
149
150
|
var structService = structServiceProvider.createStructService(defaultOptions);
|
|
150
151
|
var info = structService.info();
|
|
151
152
|
return Object.assign(info, {
|
|
@@ -162,7 +163,8 @@ function createApi(structServiceProvider, defaultOptions) {
|
|
|
162
163
|
recognize: structService.recognize.bind(structService),
|
|
163
164
|
generateImageAsBase64: structService.generateImageAsBase64.bind(structService),
|
|
164
165
|
getInChIKey: structService.getInChIKey.bind(structService),
|
|
165
|
-
toggleExplicitHydrogens: structService.toggleExplicitHydrogens.bind(structService)
|
|
166
|
+
toggleExplicitHydrogens: structService.toggleExplicitHydrogens.bind(structService),
|
|
167
|
+
destroy: (_structService$destro = structService.destroy) === null || _structService$destro === void 0 ? void 0 : _structService$destro.bind(structService)
|
|
166
168
|
});
|
|
167
169
|
}
|
|
168
170
|
|
|
@@ -341,7 +343,7 @@ function _unsupportedIterableToArray$g(o, minLen) { if (!o) return; if (typeof o
|
|
|
341
343
|
function _arrayLikeToArray$g(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
342
344
|
function _callSuper$b(t, o, e) { return o = _getPrototypeOf__default["default"](o), _possibleConstructorReturn__default["default"](t, _isNativeReflectConstruct$d() ? Reflect.construct(o, e || [], _getPrototypeOf__default["default"](t).constructor) : o.apply(t, e)); }
|
|
343
345
|
function _isNativeReflectConstruct$d() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$d = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
344
|
-
var ieCb = window.clipboardData;
|
|
346
|
+
var ieCb = typeof window !== 'undefined' ? window.clipboardData : {};
|
|
345
347
|
var CLIP_AREA_BASE_CLASS = 'cliparea';
|
|
346
348
|
var needSkipCopyEvent = false;
|
|
347
349
|
var ClipArea = function (_Component) {
|
|
@@ -554,7 +556,7 @@ function _copy(_x3) {
|
|
|
554
556
|
}
|
|
555
557
|
function _copy2() {
|
|
556
558
|
_copy2 = _asyncToGenerator__default["default"]( _regeneratorRuntime__default["default"].mark(function _callee3(data) {
|
|
557
|
-
var clipboardItemData
|
|
559
|
+
var clipboardItemData;
|
|
558
560
|
return _regeneratorRuntime__default["default"].wrap(function _callee3$(_context3) {
|
|
559
561
|
while (1) switch (_context3.prev = _context3.next) {
|
|
560
562
|
case 0:
|
|
@@ -566,36 +568,20 @@ function _copy2() {
|
|
|
566
568
|
type: mimeTypeToSet
|
|
567
569
|
}));
|
|
568
570
|
});
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
}
|
|
574
|
-
if (!navigator.clipboard.writeText) {
|
|
575
|
-
_context3.next = 9;
|
|
576
|
-
break;
|
|
577
|
-
}
|
|
578
|
-
textData = data['text/plain'] || JSON.stringify(data);
|
|
579
|
-
_context3.next = 9;
|
|
580
|
-
return navigator.clipboard.writeText(textData);
|
|
581
|
-
case 9:
|
|
582
|
-
_context3.next = 13;
|
|
583
|
-
break;
|
|
584
|
-
case 11:
|
|
585
|
-
_context3.next = 13;
|
|
586
|
-
return navigator.clipboard.write([clipboardItem]);
|
|
587
|
-
case 13:
|
|
588
|
-
_context3.next = 19;
|
|
571
|
+
_context3.next = 5;
|
|
572
|
+
return navigator.clipboard.write([new ClipboardItem(clipboardItemData)]);
|
|
573
|
+
case 5:
|
|
574
|
+
_context3.next = 11;
|
|
589
575
|
break;
|
|
590
|
-
case
|
|
591
|
-
_context3.prev =
|
|
576
|
+
case 7:
|
|
577
|
+
_context3.prev = 7;
|
|
592
578
|
_context3.t0 = _context3["catch"](0);
|
|
593
579
|
ketcherCore.KetcherLogger.error('cliparea.jsx::copy', _context3.t0);
|
|
594
|
-
case
|
|
580
|
+
case 11:
|
|
595
581
|
case "end":
|
|
596
582
|
return _context3.stop();
|
|
597
583
|
}
|
|
598
|
-
}, _callee3, null, [[0,
|
|
584
|
+
}, _callee3, null, [[0, 7]]);
|
|
599
585
|
}));
|
|
600
586
|
return _copy2.apply(this, arguments);
|
|
601
587
|
}
|
|
@@ -2620,7 +2606,7 @@ function isFlipDisabled(editor) {
|
|
|
2620
2606
|
return getAmountOfAttachmentBonds() > 1;
|
|
2621
2607
|
}
|
|
2622
2608
|
|
|
2623
|
-
var toolActions = {
|
|
2609
|
+
var toolActions = _defineProperty__default["default"]({
|
|
2624
2610
|
hand: {
|
|
2625
2611
|
title: 'Hand tool',
|
|
2626
2612
|
shortcut: 'Mod+Alt+h',
|
|
@@ -3051,7 +3037,15 @@ var toolActions = {
|
|
|
3051
3037
|
return isHidden(options, 'bonds');
|
|
3052
3038
|
}
|
|
3053
3039
|
}
|
|
3054
|
-
}
|
|
3040
|
+
}, ketcherCore.IMAGE_KEY, {
|
|
3041
|
+
title: 'Add Image',
|
|
3042
|
+
action: {
|
|
3043
|
+
tool: ketcherCore.IMAGE_KEY
|
|
3044
|
+
},
|
|
3045
|
+
hidden: function hidden(options) {
|
|
3046
|
+
return isHidden(options, ketcherCore.IMAGE_KEY);
|
|
3047
|
+
}
|
|
3048
|
+
});
|
|
3055
3049
|
var bondCuts = {
|
|
3056
3050
|
single: '1',
|
|
3057
3051
|
"double": '2',
|
|
@@ -3410,7 +3404,7 @@ function serverCall(editor, server, method, options, struct) {
|
|
|
3410
3404
|
var selectedBonds = [];
|
|
3411
3405
|
var aidMap = new Map();
|
|
3412
3406
|
var bidMap = new Map();
|
|
3413
|
-
var currentStruct = (struct || editor.struct()).clone(null, null, false, aidMap, null, null, null, bidMap);
|
|
3407
|
+
var currentStruct = (struct || editor.struct()).clone(null, null, false, aidMap, null, null, null, null, bidMap);
|
|
3414
3408
|
var expSel = editor.explicitSelected();
|
|
3415
3409
|
if (selection) {
|
|
3416
3410
|
selectedAtoms = (selection.atoms ? selection.atoms : expSel.atoms).map(function (aid) {
|
|
@@ -3676,7 +3670,7 @@ var zoom = {
|
|
|
3676
3670
|
|
|
3677
3671
|
var openHelpLink = function openHelpLink() {
|
|
3678
3672
|
var _window$open;
|
|
3679
|
-
return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v2.
|
|
3673
|
+
return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v2.24.0-rc.2\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
|
|
3680
3674
|
};
|
|
3681
3675
|
var help = {
|
|
3682
3676
|
help: {
|
|
@@ -3704,6 +3698,8 @@ var KETCHER_ROOT_NODE_CLASS_NAME = 'Ketcher-root';
|
|
|
3704
3698
|
var KETCHER_ROOT_NODE_CSS_SELECTOR = ".".concat(KETCHER_ROOT_NODE_CLASS_NAME);
|
|
3705
3699
|
var EditorClassName = 'Ketcher-polymer-editor-root';
|
|
3706
3700
|
var KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR = ".".concat(EditorClassName);
|
|
3701
|
+
var STRUCT_SERVICE_NO_RENDER_INITIALIZED_EVENT = 'struct-service-no-render-initialized';
|
|
3702
|
+
var STRUCT_SERVICE_INITIALIZED_EVENT = 'struct-service-initialized';
|
|
3707
3703
|
|
|
3708
3704
|
var functionalGroupsLib = {
|
|
3709
3705
|
'functional-groups': {
|
|
@@ -4064,16 +4060,16 @@ function hasSelection(editor) {
|
|
|
4064
4060
|
|
|
4065
4061
|
var classes$Q = {"button-common-styles":"ActionButton-module_button-common-styles__y-hng","scrollbar":"ActionButton-module_scrollbar__lD3MH","button":"ActionButton-module_button__nfoWQ","selected":"ActionButton-module_selected__kPCxA"};
|
|
4066
4062
|
|
|
4067
|
-
var _path$
|
|
4068
|
-
function _extends$
|
|
4063
|
+
var _path$3d, _rect$4, _rect2$3;
|
|
4064
|
+
function _extends$3j() { _extends$3j = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$3j.apply(this, arguments); }
|
|
4069
4065
|
function SvgAbout(props) {
|
|
4070
|
-
return /*#__PURE__*/React__namespace.createElement("svg", _extends$
|
|
4066
|
+
return /*#__PURE__*/React__namespace.createElement("svg", _extends$3j({
|
|
4071
4067
|
width: 24,
|
|
4072
4068
|
height: 24,
|
|
4073
4069
|
viewBox: "0 0 24 24",
|
|
4074
4070
|
fill: "none",
|
|
4075
4071
|
xmlns: "http://www.w3.org/2000/svg"
|
|
4076
|
-
}, props), _path$
|
|
4072
|
+
}, props), _path$3d || (_path$3d = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4077
4073
|
d: "M12 4.5a7.5 7.5 0 100 15 7.5 7.5 0 000-15zM12 18c-3.307 0-6-2.693-6-6s2.693-6 6-6 6 2.693 6 6-2.693 6-6 6z",
|
|
4078
4074
|
fill: "currentcolor"
|
|
4079
4075
|
})), _rect$4 || (_rect$4 = /*#__PURE__*/React__namespace.createElement("rect", {
|
|
@@ -4093,6 +4089,20 @@ function SvgAbout(props) {
|
|
|
4093
4089
|
})));
|
|
4094
4090
|
}
|
|
4095
4091
|
|
|
4092
|
+
var _path$3c;
|
|
4093
|
+
function _extends$3i() { _extends$3i = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$3i.apply(this, arguments); }
|
|
4094
|
+
function SvgAddImage(props) {
|
|
4095
|
+
return /*#__PURE__*/React__namespace.createElement("svg", _extends$3i({
|
|
4096
|
+
width: 16,
|
|
4097
|
+
height: 16,
|
|
4098
|
+
viewBox: "0 0 16 16",
|
|
4099
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
4100
|
+
}, props), _path$3c || (_path$3c = /*#__PURE__*/React__namespace.createElement("path", {
|
|
4101
|
+
d: "M12.19 14.476H1.524V3.81H8.38V2.286H1.524C.686 2.286 0 2.97 0 3.81v10.666C0 15.314.686 16 1.524 16H12.19c.839 0 1.524-.686 1.524-1.524V7.62H12.19v6.857zm-5.935-2.415l-1.493-1.798-2.095 2.69h8.38L8.35 9.362l-2.095 2.698zm7.46-9.775V0H12.19v2.286H9.905c.007.007 0 1.524 0 1.524h2.286v2.278c.007.007 1.523 0 1.523 0V3.81H16V2.286h-2.286z",
|
|
4102
|
+
fill: "currentColor"
|
|
4103
|
+
})));
|
|
4104
|
+
}
|
|
4105
|
+
|
|
4096
4106
|
var _path$3b;
|
|
4097
4107
|
function _extends$3h() { _extends$3h = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$3h.apply(this, arguments); }
|
|
4098
4108
|
function SvgAnalyse(props) {
|
|
@@ -7664,7 +7674,8 @@ function SvgNucleotide(props) {
|
|
|
7664
7674
|
})));
|
|
7665
7675
|
}
|
|
7666
7676
|
|
|
7667
|
-
var
|
|
7677
|
+
var _iconNameToIcon;
|
|
7678
|
+
var iconNameToIcon = (_iconNameToIcon = {
|
|
7668
7679
|
α: Svg$n,
|
|
7669
7680
|
β: Svg$m,
|
|
7670
7681
|
γ: Svg$l,
|
|
@@ -7816,67 +7827,8 @@ var iconNameToIcon = {
|
|
|
7816
7827
|
'template-dialog': SvgTemplateDialog,
|
|
7817
7828
|
'template-lib': SvgTemplateLib,
|
|
7818
7829
|
'snake-mode': SvgSnakeMode,
|
|
7819
|
-
text: SvgText
|
|
7820
|
-
|
|
7821
|
-
'text-italic': SvgTextItalic,
|
|
7822
|
-
'text-subscript': SvgTextSubscript,
|
|
7823
|
-
'text-superscript': SvgTextSuperscript,
|
|
7824
|
-
'transform-flip-h': SvgTransformFlipH,
|
|
7825
|
-
'transform-flip-v': SvgTransformFlipV,
|
|
7826
|
-
undo: SvgUndo,
|
|
7827
|
-
'zoom-in': SvgZoomIn,
|
|
7828
|
-
'zoom-out': SvgZoomOut,
|
|
7829
|
-
'zoom-reset': SvgZoomReset,
|
|
7830
|
-
'shape-ellipse': SvgShapeEllipse,
|
|
7831
|
-
'shape-rectangle': SvgShapeRectangle,
|
|
7832
|
-
'shape-polyline': SvgShapePolyline,
|
|
7833
|
-
'shape-line': SvgShapeLine,
|
|
7834
|
-
'not-found': SvgNotFound,
|
|
7835
|
-
'save-1': SvgSave1,
|
|
7836
|
-
'open-1': SvgOpen1,
|
|
7837
|
-
reset: SvgReset,
|
|
7838
|
-
close: SvgClose,
|
|
7839
|
-
general: SvgGeneral,
|
|
7840
|
-
'general-white': SvgGeneralWhite,
|
|
7841
|
-
stereo: SvgStereo,
|
|
7842
|
-
'stereo-white': SvgStereoWhite,
|
|
7843
|
-
atoms: SvgAtoms,
|
|
7844
|
-
'atoms-white': SvgAtomsWhite,
|
|
7845
|
-
bonds: SvgBonds,
|
|
7846
|
-
'bonds-white': SvgBondsWhite,
|
|
7847
|
-
server: SvgServer,
|
|
7848
|
-
'server-white': SvgServerWhite,
|
|
7849
|
-
'3dviewer': Svg3D,
|
|
7850
|
-
'3dviewer-white': Svg3DWhite,
|
|
7851
|
-
debugging: SvgDebugging,
|
|
7852
|
-
'debugging-white': SvgDebuggingWhite,
|
|
7853
|
-
'dropdown-indicator': SvgDropdownIndicator,
|
|
7854
|
-
'text-special-symbols': SvgTextSpecialSymbols,
|
|
7855
|
-
chevron: SvgChevron,
|
|
7856
|
-
'open-window-paste-icon': SvgOpenWindowPasteIcon,
|
|
7857
|
-
'open-window-upload-icon': SvgOpenWindowUploadIcon,
|
|
7858
|
-
bracket: SvgBracket,
|
|
7859
|
-
error: SvgError,
|
|
7860
|
-
'rap-left-link': SvgRapLeftLink,
|
|
7861
|
-
'rap-middle-link': SvgRapMiddleLink,
|
|
7862
|
-
'rap-right-link': SvgRapRightLink,
|
|
7863
|
-
'arrows-left': SvgArrowsLeft,
|
|
7864
|
-
'arrows-right': SvgArrowsRight,
|
|
7865
|
-
sugar: SvgSugar,
|
|
7866
|
-
base: SvgBase,
|
|
7867
|
-
phosphate: SvgPhosphate,
|
|
7868
|
-
preset: SvgPreset,
|
|
7869
|
-
nucleotide: SvgNucleotide,
|
|
7870
|
-
'edit-filled': SvgEditFilled,
|
|
7871
|
-
'vertical-dots': SvgVerticalDots,
|
|
7872
|
-
expand: SvgExpand,
|
|
7873
|
-
'minimize-expansion': SvgMinimizeExpantion,
|
|
7874
|
-
'explicit-hydrogens': SvgExplicitHydrogens,
|
|
7875
|
-
'flex-layout-mode': SvgFlexLayoutMode,
|
|
7876
|
-
'snake-layout-mode': SvgSnakeLayoutMode,
|
|
7877
|
-
'sequence-layout-mode': SvgSequenceLayoutMode,
|
|
7878
|
-
questionMark: SvgQuestionMark
|
|
7879
|
-
};
|
|
7830
|
+
text: SvgText
|
|
7831
|
+
}, _defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_iconNameToIcon, ketcherCore.IMAGE_KEY, SvgAddImage), 'text-bold', SvgTextBold), 'text-italic', SvgTextItalic), 'text-subscript', SvgTextSubscript), 'text-superscript', SvgTextSuperscript), 'transform-flip-h', SvgTransformFlipH), 'transform-flip-v', SvgTransformFlipV), "undo", SvgUndo), 'zoom-in', SvgZoomIn), 'zoom-out', SvgZoomOut), _defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_iconNameToIcon, 'zoom-reset', SvgZoomReset), 'shape-ellipse', SvgShapeEllipse), 'shape-rectangle', SvgShapeRectangle), 'shape-polyline', SvgShapePolyline), 'shape-line', SvgShapeLine), 'not-found', SvgNotFound), 'save-1', SvgSave1), 'open-1', SvgOpen1), "reset", SvgReset), "close", SvgClose), _defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_iconNameToIcon, "general", SvgGeneral), 'general-white', SvgGeneralWhite), "stereo", SvgStereo), 'stereo-white', SvgStereoWhite), "atoms", SvgAtoms), 'atoms-white', SvgAtomsWhite), "bonds", SvgBonds), 'bonds-white', SvgBondsWhite), "server", SvgServer), 'server-white', SvgServerWhite), _defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_iconNameToIcon, '3dviewer', Svg3D), '3dviewer-white', Svg3DWhite), "debugging", SvgDebugging), 'debugging-white', SvgDebuggingWhite), 'dropdown-indicator', SvgDropdownIndicator), 'text-special-symbols', SvgTextSpecialSymbols), "chevron", SvgChevron), 'open-window-paste-icon', SvgOpenWindowPasteIcon), 'open-window-upload-icon', SvgOpenWindowUploadIcon), "bracket", SvgBracket), _defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_iconNameToIcon, "error", SvgError), 'rap-left-link', SvgRapLeftLink), 'rap-middle-link', SvgRapMiddleLink), 'rap-right-link', SvgRapRightLink), 'arrows-left', SvgArrowsLeft), 'arrows-right', SvgArrowsRight), "sugar", SvgSugar), "base", SvgBase), "phosphate", SvgPhosphate), "preset", SvgPreset), _defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_iconNameToIcon, "nucleotide", SvgNucleotide), 'edit-filled', SvgEditFilled), 'vertical-dots', SvgVerticalDots), "expand", SvgExpand), 'minimize-expansion', SvgMinimizeExpantion), 'explicit-hydrogens', SvgExplicitHydrogens), 'flex-layout-mode', SvgFlexLayoutMode), 'snake-layout-mode', SvgSnakeLayoutMode), 'sequence-layout-mode', SvgSequenceLayoutMode), "questionMark", SvgQuestionMark));
|
|
7880
7832
|
|
|
7881
7833
|
var getIconByName = function getIconByName(name) {
|
|
7882
7834
|
return iconNameToIcon[name];
|
|
@@ -14105,6 +14057,7 @@ var _excluded$t = ["type"],
|
|
|
14105
14057
|
_excluded2$5 = ["buttons"];
|
|
14106
14058
|
function ownKeys$12(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; }
|
|
14107
14059
|
function _objectSpread$12(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$12(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$12(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14060
|
+
var SET_SERVER = 'SET_SERVER';
|
|
14108
14061
|
var shared = redux.combineReducers({
|
|
14109
14062
|
common: commonReducer,
|
|
14110
14063
|
actionState: actionStateReducer,
|
|
@@ -14139,6 +14092,12 @@ function getRootReducer(setEditor) {
|
|
|
14139
14092
|
var data = _objectWithoutProperties__default["default"](action, _excluded$t);
|
|
14140
14093
|
if (data) state = _objectSpread$12(_objectSpread$12({}, state), data);
|
|
14141
14094
|
}
|
|
14095
|
+
case SET_SERVER:
|
|
14096
|
+
{
|
|
14097
|
+
state = _objectSpread$12(_objectSpread$12({}, state), {}, {
|
|
14098
|
+
server: action.server || state.server
|
|
14099
|
+
});
|
|
14100
|
+
}
|
|
14142
14101
|
}
|
|
14143
14102
|
var sh = shared(state, _objectSpread$12(_objectSpread$12({}, action), fp.pick(['editor', 'server', 'options'], state)));
|
|
14144
14103
|
var finalState = sh === state.shared ? state : _objectSpread$12(_objectSpread$12({}, state), sh);
|
|
@@ -14165,6 +14124,12 @@ function createStore (options, server, setEditor) {
|
|
|
14165
14124
|
var rootReducer = getRootReducer(setEditor);
|
|
14166
14125
|
return redux.createStore(rootReducer, initState, redux.applyMiddleware.apply(void 0, middleware));
|
|
14167
14126
|
}
|
|
14127
|
+
function setServer(server) {
|
|
14128
|
+
return {
|
|
14129
|
+
type: SET_SERVER,
|
|
14130
|
+
server: server
|
|
14131
|
+
};
|
|
14132
|
+
}
|
|
14168
14133
|
|
|
14169
14134
|
var disableableButtons$3 = [];
|
|
14170
14135
|
var mapStateToProps$l = function mapStateToProps(state) {
|
|
@@ -14591,6 +14556,8 @@ var LeftToolbar = function LeftToolbar(props) {
|
|
|
14591
14556
|
options: shapeOptions
|
|
14592
14557
|
}, {
|
|
14593
14558
|
id: 'text'
|
|
14559
|
+
}, {
|
|
14560
|
+
id: ketcherCore.IMAGE_KEY
|
|
14594
14561
|
}]
|
|
14595
14562
|
})
|
|
14596
14563
|
})]
|
|
@@ -15728,11 +15695,17 @@ function getElementsInRectangle(restruct, p0, p1) {
|
|
|
15728
15695
|
var x1 = Math.max(p0.x, p1.x);
|
|
15729
15696
|
var y0 = Math.min(p0.y, p1.y);
|
|
15730
15697
|
var y1 = Math.max(p0.y, p1.y);
|
|
15698
|
+
var topLeftPosition = new ketcherCore.Vec2(x0, y0);
|
|
15699
|
+
var topRightPosition = new ketcherCore.Vec2(x1, y0);
|
|
15700
|
+
var bottomRightPosition = new ketcherCore.Vec2(x1, y1);
|
|
15701
|
+
var bottomLeftPosition = new ketcherCore.Vec2(x0, y1);
|
|
15731
15702
|
restruct.bonds.forEach(function (bond, bid) {
|
|
15732
15703
|
if (struct.isBondFromMacromolecule(bid)) {
|
|
15733
15704
|
return;
|
|
15734
15705
|
}
|
|
15735
|
-
var centre = ketcherCore.Vec2.lc2(
|
|
15706
|
+
var centre = ketcherCore.Vec2.lc2(
|
|
15707
|
+
restruct.atoms.get(bond.b.begin).a.pp, 0.5,
|
|
15708
|
+
restruct.atoms.get(bond.b.end).a.pp, 0.5);
|
|
15736
15709
|
if (centre.x > x0 && centre.x < x1 && centre.y > y0 && centre.y < y1 && !ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups)) {
|
|
15737
15710
|
bondList.push(bid);
|
|
15738
15711
|
}
|
|
@@ -15740,7 +15713,8 @@ function getElementsInRectangle(restruct, p0, p1) {
|
|
|
15740
15713
|
restruct.atoms.forEach(function (atom, aid) {
|
|
15741
15714
|
var relatedFGId = ketcherCore.FunctionalGroup.findFunctionalGroupByAtom(functionalGroups, aid);
|
|
15742
15715
|
var reSGroup = restruct.sgroups.get(relatedFGId);
|
|
15743
|
-
if (!((reSGroup === null || reSGroup === void 0 ? void 0 : reSGroup.item) instanceof ketcherCore.MonomerMicromolecule) && atom.a.pp.x > x0 && atom.a.pp.x < x1 && atom.a.pp.y > y0 && atom.a.pp.y < y1 && (!ketcherCore.FunctionalGroup.isAtomInContractedFunctionalGroup(atom.a, sGroups, functionalGroups, true) ||
|
|
15716
|
+
if (!((reSGroup === null || reSGroup === void 0 ? void 0 : reSGroup.item) instanceof ketcherCore.MonomerMicromolecule) && atom.a.pp.x > x0 && atom.a.pp.x < x1 && atom.a.pp.y > y0 && atom.a.pp.y < y1 && (!ketcherCore.FunctionalGroup.isAtomInContractedFunctionalGroup(atom.a, sGroups, functionalGroups, true) ||
|
|
15717
|
+
aid === reSGroup.item.atoms[0])) {
|
|
15744
15718
|
atomList.push(aid);
|
|
15745
15719
|
}
|
|
15746
15720
|
});
|
|
@@ -15795,7 +15769,18 @@ function getElementsInRectangle(restruct, p0, p1) {
|
|
|
15795
15769
|
rgroupAttachmentPointList.push(id);
|
|
15796
15770
|
}
|
|
15797
15771
|
});
|
|
15798
|
-
|
|
15772
|
+
var reImages = Array.from(restruct.images.entries()).reduce(function (acc, _ref) {
|
|
15773
|
+
var _ref2 = _slicedToArray__default["default"](_ref, 2),
|
|
15774
|
+
id = _ref2[0],
|
|
15775
|
+
item = _ref2[1];
|
|
15776
|
+
if (Object.values(item.image.getReferencePositions()).some(function (point) {
|
|
15777
|
+
return point.isInsidePolygon([topLeftPosition, topRightPosition, bottomRightPosition, bottomLeftPosition]);
|
|
15778
|
+
})) {
|
|
15779
|
+
return acc.concat(id);
|
|
15780
|
+
}
|
|
15781
|
+
return acc;
|
|
15782
|
+
}, []);
|
|
15783
|
+
return _defineProperty__default["default"]({
|
|
15799
15784
|
atoms: atomList,
|
|
15800
15785
|
bonds: bondList,
|
|
15801
15786
|
rxnArrows: rxnArrowsList,
|
|
@@ -15805,7 +15790,7 @@ function getElementsInRectangle(restruct, p0, p1) {
|
|
|
15805
15790
|
simpleObjects: simpleObjectsList,
|
|
15806
15791
|
texts: textsList,
|
|
15807
15792
|
rgroupAttachmentPoints: rgroupAttachmentPointList
|
|
15808
|
-
};
|
|
15793
|
+
}, ketcherCore.IMAGE_KEY, reImages);
|
|
15809
15794
|
}
|
|
15810
15795
|
function getElementsInPolygon(restruct, rr) {
|
|
15811
15796
|
var bondList = [];
|
|
@@ -15821,7 +15806,9 @@ function getElementsInPolygon(restruct, rr) {
|
|
|
15821
15806
|
if (struct.isAtomFromMacromolecule(bond.b.begin) || struct.isAtomFromMacromolecule(bond.b.end)) {
|
|
15822
15807
|
return;
|
|
15823
15808
|
}
|
|
15824
|
-
var centre = ketcherCore.Vec2.lc2(
|
|
15809
|
+
var centre = ketcherCore.Vec2.lc2(
|
|
15810
|
+
restruct.atoms.get(bond.b.begin).a.pp, 0.5,
|
|
15811
|
+
restruct.atoms.get(bond.b.end).a.pp, 0.5);
|
|
15825
15812
|
if (isPointInPolygon(r, centre) && !ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups)) {
|
|
15826
15813
|
bondList.push(bid);
|
|
15827
15814
|
}
|
|
@@ -15829,7 +15816,8 @@ function getElementsInPolygon(restruct, rr) {
|
|
|
15829
15816
|
restruct.atoms.forEach(function (atom, aid) {
|
|
15830
15817
|
var relatedFGId = ketcherCore.FunctionalGroup.findFunctionalGroupByAtom(functionalGroups, aid);
|
|
15831
15818
|
var reSGroup = restruct.sgroups.get(relatedFGId);
|
|
15832
|
-
if (!((reSGroup === null || reSGroup === void 0 ? void 0 : reSGroup.item) instanceof ketcherCore.MonomerMicromolecule) && isPointInPolygon(r, atom.a.pp) && (!ketcherCore.FunctionalGroup.isAtomInContractedFunctionalGroup(atom.a, sGroups, functionalGroups, true) ||
|
|
15819
|
+
if (!((reSGroup === null || reSGroup === void 0 ? void 0 : reSGroup.item) instanceof ketcherCore.MonomerMicromolecule) && isPointInPolygon(r, atom.a.pp) && (!ketcherCore.FunctionalGroup.isAtomInContractedFunctionalGroup(atom.a, sGroups, functionalGroups, true) ||
|
|
15820
|
+
aid === reSGroup.item.atoms[0])) {
|
|
15833
15821
|
atomList.push(aid);
|
|
15834
15822
|
}
|
|
15835
15823
|
});
|
|
@@ -15838,7 +15826,7 @@ function getElementsInPolygon(restruct, rr) {
|
|
|
15838
15826
|
var simpleObjectsList = [];
|
|
15839
15827
|
var textsList = [];
|
|
15840
15828
|
restruct.rxnArrows.forEach(function (item, id) {
|
|
15841
|
-
var referencePoints = item.getReferencePoints(
|
|
15829
|
+
var referencePoints = item.getReferencePoints();
|
|
15842
15830
|
var referencePointInPolygon = referencePoints.find(function (point) {
|
|
15843
15831
|
return isPointInPolygon(r, point);
|
|
15844
15832
|
});
|
|
@@ -15887,7 +15875,18 @@ function getElementsInPolygon(restruct, rr) {
|
|
|
15887
15875
|
rgroupAttachmentPointList.push(id);
|
|
15888
15876
|
}
|
|
15889
15877
|
});
|
|
15890
|
-
|
|
15878
|
+
var reImages = Array.from(restruct.images.entries()).reduce(function (acc, _ref4) {
|
|
15879
|
+
var _ref5 = _slicedToArray__default["default"](_ref4, 2),
|
|
15880
|
+
id = _ref5[0],
|
|
15881
|
+
item = _ref5[1];
|
|
15882
|
+
if (Object.values(item.image.getReferencePositions()).some(function (point) {
|
|
15883
|
+
return isPointInPolygon(r, point);
|
|
15884
|
+
})) {
|
|
15885
|
+
return acc.concat(id);
|
|
15886
|
+
}
|
|
15887
|
+
return acc;
|
|
15888
|
+
}, []);
|
|
15889
|
+
return _defineProperty__default["default"]({
|
|
15891
15890
|
atoms: atomList,
|
|
15892
15891
|
bonds: bondList,
|
|
15893
15892
|
rxnArrows: rxnArrowsList,
|
|
@@ -15897,7 +15896,7 @@ function getElementsInPolygon(restruct, rr) {
|
|
|
15897
15896
|
simpleObjects: simpleObjectsList,
|
|
15898
15897
|
texts: textsList,
|
|
15899
15898
|
rgroupAttachmentPoints: rgroupAttachmentPointList
|
|
15900
|
-
};
|
|
15899
|
+
}, ketcherCore.IMAGE_KEY, reImages);
|
|
15901
15900
|
}
|
|
15902
15901
|
function isPointInPolygon(r, p) {
|
|
15903
15902
|
var d = new ketcherCore.Vec2(0, 1);
|
|
@@ -17248,8 +17247,8 @@ function getSelectionMap(structure) {
|
|
|
17248
17247
|
return result;
|
|
17249
17248
|
}, {});
|
|
17250
17249
|
}
|
|
17251
|
-
function getStructCenter(
|
|
17252
|
-
var bb =
|
|
17250
|
+
function getStructCenter(reStruct, selection) {
|
|
17251
|
+
var bb = reStruct.getVBoxObj(selection || {});
|
|
17253
17252
|
return ketcherCore.Vec2.lc2(bb.p0, 0.5, bb.p1, 0.5);
|
|
17254
17253
|
}
|
|
17255
17254
|
|
|
@@ -17258,7 +17257,7 @@ var handleMovingPosibilityCursor = function handleMovingPosibilityCursor(item, c
|
|
|
17258
17257
|
if (!item && isCursorShown) {
|
|
17259
17258
|
canvas.removeAttribute('cursor');
|
|
17260
17259
|
}
|
|
17261
|
-
if (item
|
|
17260
|
+
if (item) {
|
|
17262
17261
|
canvas.setAttribute('cursor', cursor);
|
|
17263
17262
|
}
|
|
17264
17263
|
};
|
|
@@ -17392,6 +17391,13 @@ var SelectTool = function () {
|
|
|
17392
17391
|
info: degrees + 'º'
|
|
17393
17392
|
});
|
|
17394
17393
|
}
|
|
17394
|
+
if (dragCtx.item.map === ketcherCore.IMAGE_KEY && dragCtx.item.ref) {
|
|
17395
|
+
if (dragCtx.action) dragCtx.action.perform(rnd.ctab);
|
|
17396
|
+
var position = ketcherCore.CoordinateTransformation.pageToModel(event, rnd);
|
|
17397
|
+
dragCtx.action = ketcherCore.fromImageResize(rnd.ctab, dragCtx.item.id, position, dragCtx.item.ref);
|
|
17398
|
+
editor.update(dragCtx.action, true);
|
|
17399
|
+
return true;
|
|
17400
|
+
}
|
|
17395
17401
|
if (dragCtx.item.map === 'simpleObjects' && dragCtx.item.ref) {
|
|
17396
17402
|
if (dragCtx.action) dragCtx.action.perform(rnd.ctab);
|
|
17397
17403
|
var props = getResizingProps(editor, dragCtx, event);
|
|
@@ -17430,7 +17436,13 @@ var SelectTool = function () {
|
|
|
17430
17436
|
var maps = getMapsForClosestItem(_classPrivateFieldGet__default["default"](this, _lassoHelper).fragment || event.ctrlKey);
|
|
17431
17437
|
var item = editor.findItem(event, maps, null);
|
|
17432
17438
|
editor.hover(item, null, event);
|
|
17433
|
-
|
|
17439
|
+
if ((item === null || item === void 0 ? void 0 : item.map) === ketcherCore.IMAGE_KEY && item.ref) {
|
|
17440
|
+
var referencePositionInfo = item.ref;
|
|
17441
|
+
handleMovingPosibilityCursor(item, this.editor.render.paper.canvas,
|
|
17442
|
+
ketcherCore.imageReferencePositionToCursor[referencePositionInfo.name]);
|
|
17443
|
+
} else {
|
|
17444
|
+
handleMovingPosibilityCursor(item, this.editor.render.paper.canvas, this.editor.render.options.movingStyle.cursor);
|
|
17445
|
+
}
|
|
17434
17446
|
return true;
|
|
17435
17447
|
}
|
|
17436
17448
|
}, {
|
|
@@ -17773,7 +17785,7 @@ function preventSaltAndSolventsMerge(struct, dragCtx, editor) {
|
|
|
17773
17785
|
});
|
|
17774
17786
|
}
|
|
17775
17787
|
function getMapsForClosestItem(selectFragment) {
|
|
17776
|
-
return ['sgroups', 'functionalGroups', 'sgroupData', 'rgroups', 'rgroupAttachmentPoints', 'rxnArrows', 'rxnPluses', 'enhancedFlags', 'simpleObjects', 'texts'].concat(_toConsumableArray__default["default"](selectFragment ? ['frags'] : ['atoms', 'bonds']));
|
|
17788
|
+
return ['sgroups', 'functionalGroups', 'sgroupData', 'rgroups', 'rgroupAttachmentPoints', 'rxnArrows', 'rxnPluses', 'enhancedFlags', 'simpleObjects', 'texts', ketcherCore.IMAGE_KEY].concat(_toConsumableArray__default["default"](selectFragment ? ['frags'] : ['atoms', 'bonds']));
|
|
17777
17789
|
}
|
|
17778
17790
|
function getResizingProps(editor, dragCtx, event) {
|
|
17779
17791
|
var current = editor.render.page2obj(event);
|
|
@@ -18846,12 +18858,21 @@ function _isChangingFunctionalGroup() {
|
|
|
18846
18858
|
return _isChangingFunctionalGroup.apply(this, arguments);
|
|
18847
18859
|
}
|
|
18848
18860
|
|
|
18861
|
+
var keydownListener = null;
|
|
18849
18862
|
function initKeydownListener(element) {
|
|
18850
18863
|
return function (dispatch, getState) {
|
|
18851
18864
|
var hotKeys = ketcherCore.initHotKeys(config);
|
|
18852
|
-
|
|
18865
|
+
keydownListener = function keydownListener(event) {
|
|
18853
18866
|
return keyHandle(dispatch, getState, hotKeys, event);
|
|
18854
|
-
}
|
|
18867
|
+
};
|
|
18868
|
+
element.addEventListener('keydown', keydownListener);
|
|
18869
|
+
};
|
|
18870
|
+
}
|
|
18871
|
+
function removeKeydownListener(element) {
|
|
18872
|
+
return function () {
|
|
18873
|
+
if (keydownListener) {
|
|
18874
|
+
element.removeEventListener('keydown', keydownListener);
|
|
18875
|
+
}
|
|
18855
18876
|
};
|
|
18856
18877
|
}
|
|
18857
18878
|
function removeNotRenderedStruct(actionTool, group, dispatch) {
|
|
@@ -19307,7 +19328,7 @@ function _unsupportedIterableToArray$9(o, minLen) { if (!o) return; if (typeof o
|
|
|
19307
19328
|
function _arrayLikeToArray$9(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
19308
19329
|
var SELECTION_DISTANCE_COEFFICIENT = 0.4;
|
|
19309
19330
|
var SELECTION_WITHIN_TEXT = 0;
|
|
19310
|
-
var findMaps = {
|
|
19331
|
+
var findMaps = _defineProperty__default["default"]({
|
|
19311
19332
|
atoms: findClosestAtom,
|
|
19312
19333
|
bonds: findClosestBond,
|
|
19313
19334
|
enhancedFlags: findClosestEnhancedFlag,
|
|
@@ -19321,15 +19342,15 @@ var findMaps = {
|
|
|
19321
19342
|
rgroupAttachmentPoints: findClosestRgroupAttachmentPoints,
|
|
19322
19343
|
simpleObjects: findClosestSimpleObject,
|
|
19323
19344
|
texts: findClosestText
|
|
19324
|
-
};
|
|
19345
|
+
}, ketcherCore.IMAGE_KEY, findClosestImage);
|
|
19325
19346
|
function rectangleContainsPoint(startX, startY, width, height, x, y) {
|
|
19326
19347
|
return startX <= x && x <= startX + width && startY <= y && y <= startY + height;
|
|
19327
19348
|
}
|
|
19328
19349
|
function findClosestText(restruct, cursorPosition) {
|
|
19329
|
-
var minDist =
|
|
19350
|
+
var minDist = Number.POSITIVE_INFINITY;
|
|
19330
19351
|
var ret = null;
|
|
19331
19352
|
restruct.texts.forEach(function (text, id) {
|
|
19332
|
-
var referencePoints = text.getReferencePoints(
|
|
19353
|
+
var referencePoints = text.getReferencePoints();
|
|
19333
19354
|
var topX = referencePoints[0].x;
|
|
19334
19355
|
var topY = referencePoints[0].y;
|
|
19335
19356
|
var bottomX = referencePoints[2].x;
|
|
@@ -19377,7 +19398,7 @@ function findClosestText(restruct, cursorPosition) {
|
|
|
19377
19398
|
return ret;
|
|
19378
19399
|
}
|
|
19379
19400
|
function findClosestSimpleObject(restruct, pos) {
|
|
19380
|
-
var minDist =
|
|
19401
|
+
var minDist = Number.POSITIVE_INFINITY;
|
|
19381
19402
|
var refPoint = null;
|
|
19382
19403
|
var ret = null;
|
|
19383
19404
|
restruct.simpleObjects.forEach(function (simpleObject, id) {
|
|
@@ -19404,7 +19425,7 @@ function findClosestAtom(restruct, pos, skip, minDist) {
|
|
|
19404
19425
|
minDist = Math.min(minDist, maxMinDist);
|
|
19405
19426
|
restruct.atoms.forEach(function (atom, aid) {
|
|
19406
19427
|
if (ketcherCore.FunctionalGroup.isAtomInContractedFunctionalGroup(atom.a, sGroups, functionalGroups, true) || ketcherCore.Atom.isHiddenLeavingGroupAtom(restruct.molecule, aid)) {
|
|
19407
|
-
return
|
|
19428
|
+
return;
|
|
19408
19429
|
}
|
|
19409
19430
|
var isSkippedAtom = aid === skipId || atom.a.isPreview;
|
|
19410
19431
|
if (isSkippedAtom) {
|
|
@@ -19442,7 +19463,7 @@ function findClosestBond(restruct, pos, skip, minDist, options) {
|
|
|
19442
19463
|
var p1 = restruct.atoms.get(bond.b.begin).a.pp;
|
|
19443
19464
|
var p2 = restruct.atoms.get(bond.b.end).a.pp;
|
|
19444
19465
|
if (ketcherCore.FunctionalGroup.isBondInContractedFunctionalGroup(bond.b, sGroups, functionalGroups) || ketcherCore.SGroup.isBondInContractedSGroup(bond.b, sGroups) || ketcherCore.Bond.isBondToHiddenLeavingGroup(restruct.molecule, bond.b)) {
|
|
19445
|
-
return
|
|
19466
|
+
return;
|
|
19446
19467
|
}
|
|
19447
19468
|
var mid = ketcherCore.Vec2.lc2(p1, 0.5, p2, 0.5);
|
|
19448
19469
|
var cdist = ketcherCore.Vec2.dist(pos, mid);
|
|
@@ -19480,10 +19501,10 @@ function findClosestBond(restruct, pos, skip, minDist, options) {
|
|
|
19480
19501
|
}
|
|
19481
19502
|
return null;
|
|
19482
19503
|
}
|
|
19483
|
-
function findClosestEnhancedFlag(restruct, pos,
|
|
19504
|
+
function findClosestEnhancedFlag(restruct, pos, _skip, _minDist, options) {
|
|
19484
19505
|
var minDist;
|
|
19485
19506
|
var ret = null;
|
|
19486
|
-
restruct.enhancedFlags.forEach(function (
|
|
19507
|
+
restruct.enhancedFlags.forEach(function (_item, id) {
|
|
19487
19508
|
var fragment = restruct.molecule.frags.get(id);
|
|
19488
19509
|
if (!fragment || !fragment.enhancedStereoFlag || !options.showStereoFlags) return;
|
|
19489
19510
|
var p = fragment.stereoFlagPosition ? new ketcherCore.Vec2(fragment.stereoFlagPosition.x, fragment.stereoFlagPosition.y) : ketcherCore.Fragment.getDefaultStereoFlagPosition(restruct.molecule, id);
|
|
@@ -19500,7 +19521,7 @@ function findClosestEnhancedFlag(restruct, pos, skip, _minDist, options) {
|
|
|
19500
19521
|
return ret;
|
|
19501
19522
|
}
|
|
19502
19523
|
function findClosestDataSGroupData(restruct, pos) {
|
|
19503
|
-
var minDist =
|
|
19524
|
+
var minDist = Number.POSITIVE_INFINITY;
|
|
19504
19525
|
var ret = null;
|
|
19505
19526
|
restruct.sgroupData.forEach(function (item, id) {
|
|
19506
19527
|
if (item.sgroup.type !== 'DAT') throw new Error('Data group expected');
|
|
@@ -19560,7 +19581,7 @@ function findClosestRgroupAttachmentPoints(restruct, cursorPosition, _skip, minD
|
|
|
19560
19581
|
var minDist = minDistToOtherItems !== null && minDistToOtherItems !== void 0 ? minDistToOtherItems : Number.POSITIVE_INFINITY;
|
|
19561
19582
|
var closestItemId;
|
|
19562
19583
|
restruct.visibleRGroupAttachmentPoints.forEach(function (reItem, id) {
|
|
19563
|
-
var itemOutlinePoints = reItem.getOutlinePoints();
|
|
19584
|
+
var itemOutlinePoints = _toConsumableArray__default["default"](reItem.getOutlinePoints());
|
|
19564
19585
|
var isCursorInsideOutline = cursorPosition.isInsidePolygon(itemOutlinePoints);
|
|
19565
19586
|
if (isCursorInsideOutline) {
|
|
19566
19587
|
var dist = reItem.getDistanceTo(cursorPosition);
|
|
@@ -19576,7 +19597,7 @@ function findClosestRgroupAttachmentPoints(restruct, cursorPosition, _skip, minD
|
|
|
19576
19597
|
};
|
|
19577
19598
|
}
|
|
19578
19599
|
function findClosestRxnArrow(restruct, pos) {
|
|
19579
|
-
var minDist =
|
|
19600
|
+
var minDist = Number.POSITIVE_INFINITY;
|
|
19580
19601
|
var refPoint = null;
|
|
19581
19602
|
var ret = null;
|
|
19582
19603
|
restruct.rxnArrows.forEach(function (rxnArrow, id) {
|
|
@@ -19594,7 +19615,7 @@ function findClosestRxnArrow(restruct, pos) {
|
|
|
19594
19615
|
return ret;
|
|
19595
19616
|
}
|
|
19596
19617
|
function findClosestRxnPlus(restruct, pos) {
|
|
19597
|
-
var minDist =
|
|
19618
|
+
var minDist = Number.POSITIVE_INFINITY;
|
|
19598
19619
|
var ret = null;
|
|
19599
19620
|
restruct.rxnPluses.forEach(function (plus, id) {
|
|
19600
19621
|
var p = plus.item.pp;
|
|
@@ -19613,7 +19634,7 @@ function findClosestSGroup(restruct, pos) {
|
|
|
19613
19634
|
var ret = null;
|
|
19614
19635
|
var minDist = SELECTION_DISTANCE_COEFFICIENT;
|
|
19615
19636
|
restruct.molecule.sgroups.forEach(function (sg, sgid) {
|
|
19616
|
-
if (sg.isContracted() || sg.isSuperatomWithoutLabel) return
|
|
19637
|
+
if (sg.isContracted() || sg.isSuperatomWithoutLabel) return;
|
|
19617
19638
|
var d = sg.bracketDirection;
|
|
19618
19639
|
var n = d.rotateSC(1, 0);
|
|
19619
19640
|
var pg = new ketcherCore.Vec2(ketcherCore.Vec2.dot(pos, d), ketcherCore.Vec2.dot(pos, n));
|
|
@@ -19706,7 +19727,9 @@ function findCloseMerge(restruct, selected) {
|
|
|
19706
19727
|
});
|
|
19707
19728
|
selected.bonds.forEach(function (bid) {
|
|
19708
19729
|
var bond = struct.bonds.get(bid);
|
|
19709
|
-
pos.bonds.set(bid, ketcherCore.Vec2.lc2(
|
|
19730
|
+
pos.bonds.set(bid, ketcherCore.Vec2.lc2(
|
|
19731
|
+
struct.atoms.get(bond.begin).pp, 0.5,
|
|
19732
|
+
struct.atoms.get(bond.end).pp, 0.5));
|
|
19710
19733
|
});
|
|
19711
19734
|
var result = {
|
|
19712
19735
|
atoms: new Map(),
|
|
@@ -19719,7 +19742,8 @@ function findCloseMerge(restruct, selected) {
|
|
|
19719
19742
|
mergeAtomToAtom(atomId, restruct, atomPosition, selected, result) || mergeAtomToFunctionalGroup(atomId, restruct, atomPosition, result);
|
|
19720
19743
|
});
|
|
19721
19744
|
} else {
|
|
19722
|
-
result[map] = Array.from(pos[map].keys()).reduce(
|
|
19745
|
+
result[map] = Array.from(pos[map].keys()).reduce(
|
|
19746
|
+
function (res, srcId) {
|
|
19723
19747
|
var skip = {
|
|
19724
19748
|
map: map,
|
|
19725
19749
|
id: srcId
|
|
@@ -19759,6 +19783,31 @@ function mergeAtomToFunctionalGroup(atomId, restruct, atomPosition, result) {
|
|
|
19759
19783
|
}
|
|
19760
19784
|
return false;
|
|
19761
19785
|
}
|
|
19786
|
+
function findClosestImage(reStruct, cursorPosition) {
|
|
19787
|
+
var renderOptions = reStruct.render.options;
|
|
19788
|
+
var canvasScaledPosition = ketcherCore.Scale.modelToCanvas(cursorPosition, renderOptions);
|
|
19789
|
+
var maxDistance = renderOptions.microModeScale * SELECTION_DISTANCE_COEFFICIENT;
|
|
19790
|
+
return Array.from(reStruct.images.entries()).reduce(function (acc, _ref) {
|
|
19791
|
+
var _ref2 = _slicedToArray__default["default"](_ref, 2),
|
|
19792
|
+
id = _ref2[0],
|
|
19793
|
+
item = _ref2[1];
|
|
19794
|
+
var distanceToPoint = item.calculateDistanceToPoint(canvasScaledPosition, renderOptions);
|
|
19795
|
+
if (distanceToPoint <= maxDistance) {
|
|
19796
|
+
if (acc && acc.dist < distanceToPoint) {
|
|
19797
|
+
return acc;
|
|
19798
|
+
}
|
|
19799
|
+
var dist = Math.max(distanceToPoint, maxDistance / 3);
|
|
19800
|
+
var closestPosition = item.calculateClosestReferencePosition(canvasScaledPosition, renderOptions);
|
|
19801
|
+
var includeRef = closestPosition.distance < maxDistance;
|
|
19802
|
+
return {
|
|
19803
|
+
id: id,
|
|
19804
|
+
dist: dist / renderOptions.microModeScale,
|
|
19805
|
+
ref: includeRef ? closestPosition.ref : null
|
|
19806
|
+
};
|
|
19807
|
+
}
|
|
19808
|
+
return acc;
|
|
19809
|
+
}, null);
|
|
19810
|
+
}
|
|
19762
19811
|
var closest = {
|
|
19763
19812
|
atom: findClosestAtom,
|
|
19764
19813
|
item: findClosestItem,
|
|
@@ -20687,7 +20736,7 @@ var EraserTool = function () {
|
|
|
20687
20736
|
function EraserTool(editor, mode) {
|
|
20688
20737
|
_classCallCheck__default["default"](this, EraserTool);
|
|
20689
20738
|
this.editor = editor;
|
|
20690
|
-
this.maps = ['atoms', 'bonds', 'rxnArrows', 'rxnPluses', 'sgroups', 'functionalGroups', 'sgroupData', 'simpleObjects', 'texts', 'rgroupAttachmentPoints'];
|
|
20739
|
+
this.maps = ['atoms', 'bonds', 'rxnArrows', 'rxnPluses', 'sgroups', 'functionalGroups', 'sgroupData', 'simpleObjects', 'texts', 'rgroupAttachmentPoints', ketcherCore.IMAGE_KEY];
|
|
20691
20740
|
this.lassoHelper = new LassoHelper(mode || 0, editor, null);
|
|
20692
20741
|
if (editor.selection()) {
|
|
20693
20742
|
var action = ketcherCore.fromFragmentDeletion(editor.render.ctab, editor.selection());
|
|
@@ -20965,6 +21014,8 @@ var EraserTool = function () {
|
|
|
20965
21014
|
this.editor.update(ketcherCore.fromTextDeletion(restruct, ci.id));
|
|
20966
21015
|
} else if (ci.map === 'rgroupAttachmentPoints') {
|
|
20967
21016
|
this.editor.update(ketcherCore.fromRGroupAttachmentPointDeletion(restruct, ci.id));
|
|
21017
|
+
} else if (ci.map === ketcherCore.IMAGE_KEY) {
|
|
21018
|
+
this.editor.update(ketcherCore.fromImageDeletion(restruct, ci.id));
|
|
20968
21019
|
} else {
|
|
20969
21020
|
return;
|
|
20970
21021
|
}
|
|
@@ -22414,7 +22465,157 @@ function propsDialog(editor, id, position, pos) {
|
|
|
22414
22465
|
});
|
|
22415
22466
|
}
|
|
22416
22467
|
|
|
22417
|
-
var
|
|
22468
|
+
var TAG = 'tool/image.ts';
|
|
22469
|
+
var supportedMimes = ['png', 'svg+xml'];
|
|
22470
|
+
var supportedMimesForRegex = supportedMimes.map(function (item) {
|
|
22471
|
+
return item.replace('+', '\\+');
|
|
22472
|
+
}).join('|');
|
|
22473
|
+
var allowList = new RegExp("^image/(".concat(supportedMimesForRegex, ")$"));
|
|
22474
|
+
var MIN_DIMENSION_SIZE = 16;
|
|
22475
|
+
var ImageTool = function () {
|
|
22476
|
+
function ImageTool(editor) {
|
|
22477
|
+
_classCallCheck__default["default"](this, ImageTool);
|
|
22478
|
+
_defineProperty__default["default"](this, "dragCtx", null);
|
|
22479
|
+
this.editor = editor;
|
|
22480
|
+
this.element = this.getElement();
|
|
22481
|
+
}
|
|
22482
|
+
_createClass__default["default"](ImageTool, [{
|
|
22483
|
+
key: "mousedown",
|
|
22484
|
+
value: function mousedown(event) {
|
|
22485
|
+
var render = this.editor.render;
|
|
22486
|
+
var closestItem = this.editor.findItem(event, [ketcherCore.IMAGE_KEY]);
|
|
22487
|
+
this.editor.selection(null);
|
|
22488
|
+
if (closestItem) {
|
|
22489
|
+
this.editor.hover(null);
|
|
22490
|
+
this.editor.selection(_defineProperty__default["default"]({}, ketcherCore.IMAGE_KEY, [closestItem.id]));
|
|
22491
|
+
this.dragCtx = {
|
|
22492
|
+
center: ketcherCore.CoordinateTransformation.pageToModel(event, render),
|
|
22493
|
+
action: new ketcherCore.Action(),
|
|
22494
|
+
closestItem: closestItem
|
|
22495
|
+
};
|
|
22496
|
+
}
|
|
22497
|
+
}
|
|
22498
|
+
}, {
|
|
22499
|
+
key: "click",
|
|
22500
|
+
value: function click(event) {
|
|
22501
|
+
var closestItem = this.editor.findItem(event, [ketcherCore.IMAGE_KEY]);
|
|
22502
|
+
this.editor.hover(null);
|
|
22503
|
+
if (closestItem) {
|
|
22504
|
+
return;
|
|
22505
|
+
}
|
|
22506
|
+
var position = ketcherCore.CoordinateTransformation.pageToModel(event, this.editor.render);
|
|
22507
|
+
this.element.onchange = this.onFileUpload.bind(this, position);
|
|
22508
|
+
this.element.click();
|
|
22509
|
+
}
|
|
22510
|
+
}, {
|
|
22511
|
+
key: "mousemove",
|
|
22512
|
+
value: function mousemove(event) {
|
|
22513
|
+
var render = this.editor.render;
|
|
22514
|
+
if (this.dragCtx) {
|
|
22515
|
+
this.dragCtx.action.perform(render.ctab);
|
|
22516
|
+
var click = ketcherCore.CoordinateTransformation.pageToModel(event, render);
|
|
22517
|
+
this.dragCtx.action = this.dragCtx.closestItem.ref ? ketcherCore.fromImageResize(render.ctab, this.dragCtx.closestItem.id, click, this.dragCtx.closestItem.ref) : ketcherCore.fromImageMove(render.ctab, this.dragCtx.closestItem.id, click.sub(this.dragCtx.center));
|
|
22518
|
+
this.editor.update(this.dragCtx.action, true);
|
|
22519
|
+
} else {
|
|
22520
|
+
var item = this.editor.findItem(event, [ketcherCore.IMAGE_KEY]);
|
|
22521
|
+
var _render = this.editor.render;
|
|
22522
|
+
if (item !== null && item !== void 0 && item.ref) {
|
|
22523
|
+
handleMovingPosibilityCursor(item, _render.paper.canvas, ketcherCore.imageReferencePositionToCursor[item.ref.name]);
|
|
22524
|
+
} else {
|
|
22525
|
+
handleMovingPosibilityCursor(item, _render.paper.canvas, _render.options.movingStyle.cursor);
|
|
22526
|
+
}
|
|
22527
|
+
this.editor.hover(item, null, event);
|
|
22528
|
+
}
|
|
22529
|
+
}
|
|
22530
|
+
}, {
|
|
22531
|
+
key: "mouseup",
|
|
22532
|
+
value: function mouseup() {
|
|
22533
|
+
if (this.dragCtx) {
|
|
22534
|
+
this.editor.update(this.dragCtx.action);
|
|
22535
|
+
this.dragCtx = null;
|
|
22536
|
+
}
|
|
22537
|
+
return true;
|
|
22538
|
+
}
|
|
22539
|
+
}, {
|
|
22540
|
+
key: "onFileUpload",
|
|
22541
|
+
value: function onFileUpload(clickPosition) {
|
|
22542
|
+
var _this = this;
|
|
22543
|
+
var errorHandler = this.editor.errorHandler;
|
|
22544
|
+
this.element.onchange = null;
|
|
22545
|
+
if (this.element.files && this.element.files[0]) {
|
|
22546
|
+
var file = this.element.files[0];
|
|
22547
|
+
var image = new Image();
|
|
22548
|
+
var reader = new FileReader();
|
|
22549
|
+
if (!file.type || !file.type.match(allowList)) {
|
|
22550
|
+
var errorMessage = "Unsupported image type";
|
|
22551
|
+
ketcherCore.KetcherLogger.error("".concat(TAG, ":onFileUpload"), errorMessage);
|
|
22552
|
+
if (errorHandler) {
|
|
22553
|
+
errorHandler(errorMessage);
|
|
22554
|
+
}
|
|
22555
|
+
this.resetElementValue();
|
|
22556
|
+
return;
|
|
22557
|
+
}
|
|
22558
|
+
reader.addEventListener('load', function () {
|
|
22559
|
+
image.src = reader.result;
|
|
22560
|
+
});
|
|
22561
|
+
image.onload = function () {
|
|
22562
|
+
_this.resetElementValue();
|
|
22563
|
+
if (image.width < MIN_DIMENSION_SIZE || image.height < MIN_DIMENSION_SIZE) {
|
|
22564
|
+
var _errorMessage = 'Image should be at least 16x16 pixels';
|
|
22565
|
+
ketcherCore.KetcherLogger.error("".concat(TAG, ":onLoad"), _errorMessage);
|
|
22566
|
+
if (errorHandler) {
|
|
22567
|
+
errorHandler(_errorMessage);
|
|
22568
|
+
}
|
|
22569
|
+
return;
|
|
22570
|
+
}
|
|
22571
|
+
var halfSize = ketcherCore.Scale.canvasToModel(new ketcherCore.Vec2(image.width / 2, image.height / 2), _this.editor.render.options);
|
|
22572
|
+
_this.editor.update(ketcherCore.fromImageCreation(_this.editor.render.ctab, image.src, clickPosition, halfSize));
|
|
22573
|
+
};
|
|
22574
|
+
image.onerror = function (e) {
|
|
22575
|
+
_this.resetElementValue();
|
|
22576
|
+
var errorMessage = 'Cannot load image';
|
|
22577
|
+
ketcherCore.KetcherLogger.error("".concat(TAG, ":onerror"), errorMessage, e);
|
|
22578
|
+
if (errorHandler) {
|
|
22579
|
+
errorHandler(errorMessage);
|
|
22580
|
+
}
|
|
22581
|
+
};
|
|
22582
|
+
reader.readAsDataURL(this.element.files[0]);
|
|
22583
|
+
}
|
|
22584
|
+
}
|
|
22585
|
+
}, {
|
|
22586
|
+
key: "createElement",
|
|
22587
|
+
value: function createElement() {
|
|
22588
|
+
var uploader = document.createElement('input');
|
|
22589
|
+
uploader.style.display = 'none';
|
|
22590
|
+
uploader.id = ImageTool.INPUT_ID;
|
|
22591
|
+
uploader.type = 'file';
|
|
22592
|
+
uploader.accept = supportedMimes.map(function (item) {
|
|
22593
|
+
return "image/".concat(item);
|
|
22594
|
+
}).join(',');
|
|
22595
|
+
document.body.appendChild(uploader);
|
|
22596
|
+
return uploader;
|
|
22597
|
+
}
|
|
22598
|
+
}, {
|
|
22599
|
+
key: "getElement",
|
|
22600
|
+
value: function getElement() {
|
|
22601
|
+
var element = document.getElementById(ImageTool.INPUT_ID);
|
|
22602
|
+
if (element instanceof HTMLInputElement) {
|
|
22603
|
+
return element;
|
|
22604
|
+
}
|
|
22605
|
+
element === null || element === void 0 || element.remove();
|
|
22606
|
+
return this.createElement();
|
|
22607
|
+
}
|
|
22608
|
+
}, {
|
|
22609
|
+
key: "resetElementValue",
|
|
22610
|
+
value: function resetElementValue() {
|
|
22611
|
+
this.getElement().value = '';
|
|
22612
|
+
}
|
|
22613
|
+
}]);
|
|
22614
|
+
return ImageTool;
|
|
22615
|
+
}();
|
|
22616
|
+
_defineProperty__default["default"](ImageTool, "INPUT_ID", 'image-upload');
|
|
22617
|
+
|
|
22618
|
+
var toolsMap = _defineProperty__default["default"]({
|
|
22418
22619
|
hand: HandTool,
|
|
22419
22620
|
rgroupatom: RGroupAtomTool,
|
|
22420
22621
|
select: SelectTool,
|
|
@@ -22437,7 +22638,7 @@ var toolsMap = {
|
|
|
22437
22638
|
enhancedStereo: EnhancedStereoTool,
|
|
22438
22639
|
simpleobject: SimpleObjectTool,
|
|
22439
22640
|
text: TextTool
|
|
22440
|
-
};
|
|
22641
|
+
}, ketcherCore.IMAGE_KEY, ImageTool);
|
|
22441
22642
|
|
|
22442
22643
|
var Highlighter = function () {
|
|
22443
22644
|
function Highlighter(editor) {
|
|
@@ -23308,8 +23509,8 @@ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedec
|
|
|
23308
23509
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
|
23309
23510
|
var SCALE = ketcherCore.provideEditorSettings().microModeScale;
|
|
23310
23511
|
var HISTORY_SIZE = 32;
|
|
23311
|
-
var structObjects = ['atoms', 'bonds', 'frags', 'sgroups', 'sgroupData', 'rgroups', 'rxnArrows', 'rxnPluses', 'enhancedFlags', 'simpleObjects', 'texts'];
|
|
23312
|
-
var highlightTargets = ['atoms', 'bonds', 'rxnArrows', 'rxnPluses', 'functionalGroups', 'frags', 'merge', 'rgroups', 'rgroupAttachmentPoints', 'sgroups', 'sgroupData', 'enhancedFlags', 'simpleObjects', 'texts'];
|
|
23512
|
+
var structObjects = ['atoms', 'bonds', 'frags', 'sgroups', 'sgroupData', 'rgroups', 'rxnArrows', 'rxnPluses', 'enhancedFlags', 'simpleObjects', 'texts', ketcherCore.IMAGE_KEY];
|
|
23513
|
+
var highlightTargets = ['atoms', 'bonds', 'rxnArrows', 'rxnPluses', 'functionalGroups', 'frags', 'merge', 'rgroups', 'rgroupAttachmentPoints', 'sgroups', 'sgroupData', 'enhancedFlags', 'simpleObjects', 'texts', ketcherCore.IMAGE_KEY];
|
|
23313
23514
|
function selectStereoFlagsIfNecessary(atoms, expAtoms) {
|
|
23314
23515
|
var atomsOfFragments = {};
|
|
23315
23516
|
atoms.forEach(function (atom, atomId) {
|
|
@@ -23739,7 +23940,7 @@ var Editor$3 = function () {
|
|
|
23739
23940
|
value: function structSelected() {
|
|
23740
23941
|
var struct = this.render.ctab.molecule;
|
|
23741
23942
|
var selection = this.explicitSelected();
|
|
23742
|
-
var dst = struct.clone(new ketcherCore.Pile(selection.atoms), new ketcherCore.Pile(selection.bonds), true, null, new ketcherCore.Pile(selection.simpleObjects), new ketcherCore.Pile(selection.texts));
|
|
23943
|
+
var dst = struct.clone(new ketcherCore.Pile(selection.atoms), new ketcherCore.Pile(selection.bonds), true, null, new ketcherCore.Pile(selection.simpleObjects), new ketcherCore.Pile(selection.texts), null, new ketcherCore.Pile(selection.images));
|
|
23743
23944
|
struct.rxnArrows.forEach(function (item, id) {
|
|
23744
23945
|
if (selection.rxnArrows.indexOf(id) !== -1) dst.rxnArrows.add(item.clone());
|
|
23745
23946
|
});
|
|
@@ -24099,6 +24300,10 @@ function ButtonGroup(_ref) {
|
|
|
24099
24300
|
}, [onClick]);
|
|
24100
24301
|
return jsxRuntime.jsx(material.ToggleButtonGroup, {
|
|
24101
24302
|
exclusive: true,
|
|
24303
|
+
style: {
|
|
24304
|
+
overflowX: 'hidden',
|
|
24305
|
+
flexWrap: 'wrap'
|
|
24306
|
+
},
|
|
24102
24307
|
children: buttons.map(function (_ref2) {
|
|
24103
24308
|
var label = _ref2.label,
|
|
24104
24309
|
buttonValue = _ref2.value;
|
|
@@ -24109,6 +24314,11 @@ function ButtonGroup(_ref) {
|
|
|
24109
24314
|
return handleChange(event, buttonValue);
|
|
24110
24315
|
},
|
|
24111
24316
|
className: clsx__default["default"](classes$F.button, _defineProperty__default["default"]({}, classes$F.selected, buttonValue === value)),
|
|
24317
|
+
style: {
|
|
24318
|
+
flex: '1 0 25%',
|
|
24319
|
+
margin: '2px',
|
|
24320
|
+
borderRadius: '3px'
|
|
24321
|
+
},
|
|
24112
24322
|
children: label || 'none'
|
|
24113
24323
|
}, label);
|
|
24114
24324
|
})
|
|
@@ -24560,7 +24770,11 @@ var useBondTypeChange = function useBondTypeChange() {
|
|
|
24560
24770
|
var disabled = React.useCallback(function (_ref2) {
|
|
24561
24771
|
var props = _ref2.props;
|
|
24562
24772
|
var selectedBondIds = props === null || props === void 0 ? void 0 : props.bondIds;
|
|
24773
|
+
var editor = getKetcherInstance().editor;
|
|
24563
24774
|
if (Array.isArray(selectedBondIds) && selectedBondIds.length !== 0) {
|
|
24775
|
+
if (editor.struct().isBondFromMacromolecule(selectedBondIds[0])) {
|
|
24776
|
+
return true;
|
|
24777
|
+
}
|
|
24564
24778
|
return false;
|
|
24565
24779
|
}
|
|
24566
24780
|
return true;
|
|
@@ -24577,8 +24791,9 @@ var BondMenuItems = function BondMenuItems(props) {
|
|
|
24577
24791
|
_useBondEdit2 = _slicedToArray__default["default"](_useBondEdit, 1),
|
|
24578
24792
|
handleEdit = _useBondEdit2[0];
|
|
24579
24793
|
var _useBondTypeChange = useBondTypeChange(),
|
|
24580
|
-
_useBondTypeChange2 = _slicedToArray__default["default"](_useBondTypeChange,
|
|
24581
|
-
handleTypeChange = _useBondTypeChange2[0]
|
|
24794
|
+
_useBondTypeChange2 = _slicedToArray__default["default"](_useBondTypeChange, 2),
|
|
24795
|
+
handleTypeChange = _useBondTypeChange2[0],
|
|
24796
|
+
disabled = _useBondTypeChange2[1];
|
|
24582
24797
|
var _useBondSGroupAttach = useBondSGroupAttach(),
|
|
24583
24798
|
_useBondSGroupAttach2 = _slicedToArray__default["default"](_useBondSGroupAttach, 2),
|
|
24584
24799
|
handleSGroupAttach = _useBondSGroupAttach2[0],
|
|
@@ -24590,9 +24805,13 @@ var BondMenuItems = function BondMenuItems(props) {
|
|
|
24590
24805
|
sGroupEditHidden = _useBondSGroupEdit2[2];
|
|
24591
24806
|
var handleDelete = useDelete$1();
|
|
24592
24807
|
var bondNamesWithoutEmptyValue = nonQueryBondNames.slice(1);
|
|
24808
|
+
var isDisabled = disabled({
|
|
24809
|
+
props: props.propsFromTrigger
|
|
24810
|
+
});
|
|
24593
24811
|
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
24594
24812
|
children: [jsxRuntime.jsx(reactContexify.Item, _objectSpread$L(_objectSpread$L({}, props), {}, {
|
|
24595
24813
|
onClick: handleEdit,
|
|
24814
|
+
disabled: isDisabled,
|
|
24596
24815
|
children: (_props$propsFromTrigg = props.propsFromTrigger) !== null && _props$propsFromTrigg !== void 0 && _props$propsFromTrigg.extraItemsSelected ? 'Edit selected bonds...' : 'Edit...'
|
|
24597
24816
|
})), bondNamesWithoutEmptyValue.map(function (name, i) {
|
|
24598
24817
|
var iconName = getIconName(name);
|
|
@@ -24602,7 +24821,8 @@ var BondMenuItems = function BondMenuItems(props) {
|
|
|
24602
24821
|
}, props), {}, {
|
|
24603
24822
|
id: name,
|
|
24604
24823
|
onClick: handleTypeChange,
|
|
24605
|
-
key: name
|
|
24824
|
+
key: name,
|
|
24825
|
+
disabled: isDisabled
|
|
24606
24826
|
}), iconName && jsxRuntime.jsx(Icon, {
|
|
24607
24827
|
name: iconName,
|
|
24608
24828
|
className: styles$e.icon
|
|
@@ -24618,6 +24838,7 @@ var BondMenuItems = function BondMenuItems(props) {
|
|
|
24618
24838
|
className: styles$e.sameGroup,
|
|
24619
24839
|
id: name,
|
|
24620
24840
|
onClick: handleTypeChange,
|
|
24841
|
+
disabled: isDisabled,
|
|
24621
24842
|
children: [iconName && jsxRuntime.jsx(Icon, {
|
|
24622
24843
|
name: iconName,
|
|
24623
24844
|
className: styles$e.icon
|
|
@@ -24908,19 +25129,62 @@ var props = {
|
|
|
24908
25129
|
var ContextMenu = function ContextMenu() {
|
|
24909
25130
|
var _useAppContext = useAppContext(),
|
|
24910
25131
|
getKetcherInstance = _useAppContext.getKetcherInstance;
|
|
24911
|
-
var
|
|
24912
|
-
var
|
|
25132
|
+
var adjustSubmenuPosition = function adjustSubmenuPosition(submenuElement) {
|
|
25133
|
+
var rect = submenuElement.getBoundingClientRect();
|
|
25134
|
+
var ketcherRootElement = document.querySelector(KETCHER_ROOT_NODE_CSS_SELECTOR);
|
|
25135
|
+
var ketcherRootElementRect = ketcherRootElement === null || ketcherRootElement === void 0 ? void 0 : ketcherRootElement.getBoundingClientRect();
|
|
25136
|
+
var ketcherEditorWidth = (ketcherRootElementRect === null || ketcherRootElementRect === void 0 ? void 0 : ketcherRootElementRect.width) || 0;
|
|
25137
|
+
var ketcherEditorHeight = (ketcherRootElementRect === null || ketcherRootElementRect === void 0 ? void 0 : ketcherRootElementRect.height) || 0;
|
|
25138
|
+
var ketcherEditorLeft = (ketcherRootElementRect === null || ketcherRootElementRect === void 0 ? void 0 : ketcherRootElementRect.left) || 0;
|
|
25139
|
+
var ketcherEditorTop = (ketcherRootElementRect === null || ketcherRootElementRect === void 0 ? void 0 : ketcherRootElementRect.top) || 0;
|
|
25140
|
+
if (rect.right - ketcherEditorLeft > ketcherEditorWidth) {
|
|
25141
|
+
submenuElement.style.left = 'auto';
|
|
25142
|
+
submenuElement.style.right = '100%';
|
|
25143
|
+
} else {
|
|
25144
|
+
submenuElement.style.left = '100%';
|
|
25145
|
+
submenuElement.style.right = 'auto';
|
|
25146
|
+
}
|
|
25147
|
+
if (rect.bottom - ketcherEditorTop > ketcherEditorHeight) {
|
|
25148
|
+
submenuElement.style.top = 'auto';
|
|
25149
|
+
submenuElement.style.bottom = '0';
|
|
25150
|
+
} else {
|
|
25151
|
+
submenuElement.style.top = '0';
|
|
25152
|
+
submenuElement.style.bottom = 'auto';
|
|
25153
|
+
}
|
|
25154
|
+
};
|
|
25155
|
+
var resetMenuPosition = function resetMenuPosition(menuElement) {
|
|
25156
|
+
var contextMenuElement = menuElement;
|
|
24913
25157
|
var ketcherRootElement = document.querySelector(KETCHER_ROOT_NODE_CSS_SELECTOR);
|
|
24914
25158
|
if (!contextMenuElement || !ketcherRootElement) {
|
|
24915
25159
|
return;
|
|
24916
25160
|
}
|
|
24917
25161
|
var contextMenuElementBoundingBox = contextMenuElement.getBoundingClientRect();
|
|
24918
25162
|
var ketcherRootElementBoundingBox = ketcherRootElement.getBoundingClientRect();
|
|
25163
|
+
var viewportWidth = window.innerWidth;
|
|
25164
|
+
var viewportHeight = window.innerHeight;
|
|
24919
25165
|
if (!contextMenuElementBoundingBox || !ketcherRootElementBoundingBox) {
|
|
24920
25166
|
return;
|
|
24921
25167
|
}
|
|
24922
|
-
var left = contextMenuElementBoundingBox.
|
|
24923
|
-
var top = contextMenuElementBoundingBox.
|
|
25168
|
+
var left = contextMenuElementBoundingBox.left;
|
|
25169
|
+
var top = contextMenuElementBoundingBox.top;
|
|
25170
|
+
if (contextMenuElementBoundingBox.right > ketcherRootElementBoundingBox.right) {
|
|
25171
|
+
left = ketcherRootElementBoundingBox.right - contextMenuElementBoundingBox.width;
|
|
25172
|
+
}
|
|
25173
|
+
if (contextMenuElementBoundingBox.bottom > ketcherRootElementBoundingBox.bottom) {
|
|
25174
|
+
top = ketcherRootElementBoundingBox.bottom - contextMenuElementBoundingBox.height;
|
|
25175
|
+
}
|
|
25176
|
+
if (left < 0) {
|
|
25177
|
+
left = 0;
|
|
25178
|
+
}
|
|
25179
|
+
if (top < 0) {
|
|
25180
|
+
top = 0;
|
|
25181
|
+
}
|
|
25182
|
+
if (contextMenuElementBoundingBox.right > viewportWidth) {
|
|
25183
|
+
left = viewportWidth - contextMenuElementBoundingBox.width - 10;
|
|
25184
|
+
}
|
|
25185
|
+
if (contextMenuElementBoundingBox.bottom > viewportHeight) {
|
|
25186
|
+
top = viewportHeight - contextMenuElementBoundingBox.height - 10;
|
|
25187
|
+
}
|
|
24924
25188
|
contextMenuElement.style.left = "".concat(left, "px");
|
|
24925
25189
|
contextMenuElement.style.top = "".concat(top, "px");
|
|
24926
25190
|
};
|
|
@@ -24928,7 +25192,18 @@ var ContextMenu = function ContextMenu() {
|
|
|
24928
25192
|
var editor = getKetcherInstance().editor;
|
|
24929
25193
|
if (visible) {
|
|
24930
25194
|
editor.hoverIcon.hide();
|
|
24931
|
-
|
|
25195
|
+
var contextMenuElement = document.querySelector('.contexify:last-of-type');
|
|
25196
|
+
var submenuElements = document.querySelectorAll('.contexify_submenu');
|
|
25197
|
+
if (contextMenuElement) {
|
|
25198
|
+
setTimeout(function () {
|
|
25199
|
+
return resetMenuPosition(contextMenuElement);
|
|
25200
|
+
}, 0);
|
|
25201
|
+
}
|
|
25202
|
+
if (submenuElements.length) {
|
|
25203
|
+
submenuElements.forEach(function (submenuElement) {
|
|
25204
|
+
adjustSubmenuPosition(submenuElement);
|
|
25205
|
+
});
|
|
25206
|
+
}
|
|
24932
25207
|
}
|
|
24933
25208
|
editor.contextMenu[id] = visible;
|
|
24934
25209
|
}, [getKetcherInstance]);
|
|
@@ -28307,13 +28582,14 @@ function AtomListValid(value, atomType, isCustomQuery) {
|
|
|
28307
28582
|
}
|
|
28308
28583
|
return value.length >= 1;
|
|
28309
28584
|
}
|
|
28310
|
-
function pseudoAtomValid(value, atomType, isCustomQuery) {
|
|
28311
|
-
|
|
28312
|
-
var
|
|
28313
|
-
if (atomType
|
|
28314
|
-
return
|
|
28585
|
+
function pseudoAtomValid(value, atomType, isCustomQuery, disableQueryElements) {
|
|
28586
|
+
var capitalizedValue = _.capitalize(value);
|
|
28587
|
+
var isDisabledQueryElement = disableQueryElements === null || disableQueryElements === void 0 ? void 0 : disableQueryElements.includes(capitalizedValue);
|
|
28588
|
+
if (atomType === 'pseudo' && isDisabledQueryElement) {
|
|
28589
|
+
return false;
|
|
28315
28590
|
}
|
|
28316
|
-
|
|
28591
|
+
var isGenericElement = ketcherCore.genericsList.includes(capitalizedValue);
|
|
28592
|
+
return atomType !== 'pseudo' || isCustomQuery || value && isGenericElement;
|
|
28317
28593
|
}
|
|
28318
28594
|
function chargeValid(charge, isMultipleAtoms, isCustomQuery) {
|
|
28319
28595
|
var result = matchCharge(charge);
|
|
@@ -28490,12 +28766,13 @@ var Atom = function Atom(props) {
|
|
|
28490
28766
|
};
|
|
28491
28767
|
var customValid = React.useMemo(function () {
|
|
28492
28768
|
var atomType = formState.result.atomType;
|
|
28769
|
+
var disableQueryElements = ketcherCore.SettingsManager.getOptions().disableQueryElements;
|
|
28493
28770
|
return {
|
|
28494
28771
|
label: function label(_label) {
|
|
28495
28772
|
return atomValid(_label, isMultipleAtoms, atomType, isCustomQuery);
|
|
28496
28773
|
},
|
|
28497
28774
|
pseudo: function pseudo(value) {
|
|
28498
|
-
return pseudoAtomValid(value, atomType, isCustomQuery);
|
|
28775
|
+
return pseudoAtomValid(value, atomType, isCustomQuery, disableQueryElements);
|
|
28499
28776
|
},
|
|
28500
28777
|
atomList: function atomList(value) {
|
|
28501
28778
|
return AtomListValid(value, atomType, isCustomQuery);
|
|
@@ -30981,11 +31258,8 @@ function mapSelectionToProps(editor) {
|
|
|
30981
31258
|
}
|
|
30982
31259
|
return {};
|
|
30983
31260
|
}
|
|
30984
|
-
var mapStateToProps$2 = function mapStateToProps(state
|
|
31261
|
+
var mapStateToProps$2 = function mapStateToProps(state) {
|
|
30985
31262
|
var editor = state.editor;
|
|
30986
|
-
if (ownProps.values || ownProps.label) {
|
|
30987
|
-
return {};
|
|
30988
|
-
}
|
|
30989
31263
|
var disabledQueryElements = editor.render.options.disableQueryElements;
|
|
30990
31264
|
return _objectSpread$c({
|
|
30991
31265
|
disabledQueryElements: disabledQueryElements
|
|
@@ -33045,18 +33319,32 @@ var MOUSE_MOVE_THROTTLE_TIMEOUT = 300;
|
|
|
33045
33319
|
var handleMouseMove = function handleMouseMove(dispatch, event) {
|
|
33046
33320
|
dispatch(updateCursorPosition(event.clientX, event.clientY));
|
|
33047
33321
|
};
|
|
33322
|
+
var pointerMoveListener = null;
|
|
33323
|
+
var mouseDownListener = null;
|
|
33048
33324
|
function initMouseListener(element) {
|
|
33049
33325
|
return function (dispatch, getState) {
|
|
33050
33326
|
var throttledHandleMouseMove = _.throttle(handleMouseMove, MOUSE_MOVE_THROTTLE_TIMEOUT);
|
|
33051
|
-
|
|
33327
|
+
pointerMoveListener = function pointerMoveListener(event) {
|
|
33052
33328
|
return throttledHandleMouseMove(dispatch, event);
|
|
33053
|
-
}
|
|
33054
|
-
|
|
33329
|
+
};
|
|
33330
|
+
mouseDownListener = function mouseDownListener(event) {
|
|
33055
33331
|
var areBothLeftAndRightButtonsClicked = event.buttons === 3;
|
|
33056
33332
|
if (areBothLeftAndRightButtonsClicked) {
|
|
33057
33333
|
handleRightClick(getState);
|
|
33058
33334
|
}
|
|
33059
|
-
}
|
|
33335
|
+
};
|
|
33336
|
+
element.addEventListener('pointermove', pointerMoveListener);
|
|
33337
|
+
element.addEventListener('mousedown', mouseDownListener, true);
|
|
33338
|
+
};
|
|
33339
|
+
}
|
|
33340
|
+
function removeMouseListeners(element) {
|
|
33341
|
+
return function () {
|
|
33342
|
+
if (pointerMoveListener) {
|
|
33343
|
+
element.removeEventListener('pointermove', pointerMoveListener);
|
|
33344
|
+
}
|
|
33345
|
+
if (mouseDownListener) {
|
|
33346
|
+
element.addEventListener('mousedown', mouseDownListener, true);
|
|
33347
|
+
}
|
|
33060
33348
|
};
|
|
33061
33349
|
}
|
|
33062
33350
|
function handleRightClick(getState) {
|
|
@@ -33073,14 +33361,22 @@ function initApp(element, appRoot, staticResourcesUrl, options, server, resolve,
|
|
|
33073
33361
|
ketcherRef = ketcher;
|
|
33074
33362
|
};
|
|
33075
33363
|
var ketcherId = _.uniqueId();
|
|
33364
|
+
var getServerSetter;
|
|
33076
33365
|
var setEditor = function setEditor(editor) {
|
|
33366
|
+
var setServer = getServerSetter();
|
|
33077
33367
|
resolve({
|
|
33078
33368
|
editor: editor,
|
|
33079
33369
|
setKetcher: setKetcher,
|
|
33080
|
-
ketcherId: ketcherId
|
|
33370
|
+
ketcherId: ketcherId,
|
|
33371
|
+
setServer: setServer
|
|
33081
33372
|
});
|
|
33082
33373
|
};
|
|
33083
33374
|
var store = createStore(options, server, setEditor);
|
|
33375
|
+
getServerSetter = function getServerSetter() {
|
|
33376
|
+
return function (structService) {
|
|
33377
|
+
store.dispatch(setServer(structService));
|
|
33378
|
+
};
|
|
33379
|
+
};
|
|
33084
33380
|
store.dispatch(initKeydownListener(element));
|
|
33085
33381
|
store.dispatch(initMouseListener(element));
|
|
33086
33382
|
store.dispatch(initResize());
|
|
@@ -33108,6 +33404,10 @@ function initApp(element, appRoot, staticResourcesUrl, options, server, resolve,
|
|
|
33108
33404
|
})
|
|
33109
33405
|
})
|
|
33110
33406
|
}));
|
|
33407
|
+
return function () {
|
|
33408
|
+
store.dispatch(removeKeydownListener(element));
|
|
33409
|
+
store.dispatch(removeMouseListeners(element));
|
|
33410
|
+
};
|
|
33111
33411
|
}
|
|
33112
33412
|
|
|
33113
33413
|
var indigo;
|
|
@@ -33156,6 +33456,28 @@ var KetcherBuilder = function () {
|
|
|
33156
33456
|
}
|
|
33157
33457
|
return appendApiAsync;
|
|
33158
33458
|
}()
|
|
33459
|
+
}, {
|
|
33460
|
+
key: "reinitializeApi",
|
|
33461
|
+
value: function reinitializeApi(structServiceProvider, setStructServiceToStore) {
|
|
33462
|
+
var _this = this;
|
|
33463
|
+
var oldStructService = this.structService;
|
|
33464
|
+
this.structService = createApi(structServiceProvider, ketcherCore.DefaultStructServiceOptions);
|
|
33465
|
+
window.addEventListener(STRUCT_SERVICE_INITIALIZED_EVENT, function () {
|
|
33466
|
+
var _oldStructService$des;
|
|
33467
|
+
oldStructService === null || oldStructService === void 0 || (_oldStructService$des = oldStructService.destroy) === null || _oldStructService$des === void 0 || _oldStructService$des.call(oldStructService);
|
|
33468
|
+
if (!_this.structService) {
|
|
33469
|
+
ketcherCore.KetcherLogger.warn('Structure service is not reinitialized');
|
|
33470
|
+
return;
|
|
33471
|
+
}
|
|
33472
|
+
var ketcher = ketcherCore.ketcherProvider.getKetcher();
|
|
33473
|
+
ketcher.reinitializeIndigo(_this.structService);
|
|
33474
|
+
IndigoProvider.setIndigo(_this.structService);
|
|
33475
|
+
setStructServiceToStore(_this.structService);
|
|
33476
|
+
}, {
|
|
33477
|
+
once: true
|
|
33478
|
+
});
|
|
33479
|
+
return this.structService;
|
|
33480
|
+
}
|
|
33159
33481
|
}, {
|
|
33160
33482
|
key: "appendServiceMode",
|
|
33161
33483
|
value: function appendServiceMode(mode) {
|
|
@@ -33165,35 +33487,39 @@ var KetcherBuilder = function () {
|
|
|
33165
33487
|
key: "appendUiAsync",
|
|
33166
33488
|
value: function () {
|
|
33167
33489
|
var _appendUiAsync = _asyncToGenerator__default["default"]( _regeneratorRuntime__default["default"].mark(function _callee2(element, appRoot, staticResourcesUrl, errorHandler, buttons, togglerComponent) {
|
|
33168
|
-
var structService, _yield$Promise, editor, setKetcher, ketcherId;
|
|
33490
|
+
var structService, cleanup, _yield$Promise, editor, setKetcher, ketcherId, setServer;
|
|
33169
33491
|
return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
|
|
33170
33492
|
while (1) switch (_context2.prev = _context2.next) {
|
|
33171
33493
|
case 0:
|
|
33172
33494
|
structService = this.structService;
|
|
33173
|
-
|
|
33495
|
+
cleanup = null;
|
|
33496
|
+
_context2.next = 4;
|
|
33174
33497
|
return new Promise(function (resolve) {
|
|
33175
|
-
initApp(element, appRoot, staticResourcesUrl, {
|
|
33498
|
+
cleanup = initApp(element, appRoot, staticResourcesUrl, {
|
|
33176
33499
|
buttons: buttons || {},
|
|
33177
33500
|
errorHandler: errorHandler || null,
|
|
33178
|
-
version: "2.
|
|
33179
|
-
buildDate: "2024-08-
|
|
33501
|
+
version: "2.24.0-rc.2" ,
|
|
33502
|
+
buildDate: "2024-08-14T18:22:51" ,
|
|
33180
33503
|
buildNumber: ''
|
|
33181
33504
|
}, structService, resolve, togglerComponent);
|
|
33182
33505
|
});
|
|
33183
|
-
case
|
|
33506
|
+
case 4:
|
|
33184
33507
|
_yield$Promise = _context2.sent;
|
|
33185
33508
|
editor = _yield$Promise.editor;
|
|
33186
33509
|
setKetcher = _yield$Promise.setKetcher;
|
|
33187
33510
|
ketcherId = _yield$Promise.ketcherId;
|
|
33511
|
+
setServer = _yield$Promise.setServer;
|
|
33188
33512
|
this.editor = editor;
|
|
33189
33513
|
this.editor.errorHandler = errorHandler && typeof errorHandler === 'function' ? errorHandler :
|
|
33190
33514
|
function () {};
|
|
33191
33515
|
this.formatterFactory = new ketcherCore.FormatterFactory(structService);
|
|
33192
33516
|
return _context2.abrupt("return", {
|
|
33193
33517
|
setKetcher: setKetcher,
|
|
33194
|
-
ketcherId: ketcherId
|
|
33518
|
+
ketcherId: ketcherId,
|
|
33519
|
+
cleanup: cleanup,
|
|
33520
|
+
setServer: setServer
|
|
33195
33521
|
});
|
|
33196
|
-
case
|
|
33522
|
+
case 13:
|
|
33197
33523
|
case "end":
|
|
33198
33524
|
return _context2.stop();
|
|
33199
33525
|
}
|
|
@@ -33240,7 +33566,7 @@ function buildKetcherAsync(_x) {
|
|
|
33240
33566
|
}
|
|
33241
33567
|
function _buildKetcherAsync() {
|
|
33242
33568
|
_buildKetcherAsync = _asyncToGenerator__default["default"]( _regeneratorRuntime__default["default"].mark(function _callee(_ref) {
|
|
33243
|
-
var element, appRoot, staticResourcesUrl, structServiceProvider, buttons, errorHandler, togglerComponent, builder, _yield$builder$append, setKetcher, ketcherId, ketcher;
|
|
33569
|
+
var element, appRoot, staticResourcesUrl, structServiceProvider, buttons, errorHandler, togglerComponent, builder, _yield$builder$append, setKetcher, ketcherId, cleanup, setServer, ketcher;
|
|
33244
33570
|
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
|
|
33245
33571
|
while (1) switch (_context.prev = _context.next) {
|
|
33246
33572
|
case 0:
|
|
@@ -33256,15 +33582,20 @@ function _buildKetcherAsync() {
|
|
|
33256
33582
|
_yield$builder$append = _context.sent;
|
|
33257
33583
|
setKetcher = _yield$builder$append.setKetcher;
|
|
33258
33584
|
ketcherId = _yield$builder$append.ketcherId;
|
|
33585
|
+
cleanup = _yield$builder$append.cleanup;
|
|
33586
|
+
setServer = _yield$builder$append.setServer;
|
|
33259
33587
|
ketcher = builder.build();
|
|
33260
33588
|
if (ketcher) {
|
|
33261
33589
|
setKetcher(ketcher);
|
|
33262
33590
|
}
|
|
33263
33591
|
return _context.abrupt("return", {
|
|
33264
33592
|
ketcher: ketcher,
|
|
33265
|
-
ketcherId: ketcherId
|
|
33593
|
+
ketcherId: ketcherId,
|
|
33594
|
+
cleanup: cleanup,
|
|
33595
|
+
builder: builder,
|
|
33596
|
+
setServer: setServer
|
|
33266
33597
|
});
|
|
33267
|
-
case
|
|
33598
|
+
case 15:
|
|
33268
33599
|
case "end":
|
|
33269
33600
|
return _context.stop();
|
|
33270
33601
|
}
|
|
@@ -33282,30 +33613,60 @@ var mediaSizes = {
|
|
|
33282
33613
|
smallHeight: 600
|
|
33283
33614
|
};
|
|
33284
33615
|
function Editor(props) {
|
|
33616
|
+
var initPromiseRef = React.useRef(null);
|
|
33617
|
+
var appRootRef = React.useRef(null);
|
|
33618
|
+
var cleanupRef = React.useRef(null);
|
|
33619
|
+
var ketcherBuilderRef = React.useRef(null);
|
|
33620
|
+
var setServerRef = React.useRef(function () {});
|
|
33621
|
+
var structServiceProvider = props.structServiceProvider;
|
|
33285
33622
|
var rootElRef = React.useRef(null);
|
|
33286
|
-
var onInit = props.onInit;
|
|
33287
33623
|
var _useResizeObserver = useThrottleResizeObserver({
|
|
33288
33624
|
ref: rootElRef
|
|
33289
33625
|
}),
|
|
33290
33626
|
height = _useResizeObserver.height,
|
|
33291
33627
|
width = _useResizeObserver.width;
|
|
33292
33628
|
React.useEffect(function () {
|
|
33293
|
-
var
|
|
33294
|
-
|
|
33629
|
+
var _ketcherBuilderRef$cu;
|
|
33630
|
+
(_ketcherBuilderRef$cu = ketcherBuilderRef.current) === null || _ketcherBuilderRef$cu === void 0 || _ketcherBuilderRef$cu.reinitializeApi(props.structServiceProvider, setServerRef.current);
|
|
33631
|
+
}, [structServiceProvider]);
|
|
33632
|
+
var initKetcher = function initKetcher() {
|
|
33633
|
+
var _initPromiseRef$curre;
|
|
33634
|
+
appRootRef.current = client.createRoot(rootElRef.current);
|
|
33635
|
+
initPromiseRef.current = buildKetcherAsync(_objectSpread(_objectSpread({}, props), {}, {
|
|
33295
33636
|
element: rootElRef.current,
|
|
33296
|
-
appRoot:
|
|
33297
|
-
}))
|
|
33637
|
+
appRoot: appRootRef.current
|
|
33638
|
+
}));
|
|
33639
|
+
(_initPromiseRef$curre = initPromiseRef.current) === null || _initPromiseRef$curre === void 0 || _initPromiseRef$curre.then(function (_ref) {
|
|
33298
33640
|
var ketcher = _ref.ketcher,
|
|
33299
|
-
ketcherId = _ref.ketcherId
|
|
33300
|
-
|
|
33301
|
-
|
|
33641
|
+
ketcherId = _ref.ketcherId,
|
|
33642
|
+
cleanup = _ref.cleanup,
|
|
33643
|
+
builder = _ref.builder,
|
|
33644
|
+
setServer = _ref.setServer;
|
|
33645
|
+
cleanupRef.current = cleanup;
|
|
33646
|
+
ketcherBuilderRef.current = builder;
|
|
33647
|
+
setServerRef.current = setServer;
|
|
33648
|
+
if (typeof props.onInit === 'function' && ketcher) {
|
|
33649
|
+
props.onInit(ketcher);
|
|
33302
33650
|
var ketcherInitEvent = new Event(ketcherInitEventName(ketcherId));
|
|
33303
33651
|
window.dispatchEvent(ketcherInitEvent);
|
|
33304
33652
|
}
|
|
33305
33653
|
});
|
|
33654
|
+
};
|
|
33655
|
+
React.useEffect(function () {
|
|
33656
|
+
if (initPromiseRef.current === null) {
|
|
33657
|
+
initKetcher();
|
|
33658
|
+
} else {
|
|
33659
|
+
var _initPromiseRef$curre2;
|
|
33660
|
+
(_initPromiseRef$curre2 = initPromiseRef.current) === null || _initPromiseRef$curre2 === void 0 || _initPromiseRef$curre2["finally"](function () {
|
|
33661
|
+
initKetcher();
|
|
33662
|
+
});
|
|
33663
|
+
}
|
|
33306
33664
|
return function () {
|
|
33307
|
-
|
|
33308
|
-
|
|
33665
|
+
var _initPromiseRef$curre3;
|
|
33666
|
+
(_initPromiseRef$curre3 = initPromiseRef.current) === null || _initPromiseRef$curre3 === void 0 || _initPromiseRef$curre3.then(function () {
|
|
33667
|
+
var _cleanupRef$current, _appRootRef$current;
|
|
33668
|
+
(_cleanupRef$current = cleanupRef.current) === null || _cleanupRef$current === void 0 || _cleanupRef$current.call(cleanupRef);
|
|
33669
|
+
(_appRootRef$current = appRootRef.current) === null || _appRootRef$current === void 0 || _appRootRef$current.unmount();
|
|
33309
33670
|
});
|
|
33310
33671
|
};
|
|
33311
33672
|
}, []);
|
|
@@ -33330,6 +33691,8 @@ exports.KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR = KETCHER_MACROMOLECULES_ROOT_
|
|
|
33330
33691
|
exports.KETCHER_ROOT_NODE_CLASS_NAME = KETCHER_ROOT_NODE_CLASS_NAME;
|
|
33331
33692
|
exports.KETCHER_ROOT_NODE_CSS_SELECTOR = KETCHER_ROOT_NODE_CSS_SELECTOR;
|
|
33332
33693
|
exports.MODES = MODES;
|
|
33694
|
+
exports.STRUCT_SERVICE_INITIALIZED_EVENT = STRUCT_SERVICE_INITIALIZED_EVENT;
|
|
33695
|
+
exports.STRUCT_SERVICE_NO_RENDER_INITIALIZED_EVENT = STRUCT_SERVICE_NO_RENDER_INITIALIZED_EVENT;
|
|
33333
33696
|
exports.STRUCT_TYPE = STRUCT_TYPE;
|
|
33334
33697
|
exports.StructRender = StructRender;
|
|
33335
33698
|
exports.getIconName = getIconName;
|