ketcher-react 2.26.0-rc.1 → 2.26.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.
@@ -3,7 +3,5 @@ interface Props {
3
3
  className?: string;
4
4
  preview: AmbiguousMonomerPreviewState;
5
5
  }
6
- export declare const AmbiguousMonomerPreview: import("@emotion/styled").StyledComponent<Props & {
7
- theme?: import("@emotion/react").Theme | undefined;
8
- }, {}, {}>;
9
- export {};
6
+ declare const AmbiguousMonomerPreview: ({ className, preview }: Props) => import("react/jsx-runtime").JSX.Element;
7
+ export { AmbiguousMonomerPreview };
package/dist/index.js CHANGED
@@ -3798,7 +3798,7 @@ var zoom = {
3798
3798
 
3799
3799
  var openHelpLink = function openHelpLink() {
3800
3800
  var _window$open;
3801
- return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v2.26.0-rc.1\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
3801
+ return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v2.26.0-rc.2\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
3802
3802
  };
3803
3803
  var help = {
3804
3804
  help: {
@@ -8105,7 +8105,7 @@ var style$1 = {
8105
8105
  text: text
8106
8106
  };
8107
8107
 
8108
- var _templateObject$d, _templateObject2$9, _templateObject3$7;
8108
+ var _templateObject$c, _templateObject2$8, _templateObject3$6;
8109
8109
  var StyledButton$1 = styled__default["default"]('button', {
8110
8110
  shouldForwardProp: function shouldForwardProp(prop) {
8111
8111
  return prop !== 'isActive';
@@ -8138,9 +8138,9 @@ var StyledButton$1 = styled__default["default"]('button', {
8138
8138
  }
8139
8139
  };
8140
8140
  });
8141
- var IconStyles = react.css(_templateObject$d || (_templateObject$d = _taggedTemplateLiteral__default["default"](["\n width: 100%;\n height: 100%;\n"])));
8142
- var StyledIcon = styled__default["default"](Icon)(_templateObject2$9 || (_templateObject2$9 = _taggedTemplateLiteral__default["default"](["\n ", ";\n"])), IconStyles);
8143
- var StyledCustomIcon = styled__default["default"]('img')(_templateObject3$7 || (_templateObject3$7 = _taggedTemplateLiteral__default["default"](["\n ", ";\n"])), IconStyles);
8141
+ var IconStyles = react.css(_templateObject$c || (_templateObject$c = _taggedTemplateLiteral__default["default"](["\n width: 100%;\n height: 100%;\n"])));
8142
+ var StyledIcon = styled__default["default"](Icon)(_templateObject2$8 || (_templateObject2$8 = _taggedTemplateLiteral__default["default"](["\n ", ";\n"])), IconStyles);
8143
+ var StyledCustomIcon = styled__default["default"]('img')(_templateObject3$6 || (_templateObject3$6 = _taggedTemplateLiteral__default["default"](["\n ", ";\n"])), IconStyles);
8144
8144
 
8145
8145
  var IconButtonBase = function IconButtonBase(_ref) {
8146
8146
  var onClick = _ref.onClick,
@@ -8230,8 +8230,8 @@ var Button = function Button(_ref) {
8230
8230
  }));
8231
8231
  };
8232
8232
 
8233
- var _templateObject$c;
8234
- var Container$2 = styled__default["default"].div(_templateObject$c || (_templateObject$c = _taggedTemplateLiteral__default["default"](["\n ", "\n"])), function (props) {
8233
+ var _templateObject$b;
8234
+ var Container$2 = styled__default["default"].div(_templateObject$b || (_templateObject$b = _taggedTemplateLiteral__default["default"](["\n ", "\n"])), function (props) {
8235
8235
  if (props.fullsize) {
8236
8236
  return "\n > svg {\n height: 100%;\n width: 100%;\n }\n ";
8237
8237
  } else {
@@ -8488,10 +8488,10 @@ var Dialog = function Dialog(props) {
8488
8488
  }));
8489
8489
  };
8490
8490
 
8491
- var _templateObject$b, _templateObject2$8, _templateObject3$6, _templateObject4$4, _templateObject5$3, _templateObject6$2;
8492
- var Container = styled__default["default"].div(_templateObject$b || (_templateObject$b = _taggedTemplateLiteral__default["default"](["\n display: flex;\n flex-direction: column;\n align-items: start;\n gap: 16px;\n padding: 8px;\n background: #ffffff;\n border: 1px solid #cad3dd;\n border-radius: 4px;\n box-shadow: 0px 1px 1px rgba(197, 203, 207, 0.7);\n"])));
8493
- var Header$1 = styled__default["default"].div(_templateObject2$8 || (_templateObject2$8 = _taggedTemplateLiteral__default["default"](["\n font-weight: 600;\n"])));
8494
- var Content = styled__default["default"].div(_templateObject3$6 || (_templateObject3$6 = _taggedTemplateLiteral__default["default"](["\n display: flex;\n flex-direction: column;\n gap: 4px;\n"])));
8491
+ var _templateObject$a, _templateObject2$7, _templateObject3$5, _templateObject4$4, _templateObject5$3, _templateObject6$2;
8492
+ var Container = styled__default["default"].div(_templateObject$a || (_templateObject$a = _taggedTemplateLiteral__default["default"](["\n display: flex;\n flex-direction: column;\n align-items: start;\n gap: 16px;\n padding: 8px;\n background: #ffffff;\n border: 1px solid #cad3dd;\n border-radius: 4px;\n box-shadow: 0px 1px 1px rgba(197, 203, 207, 0.7);\n"])));
8493
+ var Header$1 = styled__default["default"].div(_templateObject2$7 || (_templateObject2$7 = _taggedTemplateLiteral__default["default"](["\n font-weight: 600;\n"])));
8494
+ var Content = styled__default["default"].div(_templateObject3$5 || (_templateObject3$5 = _taggedTemplateLiteral__default["default"](["\n display: flex;\n flex-direction: column;\n gap: 4px;\n"])));
8495
8495
  var ContentLine = styled__default["default"].div(_templateObject4$4 || (_templateObject4$4 = _taggedTemplateLiteral__default["default"](["\n height: 24px;\n display: flex;\n align-items: center;\n gap: 8px;\n white-space: nowrap;\n"])));
8496
8496
  var RatioBar = styled__default["default"].div(_templateObject5$3 || (_templateObject5$3 = _taggedTemplateLiteral__default["default"](["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 36px;\n border-right: 0.5px solid #b4b9d6;\n background: ", ";\n"])), function (_ref) {
8497
8497
  var ratio = _ref.ratio;
@@ -8499,20 +8499,12 @@ var RatioBar = styled__default["default"].div(_templateObject5$3 || (_templateOb
8499
8499
  });
8500
8500
  var MonomerName = styled__default["default"].div(_templateObject6$2 || (_templateObject6$2 = _taggedTemplateLiteral__default["default"](["\n flex: 1;\n"])));
8501
8501
 
8502
- var _templateObject$a, _templateObject2$7, _templateObject3$5;
8503
- var UnstyledAmbiguousMonomerPreview = function UnstyledAmbiguousMonomerPreview(_ref) {
8502
+ var AmbiguousMonomerPreview = function AmbiguousMonomerPreview(_ref) {
8504
8503
  var className = _ref.className,
8505
8504
  preview = _ref.preview;
8506
8505
  var monomer = preview.monomer,
8507
- presetMonomers = preview.presetMonomers,
8508
- style = preview.style;
8506
+ presetMonomers = preview.presetMonomers;
8509
8507
  var isAlternatives = monomer.subtype === 'alternatives';
8510
- var ContainerDynamic = React.useMemo(function () {
8511
- if (!style) {
8512
- return styled__default["default"](Container)(_templateObject$a || (_templateObject$a = _taggedTemplateLiteral__default["default"]([""])));
8513
- }
8514
- return styled__default["default"](Container)(_templateObject2$7 || (_templateObject2$7 = _taggedTemplateLiteral__default["default"](["\n top: ", ";\n left: ", ";\n right: ", ";\n transform: ", ";\n "])), (style === null || style === void 0 ? void 0 : style.top) || '', (style === null || style === void 0 ? void 0 : style.left) || '', (style === null || style === void 0 ? void 0 : style.right) || '', style.transform || '');
8515
- }, [style]);
8516
8508
  var header = isAlternatives ? 'Alternatives' : 'Mixed';
8517
8509
  var aminoAcidFallback = monomer.label === 'X' ? 'Any amino acid' : null;
8518
8510
  var baseFallback = monomer.label === 'N' ? 'Any base' : null;
@@ -8566,7 +8558,7 @@ var UnstyledAmbiguousMonomerPreview = function UnstyledAmbiguousMonomerPreview(_
8566
8558
  }
8567
8559
  return sortedData.slice(0, 5);
8568
8560
  }, [previewData, isAlternatives]);
8569
- return jsxRuntime.jsxs(ContainerDynamic, {
8561
+ return jsxRuntime.jsxs(Container, {
8570
8562
  className: className,
8571
8563
  "data-testid": "polymer-library-preview",
8572
8564
  children: [jsxRuntime.jsx(Header$1, {
@@ -8583,7 +8575,6 @@ var UnstyledAmbiguousMonomerPreview = function UnstyledAmbiguousMonomerPreview(_
8583
8575
  })]
8584
8576
  });
8585
8577
  };
8586
- var AmbiguousMonomerPreview = styled__default["default"](UnstyledAmbiguousMonomerPreview)(_templateObject3$5 || (_templateObject3$5 = _taggedTemplateLiteral__default["default"](["\n z-index: 5;\n position: absolute;\n"])));
8587
8578
 
8588
8579
  exports.PreviewType = void 0;
8589
8580
  (function (PreviewType) {
@@ -13013,12 +13004,16 @@ function calculateAmbiguousMonomerPreviewLeft(initialLeft) {
13013
13004
  return initialLeft + PREVIEW_WIDTH / 2 > canvasWrapperRight ? canvasWrapperRight - PREVIEW_WIDTH : initialLeft - PREVIEW_WIDTH / 2 < canvasWrapperLeft ? canvasWrapperLeft : initialLeft - PREVIEW_WIDTH / 2;
13014
13005
  }
13015
13006
  var calculateBondPreviewPosition = function calculateBondPreviewPosition(bond, bondCoordinates) {
13016
- var _firstMonomer$rendere, _secondMonomer$render;
13007
+ var _firstMonomer$rendere, _secondMonomer$render, _ZoomTool$instance;
13017
13008
  var firstMonomer = bond.firstMonomer,
13018
13009
  secondMonomer = bond.secondMonomer;
13019
13010
  assert_1(secondMonomer);
13020
13011
  var firstMonomerCoordinates = (_firstMonomer$rendere = firstMonomer.renderer) === null || _firstMonomer$rendere === void 0 ? void 0 : _firstMonomer$rendere.rootBoundingClientRect;
13021
13012
  var secondMonomerCoordinates = (_secondMonomer$render = secondMonomer.renderer) === null || _secondMonomer$render === void 0 ? void 0 : _secondMonomer$render.rootBoundingClientRect;
13013
+ var canvasWrapperBoundingClientRect = (_ZoomTool$instance = ketcherCore.ZoomTool.instance) === null || _ZoomTool$instance === void 0 || (_ZoomTool$instance = _ZoomTool$instance.canvasWrapper.node()) === null || _ZoomTool$instance === void 0 ? void 0 : _ZoomTool$instance.getBoundingClientRect();
13014
+ var canvasWrapperBottom = (canvasWrapperBoundingClientRect === null || canvasWrapperBoundingClientRect === void 0 ? void 0 : canvasWrapperBoundingClientRect.bottom) || 0;
13015
+ var canvasWrapperTop = (canvasWrapperBoundingClientRect === null || canvasWrapperBoundingClientRect === void 0 ? void 0 : canvasWrapperBoundingClientRect.top) || 0;
13016
+ var canvasWrapperRight = (canvasWrapperBoundingClientRect === null || canvasWrapperBoundingClientRect === void 0 ? void 0 : canvasWrapperBoundingClientRect.right) || 0;
13022
13017
  assert_1(firstMonomerCoordinates);
13023
13018
  assert_1(secondMonomerCoordinates);
13024
13019
  var left = Math.min(bondCoordinates.left, firstMonomerCoordinates.left, secondMonomerCoordinates.left);
@@ -13029,26 +13024,30 @@ var calculateBondPreviewPosition = function calculateBondPreviewPosition(bond, b
13029
13024
  var height = bottom - top;
13030
13025
  var style = {};
13031
13026
  if (width > height) {
13027
+ var leftValue = left + width / 2;
13032
13028
  var topValue;
13033
- if (top > preview.height + preview.gap) {
13029
+ if (top + canvasWrapperTop > preview.height) {
13034
13030
  topValue = top - preview.heightForBond - preview.gap;
13035
13031
  } else {
13036
13032
  topValue = bottom + preview.gap;
13037
13033
  }
13038
13034
  style = {
13039
13035
  top: "".concat(topValue, "px"),
13040
- left: "".concat(left + width / 2, "px")
13036
+ left: "".concat(leftValue, "px"),
13037
+ transform: "translate(".concat(leftValue + preview.width > canvasWrapperRight ? '-100%' : leftValue > preview.width / 2 ? '-50%' : 0, ", 0)")
13041
13038
  };
13042
13039
  } else {
13043
- var leftValue;
13040
+ var _topValue = top + height / 2;
13041
+ var _leftValue;
13044
13042
  if (left > preview.widthForBond + preview.gap) {
13045
- leftValue = left - preview.widthForBond / 2 - preview.gap;
13043
+ _leftValue = left - preview.widthForBond / 2 - preview.gap;
13046
13044
  } else {
13047
- leftValue = right + preview.widthForBond / 2 + preview.gap;
13045
+ _leftValue = right + preview.widthForBond / 2 + preview.gap;
13048
13046
  }
13049
13047
  style = {
13050
- top: "".concat(top + height / 2, "px"),
13051
- left: "".concat(leftValue, "px")
13048
+ top: "".concat(_topValue, "px"),
13049
+ left: "".concat(_leftValue, "px"),
13050
+ transform: "translate(".concat(_leftValue > preview.width / 2 ? '-50%' : 0, ", ").concat(_topValue + preview.height / 2 > canvasWrapperBottom ? '-100%' : _topValue > preview.height / 2 ? '-50%' : 0, ")")
13052
13051
  };
13053
13052
  }
13054
13053
  return style;
@@ -18178,7 +18177,7 @@ var SelectTool = function () {
18178
18177
  xy0: currentPosition
18179
18178
  };
18180
18179
  }
18181
- if (!ci || ci.map === 'atoms') {
18180
+ if (!ci || ci.map === 'atoms' && !event.ctrlKey) {
18182
18181
  atomLongtapEvent(this, rnd);
18183
18182
  }
18184
18183
  var sel = closestToSel(ci);
@@ -18311,6 +18310,7 @@ var SelectTool = function () {
18311
18310
  return;
18312
18311
  }
18313
18312
  this.isMouseDown = false;
18313
+ this.isReadyForCopy = false;
18314
18314
  var editor = this.editor;
18315
18315
  var selected = editor.selection();
18316
18316
  var struct = editor.render.ctab;
@@ -24417,12 +24417,13 @@ function selectStereoFlagsIfNecessary(atoms, expAtoms) {
24417
24417
  }
24418
24418
  var _origin = new WeakMap();
24419
24419
  var Editor$3 = function () {
24420
- function Editor(clientArea, options) {
24420
+ function Editor(clientArea, options, serverSettings) {
24421
24421
  _classCallCheck__default["default"](this, Editor);
24422
24422
  _classPrivateFieldInitSpec(this, _origin, {
24423
24423
  writable: true,
24424
24424
  value: void 0
24425
24425
  });
24426
+ _defineProperty__default["default"](this, "serverSettings", {});
24426
24427
  this.render = new ketcherCore.Render(clientArea, Object.assign({
24427
24428
  microModeScale: SCALE
24428
24429
  }, options), options.reuseRestructIfExist !== false);
@@ -24434,6 +24435,7 @@ var Editor$3 = function () {
24434
24435
  this.highlights = new Highlighter(this);
24435
24436
  this.renderAndRecoordinateStruct = this.renderAndRecoordinateStruct.bind(this);
24436
24437
  this.setOptions = this.setOptions.bind(this);
24438
+ this.setServerSettings(serverSettings);
24437
24439
  this.lastCursorPosition = {
24438
24440
  x: 0,
24439
24441
  y: 0
@@ -24573,6 +24575,11 @@ var Editor$3 = function () {
24573
24575
  this.render.update();
24574
24576
  return this.render.options;
24575
24577
  }
24578
+ }, {
24579
+ key: "setServerSettings",
24580
+ value: function setServerSettings(serverSettings) {
24581
+ this.serverSettings = serverSettings;
24582
+ }
24576
24583
  }, {
24577
24584
  key: "updateToolAfterOptionsChange",
24578
24585
  value: function updateToolAfterOptionsChange(wasViewOnlyEnabled) {
@@ -25220,6 +25227,7 @@ function ButtonGroup(_ref) {
25220
25227
  },
25221
25228
  className: clsx__default["default"](classes$F.button, _defineProperty__default["default"]({}, classes$F.selected, buttonValue === value)),
25222
25229
  style: {
25230
+ display: 'flex',
25223
25231
  flex: '1 0 25%',
25224
25232
  margin: '2px',
25225
25233
  borderRadius: '3px'
@@ -27002,7 +27010,7 @@ var InfoTooltip$1 = reactRedux.connect(function (store) {
27002
27010
  };
27003
27011
  })(InfoTooltip);
27004
27012
 
27005
- var _excluded$o = ["Tag", "className", "indigoVerification", "struct", "tool", "toolOpts", "options", "onInit", "onSelectionChange", "onElementEdit", "onEnhancedStereoEdit", "onQuickEdit", "onBondEdit", "onZoomIn", "onZoomOut", "onRgroupEdit", "onSgroupEdit", "onRemoveFG", "onMessage", "onAromatizeStruct", "onDearomatizeStruct", "onAttachEdit", "onCipChange", "onConfirm", "onShowInfo", "onApiSettings", "showAttachmentPoints", "onUpdateFloatingTools", "onShowMacromoleculesErrorMessage"];
27013
+ var _excluded$o = ["Tag", "className", "indigoVerification", "struct", "tool", "toolOpts", "options", "onInit", "onSelectionChange", "onElementEdit", "onEnhancedStereoEdit", "onQuickEdit", "onBondEdit", "onZoomIn", "onZoomOut", "onRgroupEdit", "onSgroupEdit", "onRemoveFG", "onMessage", "onAromatizeStruct", "onDearomatizeStruct", "onAttachEdit", "onCipChange", "onConfirm", "onShowInfo", "onApiSettings", "showAttachmentPoints", "onUpdateFloatingTools", "onShowMacromoleculesErrorMessage", "serverSettings"];
27006
27014
  function ownKeys$F(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; }
27007
27015
  function _objectSpread$F(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$F(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$F(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
27008
27016
  function _callSuper$9(t, o, e) { return o = _getPrototypeOf__default["default"](o), _possibleConstructorReturn__default["default"](t, _isNativeReflectConstruct$9() ? Reflect.construct(o, e || [], _getPrototypeOf__default["default"](t).constructor) : o.apply(t, e)); }
@@ -27022,7 +27030,10 @@ function setupEditor(editor, props) {
27022
27030
  });
27023
27031
  }
27024
27032
  }
27025
- if (oldProps.options && options !== oldProps.options) editor.options(options);
27033
+ if (oldProps.options && options !== oldProps.options) {
27034
+ editor.options(options);
27035
+ editor.setServerSettings(props.serverSettings);
27036
+ }
27026
27037
  Object.keys(editor.event).forEach(function (name) {
27027
27038
  var eventName = "on".concat(fp.upperFirst(name));
27028
27039
  if (props[eventName] !== oldProps[eventName]) {
@@ -27120,7 +27131,7 @@ var StructEditor = function (_Component) {
27120
27131
  key: "componentDidMount",
27121
27132
  value: function componentDidMount() {
27122
27133
  var _this4 = this;
27123
- this.editor = new Editor$3(this.editorRef.current, _objectSpread$F({}, this.props.options));
27134
+ this.editor = new Editor$3(this.editorRef.current, _objectSpread$F({}, this.props.options), _objectSpread$F({}, this.props.serverSettings));
27124
27135
  var ketcher = ketcherCore.ketcherProvider.getKetcher();
27125
27136
  if (ketcher !== null && ketcher !== void 0 && ketcher.editor.macromoleculeConvertionError) {
27126
27137
  this.props.onShowMacromoleculesErrorMessage(ketcher.editor.macromoleculeConvertionError);
@@ -27246,6 +27257,7 @@ var StructEditor = function (_Component) {
27246
27257
  _this$props.showAttachmentPoints;
27247
27258
  _this$props.onUpdateFloatingTools;
27248
27259
  _this$props.onShowMacromoleculesErrorMessage;
27260
+ _this$props.serverSettings;
27249
27261
  var props = _objectWithoutProperties__default["default"](_this$props, _excluded$o);
27250
27262
  var _this$state = this.state,
27251
27263
  _this$state$clientX = _this$state.clientX,
@@ -28580,12 +28592,11 @@ var SaveButton$1 = function SaveButton(props) {
28580
28592
  var server = props.server,
28581
28593
  _props$filename = props.filename,
28582
28594
  filename = _props$filename === void 0 ? 'unnamed' : _props$filename,
28583
- outputFormat = props.outputFormat,
28584
- bondThickness = props.bondThickness,
28585
28595
  data = props.data,
28586
28596
  type = props.type,
28587
28597
  _props$mode = props.mode,
28588
28598
  mode = _props$mode === void 0 ? 'saveFile' : _props$mode,
28599
+ options = props.options,
28589
28600
  _props$onSave = props.onSave,
28590
28601
  onSave = _props$onSave === void 0 ? noop : _props$onSave,
28591
28602
  _props$onError = props.onError,
@@ -28610,12 +28621,9 @@ var SaveButton$1 = function SaveButton(props) {
28610
28621
  };
28611
28622
  var saveImage = function saveImage() {
28612
28623
  var ketcherInstance = getKetcherInstance();
28613
- if (outputFormat) {
28614
- ketcherInstance.generateImage(data, {
28615
- outputFormat: outputFormat,
28616
- bondThickness: bondThickness || ketcherCore.defaultBondThickness
28617
- }).then(function (blob) {
28618
- fileSaver$1.saveAs(blob, "".concat(filename, ".").concat(outputFormat));
28624
+ if (options !== null && options !== void 0 && options.outputFormat) {
28625
+ ketcherInstance.generateImage(data, options).then(function (blob) {
28626
+ fileSaver$1.saveAs(blob, "".concat(filename, ".").concat(options.outputFormat));
28619
28627
  onSave();
28620
28628
  })["catch"](function (e) {
28621
28629
  ketcherCore.KetcherLogger.error('savebutton.tsx::SaveButton::saveImage', e);
@@ -29057,7 +29065,7 @@ var SettingsDialog = function SettingsDialog(props) {
29057
29065
  var ACSStyleButton = jsxRuntime.jsx("button", {
29058
29066
  className: classes$x.acsStyleButton,
29059
29067
  onClick: onACSStyle,
29060
- children: "ACS Style"
29068
+ children: "Set ACS Settings"
29061
29069
  }, "acsstylebutton");
29062
29070
  var tabs = [generalTab, stereoTab, atomsTab, bondsTab, serverTab, threeDViewerTab, debuggingTab];
29063
29071
  return jsxRuntime.jsx(Dialog, {
@@ -31534,12 +31542,13 @@ var SaveDialog = function (_Component) {
31534
31542
  isLoading = _this$state2.isLoading,
31535
31543
  structStr = _this$state2.structStr;
31536
31544
  var _this$props3 = _this.props,
31537
- formState = _this$props3.formState,
31538
- bondThickness = _this$props3.bondThickness;
31545
+ options = _this$props3.options,
31546
+ formState = _this$props3.formState;
31539
31547
  var _formState$result2 = formState.result,
31540
31548
  filename = _formState$result2.filename,
31541
31549
  format = _formState$result2.format;
31542
31550
  var isCleanStruct = _this.props.struct.isBlank();
31551
+ options.outputFormat = imageFormat;
31543
31552
  var savingStruct = _this.isBinaryCdxFormat(format) && !isLoading ? ketcherCore.b64toBlob(structStr) : structStr;
31544
31553
  var isMoleculeContain = _this.props.struct.atoms.size && _this.props.struct.bonds.size;
31545
31554
  var buttons = [jsxRuntime.jsx("button", {
@@ -31562,10 +31571,9 @@ var SaveDialog = function (_Component) {
31562
31571
  if (_this.isImageFormat(format)) {
31563
31572
  buttons.push( jsxRuntime.jsx(SaveButton$1, {
31564
31573
  mode: "saveImage",
31574
+ options: options,
31565
31575
  data: structStr,
31566
31576
  filename: filename,
31567
- outputFormat: imageFormat,
31568
- bondThickness: bondThickness,
31569
31577
  type: "image/".concat(format, "+xml"),
31570
31578
  onSave: _this.props.onOk,
31571
31579
  disabled: disableControls || !formState.valid || isCleanStruct || !_this.props.server,
@@ -34106,7 +34114,7 @@ function initEditor(dispatch, getState) {
34106
34114
  return function (dispatch) {
34107
34115
  var state = global.currentState;
34108
34116
  var activeTool = state.actionState.activeTool.tool;
34109
- if (activeTool === 'select') return;
34117
+ if (activeTool === 'select' && !force) return;
34110
34118
  var selectMode = state.toolbar.visibleTools.select;
34111
34119
  var resetOption = state.options.settings.resetToSelect;
34112
34120
  if (resetOption === true || resetOption === activeTool || force === true)
@@ -34312,8 +34320,10 @@ var mapDispatchToProps$1 = function mapDispatchToProps(dispatch) {
34312
34320
  });
34313
34321
  };
34314
34322
  var Editor$1 = reactRedux.connect(function (state) {
34323
+ var serverSettings = state.options.getServerSettings();
34315
34324
  return {
34316
34325
  options: state.options.settings,
34326
+ serverSettings: serverSettings,
34317
34327
  indigoVerification: state.requestsStatuses.indigoVerification
34318
34328
  };
34319
34329
  }, mapDispatchToProps$1)(StructEditor);
@@ -34838,8 +34848,8 @@ var KetcherBuilder = function () {
34838
34848
  cleanup = initApp(element, appRoot, staticResourcesUrl, {
34839
34849
  buttons: buttons || {},
34840
34850
  errorHandler: errorHandler || null,
34841
- version: "2.26.0-rc.1" ,
34842
- buildDate: "2024-10-04T18:52:31" ,
34851
+ version: "2.26.0-rc.2" ,
34852
+ buildDate: "2024-10-14T19:59:25" ,
34843
34853
  buildNumber: '',
34844
34854
  customButtons: customButtons || []
34845
34855
  }, structService, resolve, togglerComponent);