ketcher-react 3.1.0-rc.9 → 3.2.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,7 +23,7 @@ import { merge, debounce, flatten, get as get$2 } from 'lodash';
23
23
  import { combineReducers, applyMiddleware, createStore, compose as compose$1 } from 'redux';
24
24
  import { createSelector } from 'reselect';
25
25
  import thunkMiddleware from 'redux-thunk';
26
- import { KetcherLogger, MonomerGroups as MonomerGroups$1, KetMonomerClass, ChemicalMimeType as ChemicalMimeType$1, KetSerializer, CoreEditor, generateMenuShortcuts, hotkeysConfiguration, modesMap, isAmbiguousMonomerLibraryItem, MONOMER_CONST, macromoleculesFilesInputFormats, EditorHistory, SequenceMode, SnakeMode, FlexMode, ModeTypes, ketcherProvider, KetcherAsyncEvents, UsageInMacromolecule, ZoomTool, SequenceType, HydrogenBond, BackBoneSequenceNode, AmbiguousMonomer, Nucleotide, Nucleoside, Sugar, getRnaBaseFromSugar, RNABase, isRnaBaseOrAmbiguousRnaBase, setAmbiguousMonomerTemplatePrefix, setMonomerTemplatePrefix, monomerFactory, Entities, MonomerToAtomBond, KetAmbiguousMonomerTemplateSubType, getSugarFromRnaBase, DEFAULT_LAYOUT_MODE, HAS_CONTENT_LAYOUT_MODE, Vec2, Coordinates, AmbiguousMonomerRenderer, Phosphate, getSvgFromDrawnStructures, isClipboardAPIAvailable, legacyCopy } from 'ketcher-core';
26
+ import { KetcherLogger, MonomerGroups as MonomerGroups$1, KetMonomerClass, ChemicalMimeType as ChemicalMimeType$1, KetSerializer, CoreEditor, generateMenuShortcuts, hotkeysConfiguration, ToolName, modesMap, isAmbiguousMonomerLibraryItem, MONOMER_CONST, macromoleculesFilesInputFormats, EditorHistory, SequenceMode, SnakeMode, FlexMode, ModeTypes, ketcherProvider, KetcherAsyncEvents, isTwoStrandedNodeRestrictedForHydrogenBondCreation, UsageInMacromolecule, ZoomTool, SequenceType, HydrogenBond, BackBoneSequenceNode, AmbiguousMonomer, Nucleotide, Nucleoside, RNABase, getSugarFromRnaBase, Sugar, getRnaBaseFromSugar, setAmbiguousMonomerTemplatePrefix, setMonomerTemplatePrefix, monomerFactory, Entities, isRnaBaseOrAmbiguousRnaBase, SequenceRenderer, EmptySequenceNode, MonomerToAtomBond, DEFAULT_LAYOUT_MODE, HAS_CONTENT_LAYOUT_MODE, Vec2, Coordinates, AmbiguousMonomerRenderer, Phosphate, KetAmbiguousMonomerTemplateSubType, getSvgFromDrawnStructures, isClipboardAPIAvailable, legacyCopy } from 'ketcher-core';
27
27
  import _regeneratorRuntime from '@babel/runtime/regenerator';
28
28
  import _extends from '@babel/runtime/helpers/esm/extends';
29
29
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
@@ -3266,8 +3266,12 @@ var selectEditorLayoutMode = function selectEditorLayoutMode(state) {
3266
3266
  return state.editor.editorLayoutMode;
3267
3267
  };
3268
3268
  var selectIsHandToolSelected = function selectIsHandToolSelected(state) {
3269
- var _state$editor$editor3;
3270
- return (_state$editor$editor3 = state.editor.editor) === null || _state$editor$editor3 === void 0 ? void 0 : _state$editor$editor3.isHandToolSelected;
3269
+ var _state$editor$editor4;
3270
+ return (_state$editor$editor4 = state.editor.editor) === null || _state$editor$editor4 === void 0 ? void 0 : _state$editor$editor4.isHandToolSelected;
3271
+ };
3272
+ var hasAntisenseChains = function hasAntisenseChains(state) {
3273
+ var _state$editor$editor5;
3274
+ return (_state$editor$editor5 = state.editor.editor) === null || _state$editor$editor5 === void 0 || (_state$editor$editor5 = _state$editor$editor5.drawingEntitiesManager) === null || _state$editor$editor5 === void 0 ? void 0 : _state$editor$editor5.hasAntisenseChains;
3271
3275
  };
3272
3276
  var editorReducer = editorSlice.reducer;
3273
3277
 
@@ -4611,7 +4615,9 @@ var muiOverrides = {
4611
4615
 
4612
4616
  var getGlobalStyles = function getGlobalStyles(theme) {
4613
4617
  return css({
4614
- body: {
4618
+ all: 'unset',
4619
+ '.Ketcher-polymer-editor-root': {
4620
+ all: 'unset',
4615
4621
  fontSize: theme.ketcher.font.size.medium,
4616
4622
  fontFamily: theme.ketcher.font.family.inter,
4617
4623
  fontWeight: theme.ketcher.font.weight.regular,
@@ -4619,42 +4625,42 @@ var getGlobalStyles = function getGlobalStyles(theme) {
4619
4625
  color: theme.ketcher.color.text.primary,
4620
4626
  boxSizing: 'border-box'
4621
4627
  },
4622
- div: {
4628
+ ':where(.Ketcher-polymer-editor-root) div': {
4623
4629
  boxSizing: 'border-box'
4624
4630
  },
4625
- input: {
4631
+ ':where(.Ketcher-polymer-editor-root) input': {
4626
4632
  fontFamily: theme.ketcher.font.family.inter,
4627
4633
  fontWeight: theme.ketcher.font.weight.regular,
4628
4634
  fontSize: theme.ketcher.font.size.regular,
4629
4635
  boxSizing: 'border-box'
4630
4636
  },
4631
- h1: {
4637
+ ':where(.Ketcher-polymer-editor-root) h1': {
4632
4638
  fontSize: 96
4633
4639
  },
4634
- h2: {
4640
+ ':where(.Ketcher-polymer-editor-root) h2': {
4635
4641
  fontSize: 60
4636
4642
  },
4637
- h3: {
4643
+ ':where(.Ketcher-polymer-editor-root) h3': {
4638
4644
  fontSize: 48
4639
4645
  },
4640
- h4: {
4646
+ ':where(.Ketcher-polymer-editor-root) h4': {
4641
4647
  fontSize: 34
4642
4648
  },
4643
- h5: {
4649
+ ':where(.Ketcher-polymer-editor-root) h5': {
4644
4650
  fontSize: 24
4645
4651
  },
4646
- h6: {
4652
+ ':where(.Ketcher-polymer-editor-root) h6': {
4647
4653
  fontSize: 20,
4648
4654
  fontWeight: theme.ketcher.font.weight.bold
4649
4655
  },
4650
- p: {
4656
+ ':where(.Ketcher-polymer-editor-root) p': {
4651
4657
  fontSize: theme.ketcher.font.size.regular
4652
4658
  },
4653
- button: {
4659
+ ':where(.Ketcher-polymer-editor-root) button': {
4654
4660
  textTransform: 'uppercase',
4655
4661
  fontWeight: theme.ketcher.font.weight.bold
4656
4662
  }
4657
- }, process.env.NODE_ENV === "production" ? "" : ";label:getGlobalStyles;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdldEdsb2JhbFN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQjBDIiwiZmlsZSI6ImdldEdsb2JhbFN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAqIENvcHlyaWdodCAyMDIxIEVQQU0gU3lzdGVtc1xyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XHJcbmV4cG9ydCBjb25zdCBnZXRHbG9iYWxTdHlsZXMgPSAodGhlbWUpID0+IGNzcyh7XHJcbiAgICBib2R5OiB7XHJcbiAgICAgICAgZm9udFNpemU6IHRoZW1lLmtldGNoZXIuZm9udC5zaXplLm1lZGl1bSxcclxuICAgICAgICBmb250RmFtaWx5OiB0aGVtZS5rZXRjaGVyLmZvbnQuZmFtaWx5LmludGVyLFxyXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLmtldGNoZXIuZm9udC53ZWlnaHQucmVndWxhcixcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmtldGNoZXIuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LFxyXG4gICAgICAgIGNvbG9yOiB0aGVtZS5rZXRjaGVyLmNvbG9yLnRleHQucHJpbWFyeSxcclxuICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcclxuICAgIH0sXHJcbiAgICBkaXY6IHtcclxuICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcclxuICAgIH0sXHJcbiAgICBpbnB1dDoge1xyXG4gICAgICAgIGZvbnRGYW1pbHk6IHRoZW1lLmtldGNoZXIuZm9udC5mYW1pbHkuaW50ZXIsXHJcbiAgICAgICAgZm9udFdlaWdodDogdGhlbWUua2V0Y2hlci5mb250LndlaWdodC5yZWd1bGFyLFxyXG4gICAgICAgIGZvbnRTaXplOiB0aGVtZS5rZXRjaGVyLmZvbnQuc2l6ZS5yZWd1bGFyLFxyXG4gICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxyXG4gICAgfSxcclxuICAgIGgxOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDk2LFxyXG4gICAgfSxcclxuICAgIGgyOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDYwLFxyXG4gICAgfSxcclxuICAgIGgzOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDQ4LFxyXG4gICAgfSxcclxuICAgIGg0OiB7XHJcbiAgICAgICAgZm9udFNpemU6IDM0LFxyXG4gICAgfSxcclxuICAgIGg1OiB7XHJcbiAgICAgICAgZm9udFNpemU6IDI0LFxyXG4gICAgfSxcclxuICAgIGg2OiB7XHJcbiAgICAgICAgZm9udFNpemU6IDIwLFxyXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLmtldGNoZXIuZm9udC53ZWlnaHQuYm9sZCxcclxuICAgIH0sXHJcbiAgICBwOiB7XHJcbiAgICAgICAgZm9udFNpemU6IHRoZW1lLmtldGNoZXIuZm9udC5zaXplLnJlZ3VsYXIsXHJcbiAgICB9LFxyXG4gICAgYnV0dG9uOiB7XHJcbiAgICAgICAgdGV4dFRyYW5zZm9ybTogJ3VwcGVyY2FzZScsXHJcbiAgICAgICAgZm9udFdlaWdodDogdGhlbWUua2V0Y2hlci5mb250LndlaWdodC5ib2xkLFxyXG4gICAgfSxcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldEdsb2JhbFN0eWxlcy5qcy5tYXAiXX0= */");
4663
+ }, process.env.NODE_ENV === "production" ? "" : ";label:getGlobalStyles;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdldEdsb2JhbFN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQjBDIiwiZmlsZSI6ImdldEdsb2JhbFN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAqIENvcHlyaWdodCAyMDIxIEVQQU0gU3lzdGVtc1xyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XHJcbmV4cG9ydCBjb25zdCBnZXRHbG9iYWxTdHlsZXMgPSAodGhlbWUpID0+IGNzcyh7XHJcbiAgICBhbGw6ICd1bnNldCcsXHJcbiAgICAnLktldGNoZXItcG9seW1lci1lZGl0b3Itcm9vdCc6IHtcclxuICAgICAgICBhbGw6ICd1bnNldCcsXHJcbiAgICAgICAgZm9udFNpemU6IHRoZW1lLmtldGNoZXIuZm9udC5zaXplLm1lZGl1bSxcclxuICAgICAgICBmb250RmFtaWx5OiB0aGVtZS5rZXRjaGVyLmZvbnQuZmFtaWx5LmludGVyLFxyXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLmtldGNoZXIuZm9udC53ZWlnaHQucmVndWxhcixcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmtldGNoZXIuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LFxyXG4gICAgICAgIGNvbG9yOiB0aGVtZS5rZXRjaGVyLmNvbG9yLnRleHQucHJpbWFyeSxcclxuICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcclxuICAgIH0sXHJcbiAgICAnOndoZXJlKC5LZXRjaGVyLXBvbHltZXItZWRpdG9yLXJvb3QpIGRpdic6IHtcclxuICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcclxuICAgIH0sXHJcbiAgICAnOndoZXJlKC5LZXRjaGVyLXBvbHltZXItZWRpdG9yLXJvb3QpIGlucHV0Jzoge1xyXG4gICAgICAgIGZvbnRGYW1pbHk6IHRoZW1lLmtldGNoZXIuZm9udC5mYW1pbHkuaW50ZXIsXHJcbiAgICAgICAgZm9udFdlaWdodDogdGhlbWUua2V0Y2hlci5mb250LndlaWdodC5yZWd1bGFyLFxyXG4gICAgICAgIGZvbnRTaXplOiB0aGVtZS5rZXRjaGVyLmZvbnQuc2l6ZS5yZWd1bGFyLFxyXG4gICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxyXG4gICAgfSxcclxuICAgICc6d2hlcmUoLktldGNoZXItcG9seW1lci1lZGl0b3Itcm9vdCkgaDEnOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDk2LFxyXG4gICAgfSxcclxuICAgICc6d2hlcmUoLktldGNoZXItcG9seW1lci1lZGl0b3Itcm9vdCkgaDInOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDYwLFxyXG4gICAgfSxcclxuICAgICc6d2hlcmUoLktldGNoZXItcG9seW1lci1lZGl0b3Itcm9vdCkgaDMnOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDQ4LFxyXG4gICAgfSxcclxuICAgICc6d2hlcmUoLktldGNoZXItcG9seW1lci1lZGl0b3Itcm9vdCkgaDQnOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDM0LFxyXG4gICAgfSxcclxuICAgICc6d2hlcmUoLktldGNoZXItcG9seW1lci1lZGl0b3Itcm9vdCkgaDUnOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDI0LFxyXG4gICAgfSxcclxuICAgICc6d2hlcmUoLktldGNoZXItcG9seW1lci1lZGl0b3Itcm9vdCkgaDYnOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDIwLFxyXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLmtldGNoZXIuZm9udC53ZWlnaHQuYm9sZCxcclxuICAgIH0sXHJcbiAgICAnOndoZXJlKC5LZXRjaGVyLXBvbHltZXItZWRpdG9yLXJvb3QpIHAnOiB7XHJcbiAgICAgICAgZm9udFNpemU6IHRoZW1lLmtldGNoZXIuZm9udC5zaXplLnJlZ3VsYXIsXHJcbiAgICB9LFxyXG4gICAgJzp3aGVyZSguS2V0Y2hlci1wb2x5bWVyLWVkaXRvci1yb290KSBidXR0b24nOiB7XHJcbiAgICAgICAgdGV4dFRyYW5zZm9ybTogJ3VwcGVyY2FzZScsXHJcbiAgICAgICAgZm9udFdlaWdodDogdGhlbWUua2V0Y2hlci5mb250LndlaWdodC5ib2xkLFxyXG4gICAgfSxcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldEdsb2JhbFN0eWxlcy5qcy5tYXAiXX0= */");
4658
4664
  };
4659
4665
 
4660
4666
  function _EMOTION_STRINGIFIED_CSS_ERROR__$D() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
@@ -6009,7 +6015,7 @@ var DetailsContainer = _styled("div", process.env.NODE_ENV === "production" ? {
6009
6015
  map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErQmdDIiwiZmlsZSI6InN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAqIENvcHlyaWdodCAyMDIxIEVQQU0gU3lzdGVtc1xyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IEFjY29yZGlvbiwgQnV0dG9uIH0gZnJvbSAna2V0Y2hlci1yZWFjdCc7XHJcbmV4cG9ydCBjb25zdCBSbmFBY2NvcmRpb25Db250YWluZXIgPSBzdHlsZWQuZGl2KHtcclxuICAgIGRpc3BsYXk6ICdmbGV4JyxcclxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxyXG4gICAganVzdGlmeUNvbnRlbnQ6ICdmbGV4LXN0YXJ0JyxcclxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcclxuICAgIGhlaWdodDogJzEwMCUnLFxyXG59KTtcclxuZXhwb3J0IGNvbnN0IFN0eWxlZEFjY29yZGlvbiA9IHN0eWxlZChBY2NvcmRpb24pKHtcclxuICAgIG1pbkhlaWdodDogJzMycHgnLFxyXG59KTtcclxuZXhwb3J0IGNvbnN0IFN0eWxlZEFjY29yZGlvbldyYXBwZXIgPSBzdHlsZWQuZGl2KHtcclxuICAgIGZsZXhHcm93OiAyLFxyXG4gICAgbWluSGVpZ2h0OiAnMzJweCcsXHJcbn0pO1xyXG5leHBvcnQgY29uc3QgRGV0YWlsc0NvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xyXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXHJcbiAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXHJcbiAgICBnYXA6ICcyNHB4JyxcclxuICAgIGp1c3RpZnlDb250ZW50OiAnc3RhcnQnLFxyXG4gICAgcGFkZGluZzogJzE2cHggMTJweCcsXHJcbn0pO1xyXG5leHBvcnQgY29uc3QgU3R5bGVkQnV0dG9uID0gc3R5bGVkKEJ1dHRvbikoKHByb3BzKSA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogcHJvcHMudGhlbWUua2V0Y2hlci5jb2xvci5idXR0b24udHJhbnNwYXJlbnQuYWN0aXZlLFxyXG4gICAgICAgIGNvbG9yOiBwcm9wcy50aGVtZS5rZXRjaGVyLmNvbG9yLnRleHQubGlnaHQsXHJcbiAgICAgICAgYm9yZGVyQ29sb3I6IHByb3BzLnRoZW1lLmtldGNoZXIuY29sb3IudGV4dC5saWdodCxcclxuICAgIH07XHJcbn0pO1xyXG5leHBvcnQgY29uc3QgRGlzYWJsZWRBcmVhID0gc3R5bGVkLmRpdih7XHJcbiAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZWZmMmY1OTQnLFxyXG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICB0b3A6IDAsXHJcbiAgICBsZWZ0OiAwLFxyXG59KTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3R5bGVzLmpzLm1hcCJdfQ== */",
6010
6016
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$x
6011
6017
  });
6012
- var StyledButton$1 = _styled(Button, process.env.NODE_ENV === "production" ? {
6018
+ var StyledButton$2 = _styled(Button, process.env.NODE_ENV === "production" ? {
6013
6019
  target: "e1hdfnag1"
6014
6020
  } : {
6015
6021
  target: "e1hdfnag1",
@@ -6176,7 +6182,7 @@ var RnaAccordion = function RnaAccordion(_ref) {
6176
6182
  expanded: expanded
6177
6183
  });
6178
6184
  var details = groupData.groupName === RnaBuilderPresetsItem.Presets ? jsxs(DetailsContainer, {
6179
- children: [jsx(StyledButton$1, {
6185
+ children: [jsx(StyledButton$2, {
6180
6186
  onClick: function onClick() {
6181
6187
  return onClickNewPreset();
6182
6188
  },
@@ -6479,7 +6485,7 @@ var ButtonsContainer = _styled("div", process.env.NODE_ENV === "production" ? {
6479
6485
  map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQ2dDIiwiZmlsZSI6InN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAqIENvcHlyaWdodCAyMDIxIEVQQU0gU3lzdGVtc1xyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IEJ1dHRvbiwgSW5wdXQgfSBmcm9tICdrZXRjaGVyLXJlYWN0JztcclxuZXhwb3J0IGNvbnN0IFJuYUVkaXRvckV4cGFuZGVkQ29udGFpbmVyID0gc3R5bGVkLmRpdigocHJvcHMpID0+ICh7XHJcbiAgICBkaXNwbGF5OiAnZmxleCcsXHJcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcclxuICAgIHBhZGRpbmc6ICcxMHB4JyxcclxuICAgICcmLnJuYS1lZGl0b3ItZXhwYW5kZWQtLXNlcXVlbmNlLWVkaXQtbW9kZSc6IHtcclxuICAgICAgICBwYWRkaW5nOiAnOHB4JyxcclxuICAgICAgICBwYWRkaW5nVG9wOiAnMTBweCcsXHJcbiAgICAgICAgYm9yZGVyOiBgMnB4ICR7cHJvcHMudGhlbWUua2V0Y2hlci5jb2xvci5lZGl0TW9kZS5zZXF1ZW5jZUluUk5BQnVpbGRlcn0gc29saWRgLFxyXG4gICAgICAgIGJvcmRlclRvcDogJ25vbmUnLFxyXG4gICAgICAgIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOiAnNHB4JyxcclxuICAgICAgICBib3JkZXJCb3R0b21MZWZ0UmFkaXVzOiAnNHB4JyxcclxuICAgIH0sXHJcbn0pKTtcclxuZXhwb3J0IGNvbnN0IEdyb3Vwc0NvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xyXG4gICAgbWFyZ2luVG9wOiAnMTZweCcsXHJcbiAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXHJcbiAgICBnYXA6ICc4cHgnLFxyXG59KTtcclxuZXhwb3J0IGNvbnN0IEJ1dHRvbnNDb250YWluZXIgPSBzdHlsZWQuZGl2KHtcclxuICAgIG1hcmdpblRvcDogJzE2cHgnLFxyXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1ldmVubHknLFxyXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXHJcbiAgICBnYXA6ICc4cHgnLFxyXG59KTtcclxuZXhwb3J0IGNvbnN0IFN0eWxlZEJ1dHRvbiA9IHN0eWxlZChCdXR0b24pKChwcm9wcykgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxyXG4gICAgICAgIGZvbnRTaXplOiBwcm9wcy50aGVtZS5rZXRjaGVyLmZvbnQuc2l6ZS5yZWd1bGFyLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogcHJvcHMucHJpbWFyeVxyXG4gICAgICAgICAgICA/IHByb3BzLnRoZW1lLmtldGNoZXIuY29sb3IuYnV0dG9uLnByaW1hcnkuYWN0aXZlXHJcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIGNvbG9yOiBwcm9wcy5wcmltYXJ5ICYmICFwcm9wcy5kaXNhYmxlZFxyXG4gICAgICAgICAgICA/IHByb3BzLnRoZW1lLmtldGNoZXIuY29sb3IuYnV0dG9uLnRleHQucHJpbWFyeVxyXG4gICAgICAgICAgICA6IHByb3BzLnRoZW1lLmtldGNoZXIuY29sb3IudGV4dC5saWdodCxcclxuICAgICAgICBvdXRsaW5lOiBwcm9wcy5wcmltYXJ5ICYmICFwcm9wcy5kaXNhYmxlZFxyXG4gICAgICAgICAgICA/IHByb3BzLnRoZW1lLmtldGNoZXIub3V0bGluZS5zZWxlY3RlZC5zbWFsbFxyXG4gICAgICAgICAgICA6IHByb3BzLnRoZW1lLmtldGNoZXIub3V0bGluZS5ncmV5LnNtYWxsLFxyXG4gICAgfTtcclxufSk7XHJcbmV4cG9ydCBjb25zdCBOYW1lQ29udGFpbmVyID0gc3R5bGVkLmRpdigocHJvcHMpID0+ICh7XHJcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcclxuICAgIGJvcmRlclJhZGl1czogcHJvcHMudGhlbWUua2V0Y2hlci5ib3JkZXIucmFkaXVzLnJlZ3VsYXIsXHJcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHByb3BzLnRoZW1lLmtldGNoZXIuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LFxyXG4gICAgYm94U2hhZG93OiBwcm9wcy50aGVtZS5rZXRjaGVyLnNoYWRvdy5yZWd1bGFyLFxyXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXHJcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXHJcbiAgICBwYWRkaW5nOiAnMCA2cHggNnB4IDZweCcsXHJcbiAgICBkaXNwbGF5OiAnZmxleCcsXHJcbiAgICBhbGlnbkl0ZW1zOiAnZmxleC1lbmQnLFxyXG4gICAgaGVpZ2h0OiAnNDhweCcsXHJcbiAgICBvdXRsaW5lOiBwcm9wcy5zZWxlY3RlZFxyXG4gICAgICAgID8gcHJvcHMudGhlbWUua2V0Y2hlci5vdXRsaW5lLnNlbGVjdGVkLm1lZGl1bVxyXG4gICAgICAgIDogJ25vbmUnLFxyXG4gICAgJzpob3Zlcic6IHtcclxuICAgICAgICBvdXRsaW5lOiBwcm9wcy5zZWxlY3RlZCA/IHVuZGVmaW5lZCA6IHByb3BzLnRoZW1lLmtldGNoZXIub3V0bGluZS5zbWFsbCxcclxuICAgIH0sXHJcbn0pKTtcclxuZXhwb3J0IGNvbnN0IE5hbWVMaW5lID0gc3R5bGVkLnNwYW4oKHByb3BzKSA9PiAoe1xyXG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICB0b3A6ICcwJyxcclxuICAgIGxlZnQ6ICcwJyxcclxuICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICBoZWlnaHQ6ICc4cHgnLFxyXG4gICAgYmFja2dyb3VuZENvbG9yOiBwcm9wcy5zZWxlY3RlZFxyXG4gICAgICAgID8gcHJvcHMudGhlbWUua2V0Y2hlci5vdXRsaW5lLnNlbGVjdGVkLmNvbG9yXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5rZXRjaGVyLm91dGxpbmUuY29sb3IsXHJcbn0pKTtcclxuZXhwb3J0IGNvbnN0IE5hbWVJbnB1dCA9IHN0eWxlZChJbnB1dCkoe1xyXG4gICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICcmOmRpc2FibGVkJzoge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICdub25lJyxcclxuICAgICAgICBvdXRsaW5lOiAnbm9uZScsXHJcbiAgICAgICAgY29sb3I6ICdpbmhlcml0JyxcclxuICAgIH0sXHJcbn0pO1xyXG5leHBvcnQgY29uc3QgUHJlc2V0TmFtZSA9IHN0eWxlZC5kaXYoe1xyXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxyXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxyXG59KTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3R5bGVzLmpzLm1hcCJdfQ== */",
6480
6486
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$u
6481
6487
  });
6482
- var StyledButton = _styled(Button, process.env.NODE_ENV === "production" ? {
6488
+ var StyledButton$1 = _styled(Button, process.env.NODE_ENV === "production" ? {
6483
6489
  target: "e18wzlbg4"
6484
6490
  } : {
6485
6491
  target: "e18wzlbg4",
@@ -6805,7 +6811,7 @@ var RnaEditorExpanded = function RnaEditorExpanded(_ref) {
6805
6811
  }, [editor, sequenceSelection]);
6806
6812
  var mainButton;
6807
6813
  if (isActivePresetEmpty && !isSequenceEditInRNABuilderMode) {
6808
- mainButton = jsx(StyledButton, {
6814
+ mainButton = jsx(StyledButton$1, {
6809
6815
  disabled: !selectIsPresetReadyToSave(newPreset),
6810
6816
  primary: true,
6811
6817
  "data-testid": "add-to-presets-btn",
@@ -6813,7 +6819,7 @@ var RnaEditorExpanded = function RnaEditorExpanded(_ref) {
6813
6819
  children: "Add to Presets"
6814
6820
  });
6815
6821
  } else if (isEditMode) {
6816
- mainButton = jsx(StyledButton, {
6822
+ mainButton = jsx(StyledButton$1, {
6817
6823
  primary: true,
6818
6824
  disabled: isSequenceEditInRNABuilderMode ? !isSequenceSelectionUpdated : false,
6819
6825
  "data-testid": "save-btn",
@@ -6821,7 +6827,7 @@ var RnaEditorExpanded = function RnaEditorExpanded(_ref) {
6821
6827
  children: isSequenceEditInRNABuilderMode ? 'Update' : 'Save'
6822
6828
  });
6823
6829
  } else {
6824
- mainButton = jsx(StyledButton, {
6830
+ mainButton = jsx(StyledButton$1, {
6825
6831
  "data-testid": "edit-btn",
6826
6832
  onClick: turnOnEditMode,
6827
6833
  disabled: activePreset["default"],
@@ -6861,11 +6867,11 @@ var RnaEditorExpanded = function RnaEditorExpanded(_ref) {
6861
6867
  }, groupName);
6862
6868
  })
6863
6869
  }), jsxs(ButtonsContainer, {
6864
- children: [isEditMode ? jsx(StyledButton, {
6870
+ children: [isEditMode ? jsx(StyledButton$1, {
6865
6871
  "data-testid": "cancel-btn",
6866
6872
  onClick: onCancel,
6867
6873
  children: "Cancel"
6868
- }) : jsx(StyledButton, {
6874
+ }) : jsx(StyledButton$1, {
6869
6875
  "data-testid": "duplicate-btn",
6870
6876
  disabled: !selectIsPresetReadyToSave(newPreset),
6871
6877
  onClick: function onClick() {
@@ -7238,7 +7244,7 @@ var RnaBuilder = function RnaBuilder(_ref) {
7238
7244
  children: [uniqueNameError && "Preset with name \"".concat(uniqueNameError, "\" already exists. Please choose another name."), invalidPresetError && "Preset with name \"".concat(invalidPresetError, "\" can't be used. Because it is impossible to establish bonds between monomers. Edit it's structure or choose another one.")]
7239
7245
  })
7240
7246
  }), jsx(Modal.Footer, {
7241
- children: jsx(StyledButton$1, {
7247
+ children: jsx(StyledButton$2, {
7242
7248
  onClick: closeErrorModal,
7243
7249
  children: "Close"
7244
7250
  })
@@ -12300,7 +12306,8 @@ var ConfirmationText = _styled("p", process.env.NODE_ENV === "production" ? {
12300
12306
  });
12301
12307
 
12302
12308
  var ConfirmationDialog = function ConfirmationDialog(_ref) {
12303
- var confirmationText = _ref.confirmationText,
12309
+ var title = _ref.title,
12310
+ confirmationText = _ref.confirmationText,
12304
12311
  onConfirm = _ref.onConfirm,
12305
12312
  isModalOpen = _ref.isModalOpen,
12306
12313
  onClose = _ref.onClose;
@@ -12310,7 +12317,7 @@ var ConfirmationDialog = function ConfirmationDialog(_ref) {
12310
12317
  };
12311
12318
  return jsxs(Modal, {
12312
12319
  isOpen: isModalOpen,
12313
- title: "Confirm your action",
12320
+ title: title || 'Confirm your action',
12314
12321
  onClose: onClose,
12315
12322
  children: [jsx(Modal.Content, {
12316
12323
  children: jsx(ConfirmationText, {
@@ -12806,6 +12813,20 @@ var ArrowMarker = function ArrowMarker() {
12806
12813
  fill: "black",
12807
12814
  stroke: "none"
12808
12815
  })
12816
+ }), jsx("marker", {
12817
+ id: "arrow-marker-arc",
12818
+ markerWidth: "5",
12819
+ markerHeight: "5",
12820
+ viewBox: "0 0 5 5",
12821
+ refX: "5",
12822
+ refY: "2.5",
12823
+ orient: "auto",
12824
+ children: jsx("use", {
12825
+ href: "#arrow-marker-content",
12826
+ transform: "rotate(180, 2.5, 2.5)",
12827
+ fill: "#365CFF",
12828
+ stroke: "none"
12829
+ })
12809
12830
  })]
12810
12831
  });
12811
12832
  };
@@ -13556,55 +13577,171 @@ var generateSequenceContextMenuProps = function generateSequenceContextMenuProps
13556
13577
  hasAntisense: hasAntisense
13557
13578
  };
13558
13579
  };
13580
+ function isEstablishHydrogenBondDisabled() {
13581
+ var selections = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
13582
+ return selections.every(function (selectionRange) {
13583
+ return selectionRange.every(function (selection) {
13584
+ return isTwoStrandedNodeRestrictedForHydrogenBondCreation(selection.twoStrandedNode);
13585
+ });
13586
+ });
13587
+ }
13588
+ function isNodeContainHydrogenBonds(node) {
13589
+ return node === null || node === void 0 ? void 0 : node.monomers.some(function (monomer) {
13590
+ return monomer.hydrogenBonds.length !== 0;
13591
+ });
13592
+ }
13593
+
13594
+ var getMonomersCode = function getMonomersCode(monomers) {
13595
+ return monomers.map(function (monomer) {
13596
+ return monomer.monomerItem.props.MonomerNaturalAnalogCode;
13597
+ }).sort().join('');
13598
+ };
13599
+ var isSenseBase = function isSenseBase(monomer) {
13600
+ var monomerItem = monomer.monomerItem;
13601
+ var isNaturalAnalogue = monomerItem.props.MonomerNaturalAnalogCode === 'A' || monomerItem.props.MonomerNaturalAnalogCode === 'C' || monomerItem.props.MonomerNaturalAnalogCode === 'G' || monomerItem.props.MonomerNaturalAnalogCode === 'T' || monomerItem.props.MonomerNaturalAnalogCode === 'U';
13602
+ if (isNaturalAnalogue) {
13603
+ return true;
13604
+ }
13605
+ if (!monomer.monomerItem.isAmbiguous) {
13606
+ return false;
13607
+ }
13608
+ if (monomer.subtype === KetAmbiguousMonomerTemplateSubType.MIXTURE) {
13609
+ return false;
13610
+ }
13611
+ var N1 = 'ACGT';
13612
+ var N2 = 'ACGU';
13613
+ var B1 = 'CGT';
13614
+ var B2 = 'CGU';
13615
+ var D1 = 'AGT';
13616
+ var D2 = 'AGU';
13617
+ var H1 = 'ACT';
13618
+ var H2 = 'ACU';
13619
+ var K1 = 'GT';
13620
+ var K2 = 'GU';
13621
+ var W1 = 'AT';
13622
+ var W2 = 'AU';
13623
+ var Y1 = 'CT';
13624
+ var Y2 = 'CU';
13625
+ var M = 'AC';
13626
+ var R = 'AG';
13627
+ var S = 'CG';
13628
+ var V = 'ACG';
13629
+ var ambigues = [N1, N2, B1, B2, D1, D2, H1, H2, K1, K2, W1, W2, Y1, Y2, M, R, S, V];
13630
+ var code = getMonomersCode(monomer.monomers);
13631
+ return ambigues.some(function (v) {
13632
+ return v === code;
13633
+ });
13634
+ };
13635
+ var isAntisenseCreationDisabled = function isAntisenseCreationDisabled(selectedMonomers) {
13636
+ return selectedMonomers === null || selectedMonomers === void 0 ? void 0 : selectedMonomers.some(function (selectedMonomer) {
13637
+ var rnaBaseForSugar = selectedMonomer instanceof Sugar && getRnaBaseFromSugar(selectedMonomer);
13638
+ return selectedMonomer instanceof RNABase && (selectedMonomer.hydrogenBonds.length > 0 || selectedMonomer.covalentBonds.length > 1) || isRnaBaseOrAmbiguousRnaBase(selectedMonomer) && !isSenseBase(selectedMonomer) || rnaBaseForSugar && (rnaBaseForSugar.hydrogenBonds.length > 0 || !isSenseBase(rnaBaseForSugar));
13639
+ });
13640
+ };
13559
13641
 
13560
13642
  var SequenceItemContextMenuNames;
13561
13643
  (function (SequenceItemContextMenuNames) {
13562
13644
  SequenceItemContextMenuNames["title"] = "sequence_menu_title";
13645
+ SequenceItemContextMenuNames["createRnaAntisenseStrand"] = "create_rna_antisense_strand";
13646
+ SequenceItemContextMenuNames["createDnaAntisenseStrand"] = "create_dna_antisense_strand";
13563
13647
  SequenceItemContextMenuNames["modifyInRnaBuilder"] = "modify_in_rna_builder";
13648
+ SequenceItemContextMenuNames["establishHydrogenBond"] = "establish_hydrogen_bond";
13649
+ SequenceItemContextMenuNames["deleteHydrogenBond"] = "delete_hydrogen_bond";
13564
13650
  SequenceItemContextMenuNames["editSequence"] = "edit_sequence";
13565
13651
  SequenceItemContextMenuNames["startNewSequence"] = "start_new_sequence";
13566
13652
  })(SequenceItemContextMenuNames || (SequenceItemContextMenuNames = {}));
13567
13653
  var SequenceItemContextMenu = function SequenceItemContextMenu(_ref) {
13654
+ var _selections$;
13568
13655
  var selections = _ref.selections;
13569
13656
  var editor = useAppSelector(selectEditor);
13570
13657
  var dispatch = useAppDispatch();
13571
13658
  var menuProps = generateSequenceContextMenuProps(selections);
13659
+ var extractedBaseMonomers = (selections === null || selections === void 0 || (_selections$ = selections[0]) === null || _selections$ === void 0 ? void 0 : _selections$.flatMap(function (item) {
13660
+ var node = item.node;
13661
+ return node ? [node.sugar, node.rnaBase, node.phosphate, node.monomer] : [];
13662
+ }).filter(function (baseMonomer) {
13663
+ return baseMonomer !== undefined;
13664
+ })) || [];
13572
13665
  var isSequenceEditInRNABuilderMode = useAppSelector(selectIsSequenceEditInRNABuilderMode);
13573
13666
  var isSequenceMode = useLayoutMode() === ModeTypes.sequence;
13667
+ var isAntisenseOptionHidden = function isAntisenseOptionHidden(_ref2) {
13668
+ var props = _ref2.props;
13669
+ return !(props !== null && props !== void 0 && props.sequenceItemRenderer) || !(extractedBaseMonomers !== null && extractedBaseMonomers !== void 0 && extractedBaseMonomers.some(function (selectedMonomer) {
13670
+ return selectedMonomer instanceof RNABase && getSugarFromRnaBase(selectedMonomer) || selectedMonomer instanceof Sugar && getRnaBaseFromSugar(selectedMonomer);
13671
+ }));
13672
+ };
13574
13673
  var menuItems = [{
13575
13674
  name: SequenceItemContextMenuNames.title,
13576
13675
  title: menuProps === null || menuProps === void 0 ? void 0 : menuProps.title,
13577
13676
  isMenuTitle: true,
13578
13677
  disabled: true,
13579
- hidden: function hidden(_ref2) {
13580
- var props = _ref2.props;
13678
+ hidden: function hidden(_ref3) {
13679
+ var props = _ref3.props;
13581
13680
  return !(props !== null && props !== void 0 && props.sequenceItemRenderer) || !(menuProps !== null && menuProps !== void 0 && menuProps.isSelectedAtLeastOneNucleoelement);
13582
13681
  }
13682
+ }, {
13683
+ name: SequenceItemContextMenuNames.createRnaAntisenseStrand,
13684
+ title: 'Create RNA antisense strand',
13685
+ disabled: isAntisenseCreationDisabled(extractedBaseMonomers),
13686
+ hidden: isAntisenseOptionHidden
13687
+ }, {
13688
+ name: SequenceItemContextMenuNames.createDnaAntisenseStrand,
13689
+ title: 'Create DNA antisense strand',
13690
+ disabled: isAntisenseCreationDisabled(extractedBaseMonomers),
13691
+ hidden: isAntisenseOptionHidden
13583
13692
  }, {
13584
13693
  name: SequenceItemContextMenuNames.modifyInRnaBuilder,
13585
13694
  title: 'Modify in RNA Builder...',
13586
13695
  disabled: !(menuProps !== null && menuProps !== void 0 && menuProps.isSelectedOnlyNucleoelements) || menuProps.hasAntisense,
13587
- hidden: function hidden(_ref3) {
13588
- var props = _ref3.props;
13696
+ hidden: function hidden(_ref4) {
13697
+ var props = _ref4.props;
13589
13698
  return !(props !== null && props !== void 0 && props.sequenceItemRenderer) || !(menuProps !== null && menuProps !== void 0 && menuProps.isSelectedAtLeastOneNucleoelement);
13590
13699
  }
13591
13700
  }, {
13592
13701
  name: SequenceItemContextMenuNames.editSequence,
13593
13702
  title: 'Edit sequence',
13594
13703
  disabled: false,
13595
- hidden: function hidden(_ref4) {
13596
- var props = _ref4.props;
13704
+ hidden: function hidden(_ref5) {
13705
+ var props = _ref5.props;
13597
13706
  return !(props !== null && props !== void 0 && props.sequenceItemRenderer);
13598
13707
  }
13599
13708
  }, {
13600
13709
  name: SequenceItemContextMenuNames.startNewSequence,
13601
13710
  title: 'Start new sequence',
13602
13711
  disabled: false
13712
+ }, {
13713
+ name: SequenceItemContextMenuNames.establishHydrogenBond,
13714
+ title: 'Establish Hydrogen Bonds',
13715
+ disabled: function disabled(_ref6) {
13716
+ var _props$sequenceItemRe;
13717
+ var props = _ref6.props;
13718
+ return (selections === null || selections === void 0 ? void 0 : selections.length) === 0 ? isTwoStrandedNodeRestrictedForHydrogenBondCreation(props === null || props === void 0 || (_props$sequenceItemRe = props.sequenceItemRenderer) === null || _props$sequenceItemRe === void 0 ? void 0 : _props$sequenceItemRe.twoStrandedNode) : isEstablishHydrogenBondDisabled(selections);
13719
+ },
13720
+ hidden: function hidden(_ref7) {
13721
+ var props = _ref7.props;
13722
+ return !(props !== null && props !== void 0 && props.sequenceItemRenderer);
13723
+ }
13724
+ }, {
13725
+ name: SequenceItemContextMenuNames.deleteHydrogenBond,
13726
+ title: 'Delete Hydrogen Bonds',
13727
+ disabled: function disabled(_ref8) {
13728
+ var _props$sequenceItemRe2;
13729
+ var props = _ref8.props;
13730
+ return (selections === null || selections === void 0 ? void 0 : selections.length) === 0 ? !isNodeContainHydrogenBonds(props === null || props === void 0 || (_props$sequenceItemRe2 = props.sequenceItemRenderer) === null || _props$sequenceItemRe2 === void 0 ? void 0 : _props$sequenceItemRe2.node) : !(selections !== null && selections !== void 0 && selections.some(function (selectionRange) {
13731
+ return selectionRange.some(function (selection) {
13732
+ return isNodeContainHydrogenBonds(selection.node);
13733
+ });
13734
+ }));
13735
+ },
13736
+ hidden: function hidden(_ref9) {
13737
+ var props = _ref9.props;
13738
+ return !(props !== null && props !== void 0 && props.sequenceItemRenderer);
13739
+ }
13603
13740
  }];
13604
- var handleMenuChange = function handleMenuChange(_ref5) {
13741
+ var handleMenuChange = function handleMenuChange(_ref10) {
13605
13742
  var _menuProps$selectedSe;
13606
- var id = _ref5.id,
13607
- props = _ref5.props;
13743
+ var id = _ref10.id,
13744
+ props = _ref10.props;
13608
13745
  switch (id) {
13609
13746
  case SequenceItemContextMenuNames.modifyInRnaBuilder:
13610
13747
  editor.events.turnOnSequenceEditInRNABuilderMode.dispatch();
@@ -13624,6 +13761,71 @@ var SequenceItemContextMenu = function SequenceItemContextMenu(_ref) {
13624
13761
  case SequenceItemContextMenuNames.editSequence:
13625
13762
  editor.events.editSequence.dispatch(props.sequenceItemRenderer);
13626
13763
  break;
13764
+ case SequenceItemContextMenuNames.createRnaAntisenseStrand:
13765
+ editor.events.createAntisenseChain.dispatch(false);
13766
+ break;
13767
+ case SequenceItemContextMenuNames.createDnaAntisenseStrand:
13768
+ editor.events.createAntisenseChain.dispatch(true);
13769
+ break;
13770
+ case SequenceItemContextMenuNames.establishHydrogenBond:
13771
+ editor.events.establishHydrogenBond.dispatch(props.sequenceItemRenderer);
13772
+ break;
13773
+ case SequenceItemContextMenuNames.deleteHydrogenBond:
13774
+ {
13775
+ var _props$sequenceItemRe3;
13776
+ var sequenceViewModel = SequenceRenderer.sequenceViewModel;
13777
+ var monomerToChain = sequenceViewModel.chainsCollection.monomerToChain;
13778
+ var antisenseChainToSelectedNodeMap = new Map();
13779
+ var selectedTwoStrandedNodes = selections !== null && selections !== void 0 && selections.length ? selections.reduce(function (acc, selectionRange) {
13780
+ return [].concat(_toConsumableArray(acc), _toConsumableArray(selectionRange));
13781
+ }, []).map(function (nodeSelection) {
13782
+ return nodeSelection.twoStrandedNode;
13783
+ }) : [(_props$sequenceItemRe3 = props.sequenceItemRenderer) === null || _props$sequenceItemRe3 === void 0 ? void 0 : _props$sequenceItemRe3.twoStrandedNode];
13784
+ selectedTwoStrandedNodes.forEach(function (selectedTwoStrandedNode) {
13785
+ if (selectedTwoStrandedNode.antisenseChain && selectedTwoStrandedNode.antisenseNode && !(selectedTwoStrandedNode.antisenseNode instanceof EmptySequenceNode || selectedTwoStrandedNode.antisenseNode instanceof BackBoneSequenceNode)) {
13786
+ if (!antisenseChainToSelectedNodeMap.has(selectedTwoStrandedNode.antisenseChain)) {
13787
+ antisenseChainToSelectedNodeMap.set(selectedTwoStrandedNode.antisenseChain, new Set());
13788
+ }
13789
+ var antisenseChainSelectedNodes = antisenseChainToSelectedNodeMap.get(selectedTwoStrandedNode.antisenseChain);
13790
+ if (!antisenseChainSelectedNodes) {
13791
+ return;
13792
+ }
13793
+ antisenseChainSelectedNodes.add(selectedTwoStrandedNode);
13794
+ }
13795
+ });
13796
+ var isGoingToDeleteAllHydrogenBondsForAnyChain = false;
13797
+ antisenseChainToSelectedNodeMap.forEach(function (selectedTwoStrandedNodes, chain) {
13798
+ var firstSelectedTwoStrandedNode = _toConsumableArray(selectedTwoStrandedNodes.values())[0];
13799
+ var senseChain = firstSelectedTwoStrandedNode.chain;
13800
+ var selectedAntisenseNodes = new Set(_toConsumableArray(selectedTwoStrandedNodes.values()).map(function (node) {
13801
+ return node.antisenseNode;
13802
+ }));
13803
+ var hasMoreHydrogenConnectionsThanSelected = chain.nodes.some(function (node) {
13804
+ return !selectedAntisenseNodes.has(node) && node.monomers.some(function (monomer) {
13805
+ return monomer.hydrogenBonds.some(function (hydrogenBond) {
13806
+ var anotherMonomer = hydrogenBond.getAnotherMonomer(monomer);
13807
+ var anotherChain = anotherMonomer && monomerToChain.get(anotherMonomer);
13808
+ return anotherChain === senseChain;
13809
+ });
13810
+ });
13811
+ });
13812
+ if (!hasMoreHydrogenConnectionsThanSelected) {
13813
+ isGoingToDeleteAllHydrogenBondsForAnyChain = true;
13814
+ }
13815
+ });
13816
+ if (isGoingToDeleteAllHydrogenBondsForAnyChain) {
13817
+ editor.events.openConfirmationDialog.dispatch({
13818
+ title: 'Deletion of all Hydrogen Bonds',
13819
+ confirmationText: 'Deleting all hydrogen bonds will cause the separation of two chains. Do you wish to proceed?',
13820
+ onConfirm: function onConfirm() {
13821
+ editor.events.deleteHydrogenBond.dispatch(props.sequenceItemRenderer);
13822
+ }
13823
+ });
13824
+ } else {
13825
+ editor.events.deleteHydrogenBond.dispatch(props.sequenceItemRenderer);
13826
+ }
13827
+ break;
13828
+ }
13627
13829
  }
13628
13830
  };
13629
13831
  var ketcherEditorRootElement = document.querySelector(KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR);
@@ -14920,12 +15122,13 @@ var PolymerBondContextMenu = function PolymerBondContextMenu() {
14920
15122
 
14921
15123
  function ownKeys(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; }
14922
15124
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14923
- var noPreviewTools = ['bond-single'];
15125
+ var noPreviewTools = [ToolName.bondSingle, ToolName.selectRectangle];
14924
15126
  var EditorEvents = function EditorEvents() {
14925
15127
  var editor = useAppSelector(selectEditor);
14926
15128
  var activeTool = useAppSelector(selectEditorActiveTool);
14927
15129
  var dispatch = useAppDispatch();
14928
15130
  var presets = useAppSelector(selectAllPresets);
15131
+ var hasAtLeastOneAntisense = useAppSelector(hasAntisenseChains);
14929
15132
  var handleMonomersLibraryUpdate = useCallback(function () {
14930
15133
  dispatch(loadMonomerLibrary(editor === null || editor === void 0 ? void 0 : editor.monomersLibrary));
14931
15134
  }, [editor]);
@@ -15123,65 +15326,25 @@ var EditorEvents = function EditorEvents() {
15123
15326
  editor === null || editor === void 0 || editor.events.mouseLeavePolymerBond.remove(handleClosePreview);
15124
15327
  };
15125
15328
  }, [editor, activeTool, handleOpenPreview, handleClosePreview]);
15329
+ useEffect(function () {
15330
+ if (!hasAtLeastOneAntisense) {
15331
+ editor === null || editor === void 0 || editor.events.resetSequenceEditMode.dispatch();
15332
+ }
15333
+ }, [hasAtLeastOneAntisense]);
15126
15334
  return jsx(Fragment, {});
15127
15335
  };
15128
15336
 
15129
- var getMonomersCode = function getMonomersCode(monomers) {
15130
- return monomers.map(function (monomer) {
15131
- return monomer.monomerItem.props.MonomerNaturalAnalogCode;
15132
- }).sort().join('');
15133
- };
15134
- var isSenseBase = function isSenseBase(monomer) {
15135
- var monomerItem = monomer.monomerItem;
15136
- var isNaturalAnalogue = monomerItem.props.MonomerNaturalAnalogCode === 'A' || monomerItem.props.MonomerNaturalAnalogCode === 'C' || monomerItem.props.MonomerNaturalAnalogCode === 'G' || monomerItem.props.MonomerNaturalAnalogCode === 'T' || monomerItem.props.MonomerNaturalAnalogCode === 'U';
15137
- if (isNaturalAnalogue) {
15138
- return true;
15139
- }
15140
- if (!monomer.monomerItem.isAmbiguous) {
15141
- return false;
15142
- }
15143
- if (monomer.subtype === KetAmbiguousMonomerTemplateSubType.MIXTURE) {
15144
- return false;
15145
- }
15146
- var N1 = 'ACGT';
15147
- var N2 = 'ACGU';
15148
- var B1 = 'CGT';
15149
- var B2 = 'CGU';
15150
- var D1 = 'AGT';
15151
- var D2 = 'AGU';
15152
- var H1 = 'ACT';
15153
- var H2 = 'ACU';
15154
- var K1 = 'GT';
15155
- var K2 = 'GU';
15156
- var W1 = 'AT';
15157
- var W2 = 'AU';
15158
- var Y1 = 'CT';
15159
- var Y2 = 'CU';
15160
- var M = 'AC';
15161
- var R = 'AG';
15162
- var S = 'CG';
15163
- var V = 'ACG';
15164
- var ambigues = [N1, N2, B1, B2, D1, D2, H1, H2, K1, K2, W1, W2, Y1, Y2, M, R, S, V];
15165
- var code = getMonomersCode(monomer.monomers);
15166
- return ambigues.some(function (v) {
15167
- return v === code;
15168
- });
15169
- };
15170
15337
  var SelectedMonomersContextMenu = function SelectedMonomersContextMenu(_ref) {
15171
15338
  var selectedMonomers = _ref.selectedMonomers;
15172
15339
  var editor = useAppSelector(selectEditor);
15173
- var isAntisenseCreationDisabled = selectedMonomers === null || selectedMonomers === void 0 ? void 0 : selectedMonomers.some(function (selectedMonomer) {
15174
- var rnaBaseForSugar = selectedMonomer instanceof Sugar && getRnaBaseFromSugar(selectedMonomer);
15175
- return selectedMonomer instanceof RNABase && (selectedMonomer.hydrogenBonds.length > 0 || selectedMonomer.covalentBonds.length > 1) || isRnaBaseOrAmbiguousRnaBase(selectedMonomer) && !isSenseBase(selectedMonomer) || rnaBaseForSugar && (rnaBaseForSugar.hydrogenBonds.length > 0 || !isSenseBase(rnaBaseForSugar));
15176
- });
15177
15340
  var menuItems = [{
15178
15341
  name: 'copy',
15179
15342
  title: 'Copy'
15180
15343
  }, {
15181
- name: 'create_antisense_chain',
15182
- title: 'Create Antisense Strand',
15183
- separator: true,
15184
- disabled: isAntisenseCreationDisabled,
15344
+ name: 'create_antisense_rna_chain',
15345
+ title: 'Create Antisense RNA Strand',
15346
+ separator: false,
15347
+ disabled: isAntisenseCreationDisabled(selectedMonomers),
15185
15348
  hidden: function hidden(_ref2) {
15186
15349
  var _props$selectedMonome;
15187
15350
  var props = _ref2.props;
@@ -15189,18 +15352,33 @@ var SelectedMonomersContextMenu = function SelectedMonomersContextMenu(_ref) {
15189
15352
  return selectedMonomer instanceof RNABase && getSugarFromRnaBase(selectedMonomer) || selectedMonomer instanceof Sugar && getRnaBaseFromSugar(selectedMonomer);
15190
15353
  }));
15191
15354
  }
15355
+ }, {
15356
+ name: 'create_antisense_dna_chain',
15357
+ title: 'Create Antisense DNA Strand',
15358
+ separator: true,
15359
+ disabled: isAntisenseCreationDisabled(selectedMonomers),
15360
+ hidden: function hidden(_ref3) {
15361
+ var _props$selectedMonome2;
15362
+ var props = _ref3.props;
15363
+ return !(props !== null && props !== void 0 && (_props$selectedMonome2 = props.selectedMonomers) !== null && _props$selectedMonome2 !== void 0 && _props$selectedMonome2.some(function (selectedMonomer) {
15364
+ return selectedMonomer instanceof RNABase && getSugarFromRnaBase(selectedMonomer) || selectedMonomer instanceof Sugar && getRnaBaseFromSugar(selectedMonomer);
15365
+ }));
15366
+ }
15192
15367
  }, {
15193
15368
  name: 'delete',
15194
15369
  title: 'Delete'
15195
15370
  }];
15196
- var handleMenuChange = function handleMenuChange(_ref3) {
15197
- var id = _ref3.id;
15371
+ var handleMenuChange = function handleMenuChange(_ref4) {
15372
+ var id = _ref4.id;
15198
15373
  switch (id) {
15199
15374
  case 'copy':
15200
15375
  editor.events.copySelectedStructure.dispatch();
15201
15376
  break;
15202
- case 'create_antisense_chain':
15203
- editor.events.createAntisenseChain.dispatch();
15377
+ case 'create_antisense_rna_chain':
15378
+ editor.events.createAntisenseChain.dispatch(false);
15379
+ break;
15380
+ case 'create_antisense_dna_chain':
15381
+ editor.events.createAntisenseChain.dispatch(true);
15204
15382
  break;
15205
15383
  case 'delete':
15206
15384
  editor.events.deleteSelectedStructure.dispatch();
@@ -15215,6 +15393,137 @@ var SelectedMonomersContextMenu = function SelectedMonomersContextMenu(_ref) {
15215
15393
  }), ketcherEditorRootElement);
15216
15394
  };
15217
15395
 
15396
+ var StyledButton = _styled(Button, process.env.NODE_ENV === "production" ? {
15397
+ target: "e1846tr80"
15398
+ } : {
15399
+ target: "e1846tr80",
15400
+ label: "StyledButton"
15401
+ })(function (_ref) {
15402
+ var theme = _ref.theme,
15403
+ isActive = _ref.isActive;
15404
+ return {
15405
+ width: '40px',
15406
+ height: '31px',
15407
+ backgroundColor: isActive ? theme.ketcher.color.button.group.active : 'white',
15408
+ marginRight: '8px',
15409
+ border: isActive ? theme.ketcher.outline.selected.color : theme.ketcher.outline.small,
15410
+ borderRadius: '4px',
15411
+ outline: 'none',
15412
+ ':hover': {
15413
+ backgroundColor: isActive ? theme.ketcher.color.button.group.hover : 'white'
15414
+ },
15415
+ ':hover svg': {
15416
+ fill: isActive ? 'white' : theme.ketcher.color.button.group.active
15417
+ }
15418
+ };
15419
+ }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlcXVlbmNlU3luY0VkaXRNb2RlQnV0dG9uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1QnFCIiwiZmlsZSI6IlNlcXVlbmNlU3luY0VkaXRNb2RlQnV0dG9uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzLCBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3QvanN4LXJ1bnRpbWVcIjtcclxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICogQ29weXJpZ2h0IDIwMjEgRVBBTSBTeXN0ZW1zXHJcbiAqXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbiAqXHJcbiAqICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKlxyXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB7IHVzZUFwcFNlbGVjdG9yLCB1c2VMYXlvdXRNb2RlIH0gZnJvbSBcIi4uLy4uL2hvb2tzXCI7XHJcbmltcG9ydCB7IGhhc0FudGlzZW5zZUNoYWlucywgc2VsZWN0RWRpdG9yIH0gZnJvbSBcIi4uLy4uL3N0YXRlL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBNb2RlVHlwZXMgfSBmcm9tICdrZXRjaGVyLWNvcmUnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJ2tldGNoZXItcmVhY3QnO1xyXG5pbXBvcnQgeyBibHVyQWN0aXZlRWxlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL2NhbnZhc1wiO1xyXG5jb25zdCBTdHlsZWRCdXR0b24gPSBzdHlsZWQoQnV0dG9uKSgoeyB0aGVtZSwgaXNBY3RpdmUgfSkgPT4gKHtcclxuICAgIHdpZHRoOiAnNDBweCcsXHJcbiAgICBoZWlnaHQ6ICczMXB4JyxcclxuICAgIGJhY2tncm91bmRDb2xvcjogaXNBY3RpdmVcclxuICAgICAgICA/IHRoZW1lLmtldGNoZXIuY29sb3IuYnV0dG9uLmdyb3VwLmFjdGl2ZVxyXG4gICAgICAgIDogJ3doaXRlJyxcclxuICAgIG1hcmdpblJpZ2h0OiAnOHB4JyxcclxuICAgIGJvcmRlcjogaXNBY3RpdmVcclxuICAgICAgICA/IHRoZW1lLmtldGNoZXIub3V0bGluZS5zZWxlY3RlZC5jb2xvclxyXG4gICAgICAgIDogdGhlbWUua2V0Y2hlci5vdXRsaW5lLnNtYWxsLFxyXG4gICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcclxuICAgIG91dGxpbmU6ICdub25lJyxcclxuICAgICc6aG92ZXInOiB7XHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpc0FjdGl2ZVxyXG4gICAgICAgICAgICA/IHRoZW1lLmtldGNoZXIuY29sb3IuYnV0dG9uLmdyb3VwLmhvdmVyXHJcbiAgICAgICAgICAgIDogJ3doaXRlJyxcclxuICAgIH0sXHJcbiAgICAnOmhvdmVyIHN2Zyc6IHtcclxuICAgICAgICBmaWxsOiBpc0FjdGl2ZSA/ICd3aGl0ZScgOiB0aGVtZS5rZXRjaGVyLmNvbG9yLmJ1dHRvbi5ncm91cC5hY3RpdmUsXHJcbiAgICB9LFxyXG59KSk7XHJcbmV4cG9ydCBjb25zdCBTZXF1ZW5jZVN5bmNFZGl0TW9kZUJ1dHRvbiA9ICgpID0+IHtcclxuICAgIGNvbnN0IGVkaXRvciA9IHVzZUFwcFNlbGVjdG9yKHNlbGVjdEVkaXRvcik7XHJcbiAgICBjb25zdCBbaXNTZXF1ZW5jZVN5bmNFZGl0TW9kZSwgc2V0SXNTZXF1ZW5jZVN5bmNFZGl0TW9kZV0gPSB1c2VTdGF0ZSh0cnVlKTtcclxuICAgIGNvbnN0IGxheW91dE1vZGUgPSB1c2VMYXlvdXRNb2RlKCk7XHJcbiAgICBjb25zdCBpc1NlcXVlbmNlTW9kZSA9IGxheW91dE1vZGUgPT09IE1vZGVUeXBlcy5zZXF1ZW5jZTtcclxuICAgIGNvbnN0IGhhc0F0TGVhc3RPbmVBbnRpc2Vuc2UgPSB1c2VBcHBTZWxlY3RvcihoYXNBbnRpc2Vuc2VDaGFpbnMpO1xyXG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNTZXF1ZW5jZVN5bmNFZGl0TW9kZU5ld1N0YXRlID0gIWlzU2VxdWVuY2VTeW5jRWRpdE1vZGU7XHJcbiAgICAgICAgc2V0SXNTZXF1ZW5jZVN5bmNFZGl0TW9kZShpc1NlcXVlbmNlU3luY0VkaXRNb2RlTmV3U3RhdGUpO1xyXG4gICAgICAgIGVkaXRvci5ldmVudHMudG9nZ2xlSXNTZXF1ZW5jZVN5bmNFZGl0TW9kZS5kaXNwYXRjaChpc1NlcXVlbmNlU3luY0VkaXRNb2RlTmV3U3RhdGUpO1xyXG4gICAgICAgIGJsdXJBY3RpdmVFbGVtZW50KCk7XHJcbiAgICB9O1xyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAoaXNTZXF1ZW5jZU1vZGUgJiYgaGFzQXRMZWFzdE9uZUFudGlzZW5zZSkge1xyXG4gICAgICAgICAgICBlZGl0b3IuZXZlbnRzLnRvZ2dsZUlzU2VxdWVuY2VTeW5jRWRpdE1vZGUuZGlzcGF0Y2goaXNTZXF1ZW5jZVN5bmNFZGl0TW9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzU2VxdWVuY2VNb2RlLCBoYXNBdExlYXN0T25lQW50aXNlbnNlXSk7XHJcbiAgICByZXR1cm4gaXNTZXF1ZW5jZU1vZGUgJiYgaGFzQXRMZWFzdE9uZUFudGlzZW5zZSA/IChfanN4KF9GcmFnbWVudCwgeyBjaGlsZHJlbjogX2pzeChTdHlsZWRCdXR0b24sIHsgaXNBY3RpdmU6IGlzU2VxdWVuY2VTeW5jRWRpdE1vZGUsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLCBjaGlsZHJlbjogX2pzeHMoXCJzdmdcIiwgeyB3aWR0aDogXCIyNFwiLCBoZWlnaHQ6IFwiMjRcIiwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgZmlsbDogaXNTZXF1ZW5jZVN5bmNFZGl0TW9kZSA/ICd3aGl0ZScgOiAnIzMzMzMzMycsIGNoaWxkcmVuOiBbX2pzeChcInJlY3RcIiwgeyB4OiBcIjFcIiwgeTogXCIxLjVcIiwgd2lkdGg6IFwiMjJcIiwgaGVpZ2h0OiBcIjJcIiwgcng6IFwiMVwiIH0pLCBfanN4KFwicmVjdFwiLCB7IHg6IFwiMi41XCIsIHk6IFwiMS41XCIsIHdpZHRoOiBcIjVcIiwgaGVpZ2h0OiBcIjEuNVwiLCByeDogXCIwLjc1XCIsIHRyYW5zZm9ybTogXCJyb3RhdGUoOTAgMi41IDEuNSlcIiB9KSwgX2pzeChcInJlY3RcIiwgeyB4OiBcIjkuMzMzMzNcIiwgeTogXCIxLjVcIiwgd2lkdGg6IFwiNVwiLCBoZWlnaHQ6IFwiMS41XCIsIHJ4OiBcIjAuNzVcIiwgdHJhbnNmb3JtOiBcInJvdGF0ZSg5MCA5LjMzMzMzIDEuNSlcIiB9KSwgX2pzeChcInJlY3RcIiwgeyB4OiBcIjE2LjE2NjdcIiwgeTogXCIxLjVcIiwgd2lkdGg6IFwiNVwiLCBoZWlnaHQ6IFwiMS41XCIsIHJ4OiBcIjAuNzVcIiwgdHJhbnNmb3JtOiBcInJvdGF0ZSg5MCAxNi4xNjY3IDEuNSlcIiB9KSwgX2pzeChcInJlY3RcIiwgeyB4OiBcIjIzXCIsIHk6IFwiMS41XCIsIHdpZHRoOiBcIjVcIiwgaGVpZ2h0OiBcIjEuNVwiLCByeDogXCIwLjc1XCIsIHRyYW5zZm9ybTogXCJyb3RhdGUoOTAgMjMgMS41KVwiIH0pLCBfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTIuMTY4NzMgMTQuMjcxNUMyLjA4OTYzIDE0LjM2NTIgMi4wMjUxOCAxNC40MjUzIDEuOTc1MzcgMTQuNDUxN0MxLjkyODUgMTQuNDc4IDEuODY5OSAxNC40OTEyIDEuNzk5NTkgMTQuNDkxMkMxLjY2MTg5IDE0LjQ5MTIgMS41NTA1NyAxNC40NDU4IDEuNDY1NjEgMTQuMzU1QzEuMzgzNTcgMTQuMjYxMiAxLjM0MjU2IDE0LjEwNzQgMS4zNDI1NiAxMy44OTM2VjEzLjI4NzFDMS4zNDI1NiAxMy4wNzAzIDEuMzgzNTcgMTIuOTE2NSAxLjQ2NTYxIDEyLjgyNTdDMS41NTA1NyAxMi43MzE5IDEuNjYxODkgMTIuNjg1MSAxLjc5OTU5IDEyLjY4NTFDMS45MDUwNiAxMi42ODUxIDEuOTkyOTUgMTIuNzEyOSAyLjA2MzI2IDEyLjc2ODZDMi4xMzY1IDEyLjgyNDIgMi4xOTIxNyAxMi45MTggMi4yMzAyNSAxMy4wNDk4QzIuMjY4MzQgMTMuMTc4NyAyLjMwNzg5IDEzLjI2NjYgMi4zNDg5MSAxMy4zMTM1QzIuNDMzODcgMTMuNDA0MyAyLjU4NDc1IDEzLjQ5NjYgMi44MDE1NCAxMy41OTAzQzMuMDE4MzQgMTMuNjg0MSAzLjI1NTY0IDEzLjczMSAzLjUxMzQ2IDEzLjczMUMzLjkxNDgyIDEzLjczMSA0LjI0NDQxIDEzLjYzNzIgNC41MDIyMyAxMy40NDk3QzQuNjY2MjkgMTMuMzM1NCA0Ljc0ODMyIDEzLjE5NDggNC43NDgzMiAxMy4wMjc4QzQuNzQ4MzIgMTIuOTE2NSA0LjcwODc3IDEyLjgxMjUgNC42Mjk2NyAxMi43MTU4QzQuNTUwNTcgMTIuNjE2MiA0LjQyMTY2IDEyLjUzNDIgNC4yNDI5NSAxMi40Njk3QzQuMTI1NzYgMTIuNDI1OCAzLjg2MzU1IDEyLjM2NTcgMy40NTYzMyAxMi4yODk2QzIuOTY0MTQgMTIuMTk4NyAyLjU5MjA3IDEyLjA4ODkgMi4zNDAxMiAxMS45NkMyLjA4ODE2IDExLjgzMTEgMS44ODg5NSAxMS42NDk0IDEuNzQyNDYgMTEuNDE1QzEuNTk1OTggMTEuMTgwNyAxLjUyMjczIDEwLjkyNzIgMS41MjI3MyAxMC42NTQ4QzEuNTIyNzMgMTAuMjI0MSAxLjcwMjkxIDkuODQ3NjYgMi4wNjMyNiA5LjUyNTM5QzIuNDIzNjEgOS4yMDAyIDIuODkyMzYgOS4wMzc2IDMuNDY5NTEgOS4wMzc2QzMuNzAwOTYgOS4wMzc2IDMuOTE0ODIgOS4wNjM5NiA0LjExMTExIDkuMTE2N0M0LjMxMDMzIDkuMTY2NSA0LjQ5MDUxIDkuMjQ0MTQgNC42NTE2NCA5LjM0OTYxQzQuNzY4ODMgOS4yMzUzNSA0Ljg4NjAyIDkuMTc4MjIgNS4wMDMyIDkuMTc4MjJDNS4xMzUwNCA5LjE3ODIyIDUuMjQxOTcgOS4yMjUxIDUuMzI0IDkuMzE4ODVDNS40MDg5NyA5LjQwOTY3IDUuNDUxNDUgOS41NjIwMSA1LjQ1MTQ1IDkuNzc1ODhWMTAuNDUyNkM1LjQ1MTQ1IDEwLjY2OTQgNS40MDg5NyAxMC44MjQ3IDUuMzI0IDEwLjkxODVDNS4yNDE5NyAxMS4wMDkzIDUuMTM1MDQgMTEuMDU0NyA1LjAwMzIgMTEuMDU0N0M0Ljg5MTg4IDExLjA1NDcgNC43OTUyIDExLjAyMSA0LjcxMzE2IDEwLjk1MzZDNC42NDg3MSAxMC45MDM4IDQuNjAwMzcgMTAuODA0MiA0LjU2ODE0IDEwLjY1NDhDNC41MzU5MiAxMC41MDU0IDQuNDk0OSAxMC4zOTg0IDQuNDQ1MSAxMC4zMzRDNC4zNjAxNCAxMC4yMjI3IDQuMjMyNyAxMC4xMjg5IDQuMDYyNzcgMTAuMDUyN0MzLjg5Mjg1IDkuOTc2NTYgMy42OTY1NiA5LjkzODQ4IDMuNDczOTEgOS45Mzg0OEMzLjE0ODcxIDkuOTM4NDggMi44OTA5IDEwLjAxNDYgMi43MDA0NyAxMC4xNjdDMi41MTI5NyAxMC4zMTY0IDIuNDE5MjIgMTAuNDczMSAyLjQxOTIyIDEwLjYzNzJDMi40MTkyMiAxMC43NDg1IDIuNDU3MyAxMC44NTY5IDIuNTMzNDggMTAuOTYyNEMyLjYxMjU4IDExLjA2NDkgMi43MjY4NCAxMS4xNDU1IDIuODc2MjUgMTEuMjA0MUMyLjk3NTg2IDExLjI0NTEgMy4yNTU2NCAxMS4zMTEgMy43MTU2MSAxMS40MDE5QzQuMTc4NSAxMS40OTI3IDQuNTMyOTkgMTEuNTkyMyA0Ljc3OTA4IDExLjcwMDdDNS4wMjgxMSAxMS44MDkxIDUuMjM0NjUgMTEuOTc5IDUuMzk4NzEgMTIuMjEwNEM1LjU2Mjc3IDEyLjQ0MTkgNS42NDQ4IDEyLjcxNzMgNS42NDQ4IDEzLjAzNjZDNS42NDQ4IDEzLjQ4MTkgNS40ODgwNyAxMy44Mzc5IDUuMTc0NTkgMTQuMTA0NUM0Ljc1ODU3IDE0LjQ1NjEgNC4yMjgzIDE0LjYzMTggMy41ODM3NyAxNC42MzE4QzMuMzM0NzUgMTQuNjMxOCAzLjA5MTU4IDE0LjYwMTEgMi44NTQyOCAxNC41Mzk2QzIuNjE5OSAxNC40ODEgMi4zOTEzOSAxNC4zOTE2IDIuMTY4NzMgMTQuMjcxNVpNOS42MTUgMTIuMjYzMlYxMy41OTkxSDEwLjIyMTRDMTAuNDM4MiAxMy41OTkxIDEwLjU5MjEgMTMuNjQxNiAxMC42ODI5IDEzLjcyNjZDMTAuNzc2NiAxMy44MDg2IDEwLjgyMzUgMTMuOTE3IDEwLjgyMzUgMTQuMDUxOEMxMC44MjM1IDE0LjE4MzYgMTAuNzc2NiAxNC4yOTIgMTAuNjgyOSAxNC4zNzdDMTAuNTkyMSAxNC40NTkgMTAuNDM4MiAxNC41IDEwLjIyMTQgMTQuNUg4LjEwNzY4QzcuODkzODEgMTQuNSA3Ljc0IDE0LjQ1OSA3LjY0NjI1IDE0LjM3N0M3LjU1NTQzIDE0LjI5MiA3LjUxMDAyIDE0LjE4MjEgNy41MTAwMiAxNC4wNDc0QzcuNTEwMDIgMTMuOTE1NSA3LjU1NTQzIDEzLjgwODYgNy42NDYyNSAxMy43MjY2QzcuNzQgMTMuNjQxNiA3Ljg5MzgxIDEzLjU5OTEgOC4xMDc2OCAxMy41OTkxSDguNzE0MTJWMTIuMjYzMkw3LjIyNDM4IDEwLjA3NDdDNy4wMjUxNiAxMC4wNzQ3IDYuODc4NjcgMTAuMDMyMiA2Ljc4NDkyIDkuOTQ3MjdDNi42OTQxIDkuODYyMyA2LjY0ODY5IDkuNzUzOTEgNi42NDg2OSA5LjYyMjA3QzYuNjQ4NjkgOS40ODczIDYuNjk0MSA5LjM3ODkxIDYuNzg0OTIgOS4yOTY4OEM2Ljg3ODY3IDkuMjExOTEgNy4wMzM5NSA5LjE2OTQzIDcuMjUwNzQgOS4xNjk0M0w4LjA2ODEzIDkuMTczODNDOC4yODQ5MiA5LjE3MzgzIDguNDM4NzMgOS4yMTQ4NCA4LjUyOTU1IDkuMjk2ODhDOC42MjMzIDkuMzc4OTEgOC42NzAxOCA5LjQ4NzMgOC42NzAxOCA5LjYyMjA3QzguNjcwMTggOS44MjQyMiA4LjU1MTUyIDkuOTc1MSA4LjMxNDIyIDEwLjA3NDdMOS4xNjY3NiAxMS4zMzE1TDEwLjAwMTcgMTAuMDc0N0M5Ljg2OTg4IDEwLjAyNDkgOS43NzYxMyA5Ljk2MTkxIDkuNzIwNDcgOS44ODU3NEM5LjY2NDggOS44MDk1NyA5LjYzNjk3IDkuNzIxNjggOS42MzY5NyA5LjYyMjA3QzkuNjM2OTcgOS40ODczIDkuNjgyMzggOS4zNzg5MSA5Ljc3MzIgOS4yOTY4OEM5Ljg2Njk1IDkuMjE0ODQgMTAuMDIyMiA5LjE3MjM2IDEwLjIzOSA5LjE2OTQzTDExLjA4NzIgOS4xNzM4M0MxMS4zMDQgOS4xNzM4MyAxMS40NTc4IDkuMjE0ODQgMTEuNTQ4NiA5LjI5Njg4QzExLjY0MjMgOS4zNzg5MSAxMS42ODkyIDkuNDg3MyAxMS42ODkyIDkuNjIyMDdDMTEuNjg5MiA5Ljc1Njg0IDExLjY0MjMgOS44NjY3IDExLjU0ODYgOS45NTE2NkMxMS40NTQ4IDEwLjAzMzcgMTEuMzAyNSAxMC4wNzQ3IDExLjA5MTYgMTAuMDc0N0w5LjYxNSAxMi4yNjMyWk0xMy43MDgyIDEwLjg3NDVWMTMuNTk5MUgxNC4wMzM0QzE0LjI1MDIgMTMuNTk5MSAxNC40MDQgMTMuNjQxNiAxNC40OTQ5IDEzLjcyNjZDMTQuNTg4NiAxMy44MDg2IDE0LjYzNTUgMTMuOTE3IDE0LjYzNTUgMTQuMDUxOEMxNC42MzU1IDE0LjE4MzYgMTQuNTg4NiAxNC4yOTIgMTQuNDk0OSAxNC4zNzdDMTQuNDA0IDE0LjQ1OSAxNC4yNTAyIDE0LjUgMTQuMDMzNCAxNC41SDEyLjg1MTNDMTIuNjM0NSAxNC41IDEyLjQ3OTIgMTQuNDU5IDEyLjM4NTUgMTQuMzc3QzEyLjI5NDcgMTQuMjkyIDEyLjI0OTMgMTQuMTgyMSAxMi4yNDkzIDE0LjA0NzRDMTIuMjQ5MyAxMy45MTg1IDEyLjI5NDcgMTMuODExNSAxMi4zODU1IDEzLjcyNjZDMTIuNDc2MyAxMy42NDE2IDEyLjYxNjkgMTMuNTk5MSAxMi44MDc0IDEzLjU5OTFWMTAuMDc0N0gxMi42NjY3QzEyLjQ0OTkgMTAuMDc0NyAxMi4yOTQ3IDEwLjAzMzcgMTIuMjAwOSA5Ljk1MTY2QzEyLjExMDEgOS44NjY3IDEyLjA2NDcgOS43NTY4NCAxMi4wNjQ3IDkuNjIyMDdDMTIuMDY0NyA5LjQ4NzMgMTIuMTEwMSA5LjM3ODkxIDEyLjIwMDkgOS4yOTY4OEMxMi4yOTQ3IDkuMjExOTEgMTIuNDQ5OSA5LjE2OTQzIDEyLjY2NjcgOS4xNjk0M0wxMy43MDgyIDkuMTczODNMMTYuMDExIDEyLjc4NjFWMTAuMDc0N0gxNS42ODU4QzE1LjQ2OSAxMC4wNzQ3IDE1LjMxMzcgMTAuMDMzNyAxNS4yMiA5Ljk1MTY2QzE1LjEyOTEgOS44NjY3IDE1LjA4MzcgOS43NTY4NCAxNS4wODM3IDkuNjIyMDdDMTUuMDgzNyA5LjQ4NzMgMTUuMTI5MSA5LjM3ODkxIDE1LjIyIDkuMjk2ODhDMTUuMzEzNyA5LjIxMTkxIDE1LjQ2OSA5LjE2OTQzIDE1LjY4NTggOS4xNjk0M0wxNi44Njc5IDkuMTczODNDMTcuMDg0NyA5LjE3MzgzIDE3LjIzODUgOS4yMTQ4NCAxNy4zMjkzIDkuMjk2ODhDMTcuNDIzMSA5LjM3ODkxIDE3LjQ3IDkuNDg3MyAxNy40NyA5LjYyMjA3QzE3LjQ3IDkuNzUzOTEgMTcuNDI0NiA5Ljg2MjMgMTcuMzMzNyA5Ljk0NzI3QzE3LjI0MjkgMTAuMDMyMiAxNy4xMDM4IDEwLjA3NDcgMTYuOTE2MyAxMC4wNzQ3VjE0LjVIMTYuMDI0MkwxMy43MDgyIDEwLjg3NDVaTTIxLjkyMzYgOS40MDIzNEMyMS45NzkyIDkuMzI2MTcgMjIuMDM5MyA5LjI2OTA0IDIyLjEwMzcgOS4yMzA5NkMyMi4xNzExIDkuMTkyODcgMjIuMjQyOSA5LjE3MzgzIDIyLjMxOTEgOS4xNzM4M0MyMi40NTA5IDkuMTczODMgMjIuNTU3OCA5LjIxOTI0IDIyLjYzOTkgOS4zMTAwNkMyMi43MjQ4IDkuNDAwODggMjIuNzY3MyA5LjU1NDY5IDIyLjc2NzMgOS43NzE0OFYxMC41MzYxQzIyLjc2NzMgMTAuNzUyOSAyMi43MjQ4IDEwLjkwODIgMjIuNjM5OSAxMS4wMDJDMjIuNTU3OCAxMS4wOTI4IDIyLjQ1MDkgMTEuMTM4MiAyMi4zMTkxIDExLjEzODJDMjIuMTk4OSAxMS4xMzgyIDIyLjEwMjMgMTEuMTA0NSAyMi4wMjkgMTEuMDM3MUMyMS45NTU4IDEwLjk2OTcgMjEuOTAxNiAxMC44NDM4IDIxLjg2NjQgMTAuNjU5MkMyMS44NDU5IDEwLjUzNjEgMjEuODA0OSAxMC40NDA5IDIxLjc0MzQgMTAuMzczNUMyMS42MjMzIDEwLjI0MTcgMjEuNDU0OCAxMC4xMzYyIDIxLjIzOCAxMC4wNTcxQzIxLjAyNDEgOS45NzgwMyAyMC44MDg4IDkuOTM4NDggMjAuNTkyIDkuOTM4NDhDMjAuMzIyNSA5LjkzODQ4IDIwLjA3NDkgOS45OTcwNyAxOS44NDkzIDEwLjExNDNDMTkuNjIzNyAxMC4yMzE0IDE5LjQyNDUgMTAuNDIxOSAxOS4yNTE3IDEwLjY4NTVDMTkuMDc4OCAxMC45NDkyIDE4Ljk5MjQgMTEuMjYyNyAxOC45OTI0IDExLjYyNlYxMi4yMTA0QzE4Ljk5MjQgMTIuNjQ0IDE5LjE0OTEgMTMuMDA1OSAxOS40NjI2IDEzLjI5NTlDMTkuNzc5IDEzLjU4NTkgMjAuMjE3IDEzLjczMSAyMC43NzY2IDEzLjczMUMyMS4xMTA2IDEzLjczMSAyMS4zOTMzIDEzLjY4NTUgMjEuNjI0NyAxMy41OTQ3QzIxLjc1OTUgMTMuNTQyIDIxLjkwMyAxMy40MzggMjIuMDU1NCAxMy4yODI3QzIyLjE0OTEgMTMuMTg5IDIyLjIyMjQgMTMuMTI4OSAyMi4yNzUxIDEzLjEwMjVDMjIuMzI3OSAxMy4wNzMyIDIyLjM4NzkgMTMuMDU4NiAyMi40NTUzIDEzLjA1ODZDMjIuNTc1NCAxMy4wNTg2IDIyLjY4MDkgMTMuMTA0IDIyLjc3MTcgMTMuMTk0OEMyMi44NjI1IDEzLjI4NTYgMjIuOTA3OSAxMy4zOTI2IDIyLjkwNzkgMTMuNTE1NkMyMi45MDc5IDEzLjYzODcgMjIuODQ2NCAxMy43NzA1IDIyLjcyMzQgMTMuOTExMUMyMi41NDQ2IDE0LjExNjIgMjIuMzE0NyAxNC4yNzczIDIyLjAzMzQgMTQuMzk0NUMyMS42NTU1IDE0LjU1MjcgMjEuMjM4IDE0LjYzMTggMjAuNzgxIDE0LjYzMThDMjAuMjQ3OCAxNC42MzE4IDE5Ljc2NzMgMTQuNTIyIDE5LjMzOTYgMTQuMzAyMkMxOC45OTM5IDE0LjEyNjUgMTguNjk5NCAxMy44NDk2IDE4LjQ1NjMgMTMuNDcxN0MxOC4yMTMxIDEzLjA5MDggMTguMDkxNSAxMi42NzYzIDE4LjA5MTUgMTIuMjI4VjExLjYxNzJDMTguMDkxNSAxMS4xNDg0IDE4LjE5OTkgMTAuNzExOSAxOC40MTY3IDEwLjMwNzZDMTguNjM2NCA5LjkwMDM5IDE4LjkzOTcgOS41ODY5MSAxOS4zMjY0IDkuMzY3MTlDMTkuNzEzMSA5LjE0NzQ2IDIwLjEyMzMgOS4wMzc2IDIwLjU1NjkgOS4wMzc2QzIwLjgxNzYgOS4wMzc2IDIxLjA2MDggOS4wNjgzNiAyMS4yODYzIDkuMTI5ODhDMjEuNTE0OSA5LjE4ODQ4IDIxLjcyNzMgOS4yNzkzIDIxLjkyMzYgOS40MDIzNFpcIiB9KSwgX2pzeChcInJlY3RcIiwgeyB4OiBcIjIzXCIsIHk6IFwiMjIuNVwiLCB3aWR0aDogXCIyMlwiLCBoZWlnaHQ6IFwiMlwiLCByeDogXCIxXCIsIHRyYW5zZm9ybTogXCJyb3RhdGUoLTE4MCAyMyAyMi41KVwiIH0pLCBfanN4KFwicmVjdFwiLCB7IHg6IFwiMjEuNVwiLCB5OiBcIjIyLjVcIiwgd2lkdGg6IFwiNVwiLCBoZWlnaHQ6IFwiMS41XCIsIHJ4OiBcIjAuNzVcIiwgdHJhbnNmb3JtOiBcInJvdGF0ZSgtOTAgMjEuNSAyMi41KVwiIH0pLCBfanN4KFwicmVjdFwiLCB7IHg6IFwiMTQuNjY2N1wiLCB5OiBcIjIyLjVcIiwgd2lkdGg6IFwiNVwiLCBoZWlnaHQ6IFwiMS41XCIsIHJ4OiBcIjAuNzVcIiwgdHJhbnNmb3JtOiBcInJvdGF0ZSgtOTAgMTQuNjY2NyAyMi41KVwiIH0pLCBfanN4KFwicmVjdFwiLCB7IHg6IFwiNy44MzMzM1wiLCB5OiBcIjIyLjVcIiwgd2lkdGg6IFwiNVwiLCBoZWlnaHQ6IFwiMS41XCIsIHJ4OiBcIjAuNzVcIiwgdHJhbnNmb3JtOiBcInJvdGF0ZSgtOTAgNy44MzMzMyAyMi41KVwiIH0pLCBfanN4KFwicmVjdFwiLCB7IHg6IFwiMVwiLCB5OiBcIjIyLjVcIiwgd2lkdGg6IFwiNVwiLCBoZWlnaHQ6IFwiMS41XCIsIHJ4OiBcIjAuNzVcIiwgdHJhbnNmb3JtOiBcInJvdGF0ZSgtOTAgMSAyMi41KVwiIH0pXSB9KSB9KSB9KSkgOiBudWxsO1xyXG59O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1TZXF1ZW5jZVN5bmNFZGl0TW9kZUJ1dHRvbi5qcy5tYXAiXX0= */");
15420
+ var SequenceSyncEditModeButton = function SequenceSyncEditModeButton() {
15421
+ var editor = useAppSelector(selectEditor);
15422
+ var _useState = useState(true),
15423
+ _useState2 = _slicedToArray(_useState, 2),
15424
+ isSequenceSyncEditMode = _useState2[0],
15425
+ setIsSequenceSyncEditMode = _useState2[1];
15426
+ var layoutMode = useLayoutMode();
15427
+ var isSequenceMode = layoutMode === ModeTypes.sequence;
15428
+ var hasAtLeastOneAntisense = useAppSelector(hasAntisenseChains);
15429
+ var handleClick = function handleClick() {
15430
+ var isSequenceSyncEditModeNewState = !isSequenceSyncEditMode;
15431
+ setIsSequenceSyncEditMode(isSequenceSyncEditModeNewState);
15432
+ editor.events.toggleIsSequenceSyncEditMode.dispatch(isSequenceSyncEditModeNewState);
15433
+ blurActiveElement();
15434
+ };
15435
+ useEffect(function () {
15436
+ if (isSequenceMode && hasAtLeastOneAntisense) {
15437
+ editor.events.toggleIsSequenceSyncEditMode.dispatch(isSequenceSyncEditMode);
15438
+ }
15439
+ }, [isSequenceMode, hasAtLeastOneAntisense]);
15440
+ return isSequenceMode && hasAtLeastOneAntisense ? jsx(Fragment, {
15441
+ children: jsx(StyledButton, {
15442
+ isActive: isSequenceSyncEditMode,
15443
+ onClick: handleClick,
15444
+ children: jsxs("svg", {
15445
+ width: "24",
15446
+ height: "24",
15447
+ viewBox: "0 0 24 24",
15448
+ xmlns: "http://www.w3.org/2000/svg",
15449
+ fill: isSequenceSyncEditMode ? 'white' : '#333333',
15450
+ children: [jsx("rect", {
15451
+ x: "1",
15452
+ y: "1.5",
15453
+ width: "22",
15454
+ height: "2",
15455
+ rx: "1"
15456
+ }), jsx("rect", {
15457
+ x: "2.5",
15458
+ y: "1.5",
15459
+ width: "5",
15460
+ height: "1.5",
15461
+ rx: "0.75",
15462
+ transform: "rotate(90 2.5 1.5)"
15463
+ }), jsx("rect", {
15464
+ x: "9.33333",
15465
+ y: "1.5",
15466
+ width: "5",
15467
+ height: "1.5",
15468
+ rx: "0.75",
15469
+ transform: "rotate(90 9.33333 1.5)"
15470
+ }), jsx("rect", {
15471
+ x: "16.1667",
15472
+ y: "1.5",
15473
+ width: "5",
15474
+ height: "1.5",
15475
+ rx: "0.75",
15476
+ transform: "rotate(90 16.1667 1.5)"
15477
+ }), jsx("rect", {
15478
+ x: "23",
15479
+ y: "1.5",
15480
+ width: "5",
15481
+ height: "1.5",
15482
+ rx: "0.75",
15483
+ transform: "rotate(90 23 1.5)"
15484
+ }), jsx("path", {
15485
+ d: "M2.16873 14.2715C2.08963 14.3652 2.02518 14.4253 1.97537 14.4517C1.9285 14.478 1.8699 14.4912 1.79959 14.4912C1.66189 14.4912 1.55057 14.4458 1.46561 14.355C1.38357 14.2612 1.34256 14.1074 1.34256 13.8936V13.2871C1.34256 13.0703 1.38357 12.9165 1.46561 12.8257C1.55057 12.7319 1.66189 12.6851 1.79959 12.6851C1.90506 12.6851 1.99295 12.7129 2.06326 12.7686C2.1365 12.8242 2.19217 12.918 2.23025 13.0498C2.26834 13.1787 2.30789 13.2666 2.34891 13.3135C2.43387 13.4043 2.58475 13.4966 2.80154 13.5903C3.01834 13.6841 3.25564 13.731 3.51346 13.731C3.91482 13.731 4.24441 13.6372 4.50223 13.4497C4.66629 13.3354 4.74832 13.1948 4.74832 13.0278C4.74832 12.9165 4.70877 12.8125 4.62967 12.7158C4.55057 12.6162 4.42166 12.5342 4.24295 12.4697C4.12576 12.4258 3.86355 12.3657 3.45633 12.2896C2.96414 12.1987 2.59207 12.0889 2.34012 11.96C2.08816 11.8311 1.88895 11.6494 1.74246 11.415C1.59598 11.1807 1.52273 10.9272 1.52273 10.6548C1.52273 10.2241 1.70291 9.84766 2.06326 9.52539C2.42361 9.2002 2.89236 9.0376 3.46951 9.0376C3.70096 9.0376 3.91482 9.06396 4.11111 9.1167C4.31033 9.1665 4.49051 9.24414 4.65164 9.34961C4.76883 9.23535 4.88602 9.17822 5.0032 9.17822C5.13504 9.17822 5.24197 9.2251 5.324 9.31885C5.40897 9.40967 5.45145 9.56201 5.45145 9.77588V10.4526C5.45145 10.6694 5.40897 10.8247 5.324 10.9185C5.24197 11.0093 5.13504 11.0547 5.0032 11.0547C4.89188 11.0547 4.7952 11.021 4.71316 10.9536C4.64871 10.9038 4.60037 10.8042 4.56814 10.6548C4.53592 10.5054 4.4949 10.3984 4.4451 10.334C4.36014 10.2227 4.2327 10.1289 4.06277 10.0527C3.89285 9.97656 3.69656 9.93848 3.47391 9.93848C3.14871 9.93848 2.8909 10.0146 2.70047 10.167C2.51297 10.3164 2.41922 10.4731 2.41922 10.6372C2.41922 10.7485 2.4573 10.8569 2.53348 10.9624C2.61258 11.0649 2.72684 11.1455 2.87625 11.2041C2.97586 11.2451 3.25564 11.311 3.71561 11.4019C4.1785 11.4927 4.53299 11.5923 4.77908 11.7007C5.02811 11.8091 5.23465 11.979 5.39871 12.2104C5.56277 12.4419 5.6448 12.7173 5.6448 13.0366C5.6448 13.4819 5.48807 13.8379 5.17459 14.1045C4.75857 14.4561 4.2283 14.6318 3.58377 14.6318C3.33475 14.6318 3.09158 14.6011 2.85428 14.5396C2.6199 14.481 2.39139 14.3916 2.16873 14.2715ZM9.615 12.2632V13.5991H10.2214C10.4382 13.5991 10.5921 13.6416 10.6829 13.7266C10.7766 13.8086 10.8235 13.917 10.8235 14.0518C10.8235 14.1836 10.7766 14.292 10.6829 14.377C10.5921 14.459 10.4382 14.5 10.2214 14.5H8.10768C7.89381 14.5 7.74 14.459 7.64625 14.377C7.55543 14.292 7.51002 14.1821 7.51002 14.0474C7.51002 13.9155 7.55543 13.8086 7.64625 13.7266C7.74 13.6416 7.89381 13.5991 8.10768 13.5991H8.71412V12.2632L7.22438 10.0747C7.02516 10.0747 6.87867 10.0322 6.78492 9.94727C6.6941 9.8623 6.64869 9.75391 6.64869 9.62207C6.64869 9.4873 6.6941 9.37891 6.78492 9.29688C6.87867 9.21191 7.03395 9.16943 7.25074 9.16943L8.06813 9.17383C8.28492 9.17383 8.43873 9.21484 8.52955 9.29688C8.6233 9.37891 8.67018 9.4873 8.67018 9.62207C8.67018 9.82422 8.55152 9.9751 8.31422 10.0747L9.16676 11.3315L10.0017 10.0747C9.86988 10.0249 9.77613 9.96191 9.72047 9.88574C9.6648 9.80957 9.63697 9.72168 9.63697 9.62207C9.63697 9.4873 9.68238 9.37891 9.7732 9.29688C9.86695 9.21484 10.0222 9.17236 10.239 9.16943L11.0872 9.17383C11.304 9.17383 11.4578 9.21484 11.5486 9.29688C11.6423 9.37891 11.6892 9.4873 11.6892 9.62207C11.6892 9.75684 11.6423 9.8667 11.5486 9.95166C11.4548 10.0337 11.3025 10.0747 11.0916 10.0747L9.615 12.2632ZM13.7082 10.8745V13.5991H14.0334C14.2502 13.5991 14.404 13.6416 14.4949 13.7266C14.5886 13.8086 14.6355 13.917 14.6355 14.0518C14.6355 14.1836 14.5886 14.292 14.4949 14.377C14.404 14.459 14.2502 14.5 14.0334 14.5H12.8513C12.6345 14.5 12.4792 14.459 12.3855 14.377C12.2947 14.292 12.2493 14.1821 12.2493 14.0474C12.2493 13.9185 12.2947 13.8115 12.3855 13.7266C12.4763 13.6416 12.6169 13.5991 12.8074 13.5991V10.0747H12.6667C12.4499 10.0747 12.2947 10.0337 12.2009 9.95166C12.1101 9.8667 12.0647 9.75684 12.0647 9.62207C12.0647 9.4873 12.1101 9.37891 12.2009 9.29688C12.2947 9.21191 12.4499 9.16943 12.6667 9.16943L13.7082 9.17383L16.011 12.7861V10.0747H15.6858C15.469 10.0747 15.3137 10.0337 15.22 9.95166C15.1291 9.8667 15.0837 9.75684 15.0837 9.62207C15.0837 9.4873 15.1291 9.37891 15.22 9.29688C15.3137 9.21191 15.469 9.16943 15.6858 9.16943L16.8679 9.17383C17.0847 9.17383 17.2385 9.21484 17.3293 9.29688C17.4231 9.37891 17.47 9.4873 17.47 9.62207C17.47 9.75391 17.4246 9.8623 17.3337 9.94727C17.2429 10.0322 17.1038 10.0747 16.9163 10.0747V14.5H16.0242L13.7082 10.8745ZM21.9236 9.40234C21.9792 9.32617 22.0393 9.26904 22.1037 9.23096C22.1711 9.19287 22.2429 9.17383 22.3191 9.17383C22.4509 9.17383 22.5578 9.21924 22.6399 9.31006C22.7248 9.40088 22.7673 9.55469 22.7673 9.77148V10.5361C22.7673 10.7529 22.7248 10.9082 22.6399 11.002C22.5578 11.0928 22.4509 11.1382 22.3191 11.1382C22.1989 11.1382 22.1023 11.1045 22.029 11.0371C21.9558 10.9697 21.9016 10.8438 21.8664 10.6592C21.8459 10.5361 21.8049 10.4409 21.7434 10.3735C21.6233 10.2417 21.4548 10.1362 21.238 10.0571C21.0241 9.97803 20.8088 9.93848 20.592 9.93848C20.3225 9.93848 20.0749 9.99707 19.8493 10.1143C19.6237 10.2314 19.4245 10.4219 19.2517 10.6855C19.0788 10.9492 18.9924 11.2627 18.9924 11.626V12.2104C18.9924 12.644 19.1491 13.0059 19.4626 13.2959C19.779 13.5859 20.217 13.731 20.7766 13.731C21.1106 13.731 21.3933 13.6855 21.6247 13.5947C21.7595 13.542 21.903 13.438 22.0554 13.2827C22.1491 13.189 22.2224 13.1289 22.2751 13.1025C22.3279 13.0732 22.3879 13.0586 22.4553 13.0586C22.5754 13.0586 22.6809 13.104 22.7717 13.1948C22.8625 13.2856 22.9079 13.3926 22.9079 13.5156C22.9079 13.6387 22.8464 13.7705 22.7234 13.9111C22.5446 14.1162 22.3147 14.2773 22.0334 14.3945C21.6555 14.5527 21.238 14.6318 20.781 14.6318C20.2478 14.6318 19.7673 14.522 19.3396 14.3022C18.9939 14.1265 18.6994 13.8496 18.4563 13.4717C18.2131 13.0908 18.0915 12.6763 18.0915 12.228V11.6172C18.0915 11.1484 18.1999 10.7119 18.4167 10.3076C18.6364 9.90039 18.9397 9.58691 19.3264 9.36719C19.7131 9.14746 20.1233 9.0376 20.5569 9.0376C20.8176 9.0376 21.0608 9.06836 21.2863 9.12988C21.5149 9.18848 21.7273 9.2793 21.9236 9.40234Z"
15486
+ }), jsx("rect", {
15487
+ x: "23",
15488
+ y: "22.5",
15489
+ width: "22",
15490
+ height: "2",
15491
+ rx: "1",
15492
+ transform: "rotate(-180 23 22.5)"
15493
+ }), jsx("rect", {
15494
+ x: "21.5",
15495
+ y: "22.5",
15496
+ width: "5",
15497
+ height: "1.5",
15498
+ rx: "0.75",
15499
+ transform: "rotate(-90 21.5 22.5)"
15500
+ }), jsx("rect", {
15501
+ x: "14.6667",
15502
+ y: "22.5",
15503
+ width: "5",
15504
+ height: "1.5",
15505
+ rx: "0.75",
15506
+ transform: "rotate(-90 14.6667 22.5)"
15507
+ }), jsx("rect", {
15508
+ x: "7.83333",
15509
+ y: "22.5",
15510
+ width: "5",
15511
+ height: "1.5",
15512
+ rx: "0.75",
15513
+ transform: "rotate(-90 7.83333 22.5)"
15514
+ }), jsx("rect", {
15515
+ x: "1",
15516
+ y: "22.5",
15517
+ width: "5",
15518
+ height: "1.5",
15519
+ rx: "0.75",
15520
+ transform: "rotate(-90 1 22.5)"
15521
+ })]
15522
+ })
15523
+ })
15524
+ }) : null;
15525
+ };
15526
+
15218
15527
  var muiTheme = createTheme(muiOverrides);
15219
15528
  function EditorContainer(_ref) {
15220
15529
  var onInit = _ref.onInit,
@@ -15351,7 +15660,7 @@ function Editor(_ref2) {
15351
15660
  shortened: isMonomerLibraryHidden,
15352
15661
  "data-testid": "top-toolbar",
15353
15662
  children: [jsx(TopMenuComponent, {}), jsxs(TopMenuRightWrapper, {
15354
- children: [jsx(LayoutModeButton, {}), jsx(SequenceTypeGroupButton, {}), jsx(TogglerComponentWrapper, {
15663
+ children: [jsx(SequenceSyncEditModeButton, {}), jsx(LayoutModeButton, {}), jsx(SequenceTypeGroupButton, {}), jsx(TogglerComponentWrapper, {
15355
15664
  className: isSequenceEditInRNABuilderMode ? 'toggler-component-wrapper--disabled' : '',
15356
15665
  children: togglerComponent
15357
15666
  }), jsx(FullscreenButton, {}), jsx(VerticalDivider, {}), jsx(ZoomControls, {})]
@@ -15423,4 +15732,4 @@ function Editor(_ref2) {
15423
15732
  }
15424
15733
 
15425
15734
  export { EditorContainer as default };
15426
- //# sourceMappingURL=index.modern-b4203ed1.js.map
15735
+ //# sourceMappingURL=index.modern-ef6b0e2f.js.map