ketcher-react 2.26.0-rc.1 → 2.26.0-rc.3

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.3\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'
@@ -26264,11 +26272,6 @@ var useMonomerExpansionHandlers = function useMonomerExpansionHandlers() {
26264
26272
  });
26265
26273
  editor.update(action);
26266
26274
  editor.rotateController.rerender();
26267
- editor.selection({
26268
- sgroups: selectedFunctionalGroups === null || selectedFunctionalGroups === void 0 ? void 0 : selectedFunctionalGroups.map(function (fg) {
26269
- return fg.relatedSGroup;
26270
- })
26271
- });
26272
26275
  }, [getKetcherInstance]);
26273
26276
  var hidden = React.useCallback(function (_ref2, toExpand) {
26274
26277
  var _props$functionalGrou;
@@ -27002,7 +27005,7 @@ var InfoTooltip$1 = reactRedux.connect(function (store) {
27002
27005
  };
27003
27006
  })(InfoTooltip);
27004
27007
 
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"];
27008
+ 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
27009
  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
27010
  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
27011
  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 +27025,10 @@ function setupEditor(editor, props) {
27022
27025
  });
27023
27026
  }
27024
27027
  }
27025
- if (oldProps.options && options !== oldProps.options) editor.options(options);
27028
+ if (oldProps.options && options !== oldProps.options) {
27029
+ editor.options(options);
27030
+ editor.setServerSettings(props.serverSettings);
27031
+ }
27026
27032
  Object.keys(editor.event).forEach(function (name) {
27027
27033
  var eventName = "on".concat(fp.upperFirst(name));
27028
27034
  if (props[eventName] !== oldProps[eventName]) {
@@ -27120,7 +27126,7 @@ var StructEditor = function (_Component) {
27120
27126
  key: "componentDidMount",
27121
27127
  value: function componentDidMount() {
27122
27128
  var _this4 = this;
27123
- this.editor = new Editor$3(this.editorRef.current, _objectSpread$F({}, this.props.options));
27129
+ this.editor = new Editor$3(this.editorRef.current, _objectSpread$F({}, this.props.options), _objectSpread$F({}, this.props.serverSettings));
27124
27130
  var ketcher = ketcherCore.ketcherProvider.getKetcher();
27125
27131
  if (ketcher !== null && ketcher !== void 0 && ketcher.editor.macromoleculeConvertionError) {
27126
27132
  this.props.onShowMacromoleculesErrorMessage(ketcher.editor.macromoleculeConvertionError);
@@ -27246,6 +27252,7 @@ var StructEditor = function (_Component) {
27246
27252
  _this$props.showAttachmentPoints;
27247
27253
  _this$props.onUpdateFloatingTools;
27248
27254
  _this$props.onShowMacromoleculesErrorMessage;
27255
+ _this$props.serverSettings;
27249
27256
  var props = _objectWithoutProperties__default["default"](_this$props, _excluded$o);
27250
27257
  var _this$state = this.state,
27251
27258
  _this$state$clientX = _this$state.clientX,
@@ -28580,12 +28587,11 @@ var SaveButton$1 = function SaveButton(props) {
28580
28587
  var server = props.server,
28581
28588
  _props$filename = props.filename,
28582
28589
  filename = _props$filename === void 0 ? 'unnamed' : _props$filename,
28583
- outputFormat = props.outputFormat,
28584
- bondThickness = props.bondThickness,
28585
28590
  data = props.data,
28586
28591
  type = props.type,
28587
28592
  _props$mode = props.mode,
28588
28593
  mode = _props$mode === void 0 ? 'saveFile' : _props$mode,
28594
+ options = props.options,
28589
28595
  _props$onSave = props.onSave,
28590
28596
  onSave = _props$onSave === void 0 ? noop : _props$onSave,
28591
28597
  _props$onError = props.onError,
@@ -28610,12 +28616,9 @@ var SaveButton$1 = function SaveButton(props) {
28610
28616
  };
28611
28617
  var saveImage = function saveImage() {
28612
28618
  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));
28619
+ if (options !== null && options !== void 0 && options.outputFormat) {
28620
+ ketcherInstance.generateImage(data, options).then(function (blob) {
28621
+ fileSaver$1.saveAs(blob, "".concat(filename, ".").concat(options.outputFormat));
28619
28622
  onSave();
28620
28623
  })["catch"](function (e) {
28621
28624
  ketcherCore.KetcherLogger.error('savebutton.tsx::SaveButton::saveImage', e);
@@ -29057,7 +29060,7 @@ var SettingsDialog = function SettingsDialog(props) {
29057
29060
  var ACSStyleButton = jsxRuntime.jsx("button", {
29058
29061
  className: classes$x.acsStyleButton,
29059
29062
  onClick: onACSStyle,
29060
- children: "ACS Style"
29063
+ children: "Set ACS Settings"
29061
29064
  }, "acsstylebutton");
29062
29065
  var tabs = [generalTab, stereoTab, atomsTab, bondsTab, serverTab, threeDViewerTab, debuggingTab];
29063
29066
  return jsxRuntime.jsx(Dialog, {
@@ -31534,12 +31537,13 @@ var SaveDialog = function (_Component) {
31534
31537
  isLoading = _this$state2.isLoading,
31535
31538
  structStr = _this$state2.structStr;
31536
31539
  var _this$props3 = _this.props,
31537
- formState = _this$props3.formState,
31538
- bondThickness = _this$props3.bondThickness;
31540
+ options = _this$props3.options,
31541
+ formState = _this$props3.formState;
31539
31542
  var _formState$result2 = formState.result,
31540
31543
  filename = _formState$result2.filename,
31541
31544
  format = _formState$result2.format;
31542
31545
  var isCleanStruct = _this.props.struct.isBlank();
31546
+ options.outputFormat = imageFormat;
31543
31547
  var savingStruct = _this.isBinaryCdxFormat(format) && !isLoading ? ketcherCore.b64toBlob(structStr) : structStr;
31544
31548
  var isMoleculeContain = _this.props.struct.atoms.size && _this.props.struct.bonds.size;
31545
31549
  var buttons = [jsxRuntime.jsx("button", {
@@ -31562,10 +31566,9 @@ var SaveDialog = function (_Component) {
31562
31566
  if (_this.isImageFormat(format)) {
31563
31567
  buttons.push( jsxRuntime.jsx(SaveButton$1, {
31564
31568
  mode: "saveImage",
31569
+ options: options,
31565
31570
  data: structStr,
31566
31571
  filename: filename,
31567
- outputFormat: imageFormat,
31568
- bondThickness: bondThickness,
31569
31572
  type: "image/".concat(format, "+xml"),
31570
31573
  onSave: _this.props.onOk,
31571
31574
  disabled: disableControls || !formState.valid || isCleanStruct || !_this.props.server,
@@ -34106,7 +34109,7 @@ function initEditor(dispatch, getState) {
34106
34109
  return function (dispatch) {
34107
34110
  var state = global.currentState;
34108
34111
  var activeTool = state.actionState.activeTool.tool;
34109
- if (activeTool === 'select') return;
34112
+ if (activeTool === 'select' && !force) return;
34110
34113
  var selectMode = state.toolbar.visibleTools.select;
34111
34114
  var resetOption = state.options.settings.resetToSelect;
34112
34115
  if (resetOption === true || resetOption === activeTool || force === true)
@@ -34312,8 +34315,10 @@ var mapDispatchToProps$1 = function mapDispatchToProps(dispatch) {
34312
34315
  });
34313
34316
  };
34314
34317
  var Editor$1 = reactRedux.connect(function (state) {
34318
+ var serverSettings = state.options.getServerSettings();
34315
34319
  return {
34316
34320
  options: state.options.settings,
34321
+ serverSettings: serverSettings,
34317
34322
  indigoVerification: state.requestsStatuses.indigoVerification
34318
34323
  };
34319
34324
  }, mapDispatchToProps$1)(StructEditor);
@@ -34838,8 +34843,8 @@ var KetcherBuilder = function () {
34838
34843
  cleanup = initApp(element, appRoot, staticResourcesUrl, {
34839
34844
  buttons: buttons || {},
34840
34845
  errorHandler: errorHandler || null,
34841
- version: "2.26.0-rc.1" ,
34842
- buildDate: "2024-10-04T18:52:31" ,
34846
+ version: "2.26.0-rc.3" ,
34847
+ buildDate: "2024-10-16T14:44:22" ,
34843
34848
  buildNumber: '',
34844
34849
  customButtons: customButtons || []
34845
34850
  }, structService, resolve, togglerComponent);