ketcher-react 2.9.0-rc.5-dev.1 → 2.9.0-rc.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.d.ts +3 -0
- package/dist/index.js +175 -184
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +166 -176
- package/dist/index.modern.js.map +1 -1
- package/dist/script/editor/HoverIcon.d.ts +1 -1
- package/dist/script/editor/tool/template.d.ts +4 -2
- package/package.json +1 -1
- package/dist/script/editor/utils/canvasExtension.d.ts +0 -16
package/dist/index.modern.js
CHANGED
|
@@ -24,7 +24,7 @@ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
|
24
24
|
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
25
25
|
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
26
26
|
import _createClass from '@babel/runtime/helpers/createClass';
|
|
27
|
-
import { KetSerializer, MolSerializer, Ketcher, FormatterFactory, StereLabelStyleType, StereoColoringType, Bond as Bond$2, Elements, AtomList, StereoLabel, isAttachmentBond, findStereoAtoms, RxnArrowMode, SimpleObjectMode, SGroup as SGroup$1, Pile, getStereoAtomsMap, identifyStructFormat, SupportedFormat, ChemicalMimeType, SdfSerializer, Render, FunctionalGroup, FunctionalGroupsProvider, SaltsAndSolventsProvider, KetcherAsyncEvents, ElementColor, fromAtomsAttrs, fracAngle, Vec2, Action, fromSgroupDeletion, fromFragmentDeletion, fromAtomAddition, fromBondAddition, Atom as Atom$2, fromOneBondDeletion, bondChangingAction, fromBondsAttrs, fromChain, getItemsToFuse, getHoverToFuse, fromItemsFuse, fromStereoFlagUpdate, Scale, checkOverlapping, fromSeveralSgroupAddition, SgContexts, fromSgroupAction, mergeMapOfItemsToSet, setExpandSGroup, fromSimpleObjectResizing, fromArrowResizing, fromMultipleMove, fromTextDeletion, fromTextUpdating, fromOneAtomDeletion, fromArrowDeletion, fromPlusDeletion, fromSimpleObjectDeletion, fromPaste, fromTemplateOnAtom, RGroup as RGroup$2, fromRGroupFragment, fromUpdateIfThen, fromRGroupAttrs, fromArrowAddition, fromPlusAddition, fromRotate, fromFlip, fromBondAlign, fromSimpleObjectAddition, fromTemplateOnBondAction, fromTemplateOnCanvas, fromTextCreation, formatProperties, Fragment as Fragment$1, OperationType, fromHighlightCreate, fromHighlightClear, fromNewCanvas, Struct, fromDescriptorsAlign, getPropertiesByFormat, StereoFlag, getPropertiesByImgFormat, b64toBlob, Generics, TextCommand, DefaultStructServiceOptions } from 'ketcher-core';
|
|
27
|
+
import { KetSerializer, MolSerializer, Ketcher, FormatterFactory, StereLabelStyleType, StereoColoringType, Bond as Bond$2, Elements, AtomList, StereoLabel, isAttachmentBond, findStereoAtoms, RxnArrowMode, SimpleObjectMode, SGroup as SGroup$1, Pile, getStereoAtomsMap, identifyStructFormat, SupportedFormat, ChemicalMimeType, SdfSerializer, Render, FunctionalGroup, FunctionalGroupsProvider, SaltsAndSolventsProvider, KetcherAsyncEvents, ElementColor, fromAtomsAttrs, fracAngle, Vec2, Action, fromSgroupDeletion, fromFragmentDeletion, fromAtomAddition, fromBondAddition, Atom as Atom$2, fromOneBondDeletion, bondChangingAction, fromBondsAttrs, fromChain, getItemsToFuse, getHoverToFuse, fromItemsFuse, fromStereoFlagUpdate, Scale, checkOverlapping, fromSeveralSgroupAddition, SgContexts, fromSgroupAction, mergeMapOfItemsToSet, setExpandSGroup, fromSimpleObjectResizing, fromArrowResizing, fromMultipleMove, fromTextDeletion, fromTextUpdating, isCloseToEdgeOfCanvas, isCloseToEdgeOfScreen, getDirections, shiftAndExtendCanvasByVector, scrollByVector, fromOneAtomDeletion, fromArrowDeletion, fromPlusDeletion, fromSimpleObjectDeletion, fromPaste, fromTemplateOnAtom, RGroup as RGroup$2, fromRGroupFragment, fromUpdateIfThen, fromRGroupAttrs, fromArrowAddition, fromPlusAddition, fromRotate, fromFlip, fromBondAlign, fromSimpleObjectAddition, fromTemplateOnBondAction, fromTemplateOnCanvas, fromTextCreation, formatProperties, Fragment as Fragment$1, OperationType, fromHighlightCreate, fromHighlightClear, fromNewCanvas, Struct, fromDescriptorsAlign, getPropertiesByFormat, StereoFlag, getPropertiesByImgFormat, b64toBlob, Generics, TextCommand, DefaultStructServiceOptions } from 'ketcher-core';
|
|
28
28
|
import * as React from 'react';
|
|
29
29
|
import React__default, { createRef, Component, useState, useEffect, useRef, useMemo, createElement, forwardRef, useCallback, useLayoutEffect, Fragment as Fragment$2, PureComponent } from 'react';
|
|
30
30
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
@@ -2476,6 +2476,9 @@ var tools$1 = typeSchema$1["enum"].reduce(function (res, type, i) {
|
|
|
2476
2476
|
|
|
2477
2477
|
var KETCHER_INIT_EVENT_NAME = 'ketcher-init';
|
|
2478
2478
|
var KETCHER_SAVED_SETTINGS_KEY = 'ketcher_editor_saved_settings';
|
|
2479
|
+
var MODES = {
|
|
2480
|
+
FG: 'fg'
|
|
2481
|
+
};
|
|
2479
2482
|
|
|
2480
2483
|
function ownKeys$1a(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2481
2484
|
function _objectSpread$1a(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1a(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1a(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
@@ -3010,7 +3013,7 @@ var zoom = {
|
|
|
3010
3013
|
|
|
3011
3014
|
var openHelpLink = function openHelpLink() {
|
|
3012
3015
|
var _window$open;
|
|
3013
|
-
return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v2.9.0-rc.
|
|
3016
|
+
return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v2.9.0-rc.6\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
|
|
3014
3017
|
};
|
|
3015
3018
|
var help = {
|
|
3016
3019
|
help: {
|
|
@@ -3035,7 +3038,7 @@ var functionalGroupsLib = {
|
|
|
3035
3038
|
}
|
|
3036
3039
|
},
|
|
3037
3040
|
selected: function selected(editor) {
|
|
3038
|
-
return editor._tool.mode ===
|
|
3041
|
+
return editor._tool.mode === MODES.FG;
|
|
3039
3042
|
},
|
|
3040
3043
|
disabled: function disabled(_, __, options) {
|
|
3041
3044
|
return !options.app.functionalGroups;
|
|
@@ -8065,7 +8068,7 @@ function _objectSpread$10(target) { for (var i = 1; i < arguments.length; i++) {
|
|
|
8065
8068
|
var initialState$1 = {
|
|
8066
8069
|
lib: [],
|
|
8067
8070
|
functionalGroupInfo: null,
|
|
8068
|
-
mode:
|
|
8071
|
+
mode: MODES.FG
|
|
8069
8072
|
};
|
|
8070
8073
|
var functionalGroupsReducer = function functionalGroupsReducer() {
|
|
8071
8074
|
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState$1;
|
|
@@ -8140,7 +8143,7 @@ function ownKeys$$(object, enumerableOnly) { var keys = Object.keys(object); if
|
|
|
8140
8143
|
function _objectSpread$$(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$$(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$$(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
8141
8144
|
var initialState = {
|
|
8142
8145
|
lib: [],
|
|
8143
|
-
mode:
|
|
8146
|
+
mode: MODES.FG
|
|
8144
8147
|
};
|
|
8145
8148
|
var saltsAndSolventsReducer = function saltsAndSolventsReducer() {
|
|
8146
8149
|
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
|
|
@@ -12226,72 +12229,6 @@ function updateSelectedAtoms(_ref) {
|
|
|
12226
12229
|
}
|
|
12227
12230
|
}
|
|
12228
12231
|
|
|
12229
|
-
var edgeOffset = 150;
|
|
12230
|
-
function isCloseToEdgeOfScreen(event) {
|
|
12231
|
-
var clientX = event.clientX,
|
|
12232
|
-
clientY = event.clientY;
|
|
12233
|
-
var body = document.body;
|
|
12234
|
-
var isCloseToLeftEdgeOfScreen = clientX <= edgeOffset;
|
|
12235
|
-
var isCloseToTopEdgeOfScreen = clientY <= edgeOffset;
|
|
12236
|
-
var isCloseToRightEdgeOfScreen = body.clientWidth - clientX <= edgeOffset;
|
|
12237
|
-
var isCloseToBottomEdgeOfScreen = body.clientHeight - clientY <= edgeOffset;
|
|
12238
|
-
return {
|
|
12239
|
-
isCloseToLeftEdgeOfScreen: isCloseToLeftEdgeOfScreen,
|
|
12240
|
-
isCloseToTopEdgeOfScreen: isCloseToTopEdgeOfScreen,
|
|
12241
|
-
isCloseToRightEdgeOfScreen: isCloseToRightEdgeOfScreen,
|
|
12242
|
-
isCloseToBottomEdgeOfScreen: isCloseToBottomEdgeOfScreen
|
|
12243
|
-
};
|
|
12244
|
-
}
|
|
12245
|
-
function isCloseToEdgeOfCanvas(event, canvasSize) {
|
|
12246
|
-
var layerX = event.layerX,
|
|
12247
|
-
layerY = event.layerY;
|
|
12248
|
-
var isCloseToLeftEdgeOfCanvas = layerX <= edgeOffset;
|
|
12249
|
-
var isCloseToTopEdgeOfCanvas = layerY <= edgeOffset;
|
|
12250
|
-
var isCloseToRightEdgeOfCanvas = canvasSize.x - layerX <= edgeOffset;
|
|
12251
|
-
var isCloseToBottomEdgeOfCanvas = canvasSize.y - layerY <= edgeOffset;
|
|
12252
|
-
return {
|
|
12253
|
-
isCloseToLeftEdgeOfCanvas: isCloseToLeftEdgeOfCanvas,
|
|
12254
|
-
isCloseToTopEdgeOfCanvas: isCloseToTopEdgeOfCanvas,
|
|
12255
|
-
isCloseToRightEdgeOfCanvas: isCloseToRightEdgeOfCanvas,
|
|
12256
|
-
isCloseToBottomEdgeOfCanvas: isCloseToBottomEdgeOfCanvas
|
|
12257
|
-
};
|
|
12258
|
-
}
|
|
12259
|
-
function calculateCanvasExtension(clientArea, currentCanvasSize, extensionVector) {
|
|
12260
|
-
var newHorizontalScrollPosition = clientArea.scrollLeft + extensionVector.x;
|
|
12261
|
-
var newVerticalScrollPosition = clientArea.scrollTop + extensionVector.y;
|
|
12262
|
-
var horizontalExtension = 0;
|
|
12263
|
-
var verticalExtension = 0;
|
|
12264
|
-
if (newHorizontalScrollPosition > currentCanvasSize.x) {
|
|
12265
|
-
horizontalExtension = newHorizontalScrollPosition - currentCanvasSize.x;
|
|
12266
|
-
}
|
|
12267
|
-
if (newHorizontalScrollPosition < 0) {
|
|
12268
|
-
horizontalExtension = Math.abs(newHorizontalScrollPosition);
|
|
12269
|
-
}
|
|
12270
|
-
if (newVerticalScrollPosition > currentCanvasSize.y) {
|
|
12271
|
-
verticalExtension = newVerticalScrollPosition - currentCanvasSize.y;
|
|
12272
|
-
}
|
|
12273
|
-
if (newVerticalScrollPosition < 0) {
|
|
12274
|
-
verticalExtension = Math.abs(newVerticalScrollPosition);
|
|
12275
|
-
}
|
|
12276
|
-
return new Vec2(horizontalExtension, verticalExtension, 0);
|
|
12277
|
-
}
|
|
12278
|
-
function shiftAndExtendCanvasByVector(vector, render) {
|
|
12279
|
-
var clientArea = render.clientArea;
|
|
12280
|
-
var extensionVector = calculateCanvasExtension(clientArea, render.sz.scaled(render.options.zoom), vector).scaled(1 / render.options.zoom);
|
|
12281
|
-
if (extensionVector.x > 0 || extensionVector.y > 0) {
|
|
12282
|
-
render.setPaperSize(render.sz.add(extensionVector));
|
|
12283
|
-
render.setOffset(render.options.offset.add(vector));
|
|
12284
|
-
render.ctab.translate(vector);
|
|
12285
|
-
}
|
|
12286
|
-
scrollByVector(vector, render);
|
|
12287
|
-
render.update(false);
|
|
12288
|
-
}
|
|
12289
|
-
function scrollByVector(vector, render) {
|
|
12290
|
-
var clientArea = render.clientArea;
|
|
12291
|
-
clientArea.scrollLeft += vector.x * render.options.scale;
|
|
12292
|
-
clientArea.scrollTop += vector.y * render.options.scale;
|
|
12293
|
-
}
|
|
12294
|
-
|
|
12295
12232
|
function _createForOfIteratorHelper$6(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$6(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
12296
12233
|
function _unsupportedIterableToArray$6(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$6(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$6(o, minLen); }
|
|
12297
12234
|
function _arrayLikeToArray$6(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; }
|
|
@@ -12432,7 +12369,9 @@ var SelectTool = function () {
|
|
|
12432
12369
|
dragCtx.mergeItems = getMergeItems(editor, expSel);
|
|
12433
12370
|
editor.hover(getHoverToFuse(dragCtx.mergeItems));
|
|
12434
12371
|
extendCanvas(rnd, event);
|
|
12435
|
-
editor.update(dragCtx.action, true
|
|
12372
|
+
editor.update(dragCtx.action, true, {
|
|
12373
|
+
extendCanvas: false
|
|
12374
|
+
});
|
|
12436
12375
|
return true;
|
|
12437
12376
|
}
|
|
12438
12377
|
if (_classPrivateFieldGet(this, _lassoHelper).running()) {
|
|
@@ -12643,34 +12582,39 @@ function extendCanvas(render, event) {
|
|
|
12643
12582
|
isCloseToTopEdgeOfScreen = _isCloseToEdgeOfScree.isCloseToTopEdgeOfScreen,
|
|
12644
12583
|
isCloseToRightEdgeOfScreen = _isCloseToEdgeOfScree.isCloseToRightEdgeOfScreen,
|
|
12645
12584
|
isCloseToBottomEdgeOfScreen = _isCloseToEdgeOfScree.isCloseToBottomEdgeOfScreen;
|
|
12646
|
-
|
|
12585
|
+
var _getDirections = getDirections(event),
|
|
12586
|
+
isMovingLeft = _getDirections.isMovingLeft,
|
|
12587
|
+
isMovingRight = _getDirections.isMovingRight,
|
|
12588
|
+
isMovingTop = _getDirections.isMovingTop,
|
|
12589
|
+
isMovingBottom = _getDirections.isMovingBottom;
|
|
12590
|
+
if (isCloseToLeftEdgeOfCanvas && isMovingLeft) {
|
|
12647
12591
|
shiftAndExtendCanvasByVector(new Vec2(-offset, 0, 0), render);
|
|
12648
12592
|
}
|
|
12649
|
-
if (isCloseToTopEdgeOfCanvas) {
|
|
12593
|
+
if (isCloseToTopEdgeOfCanvas && isMovingTop) {
|
|
12650
12594
|
shiftAndExtendCanvasByVector(new Vec2(0, -offset, 0), render);
|
|
12651
12595
|
}
|
|
12652
|
-
if (isCloseToRightEdgeOfCanvas) {
|
|
12596
|
+
if (isCloseToRightEdgeOfCanvas && isMovingRight) {
|
|
12653
12597
|
shiftAndExtendCanvasByVector(new Vec2(offset, 0, 0), render);
|
|
12654
12598
|
}
|
|
12655
|
-
if (isCloseToBottomEdgeOfCanvas) {
|
|
12599
|
+
if (isCloseToBottomEdgeOfCanvas && isMovingBottom) {
|
|
12656
12600
|
shiftAndExtendCanvasByVector(new Vec2(0, offset, 0), render);
|
|
12657
12601
|
}
|
|
12658
|
-
var isCloseToSomeEdgeOfCanvas = [isCloseToTopEdgeOfCanvas, isCloseToRightEdgeOfCanvas, isCloseToBottomEdgeOfCanvas, isCloseToLeftEdgeOfCanvas].some(function (isCloseToEdge) {
|
|
12602
|
+
var isCloseToSomeEdgeOfCanvas = [isCloseToTopEdgeOfCanvas && isMovingTop, isCloseToRightEdgeOfCanvas && isMovingRight, isCloseToBottomEdgeOfCanvas && isMovingBottom, isCloseToLeftEdgeOfCanvas && isMovingLeft].some(function (isCloseToEdge) {
|
|
12659
12603
|
return isCloseToEdge;
|
|
12660
12604
|
});
|
|
12661
12605
|
if (isCloseToSomeEdgeOfCanvas) {
|
|
12662
12606
|
return;
|
|
12663
12607
|
}
|
|
12664
|
-
if (isCloseToTopEdgeOfScreen) {
|
|
12608
|
+
if (isCloseToTopEdgeOfScreen && isMovingTop) {
|
|
12665
12609
|
scrollByVector(new Vec2(0, -offset), render);
|
|
12666
12610
|
}
|
|
12667
|
-
if (isCloseToBottomEdgeOfScreen) {
|
|
12611
|
+
if (isCloseToBottomEdgeOfScreen && isMovingBottom) {
|
|
12668
12612
|
scrollByVector(new Vec2(0, offset), render);
|
|
12669
12613
|
}
|
|
12670
|
-
if (isCloseToLeftEdgeOfScreen) {
|
|
12614
|
+
if (isCloseToLeftEdgeOfScreen && isMovingLeft) {
|
|
12671
12615
|
scrollByVector(new Vec2(-offset, 0), render);
|
|
12672
12616
|
}
|
|
12673
|
-
if (isCloseToRightEdgeOfScreen) {
|
|
12617
|
+
if (isCloseToRightEdgeOfScreen && isMovingRight) {
|
|
12674
12618
|
scrollByVector(new Vec2(offset, 0), render);
|
|
12675
12619
|
}
|
|
12676
12620
|
}
|
|
@@ -14095,7 +14039,7 @@ var TemplateTool = function () {
|
|
|
14095
14039
|
this.findItems.push('atoms');
|
|
14096
14040
|
}
|
|
14097
14041
|
var bond = frag.bonds.get(this.template.bid);
|
|
14098
|
-
if (bond && this.
|
|
14042
|
+
if (bond && !this.isModeFunctionalGroup) {
|
|
14099
14043
|
this.template.sign = getSign(frag, bond, this.template.xy0);
|
|
14100
14044
|
this.findItems.push('bonds');
|
|
14101
14045
|
}
|
|
@@ -14109,73 +14053,119 @@ var TemplateTool = function () {
|
|
|
14109
14053
|
editor.hoverIcon.updatePosition();
|
|
14110
14054
|
}
|
|
14111
14055
|
_createClass(TemplateTool, [{
|
|
14056
|
+
key: "showRemoveAbbreviationPopup",
|
|
14057
|
+
value: function showRemoveAbbreviationPopup() {
|
|
14058
|
+
var _this = this;
|
|
14059
|
+
return this.editor.event.removeFG.dispatch({
|
|
14060
|
+
fgIds: this.targetGroupsIds
|
|
14061
|
+
}).then(function () {
|
|
14062
|
+
_this.targetGroupsIds.length = 0;
|
|
14063
|
+
return Promise.resolve();
|
|
14064
|
+
});
|
|
14065
|
+
}
|
|
14066
|
+
}, {
|
|
14067
|
+
key: "isModeFunctionalGroup",
|
|
14068
|
+
get: function get() {
|
|
14069
|
+
return this.mode === MODES.FG;
|
|
14070
|
+
}
|
|
14071
|
+
}, {
|
|
14112
14072
|
key: "mousedown",
|
|
14113
|
-
value: function
|
|
14114
|
-
var
|
|
14115
|
-
|
|
14116
|
-
|
|
14117
|
-
|
|
14118
|
-
|
|
14119
|
-
|
|
14120
|
-
|
|
14121
|
-
|
|
14122
|
-
|
|
14123
|
-
|
|
14124
|
-
|
|
14125
|
-
|
|
14126
|
-
|
|
14127
|
-
|
|
14128
|
-
|
|
14129
|
-
|
|
14130
|
-
|
|
14131
|
-
|
|
14132
|
-
|
|
14133
|
-
|
|
14134
|
-
|
|
14135
|
-
|
|
14136
|
-
|
|
14137
|
-
|
|
14138
|
-
|
|
14139
|
-
|
|
14140
|
-
|
|
14141
|
-
|
|
14142
|
-
|
|
14143
|
-
|
|
14144
|
-
|
|
14145
|
-
|
|
14146
|
-
|
|
14147
|
-
|
|
14148
|
-
|
|
14149
|
-
|
|
14150
|
-
|
|
14151
|
-
|
|
14152
|
-
|
|
14153
|
-
|
|
14154
|
-
|
|
14155
|
-
|
|
14156
|
-
|
|
14157
|
-
|
|
14158
|
-
|
|
14159
|
-
|
|
14160
|
-
|
|
14161
|
-
|
|
14162
|
-
|
|
14163
|
-
|
|
14164
|
-
|
|
14165
|
-
|
|
14166
|
-
|
|
14167
|
-
|
|
14168
|
-
|
|
14169
|
-
|
|
14073
|
+
value: function () {
|
|
14074
|
+
var _mousedown = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(event) {
|
|
14075
|
+
var _struct$functionalGro;
|
|
14076
|
+
var closestItem, ctab, struct, isTargetExpanded, isTargetAtomOrBond, dragCtx, ci, _struct$atoms$get, _struct$halfBonds$get, xy0, bond, frid, frIds, count, loop, _struct$halfBonds$get2, _struct$loops$get, loopHbs, sign;
|
|
14077
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
14078
|
+
while (1) {
|
|
14079
|
+
switch (_context.prev = _context.next) {
|
|
14080
|
+
case 0:
|
|
14081
|
+
closestItem = this.editor.findItem(event, ['atoms', 'bonds', 'sgroups', 'functionalGroups']);
|
|
14082
|
+
ctab = this.editor.render.ctab;
|
|
14083
|
+
struct = ctab.molecule;
|
|
14084
|
+
if (struct.functionalGroups.size) {
|
|
14085
|
+
this.targetGroupsIds = getGroupIdsFromItemArrays(struct, _objectSpread$N(_objectSpread$N({}, (closestItem === null || closestItem === void 0 ? void 0 : closestItem.map) === 'atoms' && {
|
|
14086
|
+
atoms: [closestItem.id]
|
|
14087
|
+
}), (closestItem === null || closestItem === void 0 ? void 0 : closestItem.map) === 'bonds' && {
|
|
14088
|
+
bonds: [closestItem.id]
|
|
14089
|
+
}));
|
|
14090
|
+
if (
|
|
14091
|
+
(closestItem === null || closestItem === void 0 ? void 0 : closestItem.map) === 'functionalGroups' && FunctionalGroup.isContractedFunctionalGroup(closestItem.id, struct.functionalGroups)) {
|
|
14092
|
+
this.targetGroupsIds.push(closestItem.id);
|
|
14093
|
+
}
|
|
14094
|
+
}
|
|
14095
|
+
isTargetExpanded = (_struct$functionalGro = struct.functionalGroups.get(this.targetGroupsIds[0])) === null || _struct$functionalGro === void 0 ? void 0 : _struct$functionalGro.isExpanded;
|
|
14096
|
+
isTargetAtomOrBond = this.targetGroupsIds.length && !this.isModeFunctionalGroup;
|
|
14097
|
+
if (!(isTargetAtomOrBond || isTargetExpanded)) {
|
|
14098
|
+
_context.next = 10;
|
|
14099
|
+
break;
|
|
14100
|
+
}
|
|
14101
|
+
_context.next = 9;
|
|
14102
|
+
return this.showRemoveAbbreviationPopup();
|
|
14103
|
+
case 9:
|
|
14104
|
+
return _context.abrupt("return");
|
|
14105
|
+
case 10:
|
|
14106
|
+
this.editor.hover(null);
|
|
14107
|
+
this.dragCtx = {
|
|
14108
|
+
xy0: this.editor.render.page2obj(event),
|
|
14109
|
+
item: this.editor.findItem(event, this.findItems)
|
|
14110
|
+
};
|
|
14111
|
+
dragCtx = this.dragCtx;
|
|
14112
|
+
ci = dragCtx.item;
|
|
14113
|
+
if (!(!ci || this.isSaltOrSolvent)) {
|
|
14114
|
+
_context.next = 17;
|
|
14115
|
+
break;
|
|
14116
|
+
}
|
|
14117
|
+
delete dragCtx.item;
|
|
14118
|
+
return _context.abrupt("return");
|
|
14119
|
+
case 17:
|
|
14120
|
+
if (ci.map === 'bonds' && !this.isModeFunctionalGroup) {
|
|
14121
|
+
xy0 = new Vec2();
|
|
14122
|
+
bond = struct.bonds.get(ci.id);
|
|
14123
|
+
frid = (_struct$atoms$get = struct.atoms.get(bond === null || bond === void 0 ? void 0 : bond.begin)) === null || _struct$atoms$get === void 0 ? void 0 : _struct$atoms$get.fragment;
|
|
14124
|
+
frIds = struct.getFragmentIds(frid);
|
|
14125
|
+
count = 0;
|
|
14126
|
+
loop = (_struct$halfBonds$get = struct.halfBonds.get(bond === null || bond === void 0 ? void 0 : bond.hb1)) === null || _struct$halfBonds$get === void 0 ? void 0 : _struct$halfBonds$get.loop;
|
|
14127
|
+
if (loop && loop < 0) {
|
|
14128
|
+
loop = (_struct$halfBonds$get2 = struct.halfBonds.get(bond === null || bond === void 0 ? void 0 : bond.hb2)) === null || _struct$halfBonds$get2 === void 0 ? void 0 : _struct$halfBonds$get2.loop;
|
|
14129
|
+
}
|
|
14130
|
+
if (loop && loop >= 0) {
|
|
14131
|
+
loopHbs = (_struct$loops$get = struct.loops.get(loop)) === null || _struct$loops$get === void 0 ? void 0 : _struct$loops$get.hbs;
|
|
14132
|
+
loopHbs === null || loopHbs === void 0 ? void 0 : loopHbs.forEach(function (hb) {
|
|
14133
|
+
var _struct$halfBonds$get3;
|
|
14134
|
+
var halfBondBegin = (_struct$halfBonds$get3 = struct.halfBonds.get(hb)) === null || _struct$halfBonds$get3 === void 0 ? void 0 : _struct$halfBonds$get3.begin;
|
|
14135
|
+
if (halfBondBegin) {
|
|
14136
|
+
var hbbAtom = struct.atoms.get(halfBondBegin);
|
|
14137
|
+
if (hbbAtom) {
|
|
14138
|
+
xy0.add_(hbbAtom.pp);
|
|
14139
|
+
count++;
|
|
14140
|
+
}
|
|
14141
|
+
}
|
|
14142
|
+
});
|
|
14143
|
+
} else {
|
|
14144
|
+
frIds.forEach(function (id) {
|
|
14145
|
+
var atomById = struct.atoms.get(id);
|
|
14146
|
+
if (atomById) {
|
|
14147
|
+
xy0.add_(atomById.pp);
|
|
14148
|
+
count++;
|
|
14149
|
+
}
|
|
14150
|
+
});
|
|
14151
|
+
}
|
|
14152
|
+
dragCtx.v0 = xy0.scaled(1 / count);
|
|
14153
|
+
sign = getSign(struct, bond, dragCtx.v0);
|
|
14154
|
+
dragCtx.sign1 = sign || 1;
|
|
14155
|
+
dragCtx.sign2 = this.template.sign;
|
|
14156
|
+
}
|
|
14157
|
+
case 18:
|
|
14158
|
+
case "end":
|
|
14159
|
+
return _context.stop();
|
|
14170
14160
|
}
|
|
14171
|
-
}
|
|
14172
|
-
}
|
|
14173
|
-
|
|
14174
|
-
|
|
14175
|
-
|
|
14176
|
-
dragCtx.sign2 = this.template.sign;
|
|
14161
|
+
}
|
|
14162
|
+
}, _callee, this);
|
|
14163
|
+
}));
|
|
14164
|
+
function mousedown(_x) {
|
|
14165
|
+
return _mousedown.apply(this, arguments);
|
|
14177
14166
|
}
|
|
14178
|
-
|
|
14167
|
+
return mousedown;
|
|
14168
|
+
}()
|
|
14179
14169
|
}, {
|
|
14180
14170
|
key: "mousemove",
|
|
14181
14171
|
value: function mousemove(event) {
|
|
@@ -14190,7 +14180,7 @@ var TemplateTool = function () {
|
|
|
14190
14180
|
var targetPos = null;
|
|
14191
14181
|
var eventPos = this.editor.render.page2obj(event);
|
|
14192
14182
|
var struct = this.editor.render.ctab.molecule;
|
|
14193
|
-
if (ci && ci.map === 'bonds' && this.
|
|
14183
|
+
if (ci && ci.map === 'bonds' && !this.isModeFunctionalGroup) {
|
|
14194
14184
|
var bond = struct.bonds.get(ci.id);
|
|
14195
14185
|
var sign = getSign(struct, bond, eventPos);
|
|
14196
14186
|
if (dragCtx.sign1 * this.template.sign > 0) {
|
|
@@ -14221,7 +14211,7 @@ var TemplateTool = function () {
|
|
|
14221
14211
|
var atom = struct.atoms.get(atomId);
|
|
14222
14212
|
targetPos = atom === null || atom === void 0 ? void 0 : atom.pp;
|
|
14223
14213
|
if (targetPos) {
|
|
14224
|
-
extraBond = this.
|
|
14214
|
+
extraBond = this.isModeFunctionalGroup ? true : Vec2.dist(targetPos, eventPos) > 1;
|
|
14225
14215
|
}
|
|
14226
14216
|
}
|
|
14227
14217
|
}
|
|
@@ -14267,7 +14257,7 @@ var TemplateTool = function () {
|
|
|
14267
14257
|
}
|
|
14268
14258
|
dragCtx.action = action;
|
|
14269
14259
|
this.editor.update(dragCtx.action, true);
|
|
14270
|
-
if (this.
|
|
14260
|
+
if (!this.isModeFunctionalGroup) {
|
|
14271
14261
|
dragCtx.mergeItems = getItemsToFuse(this.editor, pasteItems);
|
|
14272
14262
|
this.editor.hover(getHoverToFuse(dragCtx.mergeItems));
|
|
14273
14263
|
}
|
|
@@ -14277,15 +14267,9 @@ var TemplateTool = function () {
|
|
|
14277
14267
|
}, {
|
|
14278
14268
|
key: "mouseup",
|
|
14279
14269
|
value: function mouseup(event) {
|
|
14280
|
-
var
|
|
14270
|
+
var _this2 = this,
|
|
14281
14271
|
_ci;
|
|
14282
14272
|
var dragCtx = this.dragCtx;
|
|
14283
|
-
if (this.targetGroupsIds.length && this.mode !== 'fg') {
|
|
14284
|
-
this.editor.event.removeFG.dispatch({
|
|
14285
|
-
fgIds: this.targetGroupsIds
|
|
14286
|
-
});
|
|
14287
|
-
return;
|
|
14288
|
-
}
|
|
14289
14273
|
if (!dragCtx) {
|
|
14290
14274
|
return true;
|
|
14291
14275
|
}
|
|
@@ -14294,16 +14278,16 @@ var TemplateTool = function () {
|
|
|
14294
14278
|
var struct = restruct.molecule;
|
|
14295
14279
|
var ci = dragCtx.item;
|
|
14296
14280
|
var functionalGroups = struct.functionalGroups;
|
|
14297
|
-
if (dragCtx.action && ci && ci.map === 'bonds' && this.
|
|
14281
|
+
if (dragCtx.action && ci && ci.map === 'bonds' && !this.isModeFunctionalGroup) {
|
|
14298
14282
|
dragCtx.action.perform(restruct);
|
|
14299
14283
|
var promise = fromTemplateOnBondAction(restruct, this.template, ci.id, this.editor.event, dragCtx.sign1 * dragCtx.sign2 > 0, true);
|
|
14300
14284
|
promise.then(function (_ref) {
|
|
14301
14285
|
var _ref2 = _slicedToArray(_ref, 2),
|
|
14302
14286
|
action = _ref2[0],
|
|
14303
14287
|
pasteItems = _ref2[1];
|
|
14304
|
-
var mergeItems = getItemsToFuse(
|
|
14288
|
+
var mergeItems = getItemsToFuse(_this2.editor, pasteItems);
|
|
14305
14289
|
action = fromItemsFuse(restruct, mergeItems).mergeWith(action);
|
|
14306
|
-
|
|
14290
|
+
_this2.editor.update(action);
|
|
14307
14291
|
});
|
|
14308
14292
|
return true;
|
|
14309
14293
|
}
|
|
@@ -14312,7 +14296,7 @@ var TemplateTool = function () {
|
|
|
14312
14296
|
if (this.isSaltOrSolvent) {
|
|
14313
14297
|
addSaltsAndSolventsOnCanvasWithoutMerge(restruct, this.template, dragCtx, this.editor);
|
|
14314
14298
|
return true;
|
|
14315
|
-
} else if (((_ci = ci) === null || _ci === void 0 ? void 0 : _ci.map) === 'functionalGroups' && FunctionalGroup.isContractedFunctionalGroup(ci.id, functionalGroups) && this.
|
|
14299
|
+
} else if (((_ci = ci) === null || _ci === void 0 ? void 0 : _ci.map) === 'functionalGroups' && FunctionalGroup.isContractedFunctionalGroup(ci.id, functionalGroups) && this.isModeFunctionalGroup && this.targetGroupsIds.length) {
|
|
14316
14300
|
functionalGroupRemoveAction = new Action();
|
|
14317
14301
|
var _struct = this.editor.struct();
|
|
14318
14302
|
var _restruct = this.editor.render.ctab;
|
|
@@ -14360,23 +14344,23 @@ var TemplateTool = function () {
|
|
|
14360
14344
|
action = functionalGroupRemoveAction.mergeWith(action);
|
|
14361
14345
|
}
|
|
14362
14346
|
dragCtx.action = action;
|
|
14363
|
-
} else if (ci.map === 'bonds' && this.
|
|
14347
|
+
} else if (ci.map === 'bonds' && !this.isModeFunctionalGroup) {
|
|
14364
14348
|
var _promise = fromTemplateOnBondAction(restruct, this.template, ci.id, this.editor.event, dragCtx.sign1 * dragCtx.sign2 > 0, true);
|
|
14365
14349
|
_promise.then(function (_ref3) {
|
|
14366
14350
|
var _ref4 = _slicedToArray(_ref3, 2),
|
|
14367
14351
|
action = _ref4[0],
|
|
14368
14352
|
pasteItems = _ref4[1];
|
|
14369
|
-
if (
|
|
14370
|
-
var mergeItems = getItemsToFuse(
|
|
14353
|
+
if (!_this2.isModeFunctionalGroup) {
|
|
14354
|
+
var mergeItems = getItemsToFuse(_this2.editor, pasteItems);
|
|
14371
14355
|
action = fromItemsFuse(restruct, mergeItems).mergeWith(action);
|
|
14372
|
-
|
|
14356
|
+
_this2.editor.update(action);
|
|
14373
14357
|
}
|
|
14374
14358
|
});
|
|
14375
14359
|
return true;
|
|
14376
14360
|
}
|
|
14377
14361
|
}
|
|
14378
14362
|
this.editor.selection(null);
|
|
14379
|
-
if (!dragCtx.mergeItems && pasteItems && this.
|
|
14363
|
+
if (!dragCtx.mergeItems && pasteItems && !this.isModeFunctionalGroup) {
|
|
14380
14364
|
dragCtx.mergeItems = getItemsToFuse(this.editor, pasteItems);
|
|
14381
14365
|
}
|
|
14382
14366
|
dragCtx.action = dragCtx.action ? fromItemsFuse(restruct, dragCtx.mergeItems).mergeWith(dragCtx.action) : fromItemsFuse(restruct, dragCtx.mergeItems);
|
|
@@ -14417,8 +14401,12 @@ function addSaltsAndSolventsOnCanvasWithoutMerge(restruct, template, dragCtx, ed
|
|
|
14417
14401
|
}
|
|
14418
14402
|
function getTemplateMode(tmpl) {
|
|
14419
14403
|
var _tmpl$props;
|
|
14420
|
-
if (tmpl.mode)
|
|
14421
|
-
|
|
14404
|
+
if (tmpl.mode) {
|
|
14405
|
+
return tmpl.mode;
|
|
14406
|
+
}
|
|
14407
|
+
if (['Functional Groups', 'Salts and Solvents'].includes((_tmpl$props = tmpl.props) === null || _tmpl$props === void 0 ? void 0 : _tmpl$props.group)) {
|
|
14408
|
+
return MODES.FG;
|
|
14409
|
+
}
|
|
14422
14410
|
return null;
|
|
14423
14411
|
}
|
|
14424
14412
|
function getSign(molecule, bond, v) {
|
|
@@ -15937,7 +15925,7 @@ var HoverIcon = function () {
|
|
|
15937
15925
|
}, {
|
|
15938
15926
|
key: "onMouseLeave",
|
|
15939
15927
|
value: function onMouseLeave(event) {
|
|
15940
|
-
if (!this.isOverLoader(event)) {
|
|
15928
|
+
if (!this.isOverLoader(event) && this.isShown) {
|
|
15941
15929
|
this.shouldBeShownWhenMouseBack = true;
|
|
15942
15930
|
this.hide();
|
|
15943
15931
|
}
|
|
@@ -15962,9 +15950,12 @@ var HoverIcon = function () {
|
|
|
15962
15950
|
}
|
|
15963
15951
|
}, {
|
|
15964
15952
|
key: "hide",
|
|
15965
|
-
value: function hide() {
|
|
15953
|
+
value: function hide(restShouldBeShownWhenMouseBack) {
|
|
15966
15954
|
this.element.hide();
|
|
15967
15955
|
this.isShown = false;
|
|
15956
|
+
if (restShouldBeShownWhenMouseBack) {
|
|
15957
|
+
this.shouldBeShownWhenMouseBack = false;
|
|
15958
|
+
}
|
|
15968
15959
|
}
|
|
15969
15960
|
}, {
|
|
15970
15961
|
key: "initialize",
|
|
@@ -15989,9 +15980,8 @@ var HoverIcon = function () {
|
|
|
15989
15980
|
this.element = icon.element;
|
|
15990
15981
|
this._fill = icon.fill;
|
|
15991
15982
|
this._label = icon.label;
|
|
15992
|
-
this.isShown = true;
|
|
15993
15983
|
this.shouldBeShownWhenMouseBack = false;
|
|
15994
|
-
this.
|
|
15984
|
+
this.hide();
|
|
15995
15985
|
}
|
|
15996
15986
|
}]);
|
|
15997
15987
|
return HoverIcon;
|
|
@@ -16096,7 +16086,7 @@ var Editor$3 = function () {
|
|
|
16096
16086
|
var tool = new tools[name](this, opts);
|
|
16097
16087
|
var isAtomToolChosen = name === 'atom';
|
|
16098
16088
|
if (!isAtomToolChosen) {
|
|
16099
|
-
this.hoverIcon.hide();
|
|
16089
|
+
this.hoverIcon.hide(true);
|
|
16100
16090
|
}
|
|
16101
16091
|
if (!tool || tool.isNotActiveTool) {
|
|
16102
16092
|
return null;
|
|
@@ -16155,7 +16145,7 @@ var Editor$3 = function () {
|
|
|
16155
16145
|
this.render = new Render(this.render.clientArea, Object.assign({
|
|
16156
16146
|
scale: SCALE
|
|
16157
16147
|
}, value));
|
|
16158
|
-
this.
|
|
16148
|
+
this.struct(struct);
|
|
16159
16149
|
this.render.setZoom(zoom);
|
|
16160
16150
|
this.render.update();
|
|
16161
16151
|
return this.render.options;
|
|
@@ -24055,8 +24045,8 @@ var KetcherBuilder = function () {
|
|
|
24055
24045
|
initApp(element, staticResourcesUrl, {
|
|
24056
24046
|
buttons: buttons || {},
|
|
24057
24047
|
errorHandler: errorHandler || null,
|
|
24058
|
-
version: "2.9.0-rc.
|
|
24059
|
-
buildDate: "2023-
|
|
24048
|
+
version: "2.9.0-rc.6" ,
|
|
24049
|
+
buildDate: "2023-04-10T13:09:58" ,
|
|
24060
24050
|
buildNumber: ''
|
|
24061
24051
|
}, structService, resolve);
|
|
24062
24052
|
});
|
|
@@ -24166,5 +24156,5 @@ function Editor(props) {
|
|
|
24166
24156
|
});
|
|
24167
24157
|
}
|
|
24168
24158
|
|
|
24169
|
-
export { Editor, KETCHER_INIT_EVENT_NAME, KETCHER_SAVED_SETTINGS_KEY };
|
|
24159
|
+
export { Editor, KETCHER_INIT_EVENT_NAME, KETCHER_SAVED_SETTINGS_KEY, MODES };
|
|
24170
24160
|
//# sourceMappingURL=index.modern.js.map
|