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.
@@ -3288,8 +3288,12 @@ var selectEditorLayoutMode = function selectEditorLayoutMode(state) {
3288
3288
  return state.editor.editorLayoutMode;
3289
3289
  };
3290
3290
  var selectIsHandToolSelected = function selectIsHandToolSelected(state) {
3291
- var _state$editor$editor3;
3292
- return (_state$editor$editor3 = state.editor.editor) === null || _state$editor$editor3 === void 0 ? void 0 : _state$editor$editor3.isHandToolSelected;
3291
+ var _state$editor$editor4;
3292
+ return (_state$editor$editor4 = state.editor.editor) === null || _state$editor$editor4 === void 0 ? void 0 : _state$editor$editor4.isHandToolSelected;
3293
+ };
3294
+ var hasAntisenseChains = function hasAntisenseChains(state) {
3295
+ var _state$editor$editor5;
3296
+ 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;
3293
3297
  };
3294
3298
  var editorReducer = editorSlice.reducer;
3295
3299
 
@@ -4633,7 +4637,9 @@ var muiOverrides = {
4633
4637
 
4634
4638
  var getGlobalStyles = function getGlobalStyles(theme) {
4635
4639
  return react.css({
4636
- body: {
4640
+ all: 'unset',
4641
+ '.Ketcher-polymer-editor-root': {
4642
+ all: 'unset',
4637
4643
  fontSize: theme.ketcher.font.size.medium,
4638
4644
  fontFamily: theme.ketcher.font.family.inter,
4639
4645
  fontWeight: theme.ketcher.font.weight.regular,
@@ -4641,42 +4647,42 @@ var getGlobalStyles = function getGlobalStyles(theme) {
4641
4647
  color: theme.ketcher.color.text.primary,
4642
4648
  boxSizing: 'border-box'
4643
4649
  },
4644
- div: {
4650
+ ':where(.Ketcher-polymer-editor-root) div': {
4645
4651
  boxSizing: 'border-box'
4646
4652
  },
4647
- input: {
4653
+ ':where(.Ketcher-polymer-editor-root) input': {
4648
4654
  fontFamily: theme.ketcher.font.family.inter,
4649
4655
  fontWeight: theme.ketcher.font.weight.regular,
4650
4656
  fontSize: theme.ketcher.font.size.regular,
4651
4657
  boxSizing: 'border-box'
4652
4658
  },
4653
- h1: {
4659
+ ':where(.Ketcher-polymer-editor-root) h1': {
4654
4660
  fontSize: 96
4655
4661
  },
4656
- h2: {
4662
+ ':where(.Ketcher-polymer-editor-root) h2': {
4657
4663
  fontSize: 60
4658
4664
  },
4659
- h3: {
4665
+ ':where(.Ketcher-polymer-editor-root) h3': {
4660
4666
  fontSize: 48
4661
4667
  },
4662
- h4: {
4668
+ ':where(.Ketcher-polymer-editor-root) h4': {
4663
4669
  fontSize: 34
4664
4670
  },
4665
- h5: {
4671
+ ':where(.Ketcher-polymer-editor-root) h5': {
4666
4672
  fontSize: 24
4667
4673
  },
4668
- h6: {
4674
+ ':where(.Ketcher-polymer-editor-root) h6': {
4669
4675
  fontSize: 20,
4670
4676
  fontWeight: theme.ketcher.font.weight.bold
4671
4677
  },
4672
- p: {
4678
+ ':where(.Ketcher-polymer-editor-root) p': {
4673
4679
  fontSize: theme.ketcher.font.size.regular
4674
4680
  },
4675
- button: {
4681
+ ':where(.Ketcher-polymer-editor-root) button': {
4676
4682
  textTransform: 'uppercase',
4677
4683
  fontWeight: theme.ketcher.font.weight.bold
4678
4684
  }
4679
- }, process.env.NODE_ENV === "production" ? "" : ";label:getGlobalStyles;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdldEdsb2JhbFN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQjBDIiwiZmlsZSI6ImdldEdsb2JhbFN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAqIENvcHlyaWdodCAyMDIxIEVQQU0gU3lzdGVtc1xyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XHJcbmV4cG9ydCBjb25zdCBnZXRHbG9iYWxTdHlsZXMgPSAodGhlbWUpID0+IGNzcyh7XHJcbiAgICBib2R5OiB7XHJcbiAgICAgICAgZm9udFNpemU6IHRoZW1lLmtldGNoZXIuZm9udC5zaXplLm1lZGl1bSxcclxuICAgICAgICBmb250RmFtaWx5OiB0aGVtZS5rZXRjaGVyLmZvbnQuZmFtaWx5LmludGVyLFxyXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLmtldGNoZXIuZm9udC53ZWlnaHQucmVndWxhcixcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmtldGNoZXIuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LFxyXG4gICAgICAgIGNvbG9yOiB0aGVtZS5rZXRjaGVyLmNvbG9yLnRleHQucHJpbWFyeSxcclxuICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcclxuICAgIH0sXHJcbiAgICBkaXY6IHtcclxuICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcclxuICAgIH0sXHJcbiAgICBpbnB1dDoge1xyXG4gICAgICAgIGZvbnRGYW1pbHk6IHRoZW1lLmtldGNoZXIuZm9udC5mYW1pbHkuaW50ZXIsXHJcbiAgICAgICAgZm9udFdlaWdodDogdGhlbWUua2V0Y2hlci5mb250LndlaWdodC5yZWd1bGFyLFxyXG4gICAgICAgIGZvbnRTaXplOiB0aGVtZS5rZXRjaGVyLmZvbnQuc2l6ZS5yZWd1bGFyLFxyXG4gICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxyXG4gICAgfSxcclxuICAgIGgxOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDk2LFxyXG4gICAgfSxcclxuICAgIGgyOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDYwLFxyXG4gICAgfSxcclxuICAgIGgzOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDQ4LFxyXG4gICAgfSxcclxuICAgIGg0OiB7XHJcbiAgICAgICAgZm9udFNpemU6IDM0LFxyXG4gICAgfSxcclxuICAgIGg1OiB7XHJcbiAgICAgICAgZm9udFNpemU6IDI0LFxyXG4gICAgfSxcclxuICAgIGg2OiB7XHJcbiAgICAgICAgZm9udFNpemU6IDIwLFxyXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLmtldGNoZXIuZm9udC53ZWlnaHQuYm9sZCxcclxuICAgIH0sXHJcbiAgICBwOiB7XHJcbiAgICAgICAgZm9udFNpemU6IHRoZW1lLmtldGNoZXIuZm9udC5zaXplLnJlZ3VsYXIsXHJcbiAgICB9LFxyXG4gICAgYnV0dG9uOiB7XHJcbiAgICAgICAgdGV4dFRyYW5zZm9ybTogJ3VwcGVyY2FzZScsXHJcbiAgICAgICAgZm9udFdlaWdodDogdGhlbWUua2V0Y2hlci5mb250LndlaWdodC5ib2xkLFxyXG4gICAgfSxcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldEdsb2JhbFN0eWxlcy5qcy5tYXAiXX0= */");
4685
+ }, process.env.NODE_ENV === "production" ? "" : ";label:getGlobalStyles;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdldEdsb2JhbFN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQjBDIiwiZmlsZSI6ImdldEdsb2JhbFN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAqIENvcHlyaWdodCAyMDIxIEVQQU0gU3lzdGVtc1xyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XHJcbmV4cG9ydCBjb25zdCBnZXRHbG9iYWxTdHlsZXMgPSAodGhlbWUpID0+IGNzcyh7XHJcbiAgICBhbGw6ICd1bnNldCcsXHJcbiAgICAnLktldGNoZXItcG9seW1lci1lZGl0b3Itcm9vdCc6IHtcclxuICAgICAgICBhbGw6ICd1bnNldCcsXHJcbiAgICAgICAgZm9udFNpemU6IHRoZW1lLmtldGNoZXIuZm9udC5zaXplLm1lZGl1bSxcclxuICAgICAgICBmb250RmFtaWx5OiB0aGVtZS5rZXRjaGVyLmZvbnQuZmFtaWx5LmludGVyLFxyXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLmtldGNoZXIuZm9udC53ZWlnaHQucmVndWxhcixcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmtldGNoZXIuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LFxyXG4gICAgICAgIGNvbG9yOiB0aGVtZS5rZXRjaGVyLmNvbG9yLnRleHQucHJpbWFyeSxcclxuICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcclxuICAgIH0sXHJcbiAgICAnOndoZXJlKC5LZXRjaGVyLXBvbHltZXItZWRpdG9yLXJvb3QpIGRpdic6IHtcclxuICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcclxuICAgIH0sXHJcbiAgICAnOndoZXJlKC5LZXRjaGVyLXBvbHltZXItZWRpdG9yLXJvb3QpIGlucHV0Jzoge1xyXG4gICAgICAgIGZvbnRGYW1pbHk6IHRoZW1lLmtldGNoZXIuZm9udC5mYW1pbHkuaW50ZXIsXHJcbiAgICAgICAgZm9udFdlaWdodDogdGhlbWUua2V0Y2hlci5mb250LndlaWdodC5yZWd1bGFyLFxyXG4gICAgICAgIGZvbnRTaXplOiB0aGVtZS5rZXRjaGVyLmZvbnQuc2l6ZS5yZWd1bGFyLFxyXG4gICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxyXG4gICAgfSxcclxuICAgICc6d2hlcmUoLktldGNoZXItcG9seW1lci1lZGl0b3Itcm9vdCkgaDEnOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDk2LFxyXG4gICAgfSxcclxuICAgICc6d2hlcmUoLktldGNoZXItcG9seW1lci1lZGl0b3Itcm9vdCkgaDInOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDYwLFxyXG4gICAgfSxcclxuICAgICc6d2hlcmUoLktldGNoZXItcG9seW1lci1lZGl0b3Itcm9vdCkgaDMnOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDQ4LFxyXG4gICAgfSxcclxuICAgICc6d2hlcmUoLktldGNoZXItcG9seW1lci1lZGl0b3Itcm9vdCkgaDQnOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDM0LFxyXG4gICAgfSxcclxuICAgICc6d2hlcmUoLktldGNoZXItcG9seW1lci1lZGl0b3Itcm9vdCkgaDUnOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDI0LFxyXG4gICAgfSxcclxuICAgICc6d2hlcmUoLktldGNoZXItcG9seW1lci1lZGl0b3Itcm9vdCkgaDYnOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDIwLFxyXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLmtldGNoZXIuZm9udC53ZWlnaHQuYm9sZCxcclxuICAgIH0sXHJcbiAgICAnOndoZXJlKC5LZXRjaGVyLXBvbHltZXItZWRpdG9yLXJvb3QpIHAnOiB7XHJcbiAgICAgICAgZm9udFNpemU6IHRoZW1lLmtldGNoZXIuZm9udC5zaXplLnJlZ3VsYXIsXHJcbiAgICB9LFxyXG4gICAgJzp3aGVyZSguS2V0Y2hlci1wb2x5bWVyLWVkaXRvci1yb290KSBidXR0b24nOiB7XHJcbiAgICAgICAgdGV4dFRyYW5zZm9ybTogJ3VwcGVyY2FzZScsXHJcbiAgICAgICAgZm9udFdlaWdodDogdGhlbWUua2V0Y2hlci5mb250LndlaWdodC5ib2xkLFxyXG4gICAgfSxcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldEdsb2JhbFN0eWxlcy5qcy5tYXAiXX0= */");
4680
4686
  };
4681
4687
 
4682
4688
  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)."; }
@@ -6031,7 +6037,7 @@ var DetailsContainer = _styled__default["default"]("div", process.env.NODE_ENV =
6031
6037
  map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErQmdDIiwiZmlsZSI6InN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAqIENvcHlyaWdodCAyMDIxIEVQQU0gU3lzdGVtc1xyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IEFjY29yZGlvbiwgQnV0dG9uIH0gZnJvbSAna2V0Y2hlci1yZWFjdCc7XHJcbmV4cG9ydCBjb25zdCBSbmFBY2NvcmRpb25Db250YWluZXIgPSBzdHlsZWQuZGl2KHtcclxuICAgIGRpc3BsYXk6ICdmbGV4JyxcclxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxyXG4gICAganVzdGlmeUNvbnRlbnQ6ICdmbGV4LXN0YXJ0JyxcclxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcclxuICAgIGhlaWdodDogJzEwMCUnLFxyXG59KTtcclxuZXhwb3J0IGNvbnN0IFN0eWxlZEFjY29yZGlvbiA9IHN0eWxlZChBY2NvcmRpb24pKHtcclxuICAgIG1pbkhlaWdodDogJzMycHgnLFxyXG59KTtcclxuZXhwb3J0IGNvbnN0IFN0eWxlZEFjY29yZGlvbldyYXBwZXIgPSBzdHlsZWQuZGl2KHtcclxuICAgIGZsZXhHcm93OiAyLFxyXG4gICAgbWluSGVpZ2h0OiAnMzJweCcsXHJcbn0pO1xyXG5leHBvcnQgY29uc3QgRGV0YWlsc0NvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xyXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXHJcbiAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXHJcbiAgICBnYXA6ICcyNHB4JyxcclxuICAgIGp1c3RpZnlDb250ZW50OiAnc3RhcnQnLFxyXG4gICAgcGFkZGluZzogJzE2cHggMTJweCcsXHJcbn0pO1xyXG5leHBvcnQgY29uc3QgU3R5bGVkQnV0dG9uID0gc3R5bGVkKEJ1dHRvbikoKHByb3BzKSA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogcHJvcHMudGhlbWUua2V0Y2hlci5jb2xvci5idXR0b24udHJhbnNwYXJlbnQuYWN0aXZlLFxyXG4gICAgICAgIGNvbG9yOiBwcm9wcy50aGVtZS5rZXRjaGVyLmNvbG9yLnRleHQubGlnaHQsXHJcbiAgICAgICAgYm9yZGVyQ29sb3I6IHByb3BzLnRoZW1lLmtldGNoZXIuY29sb3IudGV4dC5saWdodCxcclxuICAgIH07XHJcbn0pO1xyXG5leHBvcnQgY29uc3QgRGlzYWJsZWRBcmVhID0gc3R5bGVkLmRpdih7XHJcbiAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZWZmMmY1OTQnLFxyXG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICB0b3A6IDAsXHJcbiAgICBsZWZ0OiAwLFxyXG59KTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3R5bGVzLmpzLm1hcCJdfQ== */",
6032
6038
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$x
6033
6039
  });
6034
- var StyledButton$1 = _styled__default["default"](ketcherReact.Button, process.env.NODE_ENV === "production" ? {
6040
+ var StyledButton$2 = _styled__default["default"](ketcherReact.Button, process.env.NODE_ENV === "production" ? {
6035
6041
  target: "e1hdfnag1"
6036
6042
  } : {
6037
6043
  target: "e1hdfnag1",
@@ -6198,7 +6204,7 @@ var RnaAccordion = function RnaAccordion(_ref) {
6198
6204
  expanded: expanded
6199
6205
  });
6200
6206
  var details = groupData.groupName === RnaBuilderPresetsItem.Presets ? jsxRuntime.jsxs(DetailsContainer, {
6201
- children: [jsxRuntime.jsx(StyledButton$1, {
6207
+ children: [jsxRuntime.jsx(StyledButton$2, {
6202
6208
  onClick: function onClick() {
6203
6209
  return onClickNewPreset();
6204
6210
  },
@@ -6501,7 +6507,7 @@ var ButtonsContainer = _styled__default["default"]("div", process.env.NODE_ENV =
6501
6507
  map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQ2dDIiwiZmlsZSI6InN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAqIENvcHlyaWdodCAyMDIxIEVQQU0gU3lzdGVtc1xyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IEJ1dHRvbiwgSW5wdXQgfSBmcm9tICdrZXRjaGVyLXJlYWN0JztcclxuZXhwb3J0IGNvbnN0IFJuYUVkaXRvckV4cGFuZGVkQ29udGFpbmVyID0gc3R5bGVkLmRpdigocHJvcHMpID0+ICh7XHJcbiAgICBkaXNwbGF5OiAnZmxleCcsXHJcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcclxuICAgIHBhZGRpbmc6ICcxMHB4JyxcclxuICAgICcmLnJuYS1lZGl0b3ItZXhwYW5kZWQtLXNlcXVlbmNlLWVkaXQtbW9kZSc6IHtcclxuICAgICAgICBwYWRkaW5nOiAnOHB4JyxcclxuICAgICAgICBwYWRkaW5nVG9wOiAnMTBweCcsXHJcbiAgICAgICAgYm9yZGVyOiBgMnB4ICR7cHJvcHMudGhlbWUua2V0Y2hlci5jb2xvci5lZGl0TW9kZS5zZXF1ZW5jZUluUk5BQnVpbGRlcn0gc29saWRgLFxyXG4gICAgICAgIGJvcmRlclRvcDogJ25vbmUnLFxyXG4gICAgICAgIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOiAnNHB4JyxcclxuICAgICAgICBib3JkZXJCb3R0b21MZWZ0UmFkaXVzOiAnNHB4JyxcclxuICAgIH0sXHJcbn0pKTtcclxuZXhwb3J0IGNvbnN0IEdyb3Vwc0NvbnRhaW5lciA9IHN0eWxlZC5kaXYoe1xyXG4gICAgbWFyZ2luVG9wOiAnMTZweCcsXHJcbiAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXHJcbiAgICBnYXA6ICc4cHgnLFxyXG59KTtcclxuZXhwb3J0IGNvbnN0IEJ1dHRvbnNDb250YWluZXIgPSBzdHlsZWQuZGl2KHtcclxuICAgIG1hcmdpblRvcDogJzE2cHgnLFxyXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1ldmVubHknLFxyXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXHJcbiAgICBnYXA6ICc4cHgnLFxyXG59KTtcclxuZXhwb3J0IGNvbnN0IFN0eWxlZEJ1dHRvbiA9IHN0eWxlZChCdXR0b24pKChwcm9wcykgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxyXG4gICAgICAgIGZvbnRTaXplOiBwcm9wcy50aGVtZS5rZXRjaGVyLmZvbnQuc2l6ZS5yZWd1bGFyLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogcHJvcHMucHJpbWFyeVxyXG4gICAgICAgICAgICA/IHByb3BzLnRoZW1lLmtldGNoZXIuY29sb3IuYnV0dG9uLnByaW1hcnkuYWN0aXZlXHJcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIGNvbG9yOiBwcm9wcy5wcmltYXJ5ICYmICFwcm9wcy5kaXNhYmxlZFxyXG4gICAgICAgICAgICA/IHByb3BzLnRoZW1lLmtldGNoZXIuY29sb3IuYnV0dG9uLnRleHQucHJpbWFyeVxyXG4gICAgICAgICAgICA6IHByb3BzLnRoZW1lLmtldGNoZXIuY29sb3IudGV4dC5saWdodCxcclxuICAgICAgICBvdXRsaW5lOiBwcm9wcy5wcmltYXJ5ICYmICFwcm9wcy5kaXNhYmxlZFxyXG4gICAgICAgICAgICA/IHByb3BzLnRoZW1lLmtldGNoZXIub3V0bGluZS5zZWxlY3RlZC5zbWFsbFxyXG4gICAgICAgICAgICA6IHByb3BzLnRoZW1lLmtldGNoZXIub3V0bGluZS5ncmV5LnNtYWxsLFxyXG4gICAgfTtcclxufSk7XHJcbmV4cG9ydCBjb25zdCBOYW1lQ29udGFpbmVyID0gc3R5bGVkLmRpdigocHJvcHMpID0+ICh7XHJcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcclxuICAgIGJvcmRlclJhZGl1czogcHJvcHMudGhlbWUua2V0Y2hlci5ib3JkZXIucmFkaXVzLnJlZ3VsYXIsXHJcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHByb3BzLnRoZW1lLmtldGNoZXIuY29sb3IuYmFja2dyb3VuZC5wcmltYXJ5LFxyXG4gICAgYm94U2hhZG93OiBwcm9wcy50aGVtZS5rZXRjaGVyLnNoYWRvdy5yZWd1bGFyLFxyXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXHJcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXHJcbiAgICBwYWRkaW5nOiAnMCA2cHggNnB4IDZweCcsXHJcbiAgICBkaXNwbGF5OiAnZmxleCcsXHJcbiAgICBhbGlnbkl0ZW1zOiAnZmxleC1lbmQnLFxyXG4gICAgaGVpZ2h0OiAnNDhweCcsXHJcbiAgICBvdXRsaW5lOiBwcm9wcy5zZWxlY3RlZFxyXG4gICAgICAgID8gcHJvcHMudGhlbWUua2V0Y2hlci5vdXRsaW5lLnNlbGVjdGVkLm1lZGl1bVxyXG4gICAgICAgIDogJ25vbmUnLFxyXG4gICAgJzpob3Zlcic6IHtcclxuICAgICAgICBvdXRsaW5lOiBwcm9wcy5zZWxlY3RlZCA/IHVuZGVmaW5lZCA6IHByb3BzLnRoZW1lLmtldGNoZXIub3V0bGluZS5zbWFsbCxcclxuICAgIH0sXHJcbn0pKTtcclxuZXhwb3J0IGNvbnN0IE5hbWVMaW5lID0gc3R5bGVkLnNwYW4oKHByb3BzKSA9PiAoe1xyXG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICB0b3A6ICcwJyxcclxuICAgIGxlZnQ6ICcwJyxcclxuICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICBoZWlnaHQ6ICc4cHgnLFxyXG4gICAgYmFja2dyb3VuZENvbG9yOiBwcm9wcy5zZWxlY3RlZFxyXG4gICAgICAgID8gcHJvcHMudGhlbWUua2V0Y2hlci5vdXRsaW5lLnNlbGVjdGVkLmNvbG9yXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5rZXRjaGVyLm91dGxpbmUuY29sb3IsXHJcbn0pKTtcclxuZXhwb3J0IGNvbnN0IE5hbWVJbnB1dCA9IHN0eWxlZChJbnB1dCkoe1xyXG4gICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICcmOmRpc2FibGVkJzoge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICdub25lJyxcclxuICAgICAgICBvdXRsaW5lOiAnbm9uZScsXHJcbiAgICAgICAgY29sb3I6ICdpbmhlcml0JyxcclxuICAgIH0sXHJcbn0pO1xyXG5leHBvcnQgY29uc3QgUHJlc2V0TmFtZSA9IHN0eWxlZC5kaXYoe1xyXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxyXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxyXG59KTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3R5bGVzLmpzLm1hcCJdfQ== */",
6502
6508
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$u
6503
6509
  });
6504
- var StyledButton = _styled__default["default"](ketcherReact.Button, process.env.NODE_ENV === "production" ? {
6510
+ var StyledButton$1 = _styled__default["default"](ketcherReact.Button, process.env.NODE_ENV === "production" ? {
6505
6511
  target: "e18wzlbg4"
6506
6512
  } : {
6507
6513
  target: "e18wzlbg4",
@@ -6827,7 +6833,7 @@ var RnaEditorExpanded = function RnaEditorExpanded(_ref) {
6827
6833
  }, [editor, sequenceSelection]);
6828
6834
  var mainButton;
6829
6835
  if (isActivePresetEmpty && !isSequenceEditInRNABuilderMode) {
6830
- mainButton = jsxRuntime.jsx(StyledButton, {
6836
+ mainButton = jsxRuntime.jsx(StyledButton$1, {
6831
6837
  disabled: !selectIsPresetReadyToSave(newPreset),
6832
6838
  primary: true,
6833
6839
  "data-testid": "add-to-presets-btn",
@@ -6835,7 +6841,7 @@ var RnaEditorExpanded = function RnaEditorExpanded(_ref) {
6835
6841
  children: "Add to Presets"
6836
6842
  });
6837
6843
  } else if (isEditMode) {
6838
- mainButton = jsxRuntime.jsx(StyledButton, {
6844
+ mainButton = jsxRuntime.jsx(StyledButton$1, {
6839
6845
  primary: true,
6840
6846
  disabled: isSequenceEditInRNABuilderMode ? !isSequenceSelectionUpdated : false,
6841
6847
  "data-testid": "save-btn",
@@ -6843,7 +6849,7 @@ var RnaEditorExpanded = function RnaEditorExpanded(_ref) {
6843
6849
  children: isSequenceEditInRNABuilderMode ? 'Update' : 'Save'
6844
6850
  });
6845
6851
  } else {
6846
- mainButton = jsxRuntime.jsx(StyledButton, {
6852
+ mainButton = jsxRuntime.jsx(StyledButton$1, {
6847
6853
  "data-testid": "edit-btn",
6848
6854
  onClick: turnOnEditMode,
6849
6855
  disabled: activePreset["default"],
@@ -6883,11 +6889,11 @@ var RnaEditorExpanded = function RnaEditorExpanded(_ref) {
6883
6889
  }, groupName);
6884
6890
  })
6885
6891
  }), jsxRuntime.jsxs(ButtonsContainer, {
6886
- children: [isEditMode ? jsxRuntime.jsx(StyledButton, {
6892
+ children: [isEditMode ? jsxRuntime.jsx(StyledButton$1, {
6887
6893
  "data-testid": "cancel-btn",
6888
6894
  onClick: onCancel,
6889
6895
  children: "Cancel"
6890
- }) : jsxRuntime.jsx(StyledButton, {
6896
+ }) : jsxRuntime.jsx(StyledButton$1, {
6891
6897
  "data-testid": "duplicate-btn",
6892
6898
  disabled: !selectIsPresetReadyToSave(newPreset),
6893
6899
  onClick: function onClick() {
@@ -7260,7 +7266,7 @@ var RnaBuilder = function RnaBuilder(_ref) {
7260
7266
  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.")]
7261
7267
  })
7262
7268
  }), jsxRuntime.jsx(Modal.Footer, {
7263
- children: jsxRuntime.jsx(StyledButton$1, {
7269
+ children: jsxRuntime.jsx(StyledButton$2, {
7264
7270
  onClick: closeErrorModal,
7265
7271
  children: "Close"
7266
7272
  })
@@ -12322,7 +12328,8 @@ var ConfirmationText = _styled__default["default"]("p", process.env.NODE_ENV ===
12322
12328
  });
12323
12329
 
12324
12330
  var ConfirmationDialog = function ConfirmationDialog(_ref) {
12325
- var confirmationText = _ref.confirmationText,
12331
+ var title = _ref.title,
12332
+ confirmationText = _ref.confirmationText,
12326
12333
  onConfirm = _ref.onConfirm,
12327
12334
  isModalOpen = _ref.isModalOpen,
12328
12335
  onClose = _ref.onClose;
@@ -12332,7 +12339,7 @@ var ConfirmationDialog = function ConfirmationDialog(_ref) {
12332
12339
  };
12333
12340
  return jsxRuntime.jsxs(Modal, {
12334
12341
  isOpen: isModalOpen,
12335
- title: "Confirm your action",
12342
+ title: title || 'Confirm your action',
12336
12343
  onClose: onClose,
12337
12344
  children: [jsxRuntime.jsx(Modal.Content, {
12338
12345
  children: jsxRuntime.jsx(ConfirmationText, {
@@ -12828,6 +12835,20 @@ var ArrowMarker = function ArrowMarker() {
12828
12835
  fill: "black",
12829
12836
  stroke: "none"
12830
12837
  })
12838
+ }), jsxRuntime.jsx("marker", {
12839
+ id: "arrow-marker-arc",
12840
+ markerWidth: "5",
12841
+ markerHeight: "5",
12842
+ viewBox: "0 0 5 5",
12843
+ refX: "5",
12844
+ refY: "2.5",
12845
+ orient: "auto",
12846
+ children: jsxRuntime.jsx("use", {
12847
+ href: "#arrow-marker-content",
12848
+ transform: "rotate(180, 2.5, 2.5)",
12849
+ fill: "#365CFF",
12850
+ stroke: "none"
12851
+ })
12831
12852
  })]
12832
12853
  });
12833
12854
  };
@@ -13578,55 +13599,171 @@ var generateSequenceContextMenuProps = function generateSequenceContextMenuProps
13578
13599
  hasAntisense: hasAntisense
13579
13600
  };
13580
13601
  };
13602
+ function isEstablishHydrogenBondDisabled() {
13603
+ var selections = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
13604
+ return selections.every(function (selectionRange) {
13605
+ return selectionRange.every(function (selection) {
13606
+ return ketcherCore.isTwoStrandedNodeRestrictedForHydrogenBondCreation(selection.twoStrandedNode);
13607
+ });
13608
+ });
13609
+ }
13610
+ function isNodeContainHydrogenBonds(node) {
13611
+ return node === null || node === void 0 ? void 0 : node.monomers.some(function (monomer) {
13612
+ return monomer.hydrogenBonds.length !== 0;
13613
+ });
13614
+ }
13615
+
13616
+ var getMonomersCode = function getMonomersCode(monomers) {
13617
+ return monomers.map(function (monomer) {
13618
+ return monomer.monomerItem.props.MonomerNaturalAnalogCode;
13619
+ }).sort().join('');
13620
+ };
13621
+ var isSenseBase = function isSenseBase(monomer) {
13622
+ var monomerItem = monomer.monomerItem;
13623
+ var isNaturalAnalogue = monomerItem.props.MonomerNaturalAnalogCode === 'A' || monomerItem.props.MonomerNaturalAnalogCode === 'C' || monomerItem.props.MonomerNaturalAnalogCode === 'G' || monomerItem.props.MonomerNaturalAnalogCode === 'T' || monomerItem.props.MonomerNaturalAnalogCode === 'U';
13624
+ if (isNaturalAnalogue) {
13625
+ return true;
13626
+ }
13627
+ if (!monomer.monomerItem.isAmbiguous) {
13628
+ return false;
13629
+ }
13630
+ if (monomer.subtype === ketcherCore.KetAmbiguousMonomerTemplateSubType.MIXTURE) {
13631
+ return false;
13632
+ }
13633
+ var N1 = 'ACGT';
13634
+ var N2 = 'ACGU';
13635
+ var B1 = 'CGT';
13636
+ var B2 = 'CGU';
13637
+ var D1 = 'AGT';
13638
+ var D2 = 'AGU';
13639
+ var H1 = 'ACT';
13640
+ var H2 = 'ACU';
13641
+ var K1 = 'GT';
13642
+ var K2 = 'GU';
13643
+ var W1 = 'AT';
13644
+ var W2 = 'AU';
13645
+ var Y1 = 'CT';
13646
+ var Y2 = 'CU';
13647
+ var M = 'AC';
13648
+ var R = 'AG';
13649
+ var S = 'CG';
13650
+ var V = 'ACG';
13651
+ var ambigues = [N1, N2, B1, B2, D1, D2, H1, H2, K1, K2, W1, W2, Y1, Y2, M, R, S, V];
13652
+ var code = getMonomersCode(monomer.monomers);
13653
+ return ambigues.some(function (v) {
13654
+ return v === code;
13655
+ });
13656
+ };
13657
+ var isAntisenseCreationDisabled = function isAntisenseCreationDisabled(selectedMonomers) {
13658
+ return selectedMonomers === null || selectedMonomers === void 0 ? void 0 : selectedMonomers.some(function (selectedMonomer) {
13659
+ var rnaBaseForSugar = selectedMonomer instanceof ketcherCore.Sugar && ketcherCore.getRnaBaseFromSugar(selectedMonomer);
13660
+ return selectedMonomer instanceof ketcherCore.RNABase && (selectedMonomer.hydrogenBonds.length > 0 || selectedMonomer.covalentBonds.length > 1) || ketcherCore.isRnaBaseOrAmbiguousRnaBase(selectedMonomer) && !isSenseBase(selectedMonomer) || rnaBaseForSugar && (rnaBaseForSugar.hydrogenBonds.length > 0 || !isSenseBase(rnaBaseForSugar));
13661
+ });
13662
+ };
13581
13663
 
13582
13664
  var SequenceItemContextMenuNames;
13583
13665
  (function (SequenceItemContextMenuNames) {
13584
13666
  SequenceItemContextMenuNames["title"] = "sequence_menu_title";
13667
+ SequenceItemContextMenuNames["createRnaAntisenseStrand"] = "create_rna_antisense_strand";
13668
+ SequenceItemContextMenuNames["createDnaAntisenseStrand"] = "create_dna_antisense_strand";
13585
13669
  SequenceItemContextMenuNames["modifyInRnaBuilder"] = "modify_in_rna_builder";
13670
+ SequenceItemContextMenuNames["establishHydrogenBond"] = "establish_hydrogen_bond";
13671
+ SequenceItemContextMenuNames["deleteHydrogenBond"] = "delete_hydrogen_bond";
13586
13672
  SequenceItemContextMenuNames["editSequence"] = "edit_sequence";
13587
13673
  SequenceItemContextMenuNames["startNewSequence"] = "start_new_sequence";
13588
13674
  })(SequenceItemContextMenuNames || (SequenceItemContextMenuNames = {}));
13589
13675
  var SequenceItemContextMenu = function SequenceItemContextMenu(_ref) {
13676
+ var _selections$;
13590
13677
  var selections = _ref.selections;
13591
13678
  var editor = useAppSelector(selectEditor);
13592
13679
  var dispatch = useAppDispatch();
13593
13680
  var menuProps = generateSequenceContextMenuProps(selections);
13681
+ var extractedBaseMonomers = (selections === null || selections === void 0 || (_selections$ = selections[0]) === null || _selections$ === void 0 ? void 0 : _selections$.flatMap(function (item) {
13682
+ var node = item.node;
13683
+ return node ? [node.sugar, node.rnaBase, node.phosphate, node.monomer] : [];
13684
+ }).filter(function (baseMonomer) {
13685
+ return baseMonomer !== undefined;
13686
+ })) || [];
13594
13687
  var isSequenceEditInRNABuilderMode = useAppSelector(selectIsSequenceEditInRNABuilderMode);
13595
13688
  var isSequenceMode = useLayoutMode() === ketcherCore.ModeTypes.sequence;
13689
+ var isAntisenseOptionHidden = function isAntisenseOptionHidden(_ref2) {
13690
+ var props = _ref2.props;
13691
+ return !(props !== null && props !== void 0 && props.sequenceItemRenderer) || !(extractedBaseMonomers !== null && extractedBaseMonomers !== void 0 && extractedBaseMonomers.some(function (selectedMonomer) {
13692
+ return selectedMonomer instanceof ketcherCore.RNABase && ketcherCore.getSugarFromRnaBase(selectedMonomer) || selectedMonomer instanceof ketcherCore.Sugar && ketcherCore.getRnaBaseFromSugar(selectedMonomer);
13693
+ }));
13694
+ };
13596
13695
  var menuItems = [{
13597
13696
  name: SequenceItemContextMenuNames.title,
13598
13697
  title: menuProps === null || menuProps === void 0 ? void 0 : menuProps.title,
13599
13698
  isMenuTitle: true,
13600
13699
  disabled: true,
13601
- hidden: function hidden(_ref2) {
13602
- var props = _ref2.props;
13700
+ hidden: function hidden(_ref3) {
13701
+ var props = _ref3.props;
13603
13702
  return !(props !== null && props !== void 0 && props.sequenceItemRenderer) || !(menuProps !== null && menuProps !== void 0 && menuProps.isSelectedAtLeastOneNucleoelement);
13604
13703
  }
13704
+ }, {
13705
+ name: SequenceItemContextMenuNames.createRnaAntisenseStrand,
13706
+ title: 'Create RNA antisense strand',
13707
+ disabled: isAntisenseCreationDisabled(extractedBaseMonomers),
13708
+ hidden: isAntisenseOptionHidden
13709
+ }, {
13710
+ name: SequenceItemContextMenuNames.createDnaAntisenseStrand,
13711
+ title: 'Create DNA antisense strand',
13712
+ disabled: isAntisenseCreationDisabled(extractedBaseMonomers),
13713
+ hidden: isAntisenseOptionHidden
13605
13714
  }, {
13606
13715
  name: SequenceItemContextMenuNames.modifyInRnaBuilder,
13607
13716
  title: 'Modify in RNA Builder...',
13608
13717
  disabled: !(menuProps !== null && menuProps !== void 0 && menuProps.isSelectedOnlyNucleoelements) || menuProps.hasAntisense,
13609
- hidden: function hidden(_ref3) {
13610
- var props = _ref3.props;
13718
+ hidden: function hidden(_ref4) {
13719
+ var props = _ref4.props;
13611
13720
  return !(props !== null && props !== void 0 && props.sequenceItemRenderer) || !(menuProps !== null && menuProps !== void 0 && menuProps.isSelectedAtLeastOneNucleoelement);
13612
13721
  }
13613
13722
  }, {
13614
13723
  name: SequenceItemContextMenuNames.editSequence,
13615
13724
  title: 'Edit sequence',
13616
13725
  disabled: false,
13617
- hidden: function hidden(_ref4) {
13618
- var props = _ref4.props;
13726
+ hidden: function hidden(_ref5) {
13727
+ var props = _ref5.props;
13619
13728
  return !(props !== null && props !== void 0 && props.sequenceItemRenderer);
13620
13729
  }
13621
13730
  }, {
13622
13731
  name: SequenceItemContextMenuNames.startNewSequence,
13623
13732
  title: 'Start new sequence',
13624
13733
  disabled: false
13734
+ }, {
13735
+ name: SequenceItemContextMenuNames.establishHydrogenBond,
13736
+ title: 'Establish Hydrogen Bonds',
13737
+ disabled: function disabled(_ref6) {
13738
+ var _props$sequenceItemRe;
13739
+ var props = _ref6.props;
13740
+ return (selections === null || selections === void 0 ? void 0 : selections.length) === 0 ? ketcherCore.isTwoStrandedNodeRestrictedForHydrogenBondCreation(props === null || props === void 0 || (_props$sequenceItemRe = props.sequenceItemRenderer) === null || _props$sequenceItemRe === void 0 ? void 0 : _props$sequenceItemRe.twoStrandedNode) : isEstablishHydrogenBondDisabled(selections);
13741
+ },
13742
+ hidden: function hidden(_ref7) {
13743
+ var props = _ref7.props;
13744
+ return !(props !== null && props !== void 0 && props.sequenceItemRenderer);
13745
+ }
13746
+ }, {
13747
+ name: SequenceItemContextMenuNames.deleteHydrogenBond,
13748
+ title: 'Delete Hydrogen Bonds',
13749
+ disabled: function disabled(_ref8) {
13750
+ var _props$sequenceItemRe2;
13751
+ var props = _ref8.props;
13752
+ 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) {
13753
+ return selectionRange.some(function (selection) {
13754
+ return isNodeContainHydrogenBonds(selection.node);
13755
+ });
13756
+ }));
13757
+ },
13758
+ hidden: function hidden(_ref9) {
13759
+ var props = _ref9.props;
13760
+ return !(props !== null && props !== void 0 && props.sequenceItemRenderer);
13761
+ }
13625
13762
  }];
13626
- var handleMenuChange = function handleMenuChange(_ref5) {
13763
+ var handleMenuChange = function handleMenuChange(_ref10) {
13627
13764
  var _menuProps$selectedSe;
13628
- var id = _ref5.id,
13629
- props = _ref5.props;
13765
+ var id = _ref10.id,
13766
+ props = _ref10.props;
13630
13767
  switch (id) {
13631
13768
  case SequenceItemContextMenuNames.modifyInRnaBuilder:
13632
13769
  editor.events.turnOnSequenceEditInRNABuilderMode.dispatch();
@@ -13646,6 +13783,71 @@ var SequenceItemContextMenu = function SequenceItemContextMenu(_ref) {
13646
13783
  case SequenceItemContextMenuNames.editSequence:
13647
13784
  editor.events.editSequence.dispatch(props.sequenceItemRenderer);
13648
13785
  break;
13786
+ case SequenceItemContextMenuNames.createRnaAntisenseStrand:
13787
+ editor.events.createAntisenseChain.dispatch(false);
13788
+ break;
13789
+ case SequenceItemContextMenuNames.createDnaAntisenseStrand:
13790
+ editor.events.createAntisenseChain.dispatch(true);
13791
+ break;
13792
+ case SequenceItemContextMenuNames.establishHydrogenBond:
13793
+ editor.events.establishHydrogenBond.dispatch(props.sequenceItemRenderer);
13794
+ break;
13795
+ case SequenceItemContextMenuNames.deleteHydrogenBond:
13796
+ {
13797
+ var _props$sequenceItemRe3;
13798
+ var sequenceViewModel = ketcherCore.SequenceRenderer.sequenceViewModel;
13799
+ var monomerToChain = sequenceViewModel.chainsCollection.monomerToChain;
13800
+ var antisenseChainToSelectedNodeMap = new Map();
13801
+ var selectedTwoStrandedNodes = selections !== null && selections !== void 0 && selections.length ? selections.reduce(function (acc, selectionRange) {
13802
+ return [].concat(_toConsumableArray__default["default"](acc), _toConsumableArray__default["default"](selectionRange));
13803
+ }, []).map(function (nodeSelection) {
13804
+ return nodeSelection.twoStrandedNode;
13805
+ }) : [(_props$sequenceItemRe3 = props.sequenceItemRenderer) === null || _props$sequenceItemRe3 === void 0 ? void 0 : _props$sequenceItemRe3.twoStrandedNode];
13806
+ selectedTwoStrandedNodes.forEach(function (selectedTwoStrandedNode) {
13807
+ if (selectedTwoStrandedNode.antisenseChain && selectedTwoStrandedNode.antisenseNode && !(selectedTwoStrandedNode.antisenseNode instanceof ketcherCore.EmptySequenceNode || selectedTwoStrandedNode.antisenseNode instanceof ketcherCore.BackBoneSequenceNode)) {
13808
+ if (!antisenseChainToSelectedNodeMap.has(selectedTwoStrandedNode.antisenseChain)) {
13809
+ antisenseChainToSelectedNodeMap.set(selectedTwoStrandedNode.antisenseChain, new Set());
13810
+ }
13811
+ var antisenseChainSelectedNodes = antisenseChainToSelectedNodeMap.get(selectedTwoStrandedNode.antisenseChain);
13812
+ if (!antisenseChainSelectedNodes) {
13813
+ return;
13814
+ }
13815
+ antisenseChainSelectedNodes.add(selectedTwoStrandedNode);
13816
+ }
13817
+ });
13818
+ var isGoingToDeleteAllHydrogenBondsForAnyChain = false;
13819
+ antisenseChainToSelectedNodeMap.forEach(function (selectedTwoStrandedNodes, chain) {
13820
+ var firstSelectedTwoStrandedNode = _toConsumableArray__default["default"](selectedTwoStrandedNodes.values())[0];
13821
+ var senseChain = firstSelectedTwoStrandedNode.chain;
13822
+ var selectedAntisenseNodes = new Set(_toConsumableArray__default["default"](selectedTwoStrandedNodes.values()).map(function (node) {
13823
+ return node.antisenseNode;
13824
+ }));
13825
+ var hasMoreHydrogenConnectionsThanSelected = chain.nodes.some(function (node) {
13826
+ return !selectedAntisenseNodes.has(node) && node.monomers.some(function (monomer) {
13827
+ return monomer.hydrogenBonds.some(function (hydrogenBond) {
13828
+ var anotherMonomer = hydrogenBond.getAnotherMonomer(monomer);
13829
+ var anotherChain = anotherMonomer && monomerToChain.get(anotherMonomer);
13830
+ return anotherChain === senseChain;
13831
+ });
13832
+ });
13833
+ });
13834
+ if (!hasMoreHydrogenConnectionsThanSelected) {
13835
+ isGoingToDeleteAllHydrogenBondsForAnyChain = true;
13836
+ }
13837
+ });
13838
+ if (isGoingToDeleteAllHydrogenBondsForAnyChain) {
13839
+ editor.events.openConfirmationDialog.dispatch({
13840
+ title: 'Deletion of all Hydrogen Bonds',
13841
+ confirmationText: 'Deleting all hydrogen bonds will cause the separation of two chains. Do you wish to proceed?',
13842
+ onConfirm: function onConfirm() {
13843
+ editor.events.deleteHydrogenBond.dispatch(props.sequenceItemRenderer);
13844
+ }
13845
+ });
13846
+ } else {
13847
+ editor.events.deleteHydrogenBond.dispatch(props.sequenceItemRenderer);
13848
+ }
13849
+ break;
13850
+ }
13649
13851
  }
13650
13852
  };
13651
13853
  var ketcherEditorRootElement = document.querySelector(ketcherReact.KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR);
@@ -14942,12 +15144,13 @@ var PolymerBondContextMenu = function PolymerBondContextMenu() {
14942
15144
 
14943
15145
  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; }
14944
15146
  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__default["default"](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; }
14945
- var noPreviewTools = ['bond-single'];
15147
+ var noPreviewTools = [ketcherCore.ToolName.bondSingle, ketcherCore.ToolName.selectRectangle];
14946
15148
  var EditorEvents = function EditorEvents() {
14947
15149
  var editor = useAppSelector(selectEditor);
14948
15150
  var activeTool = useAppSelector(selectEditorActiveTool);
14949
15151
  var dispatch = useAppDispatch();
14950
15152
  var presets = useAppSelector(selectAllPresets);
15153
+ var hasAtLeastOneAntisense = useAppSelector(hasAntisenseChains);
14951
15154
  var handleMonomersLibraryUpdate = React.useCallback(function () {
14952
15155
  dispatch(loadMonomerLibrary(editor === null || editor === void 0 ? void 0 : editor.monomersLibrary));
14953
15156
  }, [editor]);
@@ -15145,65 +15348,25 @@ var EditorEvents = function EditorEvents() {
15145
15348
  editor === null || editor === void 0 || editor.events.mouseLeavePolymerBond.remove(handleClosePreview);
15146
15349
  };
15147
15350
  }, [editor, activeTool, handleOpenPreview, handleClosePreview]);
15351
+ React.useEffect(function () {
15352
+ if (!hasAtLeastOneAntisense) {
15353
+ editor === null || editor === void 0 || editor.events.resetSequenceEditMode.dispatch();
15354
+ }
15355
+ }, [hasAtLeastOneAntisense]);
15148
15356
  return jsxRuntime.jsx(jsxRuntime.Fragment, {});
15149
15357
  };
15150
15358
 
15151
- var getMonomersCode = function getMonomersCode(monomers) {
15152
- return monomers.map(function (monomer) {
15153
- return monomer.monomerItem.props.MonomerNaturalAnalogCode;
15154
- }).sort().join('');
15155
- };
15156
- var isSenseBase = function isSenseBase(monomer) {
15157
- var monomerItem = monomer.monomerItem;
15158
- var isNaturalAnalogue = monomerItem.props.MonomerNaturalAnalogCode === 'A' || monomerItem.props.MonomerNaturalAnalogCode === 'C' || monomerItem.props.MonomerNaturalAnalogCode === 'G' || monomerItem.props.MonomerNaturalAnalogCode === 'T' || monomerItem.props.MonomerNaturalAnalogCode === 'U';
15159
- if (isNaturalAnalogue) {
15160
- return true;
15161
- }
15162
- if (!monomer.monomerItem.isAmbiguous) {
15163
- return false;
15164
- }
15165
- if (monomer.subtype === ketcherCore.KetAmbiguousMonomerTemplateSubType.MIXTURE) {
15166
- return false;
15167
- }
15168
- var N1 = 'ACGT';
15169
- var N2 = 'ACGU';
15170
- var B1 = 'CGT';
15171
- var B2 = 'CGU';
15172
- var D1 = 'AGT';
15173
- var D2 = 'AGU';
15174
- var H1 = 'ACT';
15175
- var H2 = 'ACU';
15176
- var K1 = 'GT';
15177
- var K2 = 'GU';
15178
- var W1 = 'AT';
15179
- var W2 = 'AU';
15180
- var Y1 = 'CT';
15181
- var Y2 = 'CU';
15182
- var M = 'AC';
15183
- var R = 'AG';
15184
- var S = 'CG';
15185
- var V = 'ACG';
15186
- var ambigues = [N1, N2, B1, B2, D1, D2, H1, H2, K1, K2, W1, W2, Y1, Y2, M, R, S, V];
15187
- var code = getMonomersCode(monomer.monomers);
15188
- return ambigues.some(function (v) {
15189
- return v === code;
15190
- });
15191
- };
15192
15359
  var SelectedMonomersContextMenu = function SelectedMonomersContextMenu(_ref) {
15193
15360
  var selectedMonomers = _ref.selectedMonomers;
15194
15361
  var editor = useAppSelector(selectEditor);
15195
- var isAntisenseCreationDisabled = selectedMonomers === null || selectedMonomers === void 0 ? void 0 : selectedMonomers.some(function (selectedMonomer) {
15196
- var rnaBaseForSugar = selectedMonomer instanceof ketcherCore.Sugar && ketcherCore.getRnaBaseFromSugar(selectedMonomer);
15197
- return selectedMonomer instanceof ketcherCore.RNABase && (selectedMonomer.hydrogenBonds.length > 0 || selectedMonomer.covalentBonds.length > 1) || ketcherCore.isRnaBaseOrAmbiguousRnaBase(selectedMonomer) && !isSenseBase(selectedMonomer) || rnaBaseForSugar && (rnaBaseForSugar.hydrogenBonds.length > 0 || !isSenseBase(rnaBaseForSugar));
15198
- });
15199
15362
  var menuItems = [{
15200
15363
  name: 'copy',
15201
15364
  title: 'Copy'
15202
15365
  }, {
15203
- name: 'create_antisense_chain',
15204
- title: 'Create Antisense Strand',
15205
- separator: true,
15206
- disabled: isAntisenseCreationDisabled,
15366
+ name: 'create_antisense_rna_chain',
15367
+ title: 'Create Antisense RNA Strand',
15368
+ separator: false,
15369
+ disabled: isAntisenseCreationDisabled(selectedMonomers),
15207
15370
  hidden: function hidden(_ref2) {
15208
15371
  var _props$selectedMonome;
15209
15372
  var props = _ref2.props;
@@ -15211,18 +15374,33 @@ var SelectedMonomersContextMenu = function SelectedMonomersContextMenu(_ref) {
15211
15374
  return selectedMonomer instanceof ketcherCore.RNABase && ketcherCore.getSugarFromRnaBase(selectedMonomer) || selectedMonomer instanceof ketcherCore.Sugar && ketcherCore.getRnaBaseFromSugar(selectedMonomer);
15212
15375
  }));
15213
15376
  }
15377
+ }, {
15378
+ name: 'create_antisense_dna_chain',
15379
+ title: 'Create Antisense DNA Strand',
15380
+ separator: true,
15381
+ disabled: isAntisenseCreationDisabled(selectedMonomers),
15382
+ hidden: function hidden(_ref3) {
15383
+ var _props$selectedMonome2;
15384
+ var props = _ref3.props;
15385
+ return !(props !== null && props !== void 0 && (_props$selectedMonome2 = props.selectedMonomers) !== null && _props$selectedMonome2 !== void 0 && _props$selectedMonome2.some(function (selectedMonomer) {
15386
+ return selectedMonomer instanceof ketcherCore.RNABase && ketcherCore.getSugarFromRnaBase(selectedMonomer) || selectedMonomer instanceof ketcherCore.Sugar && ketcherCore.getRnaBaseFromSugar(selectedMonomer);
15387
+ }));
15388
+ }
15214
15389
  }, {
15215
15390
  name: 'delete',
15216
15391
  title: 'Delete'
15217
15392
  }];
15218
- var handleMenuChange = function handleMenuChange(_ref3) {
15219
- var id = _ref3.id;
15393
+ var handleMenuChange = function handleMenuChange(_ref4) {
15394
+ var id = _ref4.id;
15220
15395
  switch (id) {
15221
15396
  case 'copy':
15222
15397
  editor.events.copySelectedStructure.dispatch();
15223
15398
  break;
15224
- case 'create_antisense_chain':
15225
- editor.events.createAntisenseChain.dispatch();
15399
+ case 'create_antisense_rna_chain':
15400
+ editor.events.createAntisenseChain.dispatch(false);
15401
+ break;
15402
+ case 'create_antisense_dna_chain':
15403
+ editor.events.createAntisenseChain.dispatch(true);
15226
15404
  break;
15227
15405
  case 'delete':
15228
15406
  editor.events.deleteSelectedStructure.dispatch();
@@ -15237,6 +15415,137 @@ var SelectedMonomersContextMenu = function SelectedMonomersContextMenu(_ref) {
15237
15415
  }), ketcherEditorRootElement);
15238
15416
  };
15239
15417
 
15418
+ var StyledButton = _styled__default["default"](ketcherReact.Button, process.env.NODE_ENV === "production" ? {
15419
+ target: "e1846tr80"
15420
+ } : {
15421
+ target: "e1846tr80",
15422
+ label: "StyledButton"
15423
+ })(function (_ref) {
15424
+ var theme = _ref.theme,
15425
+ isActive = _ref.isActive;
15426
+ return {
15427
+ width: '40px',
15428
+ height: '31px',
15429
+ backgroundColor: isActive ? theme.ketcher.color.button.group.active : 'white',
15430
+ marginRight: '8px',
15431
+ border: isActive ? theme.ketcher.outline.selected.color : theme.ketcher.outline.small,
15432
+ borderRadius: '4px',
15433
+ outline: 'none',
15434
+ ':hover': {
15435
+ backgroundColor: isActive ? theme.ketcher.color.button.group.hover : 'white'
15436
+ },
15437
+ ':hover svg': {
15438
+ fill: isActive ? 'white' : theme.ketcher.color.button.group.active
15439
+ }
15440
+ };
15441
+ }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlcXVlbmNlU3luY0VkaXRNb2RlQnV0dG9uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1QnFCIiwiZmlsZSI6IlNlcXVlbmNlU3luY0VkaXRNb2RlQnV0dG9uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzLCBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3QvanN4LXJ1bnRpbWVcIjtcclxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICogQ29weXJpZ2h0IDIwMjEgRVBBTSBTeXN0ZW1zXHJcbiAqXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbiAqXHJcbiAqICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKlxyXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB7IHVzZUFwcFNlbGVjdG9yLCB1c2VMYXlvdXRNb2RlIH0gZnJvbSBcIi4uLy4uL2hvb2tzXCI7XHJcbmltcG9ydCB7IGhhc0FudGlzZW5zZUNoYWlucywgc2VsZWN0RWRpdG9yIH0gZnJvbSBcIi4uLy4uL3N0YXRlL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBNb2RlVHlwZXMgfSBmcm9tICdrZXRjaGVyLWNvcmUnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJ2tldGNoZXItcmVhY3QnO1xyXG5pbXBvcnQgeyBibHVyQWN0aXZlRWxlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL2NhbnZhc1wiO1xyXG5jb25zdCBTdHlsZWRCdXR0b24gPSBzdHlsZWQoQnV0dG9uKSgoeyB0aGVtZSwgaXNBY3RpdmUgfSkgPT4gKHtcclxuICAgIHdpZHRoOiAnNDBweCcsXHJcbiAgICBoZWlnaHQ6ICczMXB4JyxcclxuICAgIGJhY2tncm91bmRDb2xvcjogaXNBY3RpdmVcclxuICAgICAgICA/IHRoZW1lLmtldGNoZXIuY29sb3IuYnV0dG9uLmdyb3VwLmFjdGl2ZVxyXG4gICAgICAgIDogJ3doaXRlJyxcclxuICAgIG1hcmdpblJpZ2h0OiAnOHB4JyxcclxuICAgIGJvcmRlcjogaXNBY3RpdmVcclxuICAgICAgICA/IHRoZW1lLmtldGNoZXIub3V0bGluZS5zZWxlY3RlZC5jb2xvclxyXG4gICAgICAgIDogdGhlbWUua2V0Y2hlci5vdXRsaW5lLnNtYWxsLFxyXG4gICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcclxuICAgIG91dGxpbmU6ICdub25lJyxcclxuICAgICc6aG92ZXInOiB7XHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpc0FjdGl2ZVxyXG4gICAgICAgICAgICA/IHRoZW1lLmtldGNoZXIuY29sb3IuYnV0dG9uLmdyb3VwLmhvdmVyXHJcbiAgICAgICAgICAgIDogJ3doaXRlJyxcclxuICAgIH0sXHJcbiAgICAnOmhvdmVyIHN2Zyc6IHtcclxuICAgICAgICBmaWxsOiBpc0FjdGl2ZSA/ICd3aGl0ZScgOiB0aGVtZS5rZXRjaGVyLmNvbG9yLmJ1dHRvbi5ncm91cC5hY3RpdmUsXHJcbiAgICB9LFxyXG59KSk7XHJcbmV4cG9ydCBjb25zdCBTZXF1ZW5jZVN5bmNFZGl0TW9kZUJ1dHRvbiA9ICgpID0+IHtcclxuICAgIGNvbnN0IGVkaXRvciA9IHVzZUFwcFNlbGVjdG9yKHNlbGVjdEVkaXRvcik7XHJcbiAgICBjb25zdCBbaXNTZXF1ZW5jZVN5bmNFZGl0TW9kZSwgc2V0SXNTZXF1ZW5jZVN5bmNFZGl0TW9kZV0gPSB1c2VTdGF0ZSh0cnVlKTtcclxuICAgIGNvbnN0IGxheW91dE1vZGUgPSB1c2VMYXlvdXRNb2RlKCk7XHJcbiAgICBjb25zdCBpc1NlcXVlbmNlTW9kZSA9IGxheW91dE1vZGUgPT09IE1vZGVUeXBlcy5zZXF1ZW5jZTtcclxuICAgIGNvbnN0IGhhc0F0TGVhc3RPbmVBbnRpc2Vuc2UgPSB1c2VBcHBTZWxlY3RvcihoYXNBbnRpc2Vuc2VDaGFpbnMpO1xyXG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNTZXF1ZW5jZVN5bmNFZGl0TW9kZU5ld1N0YXRlID0gIWlzU2VxdWVuY2VTeW5jRWRpdE1vZGU7XHJcbiAgICAgICAgc2V0SXNTZXF1ZW5jZVN5bmNFZGl0TW9kZShpc1NlcXVlbmNlU3luY0VkaXRNb2RlTmV3U3RhdGUpO1xyXG4gICAgICAgIGVkaXRvci5ldmVudHMudG9nZ2xlSXNTZXF1ZW5jZVN5bmNFZGl0TW9kZS5kaXNwYXRjaChpc1NlcXVlbmNlU3luY0VkaXRNb2RlTmV3U3RhdGUpO1xyXG4gICAgICAgIGJsdXJBY3RpdmVFbGVtZW50KCk7XHJcbiAgICB9O1xyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAoaXNTZXF1ZW5jZU1vZGUgJiYgaGFzQXRMZWFzdE9uZUFudGlzZW5zZSkge1xyXG4gICAgICAgICAgICBlZGl0b3IuZXZlbnRzLnRvZ2dsZUlzU2VxdWVuY2VTeW5jRWRpdE1vZGUuZGlzcGF0Y2goaXNTZXF1ZW5jZVN5bmNFZGl0TW9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzU2VxdWVuY2VNb2RlLCBoYXNBdExlYXN0T25lQW50aXNlbnNlXSk7XHJcbiAgICByZXR1cm4gaXNTZXF1ZW5jZU1vZGUgJiYgaGFzQXRMZWFzdE9uZUFudGlzZW5zZSA/IChfanN4KF9GcmFnbWVudCwgeyBjaGlsZHJlbjogX2pzeChTdHlsZWRCdXR0b24sIHsgaXNBY3RpdmU6IGlzU2VxdWVuY2VTeW5jRWRpdE1vZGUsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLCBjaGlsZHJlbjogX2pzeHMoXCJzdmdcIiwgeyB3aWR0aDogXCIyNFwiLCBoZWlnaHQ6IFwiMjRcIiwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgZmlsbDogaXNTZXF1ZW5jZVN5bmNFZGl0TW9kZSA/ICd3aGl0ZScgOiAnIzMzMzMzMycsIGNoaWxkcmVuOiBbX2pzeChcInJlY3RcIiwgeyB4OiBcIjFcIiwgeTogXCIxLjVcIiwgd2lkdGg6IFwiMjJcIiwgaGVpZ2h0OiBcIjJcIiwgcng6IFwiMVwiIH0pLCBfanN4KFwicmVjdFwiLCB7IHg6IFwiMi41XCIsIHk6IFwiMS41XCIsIHdpZHRoOiBcIjVcIiwgaGVpZ2h0OiBcIjEuNVwiLCByeDogXCIwLjc1XCIsIHRyYW5zZm9ybTogXCJyb3RhdGUoOTAgMi41IDEuNSlcIiB9KSwgX2pzeChcInJlY3RcIiwgeyB4OiBcIjkuMzMzMzNcIiwgeTogXCIxLjVcIiwgd2lkdGg6IFwiNVwiLCBoZWlnaHQ6IFwiMS41XCIsIHJ4OiBcIjAuNzVcIiwgdHJhbnNmb3JtOiBcInJvdGF0ZSg5MCA5LjMzMzMzIDEuNSlcIiB9KSwgX2pzeChcInJlY3RcIiwgeyB4OiBcIjE2LjE2NjdcIiwgeTogXCIxLjVcIiwgd2lkdGg6IFwiNVwiLCBoZWlnaHQ6IFwiMS41XCIsIHJ4OiBcIjAuNzVcIiwgdHJhbnNmb3JtOiBcInJvdGF0ZSg5MCAxNi4xNjY3IDEuNSlcIiB9KSwgX2pzeChcInJlY3RcIiwgeyB4OiBcIjIzXCIsIHk6IFwiMS41XCIsIHdpZHRoOiBcIjVcIiwgaGVpZ2h0OiBcIjEuNVwiLCByeDogXCIwLjc1XCIsIHRyYW5zZm9ybTogXCJyb3RhdGUoOTAgMjMgMS41KVwiIH0pLCBfanN4KFwicGF0aFwiLCB7IGQ6IFwiTTIuMTY4NzMgMTQuMjcxNUMyLjA4OTYzIDE0LjM2NTIgMi4wMjUxOCAxNC40MjUzIDEuOTc1MzcgMTQuNDUxN0MxLjkyODUgMTQuNDc4IDEuODY5OSAxNC40OTEyIDEuNzk5NTkgMTQuNDkxMkMxLjY2MTg5IDE0LjQ5MTIgMS41NTA1NyAxNC40NDU4IDEuNDY1NjEgMTQuMzU1QzEuMzgzNTcgMTQuMjYxMiAxLjM0MjU2IDE0LjEwNzQgMS4zNDI1NiAxMy44OTM2VjEzLjI4NzFDMS4zNDI1NiAxMy4wNzAzIDEuMzgzNTcgMTIuOTE2NSAxLjQ2NTYxIDEyLjgyNTdDMS41NTA1NyAxMi43MzE5IDEuNjYxODkgMTIuNjg1MSAxLjc5OTU5IDEyLjY4NTFDMS45MDUwNiAxMi42ODUxIDEuOTkyOTUgMTIuNzEyOSAyLjA2MzI2IDEyLjc2ODZDMi4xMzY1IDEyLjgyNDIgMi4xOTIxNyAxMi45MTggMi4yMzAyNSAxMy4wNDk4QzIuMjY4MzQgMTMuMTc4NyAyLjMwNzg5IDEzLjI2NjYgMi4zNDg5MSAxMy4zMTM1QzIuNDMzODcgMTMuNDA0MyAyLjU4NDc1IDEzLjQ5NjYgMi44MDE1NCAxMy41OTAzQzMuMDE4MzQgMTMuNjg0MSAzLjI1NTY0IDEzLjczMSAzLjUxMzQ2IDEzLjczMUMzLjkxNDgyIDEzLjczMSA0LjI0NDQxIDEzLjYzNzIgNC41MDIyMyAxMy40NDk3QzQuNjY2MjkgMTMuMzM1NCA0Ljc0ODMyIDEzLjE5NDggNC43NDgzMiAxMy4wMjc4QzQuNzQ4MzIgMTIuOTE2NSA0LjcwODc3IDEyLjgxMjUgNC42Mjk2NyAxMi43MTU4QzQuNTUwNTcgMTIuNjE2MiA0LjQyMTY2IDEyLjUzNDIgNC4yNDI5NSAxMi40Njk3QzQuMTI1NzYgMTIuNDI1OCAzLjg2MzU1IDEyLjM2NTcgMy40NTYzMyAxMi4yODk2QzIuOTY0MTQgMTIuMTk4NyAyLjU5MjA3IDEyLjA4ODkgMi4zNDAxMiAxMS45NkMyLjA4ODE2IDExLjgzMTEgMS44ODg5NSAxMS42NDk0IDEuNzQyNDYgMTEuNDE1QzEuNTk1OTggMTEuMTgwNyAxLjUyMjczIDEwLjkyNzIgMS41MjI3MyAxMC42NTQ4QzEuNTIyNzMgMTAuMjI0MSAxLjcwMjkxIDkuODQ3NjYgMi4wNjMyNiA5LjUyNTM5QzIuNDIzNjEgOS4yMDAyIDIuODkyMzYgOS4wMzc2IDMuNDY5NTEgOS4wMzc2QzMuNzAwOTYgOS4wMzc2IDMuOTE0ODIgOS4wNjM5NiA0LjExMTExIDkuMTE2N0M0LjMxMDMzIDkuMTY2NSA0LjQ5MDUxIDkuMjQ0MTQgNC42NTE2NCA5LjM0OTYxQzQuNzY4ODMgOS4yMzUzNSA0Ljg4NjAyIDkuMTc4MjIgNS4wMDMyIDkuMTc4MjJDNS4xMzUwNCA5LjE3ODIyIDUuMjQxOTcgOS4yMjUxIDUuMzI0IDkuMzE4ODVDNS40MDg5NyA5LjQwOTY3IDUuNDUxNDUgOS41NjIwMSA1LjQ1MTQ1IDkuNzc1ODhWMTAuNDUyNkM1LjQ1MTQ1IDEwLjY2OTQgNS40MDg5NyAxMC44MjQ3IDUuMzI0IDEwLjkxODVDNS4yNDE5NyAxMS4wMDkzIDUuMTM1MDQgMTEuMDU0NyA1LjAwMzIgMTEuMDU0N0M0Ljg5MTg4IDExLjA1NDcgNC43OTUyIDExLjAyMSA0LjcxMzE2IDEwLjk1MzZDNC42NDg3MSAxMC45MDM4IDQuNjAwMzcgMTAuODA0MiA0LjU2ODE0IDEwLjY1NDhDNC41MzU5MiAxMC41MDU0IDQuNDk0OSAxMC4zOTg0IDQuNDQ1MSAxMC4zMzRDNC4zNjAxNCAxMC4yMjI3IDQuMjMyNyAxMC4xMjg5IDQuMDYyNzcgMTAuMDUyN0MzLjg5Mjg1IDkuOTc2NTYgMy42OTY1NiA5LjkzODQ4IDMuNDczOTEgOS45Mzg0OEMzLjE0ODcxIDkuOTM4NDggMi44OTA5IDEwLjAxNDYgMi43MDA0NyAxMC4xNjdDMi41MTI5NyAxMC4zMTY0IDIuNDE5MjIgMTAuNDczMSAyLjQxOTIyIDEwLjYzNzJDMi40MTkyMiAxMC43NDg1IDIuNDU3MyAxMC44NTY5IDIuNTMzNDggMTAuOTYyNEMyLjYxMjU4IDExLjA2NDkgMi43MjY4NCAxMS4xNDU1IDIuODc2MjUgMTEuMjA0MUMyLjk3NTg2IDExLjI0NTEgMy4yNTU2NCAxMS4zMTEgMy43MTU2MSAxMS40MDE5QzQuMTc4NSAxMS40OTI3IDQuNTMyOTkgMTEuNTkyMyA0Ljc3OTA4IDExLjcwMDdDNS4wMjgxMSAxMS44MDkxIDUuMjM0NjUgMTEuOTc5IDUuMzk4NzEgMTIuMjEwNEM1LjU2Mjc3IDEyLjQ0MTkgNS42NDQ4IDEyLjcxNzMgNS42NDQ4IDEzLjAzNjZDNS42NDQ4IDEzLjQ4MTkgNS40ODgwNyAxMy44Mzc5IDUuMTc0NTkgMTQuMTA0NUM0Ljc1ODU3IDE0LjQ1NjEgNC4yMjgzIDE0LjYzMTggMy41ODM3NyAxNC42MzE4QzMuMzM0NzUgMTQuNjMxOCAzLjA5MTU4IDE0LjYwMTEgMi44NTQyOCAxNC41Mzk2QzIuNjE5OSAxNC40ODEgMi4zOTEzOSAxNC4zOTE2IDIuMTY4NzMgMTQuMjcxNVpNOS42MTUgMTIuMjYzMlYxMy41OTkxSDEwLjIyMTRDMTAuNDM4MiAxMy41OTkxIDEwLjU5MjEgMTMuNjQxNiAxMC42ODI5IDEzLjcyNjZDMTAuNzc2NiAxMy44MDg2IDEwLjgyMzUgMTMuOTE3IDEwLjgyMzUgMTQuMDUxOEMxMC44MjM1IDE0LjE4MzYgMTAuNzc2NiAxNC4yOTIgMTAuNjgyOSAxNC4zNzdDMTAuNTkyMSAxNC40NTkgMTAuNDM4MiAxNC41IDEwLjIyMTQgMTQuNUg4LjEwNzY4QzcuODkzODEgMTQuNSA3Ljc0IDE0LjQ1OSA3LjY0NjI1IDE0LjM3N0M3LjU1NTQzIDE0LjI5MiA3LjUxMDAyIDE0LjE4MjEgNy41MTAwMiAxNC4wNDc0QzcuNTEwMDIgMTMuOTE1NSA3LjU1NTQzIDEzLjgwODYgNy42NDYyNSAxMy43MjY2QzcuNzQgMTMuNjQxNiA3Ljg5MzgxIDEzLjU5OTEgOC4xMDc2OCAxMy41OTkxSDguNzE0MTJWMTIuMjYzMkw3LjIyNDM4IDEwLjA3NDdDNy4wMjUxNiAxMC4wNzQ3IDYuODc4NjcgMTAuMDMyMiA2Ljc4NDkyIDkuOTQ3MjdDNi42OTQxIDkuODYyMyA2LjY0ODY5IDkuNzUzOTEgNi42NDg2OSA5LjYyMjA3QzYuNjQ4NjkgOS40ODczIDYuNjk0MSA5LjM3ODkxIDYuNzg0OTIgOS4yOTY4OEM2Ljg3ODY3IDkuMjExOTEgNy4wMzM5NSA5LjE2OTQzIDcuMjUwNzQgOS4xNjk0M0w4LjA2ODEzIDkuMTczODNDOC4yODQ5MiA5LjE3MzgzIDguNDM4NzMgOS4yMTQ4NCA4LjUyOTU1IDkuMjk2ODhDOC42MjMzIDkuMzc4OTEgOC42NzAxOCA5LjQ4NzMgOC42NzAxOCA5LjYyMjA3QzguNjcwMTggOS44MjQyMiA4LjU1MTUyIDkuOTc1MSA4LjMxNDIyIDEwLjA3NDdMOS4xNjY3NiAxMS4zMzE1TDEwLjAwMTcgMTAuMDc0N0M5Ljg2OTg4IDEwLjAyNDkgOS43NzYxMyA5Ljk2MTkxIDkuNzIwNDcgOS44ODU3NEM5LjY2NDggOS44MDk1NyA5LjYzNjk3IDkuNzIxNjggOS42MzY5NyA5LjYyMjA3QzkuNjM2OTcgOS40ODczIDkuNjgyMzggOS4zNzg5MSA5Ljc3MzIgOS4yOTY4OEM5Ljg2Njk1IDkuMjE0ODQgMTAuMDIyMiA5LjE3MjM2IDEwLjIzOSA5LjE2OTQzTDExLjA4NzIgOS4xNzM4M0MxMS4zMDQgOS4xNzM4MyAxMS40NTc4IDkuMjE0ODQgMTEuNTQ4NiA5LjI5Njg4QzExLjY0MjMgOS4zNzg5MSAxMS42ODkyIDkuNDg3MyAxMS42ODkyIDkuNjIyMDdDMTEuNjg5MiA5Ljc1Njg0IDExLjY0MjMgOS44NjY3IDExLjU0ODYgOS45NTE2NkMxMS40NTQ4IDEwLjAzMzcgMTEuMzAyNSAxMC4wNzQ3IDExLjA5MTYgMTAuMDc0N0w5LjYxNSAxMi4yNjMyWk0xMy43MDgyIDEwLjg3NDVWMTMuNTk5MUgxNC4wMzM0QzE0LjI1MDIgMTMuNTk5MSAxNC40MDQgMTMuNjQxNiAxNC40OTQ5IDEzLjcyNjZDMTQuNTg4NiAxMy44MDg2IDE0LjYzNTUgMTMuOTE3IDE0LjYzNTUgMTQuMDUxOEMxNC42MzU1IDE0LjE4MzYgMTQuNTg4NiAxNC4yOTIgMTQuNDk0OSAxNC4zNzdDMTQuNDA0IDE0LjQ1OSAxNC4yNTAyIDE0LjUgMTQuMDMzNCAxNC41SDEyLjg1MTNDMTIuNjM0NSAxNC41IDEyLjQ3OTIgMTQuNDU5IDEyLjM4NTUgMTQuMzc3QzEyLjI5NDcgMTQuMjkyIDEyLjI0OTMgMTQuMTgyMSAxMi4yNDkzIDE0LjA0NzRDMTIuMjQ5MyAxMy45MTg1IDEyLjI5NDcgMTMuODExNSAxMi4zODU1IDEzLjcyNjZDMTIuNDc2MyAxMy42NDE2IDEyLjYxNjkgMTMuNTk5MSAxMi44MDc0IDEzLjU5OTFWMTAuMDc0N0gxMi42NjY3QzEyLjQ0OTkgMTAuMDc0NyAxMi4yOTQ3IDEwLjAzMzcgMTIuMjAwOSA5Ljk1MTY2QzEyLjExMDEgOS44NjY3IDEyLjA2NDcgOS43NTY4NCAxMi4wNjQ3IDkuNjIyMDdDMTIuMDY0NyA5LjQ4NzMgMTIuMTEwMSA5LjM3ODkxIDEyLjIwMDkgOS4yOTY4OEMxMi4yOTQ3IDkuMjExOTEgMTIuNDQ5OSA5LjE2OTQzIDEyLjY2NjcgOS4xNjk0M0wxMy43MDgyIDkuMTczODNMMTYuMDExIDEyLjc4NjFWMTAuMDc0N0gxNS42ODU4QzE1LjQ2OSAxMC4wNzQ3IDE1LjMxMzcgMTAuMDMzNyAxNS4yMiA5Ljk1MTY2QzE1LjEyOTEgOS44NjY3IDE1LjA4MzcgOS43NTY4NCAxNS4wODM3IDkuNjIyMDdDMTUuMDgzNyA5LjQ4NzMgMTUuMTI5MSA5LjM3ODkxIDE1LjIyIDkuMjk2ODhDMTUuMzEzNyA5LjIxMTkxIDE1LjQ2OSA5LjE2OTQzIDE1LjY4NTggOS4xNjk0M0wxNi44Njc5IDkuMTczODNDMTcuMDg0NyA5LjE3MzgzIDE3LjIzODUgOS4yMTQ4NCAxNy4zMjkzIDkuMjk2ODhDMTcuNDIzMSA5LjM3ODkxIDE3LjQ3IDkuNDg3MyAxNy40NyA5LjYyMjA3QzE3LjQ3IDkuNzUzOTEgMTcuNDI0NiA5Ljg2MjMgMTcuMzMzNyA5Ljk0NzI3QzE3LjI0MjkgMTAuMDMyMiAxNy4xMDM4IDEwLjA3NDcgMTYuOTE2MyAxMC4wNzQ3VjE0LjVIMTYuMDI0MkwxMy43MDgyIDEwLjg3NDVaTTIxLjkyMzYgOS40MDIzNEMyMS45NzkyIDkuMzI2MTcgMjIuMDM5MyA5LjI2OTA0IDIyLjEwMzcgOS4yMzA5NkMyMi4xNzExIDkuMTkyODcgMjIuMjQyOSA5LjE3MzgzIDIyLjMxOTEgOS4xNzM4M0MyMi40NTA5IDkuMTczODMgMjIuNTU3OCA5LjIxOTI0IDIyLjYzOTkgOS4zMTAwNkMyMi43MjQ4IDkuNDAwODggMjIuNzY3MyA5LjU1NDY5IDIyLjc2NzMgOS43NzE0OFYxMC41MzYxQzIyLjc2NzMgMTAuNzUyOSAyMi43MjQ4IDEwLjkwODIgMjIuNjM5OSAxMS4wMDJDMjIuNTU3OCAxMS4wOTI4IDIyLjQ1MDkgMTEuMTM4MiAyMi4zMTkxIDExLjEzODJDMjIuMTk4OSAxMS4xMzgyIDIyLjEwMjMgMTEuMTA0NSAyMi4wMjkgMTEuMDM3MUMyMS45NTU4IDEwLjk2OTcgMjEuOTAxNiAxMC44NDM4IDIxLjg2NjQgMTAuNjU5MkMyMS44NDU5IDEwLjUzNjEgMjEuODA0OSAxMC40NDA5IDIxLjc0MzQgMTAuMzczNUMyMS42MjMzIDEwLjI0MTcgMjEuNDU0OCAxMC4xMzYyIDIxLjIzOCAxMC4wNTcxQzIxLjAyNDEgOS45NzgwMyAyMC44MDg4IDkuOTM4NDggMjAuNTkyIDkuOTM4NDhDMjAuMzIyNSA5LjkzODQ4IDIwLjA3NDkgOS45OTcwNyAxOS44NDkzIDEwLjExNDNDMTkuNjIzNyAxMC4yMzE0IDE5LjQyNDUgMTAuNDIxOSAxOS4yNTE3IDEwLjY4NTVDMTkuMDc4OCAxMC45NDkyIDE4Ljk5MjQgMTEuMjYyNyAxOC45OTI0IDExLjYyNlYxMi4yMTA0QzE4Ljk5MjQgMTIuNjQ0IDE5LjE0OTEgMTMuMDA1OSAxOS40NjI2IDEzLjI5NTlDMTkuNzc5IDEzLjU4NTkgMjAuMjE3IDEzLjczMSAyMC43NzY2IDEzLjczMUMyMS4xMTA2IDEzLjczMSAyMS4zOTMzIDEzLjY4NTUgMjEuNjI0NyAxMy41OTQ3QzIxLjc1OTUgMTMuNTQyIDIxLjkwMyAxMy40MzggMjIuMDU1NCAxMy4yODI3QzIyLjE0OTEgMTMuMTg5IDIyLjIyMjQgMTMuMTI4OSAyMi4yNzUxIDEzLjEwMjVDMjIuMzI3OSAxMy4wNzMyIDIyLjM4NzkgMTMuMDU4NiAyMi40NTUzIDEzLjA1ODZDMjIuNTc1NCAxMy4wNTg2IDIyLjY4MDkgMTMuMTA0IDIyLjc3MTcgMTMuMTk0OEMyMi44NjI1IDEzLjI4NTYgMjIuOTA3OSAxMy4zOTI2IDIyLjkwNzkgMTMuNTE1NkMyMi45MDc5IDEzLjYzODcgMjIuODQ2NCAxMy43NzA1IDIyLjcyMzQgMTMuOTExMUMyMi41NDQ2IDE0LjExNjIgMjIuMzE0NyAxNC4yNzczIDIyLjAzMzQgMTQuMzk0NUMyMS42NTU1IDE0LjU1MjcgMjEuMjM4IDE0LjYzMTggMjAuNzgxIDE0LjYzMThDMjAuMjQ3OCAxNC42MzE4IDE5Ljc2NzMgMTQuNTIyIDE5LjMzOTYgMTQuMzAyMkMxOC45OTM5IDE0LjEyNjUgMTguNjk5NCAxMy44NDk2IDE4LjQ1NjMgMTMuNDcxN0MxOC4yMTMxIDEzLjA5MDggMTguMDkxNSAxMi42NzYzIDE4LjA5MTUgMTIuMjI4VjExLjYxNzJDMTguMDkxNSAxMS4xNDg0IDE4LjE5OTkgMTAuNzExOSAxOC40MTY3IDEwLjMwNzZDMTguNjM2NCA5LjkwMDM5IDE4LjkzOTcgOS41ODY5MSAxOS4zMjY0IDkuMzY3MTlDMTkuNzEzMSA5LjE0NzQ2IDIwLjEyMzMgOS4wMzc2IDIwLjU1NjkgOS4wMzc2QzIwLjgxNzYgOS4wMzc2IDIxLjA2MDggOS4wNjgzNiAyMS4yODYzIDkuMTI5ODhDMjEuNTE0OSA5LjE4ODQ4IDIxLjcyNzMgOS4yNzkzIDIxLjkyMzYgOS40MDIzNFpcIiB9KSwgX2pzeChcInJlY3RcIiwgeyB4OiBcIjIzXCIsIHk6IFwiMjIuNVwiLCB3aWR0aDogXCIyMlwiLCBoZWlnaHQ6IFwiMlwiLCByeDogXCIxXCIsIHRyYW5zZm9ybTogXCJyb3RhdGUoLTE4MCAyMyAyMi41KVwiIH0pLCBfanN4KFwicmVjdFwiLCB7IHg6IFwiMjEuNVwiLCB5OiBcIjIyLjVcIiwgd2lkdGg6IFwiNVwiLCBoZWlnaHQ6IFwiMS41XCIsIHJ4OiBcIjAuNzVcIiwgdHJhbnNmb3JtOiBcInJvdGF0ZSgtOTAgMjEuNSAyMi41KVwiIH0pLCBfanN4KFwicmVjdFwiLCB7IHg6IFwiMTQuNjY2N1wiLCB5OiBcIjIyLjVcIiwgd2lkdGg6IFwiNVwiLCBoZWlnaHQ6IFwiMS41XCIsIHJ4OiBcIjAuNzVcIiwgdHJhbnNmb3JtOiBcInJvdGF0ZSgtOTAgMTQuNjY2NyAyMi41KVwiIH0pLCBfanN4KFwicmVjdFwiLCB7IHg6IFwiNy44MzMzM1wiLCB5OiBcIjIyLjVcIiwgd2lkdGg6IFwiNVwiLCBoZWlnaHQ6IFwiMS41XCIsIHJ4OiBcIjAuNzVcIiwgdHJhbnNmb3JtOiBcInJvdGF0ZSgtOTAgNy44MzMzMyAyMi41KVwiIH0pLCBfanN4KFwicmVjdFwiLCB7IHg6IFwiMVwiLCB5OiBcIjIyLjVcIiwgd2lkdGg6IFwiNVwiLCBoZWlnaHQ6IFwiMS41XCIsIHJ4OiBcIjAuNzVcIiwgdHJhbnNmb3JtOiBcInJvdGF0ZSgtOTAgMSAyMi41KVwiIH0pXSB9KSB9KSB9KSkgOiBudWxsO1xyXG59O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1TZXF1ZW5jZVN5bmNFZGl0TW9kZUJ1dHRvbi5qcy5tYXAiXX0= */");
15442
+ var SequenceSyncEditModeButton = function SequenceSyncEditModeButton() {
15443
+ var editor = useAppSelector(selectEditor);
15444
+ var _useState = React.useState(true),
15445
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
15446
+ isSequenceSyncEditMode = _useState2[0],
15447
+ setIsSequenceSyncEditMode = _useState2[1];
15448
+ var layoutMode = useLayoutMode();
15449
+ var isSequenceMode = layoutMode === ketcherCore.ModeTypes.sequence;
15450
+ var hasAtLeastOneAntisense = useAppSelector(hasAntisenseChains);
15451
+ var handleClick = function handleClick() {
15452
+ var isSequenceSyncEditModeNewState = !isSequenceSyncEditMode;
15453
+ setIsSequenceSyncEditMode(isSequenceSyncEditModeNewState);
15454
+ editor.events.toggleIsSequenceSyncEditMode.dispatch(isSequenceSyncEditModeNewState);
15455
+ blurActiveElement();
15456
+ };
15457
+ React.useEffect(function () {
15458
+ if (isSequenceMode && hasAtLeastOneAntisense) {
15459
+ editor.events.toggleIsSequenceSyncEditMode.dispatch(isSequenceSyncEditMode);
15460
+ }
15461
+ }, [isSequenceMode, hasAtLeastOneAntisense]);
15462
+ return isSequenceMode && hasAtLeastOneAntisense ? jsxRuntime.jsx(jsxRuntime.Fragment, {
15463
+ children: jsxRuntime.jsx(StyledButton, {
15464
+ isActive: isSequenceSyncEditMode,
15465
+ onClick: handleClick,
15466
+ children: jsxRuntime.jsxs("svg", {
15467
+ width: "24",
15468
+ height: "24",
15469
+ viewBox: "0 0 24 24",
15470
+ xmlns: "http://www.w3.org/2000/svg",
15471
+ fill: isSequenceSyncEditMode ? 'white' : '#333333',
15472
+ children: [jsxRuntime.jsx("rect", {
15473
+ x: "1",
15474
+ y: "1.5",
15475
+ width: "22",
15476
+ height: "2",
15477
+ rx: "1"
15478
+ }), jsxRuntime.jsx("rect", {
15479
+ x: "2.5",
15480
+ y: "1.5",
15481
+ width: "5",
15482
+ height: "1.5",
15483
+ rx: "0.75",
15484
+ transform: "rotate(90 2.5 1.5)"
15485
+ }), jsxRuntime.jsx("rect", {
15486
+ x: "9.33333",
15487
+ y: "1.5",
15488
+ width: "5",
15489
+ height: "1.5",
15490
+ rx: "0.75",
15491
+ transform: "rotate(90 9.33333 1.5)"
15492
+ }), jsxRuntime.jsx("rect", {
15493
+ x: "16.1667",
15494
+ y: "1.5",
15495
+ width: "5",
15496
+ height: "1.5",
15497
+ rx: "0.75",
15498
+ transform: "rotate(90 16.1667 1.5)"
15499
+ }), jsxRuntime.jsx("rect", {
15500
+ x: "23",
15501
+ y: "1.5",
15502
+ width: "5",
15503
+ height: "1.5",
15504
+ rx: "0.75",
15505
+ transform: "rotate(90 23 1.5)"
15506
+ }), jsxRuntime.jsx("path", {
15507
+ 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"
15508
+ }), jsxRuntime.jsx("rect", {
15509
+ x: "23",
15510
+ y: "22.5",
15511
+ width: "22",
15512
+ height: "2",
15513
+ rx: "1",
15514
+ transform: "rotate(-180 23 22.5)"
15515
+ }), jsxRuntime.jsx("rect", {
15516
+ x: "21.5",
15517
+ y: "22.5",
15518
+ width: "5",
15519
+ height: "1.5",
15520
+ rx: "0.75",
15521
+ transform: "rotate(-90 21.5 22.5)"
15522
+ }), jsxRuntime.jsx("rect", {
15523
+ x: "14.6667",
15524
+ y: "22.5",
15525
+ width: "5",
15526
+ height: "1.5",
15527
+ rx: "0.75",
15528
+ transform: "rotate(-90 14.6667 22.5)"
15529
+ }), jsxRuntime.jsx("rect", {
15530
+ x: "7.83333",
15531
+ y: "22.5",
15532
+ width: "5",
15533
+ height: "1.5",
15534
+ rx: "0.75",
15535
+ transform: "rotate(-90 7.83333 22.5)"
15536
+ }), jsxRuntime.jsx("rect", {
15537
+ x: "1",
15538
+ y: "22.5",
15539
+ width: "5",
15540
+ height: "1.5",
15541
+ rx: "0.75",
15542
+ transform: "rotate(-90 1 22.5)"
15543
+ })]
15544
+ })
15545
+ })
15546
+ }) : null;
15547
+ };
15548
+
15240
15549
  var muiTheme = styles$1.createTheme(muiOverrides);
15241
15550
  function EditorContainer(_ref) {
15242
15551
  var onInit = _ref.onInit,
@@ -15373,7 +15682,7 @@ function Editor(_ref2) {
15373
15682
  shortened: isMonomerLibraryHidden,
15374
15683
  "data-testid": "top-toolbar",
15375
15684
  children: [jsxRuntime.jsx(TopMenuComponent, {}), jsxRuntime.jsxs(TopMenuRightWrapper, {
15376
- children: [jsxRuntime.jsx(LayoutModeButton, {}), jsxRuntime.jsx(SequenceTypeGroupButton, {}), jsxRuntime.jsx(TogglerComponentWrapper, {
15685
+ children: [jsxRuntime.jsx(SequenceSyncEditModeButton, {}), jsxRuntime.jsx(LayoutModeButton, {}), jsxRuntime.jsx(SequenceTypeGroupButton, {}), jsxRuntime.jsx(TogglerComponentWrapper, {
15377
15686
  className: isSequenceEditInRNABuilderMode ? 'toggler-component-wrapper--disabled' : '',
15378
15687
  children: togglerComponent
15379
15688
  }), jsxRuntime.jsx(FullscreenButton, {}), jsxRuntime.jsx(VerticalDivider, {}), jsxRuntime.jsx(ZoomControls, {})]
@@ -15445,4 +15754,4 @@ function Editor(_ref2) {
15445
15754
  }
15446
15755
 
15447
15756
  exports["default"] = EditorContainer;
15448
- //# sourceMappingURL=index.modern-692d4305.js.map
15757
+ //# sourceMappingURL=index.modern-88e692a5.js.map