ketcher-react 2.7.0-rc.2 → 2.7.0-rc.4

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, Render, 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, 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';
@@ -34,7 +34,7 @@ import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
34
34
  import clsx from 'clsx';
35
35
  import _typeof from '@babel/runtime/helpers/typeof';
36
36
  import Ajv from 'ajv';
37
- import { pick, range, capitalize, omit, without, findLastIndex, findIndex, pickBy, isEmpty, isEqual, throttle, debounce, xor, upperFirst, escapeRegExp, flow, filter, reduce } from 'lodash/fp';
37
+ import { pick, range, capitalize, omit, without, findLastIndex, findIndex, pickBy, isEmpty, isEqual, escapeRegExp, flow, filter, reduce, throttle, debounce, xor, upperFirst } from 'lodash/fp';
38
38
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
39
39
  import ReactDOM from 'react-dom';
40
40
  import { connect, useDispatch, useSelector, Provider } from 'react-redux';
@@ -396,8 +396,8 @@ function exec(action) {
396
396
  return enabled;
397
397
  }
398
398
 
399
- function ownKeys$15(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; }
400
- function _objectSpread$15(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$15(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$15(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
399
+ function ownKeys$16(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; }
400
+ function _objectSpread$16(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$16(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$16(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
401
401
  var editor = {
402
402
  resetToSelect: {
403
403
  title: 'Reset to Select Tool',
@@ -645,7 +645,7 @@ var optionsSchema = {
645
645
  title: 'Settings',
646
646
  type: 'object',
647
647
  required: [],
648
- properties: _objectSpread$15(_objectSpread$15(_objectSpread$15(_objectSpread$15(_objectSpread$15({}, editor), render), server), debug), miew)
648
+ properties: _objectSpread$16(_objectSpread$16(_objectSpread$16(_objectSpread$16(_objectSpread$16({}, editor), render), server), debug), miew)
649
649
  };
650
650
  function getDefaultOptions() {
651
651
  if (!optionsSchema.properties) return {};
@@ -706,8 +706,8 @@ var storage = {
706
706
  }
707
707
  };
708
708
 
709
- function ownKeys$14(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; }
710
- function _objectSpread$14(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$14(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$14(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
709
+ function ownKeys$15(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; }
710
+ function _objectSpread$15(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$15(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$15(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
711
711
  var initOptionsState = {
712
712
  app: {
713
713
  server: false,
@@ -804,27 +804,27 @@ function optionsReducer() {
804
804
  var action = arguments.length > 1 ? arguments[1] : undefined;
805
805
  var type = action.type,
806
806
  data = action.data;
807
- if (type === 'APP_OPTIONS') return _objectSpread$14(_objectSpread$14({}, state), {}, {
808
- app: _objectSpread$14(_objectSpread$14({}, state.app), data)
807
+ if (type === 'APP_OPTIONS') return _objectSpread$15(_objectSpread$15({}, state), {}, {
808
+ app: _objectSpread$15(_objectSpread$15({}, state.app), data)
809
809
  });
810
- if (type === 'SAVE_SETTINGS') return _objectSpread$14(_objectSpread$14({}, state), {}, {
810
+ if (type === 'SAVE_SETTINGS') return _objectSpread$15(_objectSpread$15({}, state), {}, {
811
811
  settings: data
812
812
  });
813
- if (type === 'SAVE_CHECK_OPTS') return _objectSpread$14(_objectSpread$14({}, state), {}, {
813
+ if (type === 'SAVE_CHECK_OPTS') return _objectSpread$15(_objectSpread$15({}, state), {}, {
814
814
  check: data
815
815
  });
816
- if (type === 'CHANGE_ANALYSE') return _objectSpread$14(_objectSpread$14({}, state), {}, {
817
- analyse: _objectSpread$14(_objectSpread$14(_objectSpread$14({}, state.analyse), data), {}, {
816
+ if (type === 'CHANGE_ANALYSE') return _objectSpread$15(_objectSpread$15({}, state), {}, {
817
+ analyse: _objectSpread$15(_objectSpread$15(_objectSpread$15({}, state.analyse), data), {}, {
818
818
  loading: false
819
819
  })
820
820
  });
821
- if (type === 'ANALYSE_LOADING') return _objectSpread$14(_objectSpread$14({}, state), {}, {
822
- analyse: _objectSpread$14(_objectSpread$14({}, state.analyse), {}, {
821
+ if (type === 'ANALYSE_LOADING') return _objectSpread$15(_objectSpread$15({}, state), {}, {
822
+ analyse: _objectSpread$15(_objectSpread$15({}, state.analyse), {}, {
823
823
  loading: true
824
824
  })
825
825
  });
826
- if (recognizeActions.includes(type)) return _objectSpread$14(_objectSpread$14({}, state), {}, {
827
- recognize: _objectSpread$14(_objectSpread$14({}, state.recognize), data)
826
+ if (recognizeActions.includes(type)) return _objectSpread$15(_objectSpread$15({}, state), {}, {
827
+ recognize: _objectSpread$15(_objectSpread$15({}, state.recognize), data)
828
828
  });
829
829
  return state;
830
830
  }
@@ -1127,8 +1127,8 @@ function getSdataDefault() {
1127
1127
  return schema[context][fieldName] ? schema[context][fieldName].properties.fieldValue["default"] : '';
1128
1128
  }
1129
1129
 
1130
- function ownKeys$13(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; }
1131
- function _objectSpread$13(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$13(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$13(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1130
+ function ownKeys$14(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; }
1131
+ function _objectSpread$14(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$14(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$14(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1132
1132
  var initSdata = function initSdata(schema) {
1133
1133
  var isCustomShema = schema.key === 'Custom';
1134
1134
  var context = isCustomShema ? getSdataDefault(sdataCustomSchema, 'context') : getSdataDefault(sdataSchema);
@@ -1149,7 +1149,7 @@ var initSdata = function initSdata(schema) {
1149
1149
  };
1150
1150
  function sdataReducer(state, action) {
1151
1151
  if (action.data.result.init) {
1152
- return correctErrors(_objectSpread$13(_objectSpread$13({}, state), {}, {
1152
+ return correctErrors(_objectSpread$14(_objectSpread$14({}, state), {}, {
1153
1153
  result: Object.assign({}, state.result, action.data.result)
1154
1154
  }), action.data);
1155
1155
  }
@@ -1157,7 +1157,7 @@ function sdataReducer(state, action) {
1157
1157
  var actionFieldName = action.data.result.fieldName;
1158
1158
  var newstate = null;
1159
1159
  if (actionContext !== state.result.context) newstate = onContextChange(state, action.data.result);else if (actionFieldName !== state.result.fieldName) newstate = onFieldNameChange(state, action.data.result);
1160
- newstate = newstate || _objectSpread$13(_objectSpread$13({}, state), {}, {
1160
+ newstate = newstate || _objectSpread$14(_objectSpread$14({}, state), {}, {
1161
1161
  result: Object.assign({}, state.result, action.data.result)
1162
1162
  });
1163
1163
  return correctErrors(newstate, action.data);
@@ -1181,7 +1181,7 @@ var onContextChange = function onContextChange(state, payload) {
1181
1181
  var fValue = fieldValue;
1182
1182
  if (fValue === state.result.fieldValue) fValue = getSdataDefault(sdataCustomSchema, 'fieldValue');
1183
1183
  return {
1184
- result: _objectSpread$13(_objectSpread$13({}, payload), {}, {
1184
+ result: _objectSpread$14(_objectSpread$14({}, payload), {}, {
1185
1185
  context: context,
1186
1186
  fieldName: fieldName,
1187
1187
  fieldValue: fValue
@@ -1195,7 +1195,7 @@ var onFieldNameChange = function onFieldNameChange(state, payload) {
1195
1195
  if (sdataSchema[context][fieldName]) fieldValue = getSdataDefault(sdataSchema, context, fieldName);
1196
1196
  if (fieldValue === state.result.fieldValue && sdataSchema[context][state.result.fieldName]) fieldValue = '';
1197
1197
  return {
1198
- result: _objectSpread$13(_objectSpread$13({}, payload), {}, {
1198
+ result: _objectSpread$14(_objectSpread$14({}, payload), {}, {
1199
1199
  fieldName: fieldName,
1200
1200
  fieldValue: fieldValue
1201
1201
  })
@@ -1333,8 +1333,8 @@ function formReducer(state, action, formName) {
1333
1333
  var INDIGO_VERIFICATION = 'INDIGO_VERIFICATION';
1334
1334
  var ANALYZING_FILE = 'ANALYZING_FILE';
1335
1335
 
1336
- function ownKeys$12(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; }
1337
- function _objectSpread$12(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$12(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$12(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1336
+ function ownKeys$13(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; }
1337
+ function _objectSpread$13(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$13(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$13(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1338
1338
  function indigoVerification(data) {
1339
1339
  return {
1340
1340
  type: INDIGO_VERIFICATION,
@@ -1359,13 +1359,13 @@ function requestReducer () {
1359
1359
  switch (type) {
1360
1360
  case INDIGO_VERIFICATION:
1361
1361
  {
1362
- return _objectSpread$12(_objectSpread$12({}, state), {}, {
1362
+ return _objectSpread$13(_objectSpread$13({}, state), {}, {
1363
1363
  indigoVerification: data
1364
1364
  });
1365
1365
  }
1366
1366
  case ANALYZING_FILE:
1367
1367
  {
1368
- return _objectSpread$12(_objectSpread$12({}, state), {}, {
1368
+ return _objectSpread$13(_objectSpread$13({}, state), {}, {
1369
1369
  isAnalyzingFile: data
1370
1370
  });
1371
1371
  }
@@ -1638,12 +1638,12 @@ var attachSchema = {
1638
1638
  };
1639
1639
 
1640
1640
  var _excluded$E = ["type", "radiobuttons"];
1641
- function ownKeys$11(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; }
1642
- function _objectSpread$11(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$11(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$11(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1641
+ function ownKeys$12(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; }
1642
+ function _objectSpread$12(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$12(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$12(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1643
1643
  var DefaultStereoGroupNumber = 1;
1644
1644
  function fromElement(selem) {
1645
1645
  if (selem.label === 'R#') {
1646
- return _objectSpread$11({
1646
+ return _objectSpread$12({
1647
1647
  type: 'rlabel',
1648
1648
  values: fromRlabel(selem.rglabel)
1649
1649
  }, selem);
@@ -1803,7 +1803,7 @@ function fromBond(sbond) {
1803
1803
  };
1804
1804
  }
1805
1805
  function toBond(bond) {
1806
- return _objectSpread$11({
1806
+ return _objectSpread$12({
1807
1807
  topology: bond.topology,
1808
1808
  reactingCenterStatus: bond.center
1809
1809
  }, toBondType(bond.type));
@@ -1893,7 +1893,7 @@ function toSgroup(sgroup) {
1893
1893
  var type = sgroup.type,
1894
1894
  radiobuttons = sgroup.radiobuttons,
1895
1895
  props = _objectWithoutProperties(sgroup, _excluded$E);
1896
- var attrs = _objectSpread$11({}, props);
1896
+ var attrs = _objectSpread$12({}, props);
1897
1897
  var absolute = 'absolute';
1898
1898
  var attached = 'attached';
1899
1899
  switch (radiobuttons) {
@@ -2394,8 +2394,8 @@ var tools$1 = typeSchema$1["enum"].reduce(function (res, type, i) {
2394
2394
  }, toolActions);
2395
2395
 
2396
2396
  var _excluded$D = ["rescale", "fragment"];
2397
- function ownKeys$10(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; }
2398
- function _objectSpread$10(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$10(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$10(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2397
+ function ownKeys$11(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; }
2398
+ function _objectSpread$11(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$11(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$11(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2399
2399
  function onAction(action) {
2400
2400
  if (action && action.dialog) {
2401
2401
  return {
@@ -2422,6 +2422,9 @@ function parseStruct(struct, server, options) {
2422
2422
  _options.fragment;
2423
2423
  var formatterOptions = _objectWithoutProperties(_options, _excluded$D);
2424
2424
  var format = identifyStructFormat(struct);
2425
+ if (format === SupportedFormat.cdx) {
2426
+ struct = "base64::".concat(struct.replace(/\s/g, ''));
2427
+ }
2425
2428
  var factory = new FormatterFactory(server);
2426
2429
  var service = factory.create(format, formatterOptions);
2427
2430
  return service.getStructureFromStringAsync(struct);
@@ -2442,7 +2445,7 @@ function load(struct, options) {
2442
2445
  server = state.server;
2443
2446
  errorHandler = editor.errorHandler;
2444
2447
  options = options || {};
2445
- options = _objectSpread$10(_objectSpread$10({}, options), {}, {
2448
+ options = _objectSpread$11(_objectSpread$11({}, options), {}, {
2446
2449
  'dearomatize-on-load': editor.options()['dearomatize-on-load']
2447
2450
  });
2448
2451
  dispatch(setAnalyzingFile(true));
@@ -2870,7 +2873,7 @@ var zoom = {
2870
2873
 
2871
2874
  var openHelpLink = function openHelpLink() {
2872
2875
  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();
2876
+ return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v2.7.0-rc.4\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
2874
2877
  };
2875
2878
  var help = {
2876
2879
  help: {
@@ -2931,9 +2934,9 @@ var fullscreen = {
2931
2934
  }
2932
2935
  };
2933
2936
 
2934
- function ownKeys$$(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; }
2935
- function _objectSpread$$(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$$(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$$(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2936
- var config = _objectSpread$$(_objectSpread$$(_objectSpread$$(_objectSpread$$(_objectSpread$$(_objectSpread$$(_objectSpread$$(_objectSpread$$(_objectSpread$$({
2937
+ function ownKeys$10(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; }
2938
+ function _objectSpread$10(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$10(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$10(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2939
+ var config = _objectSpread$10(_objectSpread$10(_objectSpread$10(_objectSpread$10(_objectSpread$10(_objectSpread$10(_objectSpread$10(_objectSpread$10(_objectSpread$10({
2937
2940
  clear: {
2938
2941
  shortcut: 'Mod+Delete',
2939
2942
  title: 'Clear Canvas',
@@ -6839,13 +6842,13 @@ function findIconByName(name) {
6839
6842
  }
6840
6843
 
6841
6844
  var _excluded$C = ["name"];
6842
- function ownKeys$_(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; }
6843
- function _objectSpread$_(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$_(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$_(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6845
+ function ownKeys$$(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; }
6846
+ function _objectSpread$$(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$$(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$$(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6844
6847
  function Icon(_ref) {
6845
6848
  var name = _ref.name,
6846
6849
  props = _objectWithoutProperties(_ref, _excluded$C);
6847
6850
  var Component = findIconByName(name);
6848
- return jsx(Component, _objectSpread$_({}, props));
6851
+ return jsx(Component, _objectSpread$$({}, props));
6849
6852
  }
6850
6853
 
6851
6854
  var classes$N = {"button-common-styles":"ActionButton-module_button-common-styles__y-hng","scrollbar":"ActionButton-module_scrollbar__lD3MH","button":"ActionButton-module_button__nfoWQ","selected":"ActionButton-module_selected__kPCxA"};
@@ -7141,8 +7144,8 @@ function usePortalStyle(_ref) {
7141
7144
  return [portalStyle];
7142
7145
  }
7143
7146
 
7144
- function ownKeys$Z(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; }
7145
- function _objectSpread$Z(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$Z(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$Z(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7147
+ function ownKeys$_(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; }
7148
+ function _objectSpread$_(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$_(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$_(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7146
7149
  var ToolbarMultiToolItem = function ToolbarMultiToolItem(props) {
7147
7150
  var id = props.id,
7148
7151
  options = props.options,
@@ -7204,7 +7207,7 @@ var ToolbarMultiToolItem = function ToolbarMultiToolItem(props) {
7204
7207
  return displayMultiToolItem ? jsxs("div", {
7205
7208
  ref: ref,
7206
7209
  className: classes$L.root,
7207
- children: [jsx(ActionButton, _objectSpread$Z(_objectSpread$Z({}, actionButtonProps), {}, {
7210
+ children: [jsx(ActionButton, _objectSpread$_(_objectSpread$_({}, actionButtonProps), {}, {
7208
7211
  className: className,
7209
7212
  name: currentId,
7210
7213
  action: config[currentId],
@@ -7304,8 +7307,8 @@ var TemplatesList = function TemplatesList(props) {
7304
7307
  var classes$K = {"button-common-styles":"BottomToolbar-module_button-common-styles__PbtE9","scrollbar":"BottomToolbar-module_scrollbar__i1f8P","group":"BottomToolbar-module_group__b-pGt","root":"BottomToolbar-module_root__kjkSm"};
7305
7308
 
7306
7309
  var _excluded$B = ["className"];
7307
- function ownKeys$Y(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; }
7308
- function _objectSpread$Y(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$Y(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$Y(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7310
+ function ownKeys$Z(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; }
7311
+ function _objectSpread$Z(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$Z(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$Z(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7309
7312
  var Group$1 = function Group(_ref) {
7310
7313
  var children = _ref.children,
7311
7314
  className = _ref.className;
@@ -7331,7 +7334,7 @@ var BottomToolbar = function BottomToolbar(props) {
7331
7334
  onAction: onAction
7332
7335
  })
7333
7336
  }), jsx(Group$1, {
7334
- children: jsx(ToolbarGroupItem, _objectSpread$Y({
7337
+ children: jsx(ToolbarGroupItem, _objectSpread$Z({
7335
7338
  id: "template-lib"
7336
7339
  }, rest))
7337
7340
  })]
@@ -7426,15 +7429,15 @@ function prefetchRender(tmpls, baseUrl, cacheEl) {
7426
7429
  });
7427
7430
  }
7428
7431
 
7429
- function ownKeys$X(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; }
7430
- function _objectSpread$X(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$X(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$X(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7432
+ function ownKeys$Y(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; }
7433
+ function _objectSpread$Y(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$Y(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$Y(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7431
7434
  function openDialog(dispatch, dialogName, props) {
7432
7435
  return new Promise(function (resolve, reject) {
7433
7436
  dispatch({
7434
7437
  type: 'MODAL_OPEN',
7435
7438
  data: {
7436
7439
  name: dialogName,
7437
- prop: _objectSpread$X(_objectSpread$X({}, props), {}, {
7440
+ prop: _objectSpread$Y(_objectSpread$Y({}, props), {}, {
7438
7441
  onResult: resolve,
7439
7442
  onCancel: reject
7440
7443
  })
@@ -7452,7 +7455,7 @@ function modalReducer() {
7452
7455
  return null;
7453
7456
  }
7454
7457
  var formState = formReducer(state.form, action, state.name);
7455
- return _objectSpread$X(_objectSpread$X({}, state), {}, {
7458
+ return _objectSpread$Y(_objectSpread$Y({}, state), {}, {
7456
7459
  form: formState
7457
7460
  });
7458
7461
  }
@@ -7470,8 +7473,8 @@ function modalReducer() {
7470
7473
  }
7471
7474
  }
7472
7475
 
7473
- function ownKeys$W(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; }
7474
- function _objectSpread$W(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$W(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$W(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7476
+ function ownKeys$X(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; }
7477
+ function _objectSpread$X(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$X(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$X(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7475
7478
  function selectTmpl(tmpl) {
7476
7479
  return {
7477
7480
  type: 'TMPL_SELECT',
@@ -7571,7 +7574,7 @@ function saveUserTmpl(struct) {
7571
7574
  var name = _ref.name,
7572
7575
  attach = _ref.attach;
7573
7576
  tmpl.struct.name = name.trim();
7574
- tmpl.props = _objectSpread$W(_objectSpread$W({}, attach), {}, {
7577
+ tmpl.props = _objectSpread$X(_objectSpread$X({}, attach), {}, {
7575
7578
  group: 'User Templates'
7576
7579
  });
7577
7580
  var lib = getState().templates.lib.concat(tmpl);
@@ -7610,7 +7613,7 @@ function templatesReducer() {
7610
7613
  if (tmplActions.includes(action.type)) return Object.assign({}, state, action.data);
7611
7614
  if (attachActions.includes(action.type)) {
7612
7615
  var attach = Object.assign({}, state.attach, action.data);
7613
- return _objectSpread$W(_objectSpread$W({}, state), {}, {
7616
+ return _objectSpread$X(_objectSpread$X({}, state), {}, {
7614
7617
  attach: attach
7615
7618
  });
7616
7619
  }
@@ -7619,7 +7622,7 @@ function templatesReducer() {
7619
7622
  var lib = currentState.lib.filter(function (value) {
7620
7623
  return value !== action.data.tmpl;
7621
7624
  });
7622
- return _objectSpread$W(_objectSpread$W({}, currentState), {}, {
7625
+ return _objectSpread$X(_objectSpread$X({}, currentState), {}, {
7623
7626
  lib: lib
7624
7627
  });
7625
7628
  }
@@ -7627,8 +7630,8 @@ function templatesReducer() {
7627
7630
  }
7628
7631
 
7629
7632
  var _excluded$A = ["type", "action"];
7630
- function ownKeys$V(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; }
7631
- function _objectSpread$V(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$V(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$V(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7633
+ function ownKeys$W(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; }
7634
+ function _objectSpread$W(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$W(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$W(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7632
7635
  function execute(activeTool, _ref) {
7633
7636
  var action = _ref.action,
7634
7637
  editor = _ref.editor,
@@ -7682,7 +7685,7 @@ function actionStateReducer () {
7682
7685
  case 'INIT':
7683
7686
  action = config['select-rectangle'].action;
7684
7687
  case 'ACTION':
7685
- activeTool = execute(state && state.activeTool, _objectSpread$V(_objectSpread$V({}, params), {}, {
7688
+ activeTool = execute(state && state.activeTool, _objectSpread$W(_objectSpread$W({}, params), {}, {
7686
7689
  action: action
7687
7690
  }));
7688
7691
  case 'UPDATE':
@@ -7698,8 +7701,8 @@ function actionStateReducer () {
7698
7701
  }
7699
7702
  }
7700
7703
 
7701
- function ownKeys$U(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; }
7702
- function _objectSpread$U(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$U(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$U(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7704
+ function ownKeys$V(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; }
7705
+ function _objectSpread$V(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$V(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$V(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7703
7706
  var initialState$1 = {
7704
7707
  lib: [],
7705
7708
  functionalGroupInfo: null,
@@ -7712,9 +7715,9 @@ var functionalGroupsReducer = function functionalGroupsReducer() {
7712
7715
  payload = _ref.payload;
7713
7716
  switch (type) {
7714
7717
  case 'FG_INIT':
7715
- return _objectSpread$U(_objectSpread$U({}, state), payload);
7718
+ return _objectSpread$V(_objectSpread$V({}, state), payload);
7716
7719
  case 'FG_HIGHLIGHT':
7717
- return _objectSpread$U(_objectSpread$U({}, state), {}, {
7720
+ return _objectSpread$V(_objectSpread$V({}, state), {}, {
7718
7721
  functionalGroupInfo: payload
7719
7722
  });
7720
7723
  default:
@@ -7777,6 +7780,148 @@ function initFGTemplates(baseUrl) {
7777
7780
  }();
7778
7781
  }
7779
7782
 
7783
+ function ownKeys$U(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; }
7784
+ function _objectSpread$U(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$U(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$U(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7785
+ var renderCache = new Map();
7786
+ var RenderStruct = function () {
7787
+ function RenderStruct() {
7788
+ _classCallCheck(this, RenderStruct);
7789
+ }
7790
+ _createClass(RenderStruct, null, [{
7791
+ key: "prepareStruct",
7792
+ value:
7793
+ function prepareStruct(struct) {
7794
+ if (struct.sgroups.size > 0) {
7795
+ var newStruct = struct.clone();
7796
+ newStruct.sgroups["delete"](0);
7797
+ return newStruct;
7798
+ }
7799
+ return struct;
7800
+ }
7801
+ }, {
7802
+ key: "render",
7803
+ value: function render(el, struct) {
7804
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
7805
+ if (el && struct) {
7806
+ var _options$cachePrefix = options.cachePrefix,
7807
+ cachePrefix = _options$cachePrefix === void 0 ? '' : _options$cachePrefix;
7808
+ var cacheKey = "".concat(cachePrefix).concat(struct.name);
7809
+ if (renderCache.has(cacheKey)) {
7810
+ el.innerHTML = renderCache.get(cacheKey);
7811
+ return;
7812
+ }
7813
+ var preparedStruct = this.prepareStruct(struct);
7814
+ preparedStruct.initHalfBonds();
7815
+ preparedStruct.initNeighbors();
7816
+ preparedStruct.setImplicitHydrogen();
7817
+ preparedStruct.markFragments();
7818
+ var rnd = new Render(el, _objectSpread$U({
7819
+ autoScale: true
7820
+ }, options));
7821
+ rnd.setMolecule(preparedStruct);
7822
+ rnd.update(true, options.viewSz);
7823
+ renderCache.set(cacheKey, rnd.clientArea.innerHTML);
7824
+ }
7825
+ }
7826
+ }]);
7827
+ return RenderStruct;
7828
+ }();
7829
+
7830
+ function fileOpener(server) {
7831
+ return new Promise(function (resolve, reject) {
7832
+ if (global.FileReader) {
7833
+ resolve(throughFileReader);
7834
+ } else if (global.ActiveXObject) {
7835
+ try {
7836
+ var fso = new ActiveXObject('Scripting.FileSystemObject');
7837
+ resolve(function (file) {
7838
+ return Promise.resolve(throughFileSystemObject(fso, file));
7839
+ });
7840
+ } catch (e) {
7841
+ reject(e);
7842
+ }
7843
+ } else if (server) {
7844
+ resolve(server.then(function () {
7845
+ throw Error("Server doesn't still support echo method");
7846
+ }));
7847
+ } else {
7848
+ reject(new Error('Your browser does not support opening files locally'));
7849
+ }
7850
+ });
7851
+ }
7852
+ function throughFileReader(file) {
7853
+ var isCDX = file.name.endsWith('cdx');
7854
+ return new Promise(function (resolve, reject) {
7855
+ var rd = new FileReader();
7856
+ rd.onload = function () {
7857
+ var content = isCDX ? rd.result.slice(37) : rd.result;
7858
+ if (file.msClose) file.msClose();
7859
+ resolve(content);
7860
+ };
7861
+ rd.onerror = function (event) {
7862
+ reject(event);
7863
+ };
7864
+ isCDX ? rd.readAsDataURL(file) : rd.readAsText(file, 'UTF-8');
7865
+ });
7866
+ }
7867
+ function throughFileSystemObject(fso, file) {
7868
+ var fd = fso.OpenTextFile(file.name, 1);
7869
+ var content = fd.ReadAll();
7870
+ fd.Close();
7871
+ return content;
7872
+ }
7873
+
7874
+ var GREEK_SIMBOLS = {
7875
+ Alpha: 'A',
7876
+ alpha: 'α',
7877
+ Beta: 'B',
7878
+ beta: 'β',
7879
+ Gamma: 'Г',
7880
+ gamma: 'γ'
7881
+ };
7882
+ var greekRe = new RegExp('\\b' + Object.keys(GREEK_SIMBOLS).join('\\b|\\b') + '\\b', 'g');
7883
+ function greekify(str) {
7884
+ return str.replace(greekRe, function (sym) {
7885
+ return GREEK_SIMBOLS[sym];
7886
+ });
7887
+ }
7888
+ function filterLib(lib, filter$1) {
7889
+ var trimmedFilter = filter$1.trim();
7890
+ var re = new RegExp(escapeRegExp(greekify(trimmedFilter)), 'i');
7891
+ return flow(filter(function (item) {
7892
+ return !trimmedFilter || re.test(greekify(item.struct.name)) || re.test(greekify(item.props.group));
7893
+ }), reduce(function (res, item) {
7894
+ if (!res[item.props.group]) res[item.props.group] = [item];else res[item.props.group].push(item);
7895
+ return res;
7896
+ }, {}))(lib);
7897
+ }
7898
+ function filterFGLib(lib, filter$1) {
7899
+ var trimmedFilter = filter$1.trim();
7900
+ var re = new RegExp(escapeRegExp(greekify(trimmedFilter)), 'i');
7901
+ var searchFunction = function searchFunction(item) {
7902
+ var fields = [item.struct.name, item.props.abbreviation, item.props.name].filter(Boolean);
7903
+ return fields.some(function (field) {
7904
+ return re.test(greekify(field));
7905
+ });
7906
+ };
7907
+ return flow(filter(function (item) {
7908
+ return !trimmedFilter || searchFunction(item);
7909
+ }), reduce(function (res, item) {
7910
+ if (!res[item.props.group]) res[item.props.group] = [item];else res[item.props.group].push(item);
7911
+ return res;
7912
+ }, {}))(lib);
7913
+ }
7914
+ var getSelectOptionsFromSchema = function getSelectOptionsFromSchema(schema) {
7915
+ return schema["enum"].reduce(function (options, value, index) {
7916
+ var _schema$enumNames$ind, _schema$enumNames;
7917
+ options.push({
7918
+ value: value,
7919
+ label: (_schema$enumNames$ind = schema === null || schema === void 0 ? void 0 : (_schema$enumNames = schema.enumNames) === null || _schema$enumNames === void 0 ? void 0 : _schema$enumNames[index]) !== null && _schema$enumNames$ind !== void 0 ? _schema$enumNames$ind : value
7920
+ });
7921
+ return options;
7922
+ }, []);
7923
+ };
7924
+
7780
7925
  function ownKeys$T(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; }
7781
7926
  function _objectSpread$T(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$T(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$T(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7782
7927
  var initialState = {
@@ -7803,22 +7948,37 @@ var initSaltsAndSolvents = function initSaltsAndSolvents(lib) {
7803
7948
  }
7804
7949
  };
7805
7950
  };
7951
+ var prerenderPartOfStructures = function prerenderPartOfStructures(saltsAndSolvents, settings) {
7952
+ var part = saltsAndSolvents.slice(0, 50);
7953
+ part.forEach(function (struct) {
7954
+ var div = document.createElement('div');
7955
+ div.style.width = '100px';
7956
+ div.style.height = '100px';
7957
+ div.style.display = 'none';
7958
+ document.body.appendChild(div);
7959
+ RenderStruct.render(div, struct, _objectSpread$T(_objectSpread$T({}, settings), {}, {
7960
+ autoScaleMargin: 15
7961
+ }));
7962
+ div.remove();
7963
+ });
7964
+ };
7806
7965
  function initSaltsAndSolventsTemplates(baseUrl) {
7807
7966
  return function () {
7808
- var _ref2 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(dispatch) {
7809
- var fileName, url, saltsAndSolventsProvider, functionalGroupsProvider, sdfSerializer, text, templates, saltsAndSolvents;
7967
+ var _ref2 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(dispatch, getState) {
7968
+ var fileName, settings, url, saltsAndSolventsProvider, functionalGroupsProvider, sdfSerializer, text, templates, saltsAndSolvents;
7810
7969
  return _regeneratorRuntime.wrap(function _callee$(_context) {
7811
7970
  while (1) {
7812
7971
  switch (_context.prev = _context.next) {
7813
7972
  case 0:
7814
7973
  fileName = 'salts-and-solvents.sdf';
7974
+ settings = getState().options.settings;
7815
7975
  url = "".concat(baseUrl, "/templates/").concat(fileName);
7816
7976
  saltsAndSolventsProvider = SaltsAndSolventsProvider.getInstance();
7817
7977
  functionalGroupsProvider = FunctionalGroupsProvider.getInstance();
7818
7978
  sdfSerializer = new SdfSerializer();
7819
- _context.next = 7;
7979
+ _context.next = 8;
7820
7980
  return prefetchStatic(url);
7821
- case 7:
7981
+ case 8:
7822
7982
  text = _context.sent;
7823
7983
  templates = sdfSerializer.deserialize(text);
7824
7984
  saltsAndSolvents = templates.reduce(function (acc, _ref3) {
@@ -7828,20 +7988,21 @@ function initSaltsAndSolventsTemplates(baseUrl) {
7828
7988
  acc.push(struct);
7829
7989
  return acc;
7830
7990
  }, []);
7991
+ prerenderPartOfStructures(saltsAndSolvents, settings);
7831
7992
  saltsAndSolventsProvider.setSaltsAndSolventsList(saltsAndSolvents);
7832
7993
  functionalGroupsProvider.addToFunctionalGroupsList(saltsAndSolvents);
7833
7994
  dispatch(initSaltsAndSolvents(templates));
7834
7995
  dispatch(appUpdate({
7835
7996
  saltsAndSolvents: true
7836
7997
  }));
7837
- case 14:
7998
+ case 16:
7838
7999
  case "end":
7839
8000
  return _context.stop();
7840
8001
  }
7841
8002
  }
7842
8003
  }, _callee);
7843
8004
  }));
7844
- return function (_x) {
8005
+ return function (_x, _x2) {
7845
8006
  return _ref2.apply(this, arguments);
7846
8007
  };
7847
8008
  }();
@@ -15572,42 +15733,10 @@ var Cursor = function Cursor(_ref) {
15572
15733
  };
15573
15734
 
15574
15735
  var _excluded$r = ["struct", "Tag"];
15575
- function _createSuper$a(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$a(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
15576
- function _isNativeReflectConstruct$a() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
15577
15736
  function ownKeys$E(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; }
15578
15737
  function _objectSpread$E(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$E(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$E(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
15579
- function prepareStruct(struct) {
15580
- if (struct.sgroups.size > 0) {
15581
- var newStruct = struct.clone();
15582
- newStruct.sgroups["delete"](0);
15583
- return newStruct;
15584
- }
15585
- return struct;
15586
- }
15587
- var renderCache = new Map();
15588
- function renderStruct(el, struct) {
15589
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
15590
- if (el && struct) {
15591
- var _options$cachePrefix = options.cachePrefix,
15592
- cachePrefix = _options$cachePrefix === void 0 ? '' : _options$cachePrefix;
15593
- var cacheKey = "".concat(cachePrefix).concat(struct.name);
15594
- if (renderCache.has(cacheKey)) {
15595
- el.innerHTML = renderCache.get(cacheKey);
15596
- return;
15597
- }
15598
- var preparedStruct = prepareStruct(struct);
15599
- preparedStruct.initHalfBonds();
15600
- preparedStruct.initNeighbors();
15601
- preparedStruct.setImplicitHydrogen();
15602
- preparedStruct.markFragments();
15603
- var rnd = new Render(el, _objectSpread$E({
15604
- autoScale: true
15605
- }, options));
15606
- rnd.setMolecule(preparedStruct);
15607
- rnd.update(true, options.viewSz);
15608
- renderCache.set(cacheKey, rnd.clientArea.innerHTML);
15609
- }
15610
- }
15738
+ function _createSuper$a(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$a(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
15739
+ function _isNativeReflectConstruct$a() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
15611
15740
  var StructRender = function (_Component) {
15612
15741
  _inherits(StructRender, _Component);
15613
15742
  var _super = _createSuper$a(StructRender);
@@ -15644,7 +15773,7 @@ var StructRender = function (_Component) {
15644
15773
  el === null || el === void 0 ? void 0 : el.childNodes.forEach(function (node) {
15645
15774
  node.remove();
15646
15775
  });
15647
- renderStruct(el, parsedStruct, options);
15776
+ RenderStruct.render(el, parsedStruct, options);
15648
15777
  }
15649
15778
  }, {
15650
15779
  key: "componentDidMount",
@@ -16549,100 +16678,6 @@ var Select = function Select(_ref2) {
16549
16678
 
16550
16679
  var classes$z = {"button-common-styles":"form-module_button-common-styles__BvKSn","scrollbar":"form-module_scrollbar__MgLtc","dataError":"form-module_dataError__IXK1h","inputWrapper":"form-module_inputWrapper__sIDHH"};
16551
16680
 
16552
- function fileOpener(server) {
16553
- return new Promise(function (resolve, reject) {
16554
- if (global.FileReader) {
16555
- resolve(throughFileReader);
16556
- } else if (global.ActiveXObject) {
16557
- try {
16558
- var fso = new ActiveXObject('Scripting.FileSystemObject');
16559
- resolve(function (file) {
16560
- return Promise.resolve(throughFileSystemObject(fso, file));
16561
- });
16562
- } catch (e) {
16563
- reject(e);
16564
- }
16565
- } else if (server) {
16566
- resolve(server.then(function () {
16567
- throw Error("Server doesn't still support echo method");
16568
- }));
16569
- } else {
16570
- reject(new Error('Your browser does not support opening files locally'));
16571
- }
16572
- });
16573
- }
16574
- function throughFileReader(file) {
16575
- return new Promise(function (resolve, reject) {
16576
- var rd = new FileReader();
16577
- rd.onload = function () {
16578
- var content = rd.result;
16579
- if (file.msClose) file.msClose();
16580
- resolve(content);
16581
- };
16582
- rd.onerror = function (event) {
16583
- reject(event);
16584
- };
16585
- rd.readAsText(file, 'UTF-8');
16586
- });
16587
- }
16588
- function throughFileSystemObject(fso, file) {
16589
- var fd = fso.OpenTextFile(file.name, 1);
16590
- var content = fd.ReadAll();
16591
- fd.Close();
16592
- return content;
16593
- }
16594
-
16595
- var GREEK_SIMBOLS = {
16596
- Alpha: 'A',
16597
- alpha: 'α',
16598
- Beta: 'B',
16599
- beta: 'β',
16600
- Gamma: 'Г',
16601
- gamma: 'γ'
16602
- };
16603
- var greekRe = new RegExp('\\b' + Object.keys(GREEK_SIMBOLS).join('\\b|\\b') + '\\b', 'g');
16604
- function greekify(str) {
16605
- return str.replace(greekRe, function (sym) {
16606
- return GREEK_SIMBOLS[sym];
16607
- });
16608
- }
16609
- function filterLib(lib, filter$1) {
16610
- var trimmedFilter = filter$1.trim();
16611
- var re = new RegExp(escapeRegExp(greekify(trimmedFilter)), 'i');
16612
- return flow(filter(function (item) {
16613
- return !trimmedFilter || re.test(greekify(item.struct.name)) || re.test(greekify(item.props.group));
16614
- }), reduce(function (res, item) {
16615
- if (!res[item.props.group]) res[item.props.group] = [item];else res[item.props.group].push(item);
16616
- return res;
16617
- }, {}))(lib);
16618
- }
16619
- function filterFGLib(lib, filter$1) {
16620
- var trimmedFilter = filter$1.trim();
16621
- var re = new RegExp(escapeRegExp(greekify(trimmedFilter)), 'i');
16622
- var searchFunction = function searchFunction(item) {
16623
- var fields = [item.struct.name, item.props.abbreviation, item.props.name].filter(Boolean);
16624
- return fields.some(function (field) {
16625
- return re.test(greekify(field));
16626
- });
16627
- };
16628
- return flow(filter(function (item) {
16629
- return !trimmedFilter || searchFunction(item);
16630
- }), reduce(function (res, item) {
16631
- if (!res[item.props.group]) res[item.props.group] = [item];else res[item.props.group].push(item);
16632
- return res;
16633
- }, {}))(lib);
16634
- }
16635
- var getSelectOptionsFromSchema = function getSelectOptionsFromSchema(schema) {
16636
- return schema["enum"].reduce(function (options, value, index) {
16637
- var _schema$enumNames$ind, _schema$enumNames;
16638
- options.push({
16639
- value: value,
16640
- label: (_schema$enumNames$ind = schema === null || schema === void 0 ? void 0 : (_schema$enumNames = schema.enumNames) === null || _schema$enumNames === void 0 ? void 0 : _schema$enumNames[index]) !== null && _schema$enumNames$ind !== void 0 ? _schema$enumNames$ind : value
16641
- });
16642
- return options;
16643
- }, []);
16644
- };
16645
-
16646
16681
  var _excluded$o = ["schema", "result", "customValid"],
16647
16682
  _excluded2$3 = ["labelPos", "title", "children"],
16648
16683
  _excluded3 = ["name", "onChange", "component", "labelPos", "className"],
@@ -19606,7 +19641,8 @@ var SaveDialog = function (_Component) {
19606
19641
  _this.isRxn = _this.props.struct.hasRxnArrow();
19607
19642
  _this.textAreaRef = createRef();
19608
19643
  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');
19644
+ if (_this.props.server) formats.push(_this.isRxn ? 'rxnV3000' : 'molV3000', 'smilesExt', 'smarts', 'inChI', 'inChIAuxInfo', 'cml', 'svg', 'png', 'cdxml'
19645
+ );
19610
19646
  _this.saveSchema = saveSchema;
19611
19647
  _this.saveSchema.properties.format = Object.assign(_this.saveSchema.properties.format, {
19612
19648
  "enum": formats,
@@ -20779,6 +20815,7 @@ function SData(_ref) {
20779
20815
  init: init
20780
20816
  }, formState), {}, {
20781
20817
  children: jsxs("fieldset", {
20818
+ className: "sdata",
20782
20819
  children: [jsx(Field, {
20783
20820
  name: "context",
20784
20821
  options: getSelectOptionsFromSchema(formSchema.properties.context),
@@ -21207,6 +21244,45 @@ var EmptySearchResult = function EmptySearchResult(_ref) {
21207
21244
  });
21208
21245
  };
21209
21246
 
21247
+ var SALTS_AND_SOLVENTS = 'Salts and Solvents';
21248
+ var batchDelay = 300;
21249
+ function useSaltsAndSolvents(saltsAndSolvents, filter) {
21250
+ var _useState = useState(true),
21251
+ _useState2 = _slicedToArray(_useState, 2),
21252
+ isFirstRender = _useState2[0],
21253
+ setIsFirstRender = _useState2[1];
21254
+ var timerId = useRef(null);
21255
+ var _useState3 = useState(saltsAndSolvents[SALTS_AND_SOLVENTS]),
21256
+ _useState4 = _slicedToArray(_useState3, 2),
21257
+ filteredSaltsAndSolvents = _useState4[0],
21258
+ setFilteredSaltsAndSolvents = _useState4[1];
21259
+ var addToSaSWithBatches = useCallback(function (fullFilteredArray) {
21260
+ var batchSize = 16;
21261
+ setFilteredSaltsAndSolvents(function (filteredSaltsAndSolvents) {
21262
+ return [].concat(_toConsumableArray(filteredSaltsAndSolvents !== null && filteredSaltsAndSolvents !== void 0 ? filteredSaltsAndSolvents : []), _toConsumableArray(fullFilteredArray.splice(0, batchSize)));
21263
+ });
21264
+ if (fullFilteredArray.length > 0) {
21265
+ timerId.current = setTimeout(function () {
21266
+ return addToSaSWithBatches(fullFilteredArray);
21267
+ }, batchDelay);
21268
+ }
21269
+ }, []);
21270
+ useEffect(function () {
21271
+ var filteredSaS = filterFGLib(saltsAndSolvents, filter)[SALTS_AND_SOLVENTS];
21272
+ addToSaSWithBatches(filteredSaS);
21273
+ }, [saltsAndSolvents, addToSaSWithBatches]);
21274
+ useEffect(function () {
21275
+ if (isFirstRender) {
21276
+ setIsFirstRender(false);
21277
+ return;
21278
+ }
21279
+ clearTimeout(timerId.current);
21280
+ var filteredSaS = filterFGLib(saltsAndSolvents, filter)[SALTS_AND_SOLVENTS];
21281
+ setFilteredSaltsAndSolvents(filteredSaS);
21282
+ }, [saltsAndSolvents, filter]);
21283
+ return filteredSaltsAndSolvents;
21284
+ }
21285
+
21210
21286
  var _excluded$1 = ["children", "value", "index"],
21211
21287
  _excluded2 = ["filter", "onFilter", "onChangeGroup", "mode", "initialTab", "functionalGroups", "lib", "saltsAndSolvents"];
21212
21288
  function ownKeys$4(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; }
@@ -21244,7 +21320,6 @@ var filterLibSelector = createSelector(function (props) {
21244
21320
  return props.filter;
21245
21321
  }, filterLib);
21246
21322
  var FUNCTIONAL_GROUPS = 'Functional Groups';
21247
- var SALTS_AND_SOLVENTS = 'Salts and Solvents';
21248
21323
  var HeaderContent = function HeaderContent() {
21249
21324
  return jsxs("div", {
21250
21325
  className: classes$8.dialogHeader,
@@ -21298,21 +21373,15 @@ var TemplateDialog = function TemplateDialog(props) {
21298
21373
  _useState4 = _slicedToArray(_useState3, 2),
21299
21374
  expandedAccordions = _useState4[0],
21300
21375
  setExpandedAccordions = _useState4[1];
21376
+ var filteredSaltsAndSolvents = useSaltsAndSolvents(saltsAndSolvents, filter);
21301
21377
  var _useState5 = useState(functionalGroups[FUNCTIONAL_GROUPS]),
21302
21378
  _useState6 = _slicedToArray(_useState5, 2),
21303
21379
  filteredFG = _useState6[0],
21304
21380
  setFilteredFG = _useState6[1];
21305
- var _useState7 = useState(saltsAndSolvents[SALTS_AND_SOLVENTS]),
21306
- _useState8 = _slicedToArray(_useState7, 2),
21307
- filteredSaltsAndSolvents = _useState8[0],
21308
- setFilteredSaltsAndSolvents = _useState8[1];
21309
21381
  var filteredTemplateLib = filterLibSelector(props);
21310
21382
  useEffect(function () {
21311
21383
  setFilteredFG(filterFGLib(functionalGroups, filter)[FUNCTIONAL_GROUPS]);
21312
21384
  }, [functionalGroups, filter]);
21313
- useEffect(function () {
21314
- setFilteredSaltsAndSolvents(filterFGLib(saltsAndSolvents, filter)[SALTS_AND_SOLVENTS]);
21315
- }, [saltsAndSolvents, filter]);
21316
21385
  var handleTabChange = function handleTabChange(_, tab) {
21317
21386
  setTab(tab);
21318
21387
  props.onSelect(null);
@@ -21450,6 +21519,16 @@ var TemplateDialog = function TemplateDialog(props) {
21450
21519
  })]
21451
21520
  });
21452
21521
  };
21522
+ var selectTemplate = function selectTemplate(template, props, dispatch) {
21523
+ dispatch(selectTmpl(null));
21524
+ if (!template) return;
21525
+ dispatch(selectTmpl(template));
21526
+ dispatch(onAction({
21527
+ tool: 'template',
21528
+ opts: template
21529
+ }));
21530
+ props.onOk(template);
21531
+ };
21453
21532
  var TemplatesDialog = connect(function (store) {
21454
21533
  var _store$modal, _store$modal$prop;
21455
21534
  return _objectSpread$4(_objectSpread$4({}, omit(['attach'], store.templates)), {}, {
@@ -21463,12 +21542,7 @@ var TemplatesDialog = connect(function (store) {
21463
21542
  return dispatch(changeFilter(filter));
21464
21543
  },
21465
21544
  onSelect: function onSelect(tmpl) {
21466
- dispatch(selectTmpl(tmpl));
21467
- dispatch(onAction({
21468
- tool: 'template',
21469
- opts: tmpl
21470
- }));
21471
- props.onOk(tmpl);
21545
+ return selectTemplate(tmpl, props, dispatch);
21472
21546
  },
21473
21547
  onChangeGroup: function onChangeGroup(group) {
21474
21548
  return dispatch(changeGroup(group));
@@ -22214,8 +22288,8 @@ var KetcherBuilder = function () {
22214
22288
  initApp(element, staticResourcesUrl, {
22215
22289
  buttons: buttons || {},
22216
22290
  errorHandler: errorHandler || null,
22217
- version: "2.7.0-rc.2" ,
22218
- buildDate: "2022-12-15T15:05:13" ,
22291
+ version: "2.7.0-rc.4" ,
22292
+ buildDate: "2022-12-20T17:00:39" ,
22219
22293
  buildNumber: ''
22220
22294
  }, structService, resolve);
22221
22295
  });