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/constants.d.ts
CHANGED
|
@@ -15,3 +15,6 @@
|
|
|
15
15
|
***************************************************************************/
|
|
16
16
|
export declare const KETCHER_INIT_EVENT_NAME = "ketcher-init";
|
|
17
17
|
export declare const KETCHER_SAVED_SETTINGS_KEY = "ketcher_editor_saved_settings";
|
|
18
|
+
export declare const MODES: {
|
|
19
|
+
FG: string;
|
|
20
|
+
};
|
package/dist/index.js
CHANGED
|
@@ -2539,6 +2539,9 @@ var tools$1 = typeSchema$1["enum"].reduce(function (res, type, i) {
|
|
|
2539
2539
|
|
|
2540
2540
|
var KETCHER_INIT_EVENT_NAME = 'ketcher-init';
|
|
2541
2541
|
var KETCHER_SAVED_SETTINGS_KEY = 'ketcher_editor_saved_settings';
|
|
2542
|
+
var MODES = {
|
|
2543
|
+
FG: 'fg'
|
|
2544
|
+
};
|
|
2542
2545
|
|
|
2543
2546
|
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; }
|
|
2544
2547
|
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__default["default"](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; }
|
|
@@ -3073,7 +3076,7 @@ var zoom = {
|
|
|
3073
3076
|
|
|
3074
3077
|
var openHelpLink = function openHelpLink() {
|
|
3075
3078
|
var _window$open;
|
|
3076
|
-
return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v2.9.0-rc.
|
|
3079
|
+
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();
|
|
3077
3080
|
};
|
|
3078
3081
|
var help = {
|
|
3079
3082
|
help: {
|
|
@@ -3098,7 +3101,7 @@ var functionalGroupsLib = {
|
|
|
3098
3101
|
}
|
|
3099
3102
|
},
|
|
3100
3103
|
selected: function selected(editor) {
|
|
3101
|
-
return editor._tool.mode ===
|
|
3104
|
+
return editor._tool.mode === MODES.FG;
|
|
3102
3105
|
},
|
|
3103
3106
|
disabled: function disabled(_, __, options) {
|
|
3104
3107
|
return !options.app.functionalGroups;
|
|
@@ -8128,7 +8131,7 @@ function _objectSpread$10(target) { for (var i = 1; i < arguments.length; i++) {
|
|
|
8128
8131
|
var initialState$1 = {
|
|
8129
8132
|
lib: [],
|
|
8130
8133
|
functionalGroupInfo: null,
|
|
8131
|
-
mode:
|
|
8134
|
+
mode: MODES.FG
|
|
8132
8135
|
};
|
|
8133
8136
|
var functionalGroupsReducer = function functionalGroupsReducer() {
|
|
8134
8137
|
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState$1;
|
|
@@ -8203,7 +8206,7 @@ function ownKeys$$(object, enumerableOnly) { var keys = Object.keys(object); if
|
|
|
8203
8206
|
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__default["default"](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; }
|
|
8204
8207
|
var initialState = {
|
|
8205
8208
|
lib: [],
|
|
8206
|
-
mode:
|
|
8209
|
+
mode: MODES.FG
|
|
8207
8210
|
};
|
|
8208
8211
|
var saltsAndSolventsReducer = function saltsAndSolventsReducer() {
|
|
8209
8212
|
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
|
|
@@ -12289,72 +12292,6 @@ function updateSelectedAtoms(_ref) {
|
|
|
12289
12292
|
}
|
|
12290
12293
|
}
|
|
12291
12294
|
|
|
12292
|
-
var edgeOffset = 150;
|
|
12293
|
-
function isCloseToEdgeOfScreen(event) {
|
|
12294
|
-
var clientX = event.clientX,
|
|
12295
|
-
clientY = event.clientY;
|
|
12296
|
-
var body = document.body;
|
|
12297
|
-
var isCloseToLeftEdgeOfScreen = clientX <= edgeOffset;
|
|
12298
|
-
var isCloseToTopEdgeOfScreen = clientY <= edgeOffset;
|
|
12299
|
-
var isCloseToRightEdgeOfScreen = body.clientWidth - clientX <= edgeOffset;
|
|
12300
|
-
var isCloseToBottomEdgeOfScreen = body.clientHeight - clientY <= edgeOffset;
|
|
12301
|
-
return {
|
|
12302
|
-
isCloseToLeftEdgeOfScreen: isCloseToLeftEdgeOfScreen,
|
|
12303
|
-
isCloseToTopEdgeOfScreen: isCloseToTopEdgeOfScreen,
|
|
12304
|
-
isCloseToRightEdgeOfScreen: isCloseToRightEdgeOfScreen,
|
|
12305
|
-
isCloseToBottomEdgeOfScreen: isCloseToBottomEdgeOfScreen
|
|
12306
|
-
};
|
|
12307
|
-
}
|
|
12308
|
-
function isCloseToEdgeOfCanvas(event, canvasSize) {
|
|
12309
|
-
var layerX = event.layerX,
|
|
12310
|
-
layerY = event.layerY;
|
|
12311
|
-
var isCloseToLeftEdgeOfCanvas = layerX <= edgeOffset;
|
|
12312
|
-
var isCloseToTopEdgeOfCanvas = layerY <= edgeOffset;
|
|
12313
|
-
var isCloseToRightEdgeOfCanvas = canvasSize.x - layerX <= edgeOffset;
|
|
12314
|
-
var isCloseToBottomEdgeOfCanvas = canvasSize.y - layerY <= edgeOffset;
|
|
12315
|
-
return {
|
|
12316
|
-
isCloseToLeftEdgeOfCanvas: isCloseToLeftEdgeOfCanvas,
|
|
12317
|
-
isCloseToTopEdgeOfCanvas: isCloseToTopEdgeOfCanvas,
|
|
12318
|
-
isCloseToRightEdgeOfCanvas: isCloseToRightEdgeOfCanvas,
|
|
12319
|
-
isCloseToBottomEdgeOfCanvas: isCloseToBottomEdgeOfCanvas
|
|
12320
|
-
};
|
|
12321
|
-
}
|
|
12322
|
-
function calculateCanvasExtension(clientArea, currentCanvasSize, extensionVector) {
|
|
12323
|
-
var newHorizontalScrollPosition = clientArea.scrollLeft + extensionVector.x;
|
|
12324
|
-
var newVerticalScrollPosition = clientArea.scrollTop + extensionVector.y;
|
|
12325
|
-
var horizontalExtension = 0;
|
|
12326
|
-
var verticalExtension = 0;
|
|
12327
|
-
if (newHorizontalScrollPosition > currentCanvasSize.x) {
|
|
12328
|
-
horizontalExtension = newHorizontalScrollPosition - currentCanvasSize.x;
|
|
12329
|
-
}
|
|
12330
|
-
if (newHorizontalScrollPosition < 0) {
|
|
12331
|
-
horizontalExtension = Math.abs(newHorizontalScrollPosition);
|
|
12332
|
-
}
|
|
12333
|
-
if (newVerticalScrollPosition > currentCanvasSize.y) {
|
|
12334
|
-
verticalExtension = newVerticalScrollPosition - currentCanvasSize.y;
|
|
12335
|
-
}
|
|
12336
|
-
if (newVerticalScrollPosition < 0) {
|
|
12337
|
-
verticalExtension = Math.abs(newVerticalScrollPosition);
|
|
12338
|
-
}
|
|
12339
|
-
return new ketcherCore.Vec2(horizontalExtension, verticalExtension, 0);
|
|
12340
|
-
}
|
|
12341
|
-
function shiftAndExtendCanvasByVector(vector, render) {
|
|
12342
|
-
var clientArea = render.clientArea;
|
|
12343
|
-
var extensionVector = calculateCanvasExtension(clientArea, render.sz.scaled(render.options.zoom), vector).scaled(1 / render.options.zoom);
|
|
12344
|
-
if (extensionVector.x > 0 || extensionVector.y > 0) {
|
|
12345
|
-
render.setPaperSize(render.sz.add(extensionVector));
|
|
12346
|
-
render.setOffset(render.options.offset.add(vector));
|
|
12347
|
-
render.ctab.translate(vector);
|
|
12348
|
-
}
|
|
12349
|
-
scrollByVector(vector, render);
|
|
12350
|
-
render.update(false);
|
|
12351
|
-
}
|
|
12352
|
-
function scrollByVector(vector, render) {
|
|
12353
|
-
var clientArea = render.clientArea;
|
|
12354
|
-
clientArea.scrollLeft += vector.x * render.options.scale;
|
|
12355
|
-
clientArea.scrollTop += vector.y * render.options.scale;
|
|
12356
|
-
}
|
|
12357
|
-
|
|
12358
12295
|
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; } } }; }
|
|
12359
12296
|
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); }
|
|
12360
12297
|
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; }
|
|
@@ -12495,7 +12432,9 @@ var SelectTool = function () {
|
|
|
12495
12432
|
dragCtx.mergeItems = getMergeItems(editor, expSel);
|
|
12496
12433
|
editor.hover(ketcherCore.getHoverToFuse(dragCtx.mergeItems));
|
|
12497
12434
|
extendCanvas(rnd, event);
|
|
12498
|
-
editor.update(dragCtx.action, true
|
|
12435
|
+
editor.update(dragCtx.action, true, {
|
|
12436
|
+
extendCanvas: false
|
|
12437
|
+
});
|
|
12499
12438
|
return true;
|
|
12500
12439
|
}
|
|
12501
12440
|
if (_classPrivateFieldGet__default["default"](this, _lassoHelper).running()) {
|
|
@@ -12696,45 +12635,50 @@ var SelectTool = function () {
|
|
|
12696
12635
|
}();
|
|
12697
12636
|
function extendCanvas(render, event) {
|
|
12698
12637
|
var offset = 1;
|
|
12699
|
-
var _isCloseToEdgeOfCanva = isCloseToEdgeOfCanvas(event, render.sz),
|
|
12638
|
+
var _isCloseToEdgeOfCanva = ketcherCore.isCloseToEdgeOfCanvas(event, render.sz),
|
|
12700
12639
|
isCloseToLeftEdgeOfCanvas = _isCloseToEdgeOfCanva.isCloseToLeftEdgeOfCanvas,
|
|
12701
12640
|
isCloseToTopEdgeOfCanvas = _isCloseToEdgeOfCanva.isCloseToTopEdgeOfCanvas,
|
|
12702
12641
|
isCloseToRightEdgeOfCanvas = _isCloseToEdgeOfCanva.isCloseToRightEdgeOfCanvas,
|
|
12703
12642
|
isCloseToBottomEdgeOfCanvas = _isCloseToEdgeOfCanva.isCloseToBottomEdgeOfCanvas;
|
|
12704
|
-
var _isCloseToEdgeOfScree = isCloseToEdgeOfScreen(event),
|
|
12643
|
+
var _isCloseToEdgeOfScree = ketcherCore.isCloseToEdgeOfScreen(event),
|
|
12705
12644
|
isCloseToLeftEdgeOfScreen = _isCloseToEdgeOfScree.isCloseToLeftEdgeOfScreen,
|
|
12706
12645
|
isCloseToTopEdgeOfScreen = _isCloseToEdgeOfScree.isCloseToTopEdgeOfScreen,
|
|
12707
12646
|
isCloseToRightEdgeOfScreen = _isCloseToEdgeOfScree.isCloseToRightEdgeOfScreen,
|
|
12708
12647
|
isCloseToBottomEdgeOfScreen = _isCloseToEdgeOfScree.isCloseToBottomEdgeOfScreen;
|
|
12709
|
-
|
|
12710
|
-
|
|
12648
|
+
var _getDirections = ketcherCore.getDirections(event),
|
|
12649
|
+
isMovingLeft = _getDirections.isMovingLeft,
|
|
12650
|
+
isMovingRight = _getDirections.isMovingRight,
|
|
12651
|
+
isMovingTop = _getDirections.isMovingTop,
|
|
12652
|
+
isMovingBottom = _getDirections.isMovingBottom;
|
|
12653
|
+
if (isCloseToLeftEdgeOfCanvas && isMovingLeft) {
|
|
12654
|
+
ketcherCore.shiftAndExtendCanvasByVector(new ketcherCore.Vec2(-offset, 0, 0), render);
|
|
12711
12655
|
}
|
|
12712
|
-
if (isCloseToTopEdgeOfCanvas) {
|
|
12713
|
-
shiftAndExtendCanvasByVector(new ketcherCore.Vec2(0, -offset, 0), render);
|
|
12656
|
+
if (isCloseToTopEdgeOfCanvas && isMovingTop) {
|
|
12657
|
+
ketcherCore.shiftAndExtendCanvasByVector(new ketcherCore.Vec2(0, -offset, 0), render);
|
|
12714
12658
|
}
|
|
12715
|
-
if (isCloseToRightEdgeOfCanvas) {
|
|
12716
|
-
shiftAndExtendCanvasByVector(new ketcherCore.Vec2(offset, 0, 0), render);
|
|
12659
|
+
if (isCloseToRightEdgeOfCanvas && isMovingRight) {
|
|
12660
|
+
ketcherCore.shiftAndExtendCanvasByVector(new ketcherCore.Vec2(offset, 0, 0), render);
|
|
12717
12661
|
}
|
|
12718
|
-
if (isCloseToBottomEdgeOfCanvas) {
|
|
12719
|
-
shiftAndExtendCanvasByVector(new ketcherCore.Vec2(0, offset, 0), render);
|
|
12662
|
+
if (isCloseToBottomEdgeOfCanvas && isMovingBottom) {
|
|
12663
|
+
ketcherCore.shiftAndExtendCanvasByVector(new ketcherCore.Vec2(0, offset, 0), render);
|
|
12720
12664
|
}
|
|
12721
|
-
var isCloseToSomeEdgeOfCanvas = [isCloseToTopEdgeOfCanvas, isCloseToRightEdgeOfCanvas, isCloseToBottomEdgeOfCanvas, isCloseToLeftEdgeOfCanvas].some(function (isCloseToEdge) {
|
|
12665
|
+
var isCloseToSomeEdgeOfCanvas = [isCloseToTopEdgeOfCanvas && isMovingTop, isCloseToRightEdgeOfCanvas && isMovingRight, isCloseToBottomEdgeOfCanvas && isMovingBottom, isCloseToLeftEdgeOfCanvas && isMovingLeft].some(function (isCloseToEdge) {
|
|
12722
12666
|
return isCloseToEdge;
|
|
12723
12667
|
});
|
|
12724
12668
|
if (isCloseToSomeEdgeOfCanvas) {
|
|
12725
12669
|
return;
|
|
12726
12670
|
}
|
|
12727
|
-
if (isCloseToTopEdgeOfScreen) {
|
|
12728
|
-
scrollByVector(new ketcherCore.Vec2(0, -offset), render);
|
|
12671
|
+
if (isCloseToTopEdgeOfScreen && isMovingTop) {
|
|
12672
|
+
ketcherCore.scrollByVector(new ketcherCore.Vec2(0, -offset), render);
|
|
12729
12673
|
}
|
|
12730
|
-
if (isCloseToBottomEdgeOfScreen) {
|
|
12731
|
-
scrollByVector(new ketcherCore.Vec2(0, offset), render);
|
|
12674
|
+
if (isCloseToBottomEdgeOfScreen && isMovingBottom) {
|
|
12675
|
+
ketcherCore.scrollByVector(new ketcherCore.Vec2(0, offset), render);
|
|
12732
12676
|
}
|
|
12733
|
-
if (isCloseToLeftEdgeOfScreen) {
|
|
12734
|
-
scrollByVector(new ketcherCore.Vec2(-offset, 0), render);
|
|
12677
|
+
if (isCloseToLeftEdgeOfScreen && isMovingLeft) {
|
|
12678
|
+
ketcherCore.scrollByVector(new ketcherCore.Vec2(-offset, 0), render);
|
|
12735
12679
|
}
|
|
12736
|
-
if (isCloseToRightEdgeOfScreen) {
|
|
12737
|
-
scrollByVector(new ketcherCore.Vec2(offset, 0), render);
|
|
12680
|
+
if (isCloseToRightEdgeOfScreen && isMovingRight) {
|
|
12681
|
+
ketcherCore.scrollByVector(new ketcherCore.Vec2(offset, 0), render);
|
|
12738
12682
|
}
|
|
12739
12683
|
}
|
|
12740
12684
|
function closestToSel(ci) {
|
|
@@ -14158,7 +14102,7 @@ var TemplateTool = function () {
|
|
|
14158
14102
|
this.findItems.push('atoms');
|
|
14159
14103
|
}
|
|
14160
14104
|
var bond = frag.bonds.get(this.template.bid);
|
|
14161
|
-
if (bond && this.
|
|
14105
|
+
if (bond && !this.isModeFunctionalGroup) {
|
|
14162
14106
|
this.template.sign = getSign(frag, bond, this.template.xy0);
|
|
14163
14107
|
this.findItems.push('bonds');
|
|
14164
14108
|
}
|
|
@@ -14172,73 +14116,119 @@ var TemplateTool = function () {
|
|
|
14172
14116
|
editor.hoverIcon.updatePosition();
|
|
14173
14117
|
}
|
|
14174
14118
|
_createClass__default["default"](TemplateTool, [{
|
|
14119
|
+
key: "showRemoveAbbreviationPopup",
|
|
14120
|
+
value: function showRemoveAbbreviationPopup() {
|
|
14121
|
+
var _this = this;
|
|
14122
|
+
return this.editor.event.removeFG.dispatch({
|
|
14123
|
+
fgIds: this.targetGroupsIds
|
|
14124
|
+
}).then(function () {
|
|
14125
|
+
_this.targetGroupsIds.length = 0;
|
|
14126
|
+
return Promise.resolve();
|
|
14127
|
+
});
|
|
14128
|
+
}
|
|
14129
|
+
}, {
|
|
14130
|
+
key: "isModeFunctionalGroup",
|
|
14131
|
+
get: function get() {
|
|
14132
|
+
return this.mode === MODES.FG;
|
|
14133
|
+
}
|
|
14134
|
+
}, {
|
|
14175
14135
|
key: "mousedown",
|
|
14176
|
-
value: function
|
|
14177
|
-
var
|
|
14178
|
-
|
|
14179
|
-
|
|
14180
|
-
|
|
14181
|
-
|
|
14182
|
-
|
|
14183
|
-
|
|
14184
|
-
|
|
14185
|
-
|
|
14186
|
-
|
|
14187
|
-
|
|
14188
|
-
|
|
14189
|
-
|
|
14190
|
-
|
|
14191
|
-
|
|
14192
|
-
|
|
14193
|
-
|
|
14194
|
-
|
|
14195
|
-
|
|
14196
|
-
|
|
14197
|
-
|
|
14198
|
-
|
|
14199
|
-
|
|
14200
|
-
|
|
14201
|
-
|
|
14202
|
-
|
|
14203
|
-
|
|
14204
|
-
|
|
14205
|
-
|
|
14206
|
-
|
|
14207
|
-
|
|
14208
|
-
|
|
14209
|
-
|
|
14210
|
-
|
|
14211
|
-
|
|
14212
|
-
|
|
14213
|
-
|
|
14214
|
-
|
|
14215
|
-
|
|
14216
|
-
|
|
14217
|
-
|
|
14218
|
-
|
|
14219
|
-
|
|
14220
|
-
|
|
14221
|
-
|
|
14222
|
-
|
|
14223
|
-
|
|
14224
|
-
|
|
14225
|
-
|
|
14226
|
-
|
|
14227
|
-
|
|
14228
|
-
|
|
14229
|
-
|
|
14230
|
-
|
|
14231
|
-
|
|
14232
|
-
|
|
14136
|
+
value: function () {
|
|
14137
|
+
var _mousedown = _asyncToGenerator__default["default"]( _regeneratorRuntime__default["default"].mark(function _callee(event) {
|
|
14138
|
+
var _struct$functionalGro;
|
|
14139
|
+
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;
|
|
14140
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
|
|
14141
|
+
while (1) {
|
|
14142
|
+
switch (_context.prev = _context.next) {
|
|
14143
|
+
case 0:
|
|
14144
|
+
closestItem = this.editor.findItem(event, ['atoms', 'bonds', 'sgroups', 'functionalGroups']);
|
|
14145
|
+
ctab = this.editor.render.ctab;
|
|
14146
|
+
struct = ctab.molecule;
|
|
14147
|
+
if (struct.functionalGroups.size) {
|
|
14148
|
+
this.targetGroupsIds = getGroupIdsFromItemArrays(struct, _objectSpread$N(_objectSpread$N({}, (closestItem === null || closestItem === void 0 ? void 0 : closestItem.map) === 'atoms' && {
|
|
14149
|
+
atoms: [closestItem.id]
|
|
14150
|
+
}), (closestItem === null || closestItem === void 0 ? void 0 : closestItem.map) === 'bonds' && {
|
|
14151
|
+
bonds: [closestItem.id]
|
|
14152
|
+
}));
|
|
14153
|
+
if (
|
|
14154
|
+
(closestItem === null || closestItem === void 0 ? void 0 : closestItem.map) === 'functionalGroups' && ketcherCore.FunctionalGroup.isContractedFunctionalGroup(closestItem.id, struct.functionalGroups)) {
|
|
14155
|
+
this.targetGroupsIds.push(closestItem.id);
|
|
14156
|
+
}
|
|
14157
|
+
}
|
|
14158
|
+
isTargetExpanded = (_struct$functionalGro = struct.functionalGroups.get(this.targetGroupsIds[0])) === null || _struct$functionalGro === void 0 ? void 0 : _struct$functionalGro.isExpanded;
|
|
14159
|
+
isTargetAtomOrBond = this.targetGroupsIds.length && !this.isModeFunctionalGroup;
|
|
14160
|
+
if (!(isTargetAtomOrBond || isTargetExpanded)) {
|
|
14161
|
+
_context.next = 10;
|
|
14162
|
+
break;
|
|
14163
|
+
}
|
|
14164
|
+
_context.next = 9;
|
|
14165
|
+
return this.showRemoveAbbreviationPopup();
|
|
14166
|
+
case 9:
|
|
14167
|
+
return _context.abrupt("return");
|
|
14168
|
+
case 10:
|
|
14169
|
+
this.editor.hover(null);
|
|
14170
|
+
this.dragCtx = {
|
|
14171
|
+
xy0: this.editor.render.page2obj(event),
|
|
14172
|
+
item: this.editor.findItem(event, this.findItems)
|
|
14173
|
+
};
|
|
14174
|
+
dragCtx = this.dragCtx;
|
|
14175
|
+
ci = dragCtx.item;
|
|
14176
|
+
if (!(!ci || this.isSaltOrSolvent)) {
|
|
14177
|
+
_context.next = 17;
|
|
14178
|
+
break;
|
|
14179
|
+
}
|
|
14180
|
+
delete dragCtx.item;
|
|
14181
|
+
return _context.abrupt("return");
|
|
14182
|
+
case 17:
|
|
14183
|
+
if (ci.map === 'bonds' && !this.isModeFunctionalGroup) {
|
|
14184
|
+
xy0 = new ketcherCore.Vec2();
|
|
14185
|
+
bond = struct.bonds.get(ci.id);
|
|
14186
|
+
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;
|
|
14187
|
+
frIds = struct.getFragmentIds(frid);
|
|
14188
|
+
count = 0;
|
|
14189
|
+
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;
|
|
14190
|
+
if (loop && loop < 0) {
|
|
14191
|
+
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;
|
|
14192
|
+
}
|
|
14193
|
+
if (loop && loop >= 0) {
|
|
14194
|
+
loopHbs = (_struct$loops$get = struct.loops.get(loop)) === null || _struct$loops$get === void 0 ? void 0 : _struct$loops$get.hbs;
|
|
14195
|
+
loopHbs === null || loopHbs === void 0 ? void 0 : loopHbs.forEach(function (hb) {
|
|
14196
|
+
var _struct$halfBonds$get3;
|
|
14197
|
+
var halfBondBegin = (_struct$halfBonds$get3 = struct.halfBonds.get(hb)) === null || _struct$halfBonds$get3 === void 0 ? void 0 : _struct$halfBonds$get3.begin;
|
|
14198
|
+
if (halfBondBegin) {
|
|
14199
|
+
var hbbAtom = struct.atoms.get(halfBondBegin);
|
|
14200
|
+
if (hbbAtom) {
|
|
14201
|
+
xy0.add_(hbbAtom.pp);
|
|
14202
|
+
count++;
|
|
14203
|
+
}
|
|
14204
|
+
}
|
|
14205
|
+
});
|
|
14206
|
+
} else {
|
|
14207
|
+
frIds.forEach(function (id) {
|
|
14208
|
+
var atomById = struct.atoms.get(id);
|
|
14209
|
+
if (atomById) {
|
|
14210
|
+
xy0.add_(atomById.pp);
|
|
14211
|
+
count++;
|
|
14212
|
+
}
|
|
14213
|
+
});
|
|
14214
|
+
}
|
|
14215
|
+
dragCtx.v0 = xy0.scaled(1 / count);
|
|
14216
|
+
sign = getSign(struct, bond, dragCtx.v0);
|
|
14217
|
+
dragCtx.sign1 = sign || 1;
|
|
14218
|
+
dragCtx.sign2 = this.template.sign;
|
|
14219
|
+
}
|
|
14220
|
+
case 18:
|
|
14221
|
+
case "end":
|
|
14222
|
+
return _context.stop();
|
|
14233
14223
|
}
|
|
14234
|
-
}
|
|
14235
|
-
}
|
|
14236
|
-
|
|
14237
|
-
|
|
14238
|
-
|
|
14239
|
-
dragCtx.sign2 = this.template.sign;
|
|
14224
|
+
}
|
|
14225
|
+
}, _callee, this);
|
|
14226
|
+
}));
|
|
14227
|
+
function mousedown(_x) {
|
|
14228
|
+
return _mousedown.apply(this, arguments);
|
|
14240
14229
|
}
|
|
14241
|
-
|
|
14230
|
+
return mousedown;
|
|
14231
|
+
}()
|
|
14242
14232
|
}, {
|
|
14243
14233
|
key: "mousemove",
|
|
14244
14234
|
value: function mousemove(event) {
|
|
@@ -14253,7 +14243,7 @@ var TemplateTool = function () {
|
|
|
14253
14243
|
var targetPos = null;
|
|
14254
14244
|
var eventPos = this.editor.render.page2obj(event);
|
|
14255
14245
|
var struct = this.editor.render.ctab.molecule;
|
|
14256
|
-
if (ci && ci.map === 'bonds' && this.
|
|
14246
|
+
if (ci && ci.map === 'bonds' && !this.isModeFunctionalGroup) {
|
|
14257
14247
|
var bond = struct.bonds.get(ci.id);
|
|
14258
14248
|
var sign = getSign(struct, bond, eventPos);
|
|
14259
14249
|
if (dragCtx.sign1 * this.template.sign > 0) {
|
|
@@ -14284,7 +14274,7 @@ var TemplateTool = function () {
|
|
|
14284
14274
|
var atom = struct.atoms.get(atomId);
|
|
14285
14275
|
targetPos = atom === null || atom === void 0 ? void 0 : atom.pp;
|
|
14286
14276
|
if (targetPos) {
|
|
14287
|
-
extraBond = this.
|
|
14277
|
+
extraBond = this.isModeFunctionalGroup ? true : ketcherCore.Vec2.dist(targetPos, eventPos) > 1;
|
|
14288
14278
|
}
|
|
14289
14279
|
}
|
|
14290
14280
|
}
|
|
@@ -14330,7 +14320,7 @@ var TemplateTool = function () {
|
|
|
14330
14320
|
}
|
|
14331
14321
|
dragCtx.action = action;
|
|
14332
14322
|
this.editor.update(dragCtx.action, true);
|
|
14333
|
-
if (this.
|
|
14323
|
+
if (!this.isModeFunctionalGroup) {
|
|
14334
14324
|
dragCtx.mergeItems = ketcherCore.getItemsToFuse(this.editor, pasteItems);
|
|
14335
14325
|
this.editor.hover(ketcherCore.getHoverToFuse(dragCtx.mergeItems));
|
|
14336
14326
|
}
|
|
@@ -14340,15 +14330,9 @@ var TemplateTool = function () {
|
|
|
14340
14330
|
}, {
|
|
14341
14331
|
key: "mouseup",
|
|
14342
14332
|
value: function mouseup(event) {
|
|
14343
|
-
var
|
|
14333
|
+
var _this2 = this,
|
|
14344
14334
|
_ci;
|
|
14345
14335
|
var dragCtx = this.dragCtx;
|
|
14346
|
-
if (this.targetGroupsIds.length && this.mode !== 'fg') {
|
|
14347
|
-
this.editor.event.removeFG.dispatch({
|
|
14348
|
-
fgIds: this.targetGroupsIds
|
|
14349
|
-
});
|
|
14350
|
-
return;
|
|
14351
|
-
}
|
|
14352
14336
|
if (!dragCtx) {
|
|
14353
14337
|
return true;
|
|
14354
14338
|
}
|
|
@@ -14357,16 +14341,16 @@ var TemplateTool = function () {
|
|
|
14357
14341
|
var struct = restruct.molecule;
|
|
14358
14342
|
var ci = dragCtx.item;
|
|
14359
14343
|
var functionalGroups = struct.functionalGroups;
|
|
14360
|
-
if (dragCtx.action && ci && ci.map === 'bonds' && this.
|
|
14344
|
+
if (dragCtx.action && ci && ci.map === 'bonds' && !this.isModeFunctionalGroup) {
|
|
14361
14345
|
dragCtx.action.perform(restruct);
|
|
14362
14346
|
var promise = ketcherCore.fromTemplateOnBondAction(restruct, this.template, ci.id, this.editor.event, dragCtx.sign1 * dragCtx.sign2 > 0, true);
|
|
14363
14347
|
promise.then(function (_ref) {
|
|
14364
14348
|
var _ref2 = _slicedToArray__default["default"](_ref, 2),
|
|
14365
14349
|
action = _ref2[0],
|
|
14366
14350
|
pasteItems = _ref2[1];
|
|
14367
|
-
var mergeItems = ketcherCore.getItemsToFuse(
|
|
14351
|
+
var mergeItems = ketcherCore.getItemsToFuse(_this2.editor, pasteItems);
|
|
14368
14352
|
action = ketcherCore.fromItemsFuse(restruct, mergeItems).mergeWith(action);
|
|
14369
|
-
|
|
14353
|
+
_this2.editor.update(action);
|
|
14370
14354
|
});
|
|
14371
14355
|
return true;
|
|
14372
14356
|
}
|
|
@@ -14375,7 +14359,7 @@ var TemplateTool = function () {
|
|
|
14375
14359
|
if (this.isSaltOrSolvent) {
|
|
14376
14360
|
addSaltsAndSolventsOnCanvasWithoutMerge(restruct, this.template, dragCtx, this.editor);
|
|
14377
14361
|
return true;
|
|
14378
|
-
} else if (((_ci = ci) === null || _ci === void 0 ? void 0 : _ci.map) === 'functionalGroups' && ketcherCore.FunctionalGroup.isContractedFunctionalGroup(ci.id, functionalGroups) && this.
|
|
14362
|
+
} else if (((_ci = ci) === null || _ci === void 0 ? void 0 : _ci.map) === 'functionalGroups' && ketcherCore.FunctionalGroup.isContractedFunctionalGroup(ci.id, functionalGroups) && this.isModeFunctionalGroup && this.targetGroupsIds.length) {
|
|
14379
14363
|
functionalGroupRemoveAction = new ketcherCore.Action();
|
|
14380
14364
|
var _struct = this.editor.struct();
|
|
14381
14365
|
var _restruct = this.editor.render.ctab;
|
|
@@ -14423,23 +14407,23 @@ var TemplateTool = function () {
|
|
|
14423
14407
|
action = functionalGroupRemoveAction.mergeWith(action);
|
|
14424
14408
|
}
|
|
14425
14409
|
dragCtx.action = action;
|
|
14426
|
-
} else if (ci.map === 'bonds' && this.
|
|
14410
|
+
} else if (ci.map === 'bonds' && !this.isModeFunctionalGroup) {
|
|
14427
14411
|
var _promise = ketcherCore.fromTemplateOnBondAction(restruct, this.template, ci.id, this.editor.event, dragCtx.sign1 * dragCtx.sign2 > 0, true);
|
|
14428
14412
|
_promise.then(function (_ref3) {
|
|
14429
14413
|
var _ref4 = _slicedToArray__default["default"](_ref3, 2),
|
|
14430
14414
|
action = _ref4[0],
|
|
14431
14415
|
pasteItems = _ref4[1];
|
|
14432
|
-
if (
|
|
14433
|
-
var mergeItems = ketcherCore.getItemsToFuse(
|
|
14416
|
+
if (!_this2.isModeFunctionalGroup) {
|
|
14417
|
+
var mergeItems = ketcherCore.getItemsToFuse(_this2.editor, pasteItems);
|
|
14434
14418
|
action = ketcherCore.fromItemsFuse(restruct, mergeItems).mergeWith(action);
|
|
14435
|
-
|
|
14419
|
+
_this2.editor.update(action);
|
|
14436
14420
|
}
|
|
14437
14421
|
});
|
|
14438
14422
|
return true;
|
|
14439
14423
|
}
|
|
14440
14424
|
}
|
|
14441
14425
|
this.editor.selection(null);
|
|
14442
|
-
if (!dragCtx.mergeItems && pasteItems && this.
|
|
14426
|
+
if (!dragCtx.mergeItems && pasteItems && !this.isModeFunctionalGroup) {
|
|
14443
14427
|
dragCtx.mergeItems = ketcherCore.getItemsToFuse(this.editor, pasteItems);
|
|
14444
14428
|
}
|
|
14445
14429
|
dragCtx.action = dragCtx.action ? ketcherCore.fromItemsFuse(restruct, dragCtx.mergeItems).mergeWith(dragCtx.action) : ketcherCore.fromItemsFuse(restruct, dragCtx.mergeItems);
|
|
@@ -14480,8 +14464,12 @@ function addSaltsAndSolventsOnCanvasWithoutMerge(restruct, template, dragCtx, ed
|
|
|
14480
14464
|
}
|
|
14481
14465
|
function getTemplateMode(tmpl) {
|
|
14482
14466
|
var _tmpl$props;
|
|
14483
|
-
if (tmpl.mode)
|
|
14484
|
-
|
|
14467
|
+
if (tmpl.mode) {
|
|
14468
|
+
return tmpl.mode;
|
|
14469
|
+
}
|
|
14470
|
+
if (['Functional Groups', 'Salts and Solvents'].includes((_tmpl$props = tmpl.props) === null || _tmpl$props === void 0 ? void 0 : _tmpl$props.group)) {
|
|
14471
|
+
return MODES.FG;
|
|
14472
|
+
}
|
|
14485
14473
|
return null;
|
|
14486
14474
|
}
|
|
14487
14475
|
function getSign(molecule, bond, v) {
|
|
@@ -16000,7 +15988,7 @@ var HoverIcon = function () {
|
|
|
16000
15988
|
}, {
|
|
16001
15989
|
key: "onMouseLeave",
|
|
16002
15990
|
value: function onMouseLeave(event) {
|
|
16003
|
-
if (!this.isOverLoader(event)) {
|
|
15991
|
+
if (!this.isOverLoader(event) && this.isShown) {
|
|
16004
15992
|
this.shouldBeShownWhenMouseBack = true;
|
|
16005
15993
|
this.hide();
|
|
16006
15994
|
}
|
|
@@ -16025,9 +16013,12 @@ var HoverIcon = function () {
|
|
|
16025
16013
|
}
|
|
16026
16014
|
}, {
|
|
16027
16015
|
key: "hide",
|
|
16028
|
-
value: function hide() {
|
|
16016
|
+
value: function hide(restShouldBeShownWhenMouseBack) {
|
|
16029
16017
|
this.element.hide();
|
|
16030
16018
|
this.isShown = false;
|
|
16019
|
+
if (restShouldBeShownWhenMouseBack) {
|
|
16020
|
+
this.shouldBeShownWhenMouseBack = false;
|
|
16021
|
+
}
|
|
16031
16022
|
}
|
|
16032
16023
|
}, {
|
|
16033
16024
|
key: "initialize",
|
|
@@ -16052,9 +16043,8 @@ var HoverIcon = function () {
|
|
|
16052
16043
|
this.element = icon.element;
|
|
16053
16044
|
this._fill = icon.fill;
|
|
16054
16045
|
this._label = icon.label;
|
|
16055
|
-
this.isShown = true;
|
|
16056
16046
|
this.shouldBeShownWhenMouseBack = false;
|
|
16057
|
-
this.
|
|
16047
|
+
this.hide();
|
|
16058
16048
|
}
|
|
16059
16049
|
}]);
|
|
16060
16050
|
return HoverIcon;
|
|
@@ -16159,7 +16149,7 @@ var Editor$3 = function () {
|
|
|
16159
16149
|
var tool = new tools[name](this, opts);
|
|
16160
16150
|
var isAtomToolChosen = name === 'atom';
|
|
16161
16151
|
if (!isAtomToolChosen) {
|
|
16162
|
-
this.hoverIcon.hide();
|
|
16152
|
+
this.hoverIcon.hide(true);
|
|
16163
16153
|
}
|
|
16164
16154
|
if (!tool || tool.isNotActiveTool) {
|
|
16165
16155
|
return null;
|
|
@@ -16218,7 +16208,7 @@ var Editor$3 = function () {
|
|
|
16218
16208
|
this.render = new ketcherCore.Render(this.render.clientArea, Object.assign({
|
|
16219
16209
|
scale: SCALE
|
|
16220
16210
|
}, value));
|
|
16221
|
-
this.
|
|
16211
|
+
this.struct(struct);
|
|
16222
16212
|
this.render.setZoom(zoom);
|
|
16223
16213
|
this.render.update();
|
|
16224
16214
|
return this.render.options;
|
|
@@ -24118,8 +24108,8 @@ var KetcherBuilder = function () {
|
|
|
24118
24108
|
initApp(element, staticResourcesUrl, {
|
|
24119
24109
|
buttons: buttons || {},
|
|
24120
24110
|
errorHandler: errorHandler || null,
|
|
24121
|
-
version: "2.9.0-rc.
|
|
24122
|
-
buildDate: "2023-
|
|
24111
|
+
version: "2.9.0-rc.6" ,
|
|
24112
|
+
buildDate: "2023-04-10T13:09:58" ,
|
|
24123
24113
|
buildNumber: ''
|
|
24124
24114
|
}, structService, resolve);
|
|
24125
24115
|
});
|
|
@@ -24232,4 +24222,5 @@ function Editor(props) {
|
|
|
24232
24222
|
exports.Editor = Editor;
|
|
24233
24223
|
exports.KETCHER_INIT_EVENT_NAME = KETCHER_INIT_EVENT_NAME;
|
|
24234
24224
|
exports.KETCHER_SAVED_SETTINGS_KEY = KETCHER_SAVED_SETTINGS_KEY;
|
|
24225
|
+
exports.MODES = MODES;
|
|
24235
24226
|
//# sourceMappingURL=index.js.map
|