ketcher-react 2.7.0-rc.2 → 2.7.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.
@@ -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, findStereoAtoms, RxnArrowMode, SimpleObjectMode, SGroup, Pile, getStereoAtomsMap, identifyStructFormat, ChemicalMimeType, SdfSerializer, FunctionalGroupsProvider, SaltsAndSolventsProvider, KetcherAsyncEvents, ElementColor, formatProperties, fromAtomsAttrs, Vec2, FunctionalGroup, Fragment as Fragment$1, OperationType, fracAngle, Action, fromSgroupDeletion, fromFragmentDeletion, fromAtomAddition, fromBondAddition, Atom as Atom$2, bondChangingAction, fromBondsAttrs, fromChain, getItemsToFuse, getHoverToFuse, fromItemsFuse, fromStereoFlagUpdate, Scale, checkOverlapping, fromSeveralSgroupAddition, SgContexts, fromSgroupAction, fromSimpleObjectResizing, fromArrowResizing, fromMultipleMove, fromTextDeletion, fromTextUpdating, fromOneAtomDeletion, fromOneBondDeletion, fromArrowDeletion, fromPlusDeletion, fromSimpleObjectDeletion, fromPaste, RGroup as RGroup$2, fromRGroupFragment, fromUpdateIfThen, fromRGroupAttrs, fromArrowAddition, fromPlusAddition, fromRotate, fromFlip, fromBondAlign, fromSimpleObjectAddition, fromTemplateOnBondAction, fromTemplateOnCanvas, fromTemplateOnAtom, fromTextCreation, fromHighlightCreate, fromHighlightClear, fromNewCanvas, Struct, Render, fromDescriptorsAlign, setExpandSGroup, SupportedFormat, getPropertiesByFormat, StereoFlag, getPropertiesByImgFormat, Generics, TextCommand } from 'ketcher-core';
27
+ import { KetSerializer, MolSerializer, Ketcher, FormatterFactory, StereLabelStyleType, StereoColoringType, Bond as Bond$2, Elements, AtomList, StereoLabel, findStereoAtoms, RxnArrowMode, SimpleObjectMode, SGroup, Pile, getStereoAtomsMap, identifyStructFormat, SupportedFormat, ChemicalMimeType, SdfSerializer, FunctionalGroupsProvider, SaltsAndSolventsProvider, KetcherAsyncEvents, ElementColor, formatProperties, fromAtomsAttrs, Vec2, FunctionalGroup, Fragment as Fragment$1, OperationType, fracAngle, Action, fromSgroupDeletion, fromFragmentDeletion, fromAtomAddition, fromBondAddition, Atom as Atom$2, bondChangingAction, fromBondsAttrs, fromChain, getItemsToFuse, getHoverToFuse, fromItemsFuse, fromStereoFlagUpdate, Scale, checkOverlapping, fromSeveralSgroupAddition, SgContexts, fromSgroupAction, fromSimpleObjectResizing, fromArrowResizing, fromMultipleMove, fromTextDeletion, fromTextUpdating, fromOneAtomDeletion, fromOneBondDeletion, fromArrowDeletion, fromPlusDeletion, fromSimpleObjectDeletion, fromPaste, RGroup as RGroup$2, fromRGroupFragment, fromUpdateIfThen, fromRGroupAttrs, fromArrowAddition, fromPlusAddition, fromRotate, fromFlip, fromBondAlign, fromSimpleObjectAddition, fromTemplateOnBondAction, fromTemplateOnCanvas, fromTemplateOnAtom, fromTextCreation, fromHighlightCreate, fromHighlightClear, fromNewCanvas, Struct, Render, fromDescriptorsAlign, setExpandSGroup, getPropertiesByFormat, StereoFlag, getPropertiesByImgFormat, Generics, TextCommand } 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 } from 'react';
30
30
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
@@ -40,7 +40,7 @@ import ReactDOM from 'react-dom';
40
40
  import { connect, useDispatch, useSelector, Provider } from 'react-redux';
41
41
  import { combineReducers, createStore as createStore$1, applyMiddleware } from 'redux';
42
42
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
43
- import 'redux-logger';
43
+ import { logger } from 'redux-logger';
44
44
  import thunk from 'redux-thunk';
45
45
  import { throttle as throttle$1, inRange, isEqual as isEqual$1, range as range$1 } from 'lodash';
46
46
  import useResizeObserver from 'use-resize-observer/polyfilled';
@@ -366,6 +366,7 @@ function _copy(cb, data) {
366
366
  cb.setData(fmt, data[fmt]);
367
367
  });
368
368
  } catch (ex) {
369
+ console.info("Could not write exact type ".concat(curFmt));
369
370
  }
370
371
  }
371
372
  }
@@ -691,6 +692,7 @@ var storage = {
691
692
  try {
692
693
  item = JSON.parse(localStorage.getItem(key));
693
694
  } catch (ex) {
695
+ console.info('LocalStorage:', ex.name);
694
696
  }
695
697
  return item;
696
698
  },
@@ -700,6 +702,7 @@ var storage = {
700
702
  localStorage.setItem(key, JSON.stringify(data));
701
703
  isSet = true;
702
704
  } catch (ex) {
705
+ console.info('LocalStorage:', ex.name);
703
706
  isSet = false;
704
707
  }
705
708
  return isSet;
@@ -834,6 +837,7 @@ function constant(schema, prop) {
834
837
  return desc.constant || desc["enum"][0];
835
838
  }
836
839
  function mapOf(schema, prop) {
840
+ console.assert(schema.oneOf);
837
841
  return schema.oneOf.reduce(function (res, desc) {
838
842
  res[constant(desc, prop)] = desc;
839
843
  return res;
@@ -2422,6 +2426,9 @@ function parseStruct(struct, server, options) {
2422
2426
  _options.fragment;
2423
2427
  var formatterOptions = _objectWithoutProperties(_options, _excluded$D);
2424
2428
  var format = identifyStructFormat(struct);
2429
+ if (format === SupportedFormat.cdx) {
2430
+ struct = "base64::".concat(struct.replace(/\s/g, ''));
2431
+ }
2425
2432
  var factory = new FormatterFactory(server);
2426
2433
  var service = factory.create(format, formatterOptions);
2427
2434
  return service.getStructureFromStringAsync(struct);
@@ -2870,7 +2877,7 @@ var zoom = {
2870
2877
 
2871
2878
  var openHelpLink = function openHelpLink() {
2872
2879
  var _window$open;
2873
- return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v2.7.0-rc.2\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
2880
+ return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v2.7.0-rc.3\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
2874
2881
  };
2875
2882
  var help = {
2876
2883
  help: {
@@ -7640,7 +7647,9 @@ function execute(activeTool, _ref) {
7640
7647
  }
7641
7648
  } else if (typeof action === 'function') {
7642
7649
  action(editor, server, options);
7643
- } else ;
7650
+ } else {
7651
+ console.info('no action');
7652
+ }
7644
7653
  return activeTool;
7645
7654
  }
7646
7655
  function selected(actObj, activeTool, _ref2) {
@@ -8023,6 +8032,9 @@ function createStore (options, server, setEditor) {
8023
8032
  templates: initTmplsState
8024
8033
  };
8025
8034
  var middleware = [thunk];
8035
+ if (process.env.KETCHER_ENABLE_REDUX_LOGGER === 'true') {
8036
+ middleware.push(logger);
8037
+ }
8026
8038
  var rootReducer = getRootReducer(setEditor);
8027
8039
  return createStore$1(rootReducer, initState, applyMiddleware.apply(void 0, middleware));
8028
8040
  }
@@ -9609,6 +9621,7 @@ var TopToolbar = function TopToolbar(_ref) {
9609
9621
  isCollapsed: width < collapseLimit
9610
9622
  }), jsx(SystemControls, {
9611
9623
  onHistoryClick: function onHistoryClick() {
9624
+ console.log('History button clicked');
9612
9625
  },
9613
9626
  onSettingsOpen: onSettingsOpen,
9614
9627
  onFullscreen: onFullscreen,
@@ -12385,6 +12398,7 @@ function sgroupDialog(editor, id, defaultType) {
12385
12398
  var type = sg ? sg.type : defaultType;
12386
12399
  var eventName = type === 'DAT' ? 'sdataEdit' : 'sgroupEdit';
12387
12400
  if (!selection.atoms && !selection.bonds && !sg) {
12401
+ console.info('There is no selection or sgroup');
12388
12402
  return;
12389
12403
  }
12390
12404
  var attrs;
@@ -13262,6 +13276,7 @@ var EraserTool = function () {
13262
13276
  } else if (ci.map === 'texts') {
13263
13277
  this.editor.update(fromTextDeletion(restruct, ci.id));
13264
13278
  } else {
13279
+ console.error('EraserTool: unable to delete the object ' + ci.map + '[' + ci.id + ']');
13265
13280
  return;
13266
13281
  }
13267
13282
  this.editor.selection(null);
@@ -15337,6 +15352,7 @@ function domEventSetup(editor, clientArea) {
15337
15352
  }
15338
15353
  function recoordinate(editor, rp
15339
15354
  ) {
15355
+ console.assert(rp, 'Reference point not specified');
15340
15356
  if (rp) {
15341
15357
  editor.render.setScrollOffset(rp.x, rp.y);
15342
15358
  } else {
@@ -16572,17 +16588,18 @@ function fileOpener(server) {
16572
16588
  });
16573
16589
  }
16574
16590
  function throughFileReader(file) {
16591
+ var isCDX = file.name.endsWith('cdx');
16575
16592
  return new Promise(function (resolve, reject) {
16576
16593
  var rd = new FileReader();
16577
16594
  rd.onload = function () {
16578
- var content = rd.result;
16595
+ var content = isCDX ? rd.result.slice(37) : rd.result;
16579
16596
  if (file.msClose) file.msClose();
16580
16597
  resolve(content);
16581
16598
  };
16582
16599
  rd.onerror = function (event) {
16583
16600
  reject(event);
16584
16601
  };
16585
- rd.readAsText(file, 'UTF-8');
16602
+ isCDX ? rd.readAsDataURL(file) : rd.readAsText(file, 'UTF-8');
16586
16603
  });
16587
16604
  }
16588
16605
  function throughFileSystemObject(fso, file) {
@@ -16607,6 +16624,7 @@ function greekify(str) {
16607
16624
  });
16608
16625
  }
16609
16626
  function filterLib(lib, filter$1) {
16627
+ console.warn('Filter', filter$1);
16610
16628
  var trimmedFilter = filter$1.trim();
16611
16629
  var re = new RegExp(escapeRegExp(greekify(trimmedFilter)), 'i');
16612
16630
  return flow(filter(function (item) {
@@ -16617,6 +16635,7 @@ function filterLib(lib, filter$1) {
16617
16635
  }, {}))(lib);
16618
16636
  }
16619
16637
  function filterFGLib(lib, filter$1) {
16638
+ console.warn('Filter', filter$1);
16620
16639
  var trimmedFilter = filter$1.trim();
16621
16640
  var re = new RegExp(escapeRegExp(greekify(trimmedFilter)), 'i');
16622
16641
  var searchFunction = function searchFunction(item) {
@@ -17672,6 +17691,7 @@ var mapDispatchToProps$b = function mapDispatchToProps(dispatch, ownProps) {
17672
17691
  result: JSON.parse(newOpts)
17673
17692
  }));
17674
17693
  } catch (ex) {
17694
+ console.info('Bad file');
17675
17695
  }
17676
17696
  },
17677
17697
  onReset: function onReset() {
@@ -18375,7 +18395,7 @@ var MiewDialog = function MiewDialog(_ref) {
18375
18395
  }).then(function () {
18376
18396
  return miew.setOptions(miewOpts);
18377
18397
  })["catch"](function (ex) {
18378
- return (void 0);
18398
+ return console.error(ex.message);
18379
18399
  });
18380
18400
  }, [miewOpts, server, struct]);
18381
18401
  var exportCML = useCallback(function () {
@@ -19606,7 +19626,8 @@ var SaveDialog = function (_Component) {
19606
19626
  _this.isRxn = _this.props.struct.hasRxnArrow();
19607
19627
  _this.textAreaRef = createRef();
19608
19628
  var formats = [_this.isRxn ? 'rxn' : 'mol', 'smiles', 'ket'];
19609
- if (_this.props.server) formats.push(_this.isRxn ? 'rxnV3000' : 'molV3000', 'smilesExt', 'smarts', 'inChI', 'inChIAuxInfo', 'cml', 'svg', 'png', 'cdxml');
19629
+ if (_this.props.server) formats.push(_this.isRxn ? 'rxnV3000' : 'molV3000', 'smilesExt', 'smarts', 'inChI', 'inChIAuxInfo', 'cml', 'svg', 'png', 'cdxml'
19630
+ );
19610
19631
  _this.saveSchema = saveSchema;
19611
19632
  _this.saveSchema.properties.format = Object.assign(_this.saveSchema.properties.format, {
19612
19633
  "enum": formats,
@@ -20779,6 +20800,7 @@ function SData(_ref) {
20779
20800
  init: init
20780
20801
  }, formState), {}, {
20781
20802
  children: jsxs("fieldset", {
20803
+ className: "sdata",
20782
20804
  children: [jsx(Field, {
20783
20805
  name: "context",
20784
20806
  options: getSelectOptionsFromSchema(formSchema.properties.context),
@@ -21450,6 +21472,16 @@ var TemplateDialog = function TemplateDialog(props) {
21450
21472
  })]
21451
21473
  });
21452
21474
  };
21475
+ var selectTemplate = function selectTemplate(template, props, dispatch) {
21476
+ dispatch(selectTmpl(null));
21477
+ if (!template) return;
21478
+ dispatch(selectTmpl(template));
21479
+ dispatch(onAction({
21480
+ tool: 'template',
21481
+ opts: template
21482
+ }));
21483
+ props.onOk(template);
21484
+ };
21453
21485
  var TemplatesDialog = connect(function (store) {
21454
21486
  var _store$modal, _store$modal$prop;
21455
21487
  return _objectSpread$4(_objectSpread$4({}, omit(['attach'], store.templates)), {}, {
@@ -21463,12 +21495,7 @@ var TemplatesDialog = connect(function (store) {
21463
21495
  return dispatch(changeFilter(filter));
21464
21496
  },
21465
21497
  onSelect: function onSelect(tmpl) {
21466
- dispatch(selectTmpl(tmpl));
21467
- dispatch(onAction({
21468
- tool: 'template',
21469
- opts: tmpl
21470
- }));
21471
- props.onOk(tmpl);
21498
+ return selectTemplate(tmpl, props, dispatch);
21472
21499
  },
21473
21500
  onChangeGroup: function onChangeGroup(group) {
21474
21501
  return dispatch(changeGroup(group));
@@ -22215,7 +22242,7 @@ var KetcherBuilder = function () {
22215
22242
  buttons: buttons || {},
22216
22243
  errorHandler: errorHandler || null,
22217
22244
  version: "2.7.0-rc.2" ,
22218
- buildDate: "2022-12-15T15:05:13" ,
22245
+ buildDate: "2022-12-16T15:41:03" ,
22219
22246
  buildNumber: ''
22220
22247
  }, structService, resolve);
22221
22248
  });