@teselagen/ove 0.7.1 → 0.7.3-beta.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.
package/index.cjs.js CHANGED
@@ -71660,7 +71660,7 @@ const DynamicMenuItem = /* @__PURE__ */ __name(({
71660
71660
  labelElement: item.hotkey && /* @__PURE__ */ React$2.createElement(core.KeyCombo, { minimal: true, combo: item.hotkey }),
71661
71661
  text: item.text
71662
71662
  }),
71663
- item.submenu ? item.submenu.filter(ident$1).map((def2, index2) => /* @__PURE__ */ React$2.createElement(DynamicMenuItem, __spreadProps(__spreadValues({}, { def: def2, enhancers, context }), { key: index2 }))) : void 0
71663
+ item.submenu ? item.submenu.filter(ident$1).map((def2, index2) => /* @__PURE__ */ React$2.createElement(DynamicMenuItem, __spreadValues({ key: index2 }, { def: def2, enhancers, context }))) : void 0
71664
71664
  );
71665
71665
  }
71666
71666
  if (item.disabled && typeof item.disabled === "string") {
@@ -71673,7 +71673,7 @@ const DynamicMenuItem = /* @__PURE__ */ __name(({
71673
71673
  }, "DynamicMenuItem");
71674
71674
  const createDynamicMenu = /* @__PURE__ */ __name((menuDef2, enhancers, context) => {
71675
71675
  if (menuDef2 instanceof Array) {
71676
- return menuDef2.map((def, index2) => /* @__PURE__ */ React$2.createElement(DynamicMenuItem, __spreadProps(__spreadValues({}, { def, enhancers, context }), { key: index2 })));
71676
+ return menuDef2.map((def, index2) => /* @__PURE__ */ React$2.createElement(DynamicMenuItem, __spreadValues({ key: index2 }, { def, enhancers, context })));
71677
71677
  } else {
71678
71678
  return /* @__PURE__ */ React$2.createElement(DynamicMenuItem, __spreadValues({}, { def: menuDef2, enhancers, context }));
71679
71679
  }
@@ -79840,12 +79840,18 @@ function getAminoAcidDataForEachBaseOfDna(originalSequenceString, forward, optio
79840
79840
  let positionInCodon = 0;
79841
79841
  for (let i = 0; i < basesRead; i++) {
79842
79842
  const posInCds = i + index2;
79843
+ const sequenceIndex = codonPositionsInCDS.includes(posInCds) ? absoluteCodonPositions[codonPositionsInCDS.indexOf(posInCds)] : positionInCdsToPositionInMainSequence(
79844
+ posInCds,
79845
+ forward,
79846
+ translationRange,
79847
+ originalSequenceStringLength
79848
+ );
79843
79849
  if (codonPositionsInCDS.includes(posInCds)) {
79844
79850
  aminoAcidDataForEachBaseOfDNA.push({
79845
79851
  aminoAcid,
79846
79852
  positionInCodon,
79847
79853
  aminoAcidIndex,
79848
- sequenceIndex: absoluteCodonPositions[i],
79854
+ sequenceIndex,
79849
79855
  codonRange,
79850
79856
  fullCodon: codonPositionsInCDS.length === 3
79851
79857
  });
@@ -79855,12 +79861,7 @@ function getAminoAcidDataForEachBaseOfDna(originalSequenceString, forward, optio
79855
79861
  aminoAcid: null,
79856
79862
  positionInCodon: null,
79857
79863
  aminoAcidIndex: null,
79858
- sequenceIndex: positionInCdsToPositionInMainSequence(
79859
- posInCds,
79860
- forward,
79861
- translationRange,
79862
- originalSequenceStringLength
79863
- ),
79864
+ sequenceIndex,
79864
79865
  codonRange: null,
79865
79866
  fullCodon: null
79866
79867
  });
@@ -117167,7 +117168,9 @@ function SelectionLayer$2(props) {
117167
117168
  caretSvgs = [
117168
117169
  overlap.start === start2 && /* @__PURE__ */ React$2.createElement(
117169
117170
  Caret$2,
117170
- __spreadValues({}, {
117171
+ __spreadValues({
117172
+ key: key + "caret1"
117173
+ }, {
117171
117174
  leftMargin,
117172
117175
  onClick: _onClick || preventDefaultStopPropagation,
117173
117176
  onRightClick: onSelectionContextMenu,
@@ -117177,7 +117180,6 @@ function SelectionLayer$2(props) {
117177
117180
  getGaps,
117178
117181
  isDraggable,
117179
117182
  ignoreGaps,
117180
- key: key + "caret1",
117181
117183
  sequenceLength,
117182
117184
  className: classNameToPass + " selectionLayerCaret " + (isDraggable ? draggableClassnames.selectionStart : ""),
117183
117185
  caretPosition: overlap.start
@@ -117185,7 +117187,9 @@ function SelectionLayer$2(props) {
117185
117187
  ),
117186
117188
  overlap.end === end2 && /* @__PURE__ */ React$2.createElement(
117187
117189
  Caret$2,
117188
- __spreadValues({}, {
117190
+ __spreadValues({
117191
+ key: key + "caret2"
117192
+ }, {
117189
117193
  leftMargin,
117190
117194
  onClick: _onClick || preventDefaultStopPropagation,
117191
117195
  onRightClick: onSelectionContextMenu,
@@ -117195,7 +117199,6 @@ function SelectionLayer$2(props) {
117195
117199
  getGaps,
117196
117200
  style: selectionLayer2.style,
117197
117201
  ignoreGaps,
117198
- key: key + "caret2",
117199
117202
  sequenceLength,
117200
117203
  className: classNameToPass + " selectionLayerCaret " + (isDraggable ? draggableClassnames.selectionEnd : ""),
117201
117204
  caretPosition: overlap.end + 1
@@ -117488,7 +117491,6 @@ const _Sequence = class _Sequence extends React$2.Component {
117488
117491
  width,
117489
117492
  position: "absolute"
117490
117493
  },
117491
- ref: "rowViewTextContainer",
117492
117494
  className: "rowViewTextContainer",
117493
117495
  height: Math.max(0, Number(height2))
117494
117496
  },
@@ -119626,6 +119628,7 @@ const _Translation = class _Translation extends React$2.Component {
119626
119628
  return /* @__PURE__ */ React$2.createElement(
119627
119629
  "rect",
119628
119630
  {
119631
+ key: annotation.id + aminoAcidSliver.sequenceIndex,
119629
119632
  x: index2 * charWidth2,
119630
119633
  y: height2 / 2 - height2 / 16,
119631
119634
  width: charWidth2,
@@ -120698,10 +120701,10 @@ const CutsiteSelectionLayers = connectToEditor(
120698
120701
  return layer.start > -1 && /* @__PURE__ */ React$2.createElement(
120699
120702
  SelectionLayer$3,
120700
120703
  __spreadValues(__spreadValues({
120701
- hideTitle: true
120704
+ hideTitle: true,
120705
+ key: "restrictionSiteRange" + index2
120702
120706
  }, annotationCommonProps), {
120703
120707
  id: cutsite.id,
120704
- key: "restrictionSiteRange" + index2,
120705
120708
  height: showReverseSequence ? sequenceHeight * 2 : sequenceHeight,
120706
120709
  regions: [layer],
120707
120710
  row: alignmentData ? { start: 0, end: alignmentData.sequence.length - 1 } : row,
@@ -121176,7 +121179,6 @@ function RowItem(props) {
121176
121179
  height: sequenceHeight,
121177
121180
  position: "absolute"
121178
121181
  },
121179
- ref: "rowViewTextContainer",
121180
121182
  onClick: function(event) {
121181
121183
  replacementLayerClicked({
121182
121184
  annotation: replacementLayer,
@@ -121915,7 +121917,7 @@ function showFileDialog({ multiple = false, onSelect }) {
121915
121917
  }
121916
121918
  __name(showFileDialog, "showFileDialog");
121917
121919
  const name = "@teselagen/ove";
121918
- const version = "0.7.0";
121920
+ const version = "0.7.3-beta.1";
121919
121921
  const main = "./src/index.js";
121920
121922
  const type = "module";
121921
121923
  const exports$1 = {
@@ -132024,8 +132026,9 @@ function LabelLine(pointArray, options) {
132024
132026
  });
132025
132027
  return /* @__PURE__ */ React$2.createElement(React$2.Fragment, { key: "labelLine" }, /* @__PURE__ */ React$2.createElement(
132026
132028
  "polyline",
132027
- __spreadValues({}, __spreadValues({
132028
- key: "polyline-long",
132029
+ __spreadValues({
132030
+ key: "polyline-long"
132031
+ }, __spreadValues({
132029
132032
  points,
132030
132033
  stroke: "black",
132031
132034
  fill: "none",
@@ -133451,12 +133454,11 @@ function CircularView(props) {
133451
133454
  return /* @__PURE__ */ React$2.createElement(
133452
133455
  SelectionLayer$1,
133453
133456
  __spreadValues({
133454
- key: index2
133457
+ key: "veCircularViewSelectionLayer" + index2
133455
133458
  }, {
133456
133459
  index: index2,
133457
133460
  isDraggable: true,
133458
133461
  isProtein: isProtein2,
133459
- key: "veCircularViewSelectionLayer" + index2,
133460
133462
  selectionLayer: selectionLayer22,
133461
133463
  onRightClicked: selectionLayer22.isSearchLayer ? searchLayerRightClicked : selectionLayerRightClicked,
133462
133464
  onClick: selectionLayer22.isSearchLayer ? searchLayerClicked : void 0,
@@ -133477,13 +133479,14 @@ function CircularView(props) {
133477
133479
  if (caretPosition2 !== -1 && selectionLayer2.start < 0 && sequenceLength >= 0) {
133478
133480
  return /* @__PURE__ */ React$2.createElement(
133479
133481
  Caret$1,
133480
- __spreadValues({}, {
133482
+ __spreadValues({
133483
+ key: "veCircularViewCaret"
133484
+ }, {
133481
133485
  caretPosition: caretPosition2,
133482
133486
  sequenceLength,
133483
133487
  isProtein: isProtein2,
133484
133488
  innerRadius,
133485
- outerRadius: radius,
133486
- key: "veCircularViewCaret"
133489
+ outerRadius: radius
133487
133490
  })
133488
133491
  );
133489
133492
  }
package/index.es.js CHANGED
@@ -71642,7 +71642,7 @@ const DynamicMenuItem = /* @__PURE__ */ __name(({
71642
71642
  labelElement: item.hotkey && /* @__PURE__ */ React__default$1.createElement(KeyCombo, { minimal: true, combo: item.hotkey }),
71643
71643
  text: item.text
71644
71644
  }),
71645
- item.submenu ? item.submenu.filter(ident$1).map((def2, index2) => /* @__PURE__ */ React__default$1.createElement(DynamicMenuItem, __spreadProps(__spreadValues({}, { def: def2, enhancers, context }), { key: index2 }))) : void 0
71645
+ item.submenu ? item.submenu.filter(ident$1).map((def2, index2) => /* @__PURE__ */ React__default$1.createElement(DynamicMenuItem, __spreadValues({ key: index2 }, { def: def2, enhancers, context }))) : void 0
71646
71646
  );
71647
71647
  }
71648
71648
  if (item.disabled && typeof item.disabled === "string") {
@@ -71655,7 +71655,7 @@ const DynamicMenuItem = /* @__PURE__ */ __name(({
71655
71655
  }, "DynamicMenuItem");
71656
71656
  const createDynamicMenu = /* @__PURE__ */ __name((menuDef2, enhancers, context) => {
71657
71657
  if (menuDef2 instanceof Array) {
71658
- return menuDef2.map((def, index2) => /* @__PURE__ */ React__default$1.createElement(DynamicMenuItem, __spreadProps(__spreadValues({}, { def, enhancers, context }), { key: index2 })));
71658
+ return menuDef2.map((def, index2) => /* @__PURE__ */ React__default$1.createElement(DynamicMenuItem, __spreadValues({ key: index2 }, { def, enhancers, context })));
71659
71659
  } else {
71660
71660
  return /* @__PURE__ */ React__default$1.createElement(DynamicMenuItem, __spreadValues({}, { def: menuDef2, enhancers, context }));
71661
71661
  }
@@ -79822,12 +79822,18 @@ function getAminoAcidDataForEachBaseOfDna(originalSequenceString, forward, optio
79822
79822
  let positionInCodon = 0;
79823
79823
  for (let i = 0; i < basesRead; i++) {
79824
79824
  const posInCds = i + index2;
79825
+ const sequenceIndex = codonPositionsInCDS.includes(posInCds) ? absoluteCodonPositions[codonPositionsInCDS.indexOf(posInCds)] : positionInCdsToPositionInMainSequence(
79826
+ posInCds,
79827
+ forward,
79828
+ translationRange,
79829
+ originalSequenceStringLength
79830
+ );
79825
79831
  if (codonPositionsInCDS.includes(posInCds)) {
79826
79832
  aminoAcidDataForEachBaseOfDNA.push({
79827
79833
  aminoAcid,
79828
79834
  positionInCodon,
79829
79835
  aminoAcidIndex,
79830
- sequenceIndex: absoluteCodonPositions[i],
79836
+ sequenceIndex,
79831
79837
  codonRange,
79832
79838
  fullCodon: codonPositionsInCDS.length === 3
79833
79839
  });
@@ -79837,12 +79843,7 @@ function getAminoAcidDataForEachBaseOfDna(originalSequenceString, forward, optio
79837
79843
  aminoAcid: null,
79838
79844
  positionInCodon: null,
79839
79845
  aminoAcidIndex: null,
79840
- sequenceIndex: positionInCdsToPositionInMainSequence(
79841
- posInCds,
79842
- forward,
79843
- translationRange,
79844
- originalSequenceStringLength
79845
- ),
79846
+ sequenceIndex,
79846
79847
  codonRange: null,
79847
79848
  fullCodon: null
79848
79849
  });
@@ -117149,7 +117150,9 @@ function SelectionLayer$2(props) {
117149
117150
  caretSvgs = [
117150
117151
  overlap.start === start2 && /* @__PURE__ */ React__default$1.createElement(
117151
117152
  Caret$2,
117152
- __spreadValues({}, {
117153
+ __spreadValues({
117154
+ key: key + "caret1"
117155
+ }, {
117153
117156
  leftMargin,
117154
117157
  onClick: _onClick || preventDefaultStopPropagation,
117155
117158
  onRightClick: onSelectionContextMenu,
@@ -117159,7 +117162,6 @@ function SelectionLayer$2(props) {
117159
117162
  getGaps: getGaps2,
117160
117163
  isDraggable,
117161
117164
  ignoreGaps,
117162
- key: key + "caret1",
117163
117165
  sequenceLength,
117164
117166
  className: classNameToPass + " selectionLayerCaret " + (isDraggable ? draggableClassnames.selectionStart : ""),
117165
117167
  caretPosition: overlap.start
@@ -117167,7 +117169,9 @@ function SelectionLayer$2(props) {
117167
117169
  ),
117168
117170
  overlap.end === end2 && /* @__PURE__ */ React__default$1.createElement(
117169
117171
  Caret$2,
117170
- __spreadValues({}, {
117172
+ __spreadValues({
117173
+ key: key + "caret2"
117174
+ }, {
117171
117175
  leftMargin,
117172
117176
  onClick: _onClick || preventDefaultStopPropagation,
117173
117177
  onRightClick: onSelectionContextMenu,
@@ -117177,7 +117181,6 @@ function SelectionLayer$2(props) {
117177
117181
  getGaps: getGaps2,
117178
117182
  style: selectionLayer2.style,
117179
117183
  ignoreGaps,
117180
- key: key + "caret2",
117181
117184
  sequenceLength,
117182
117185
  className: classNameToPass + " selectionLayerCaret " + (isDraggable ? draggableClassnames.selectionEnd : ""),
117183
117186
  caretPosition: overlap.end + 1
@@ -117470,7 +117473,6 @@ const _Sequence = class _Sequence extends React__default$1.Component {
117470
117473
  width,
117471
117474
  position: "absolute"
117472
117475
  },
117473
- ref: "rowViewTextContainer",
117474
117476
  className: "rowViewTextContainer",
117475
117477
  height: Math.max(0, Number(height2))
117476
117478
  },
@@ -119608,6 +119610,7 @@ const _Translation = class _Translation extends React__default$1.Component {
119608
119610
  return /* @__PURE__ */ React__default$1.createElement(
119609
119611
  "rect",
119610
119612
  {
119613
+ key: annotation.id + aminoAcidSliver.sequenceIndex,
119611
119614
  x: index2 * charWidth2,
119612
119615
  y: height2 / 2 - height2 / 16,
119613
119616
  width: charWidth2,
@@ -120680,10 +120683,10 @@ const CutsiteSelectionLayers = connectToEditor(
120680
120683
  return layer.start > -1 && /* @__PURE__ */ React__default$1.createElement(
120681
120684
  SelectionLayer$3,
120682
120685
  __spreadValues(__spreadValues({
120683
- hideTitle: true
120686
+ hideTitle: true,
120687
+ key: "restrictionSiteRange" + index2
120684
120688
  }, annotationCommonProps), {
120685
120689
  id: cutsite.id,
120686
- key: "restrictionSiteRange" + index2,
120687
120690
  height: showReverseSequence ? sequenceHeight * 2 : sequenceHeight,
120688
120691
  regions: [layer],
120689
120692
  row: alignmentData ? { start: 0, end: alignmentData.sequence.length - 1 } : row,
@@ -121158,7 +121161,6 @@ function RowItem(props) {
121158
121161
  height: sequenceHeight,
121159
121162
  position: "absolute"
121160
121163
  },
121161
- ref: "rowViewTextContainer",
121162
121164
  onClick: function(event) {
121163
121165
  replacementLayerClicked({
121164
121166
  annotation: replacementLayer,
@@ -121897,7 +121899,7 @@ function showFileDialog({ multiple = false, onSelect }) {
121897
121899
  }
121898
121900
  __name(showFileDialog, "showFileDialog");
121899
121901
  const name = "@teselagen/ove";
121900
- const version = "0.7.0";
121902
+ const version = "0.7.3-beta.1";
121901
121903
  const main = "./src/index.js";
121902
121904
  const type = "module";
121903
121905
  const exports$1 = {
@@ -132006,8 +132008,9 @@ function LabelLine(pointArray, options) {
132006
132008
  });
132007
132009
  return /* @__PURE__ */ React__default$1.createElement(React__default$1.Fragment, { key: "labelLine" }, /* @__PURE__ */ React__default$1.createElement(
132008
132010
  "polyline",
132009
- __spreadValues({}, __spreadValues({
132010
- key: "polyline-long",
132011
+ __spreadValues({
132012
+ key: "polyline-long"
132013
+ }, __spreadValues({
132011
132014
  points,
132012
132015
  stroke: "black",
132013
132016
  fill: "none",
@@ -133433,12 +133436,11 @@ function CircularView(props) {
133433
133436
  return /* @__PURE__ */ React__default$1.createElement(
133434
133437
  SelectionLayer$1,
133435
133438
  __spreadValues({
133436
- key: index2
133439
+ key: "veCircularViewSelectionLayer" + index2
133437
133440
  }, {
133438
133441
  index: index2,
133439
133442
  isDraggable: true,
133440
133443
  isProtein: isProtein2,
133441
- key: "veCircularViewSelectionLayer" + index2,
133442
133444
  selectionLayer: selectionLayer22,
133443
133445
  onRightClicked: selectionLayer22.isSearchLayer ? searchLayerRightClicked : selectionLayerRightClicked,
133444
133446
  onClick: selectionLayer22.isSearchLayer ? searchLayerClicked : void 0,
@@ -133459,13 +133461,14 @@ function CircularView(props) {
133459
133461
  if (caretPosition2 !== -1 && selectionLayer2.start < 0 && sequenceLength >= 0) {
133460
133462
  return /* @__PURE__ */ React__default$1.createElement(
133461
133463
  Caret$1,
133462
- __spreadValues({}, {
133464
+ __spreadValues({
133465
+ key: "veCircularViewCaret"
133466
+ }, {
133463
133467
  caretPosition: caretPosition2,
133464
133468
  sequenceLength,
133465
133469
  isProtein: isProtein2,
133466
133470
  innerRadius,
133467
- outerRadius: radius,
133468
- key: "veCircularViewCaret"
133471
+ outerRadius: radius
133469
133472
  })
133470
133473
  );
133471
133474
  }
package/index.umd.js CHANGED
@@ -100885,7 +100885,7 @@ ${latestSubscriptionCallbackError.current.stack}
100885
100885
  labelElement: item.hotkey && /* @__PURE__ */ React$2.createElement(KeyCombo, { minimal: true, combo: item.hotkey }),
100886
100886
  text: item.text
100887
100887
  }),
100888
- item.submenu ? item.submenu.filter(ident$1).map((def2, index2) => /* @__PURE__ */ React$2.createElement(DynamicMenuItem, __spreadProps(__spreadValues({}, { def: def2, enhancers, context }), { key: index2 }))) : void 0
100888
+ item.submenu ? item.submenu.filter(ident$1).map((def2, index2) => /* @__PURE__ */ React$2.createElement(DynamicMenuItem, __spreadValues({ key: index2 }, { def: def2, enhancers, context }))) : void 0
100889
100889
  );
100890
100890
  }
100891
100891
  if (item.disabled && typeof item.disabled === "string") {
@@ -100898,7 +100898,7 @@ ${latestSubscriptionCallbackError.current.stack}
100898
100898
  }, "DynamicMenuItem");
100899
100899
  const createDynamicMenu = /* @__PURE__ */ __name((menuDef2, enhancers, context) => {
100900
100900
  if (menuDef2 instanceof Array) {
100901
- return menuDef2.map((def, index2) => /* @__PURE__ */ React$2.createElement(DynamicMenuItem, __spreadProps(__spreadValues({}, { def, enhancers, context }), { key: index2 })));
100901
+ return menuDef2.map((def, index2) => /* @__PURE__ */ React$2.createElement(DynamicMenuItem, __spreadValues({ key: index2 }, { def, enhancers, context })));
100902
100902
  } else {
100903
100903
  return /* @__PURE__ */ React$2.createElement(DynamicMenuItem, __spreadValues({}, { def: menuDef2, enhancers, context }));
100904
100904
  }
@@ -108991,12 +108991,18 @@ ${latestSubscriptionCallbackError.current.stack}
108991
108991
  let positionInCodon = 0;
108992
108992
  for (let i2 = 0; i2 < basesRead; i2++) {
108993
108993
  const posInCds = i2 + index2;
108994
+ const sequenceIndex = codonPositionsInCDS.includes(posInCds) ? absoluteCodonPositions[codonPositionsInCDS.indexOf(posInCds)] : positionInCdsToPositionInMainSequence(
108995
+ posInCds,
108996
+ forward,
108997
+ translationRange,
108998
+ originalSequenceStringLength
108999
+ );
108994
109000
  if (codonPositionsInCDS.includes(posInCds)) {
108995
109001
  aminoAcidDataForEachBaseOfDNA.push({
108996
109002
  aminoAcid,
108997
109003
  positionInCodon,
108998
109004
  aminoAcidIndex,
108999
- sequenceIndex: absoluteCodonPositions[i2],
109005
+ sequenceIndex,
109000
109006
  codonRange,
109001
109007
  fullCodon: codonPositionsInCDS.length === 3
109002
109008
  });
@@ -109006,12 +109012,7 @@ ${latestSubscriptionCallbackError.current.stack}
109006
109012
  aminoAcid: null,
109007
109013
  positionInCodon: null,
109008
109014
  aminoAcidIndex: null,
109009
- sequenceIndex: positionInCdsToPositionInMainSequence(
109010
- posInCds,
109011
- forward,
109012
- translationRange,
109013
- originalSequenceStringLength
109014
- ),
109015
+ sequenceIndex,
109015
109016
  codonRange: null,
109016
109017
  fullCodon: null
109017
109018
  });
@@ -145723,7 +145724,9 @@ ${seq.sequence}
145723
145724
  caretSvgs = [
145724
145725
  overlap.start === start2 && /* @__PURE__ */ React$2.createElement(
145725
145726
  Caret$2,
145726
- __spreadValues({}, {
145727
+ __spreadValues({
145728
+ key: key2 + "caret1"
145729
+ }, {
145727
145730
  leftMargin,
145728
145731
  onClick: _onClick || preventDefaultStopPropagation,
145729
145732
  onRightClick: onSelectionContextMenu,
@@ -145733,7 +145736,6 @@ ${seq.sequence}
145733
145736
  getGaps,
145734
145737
  isDraggable,
145735
145738
  ignoreGaps,
145736
- key: key2 + "caret1",
145737
145739
  sequenceLength,
145738
145740
  className: classNameToPass + " selectionLayerCaret " + (isDraggable ? draggableClassnames.selectionStart : ""),
145739
145741
  caretPosition: overlap.start
@@ -145741,7 +145743,9 @@ ${seq.sequence}
145741
145743
  ),
145742
145744
  overlap.end === end2 && /* @__PURE__ */ React$2.createElement(
145743
145745
  Caret$2,
145744
- __spreadValues({}, {
145746
+ __spreadValues({
145747
+ key: key2 + "caret2"
145748
+ }, {
145745
145749
  leftMargin,
145746
145750
  onClick: _onClick || preventDefaultStopPropagation,
145747
145751
  onRightClick: onSelectionContextMenu,
@@ -145751,7 +145755,6 @@ ${seq.sequence}
145751
145755
  getGaps,
145752
145756
  style: selectionLayer2.style,
145753
145757
  ignoreGaps,
145754
- key: key2 + "caret2",
145755
145758
  sequenceLength,
145756
145759
  className: classNameToPass + " selectionLayerCaret " + (isDraggable ? draggableClassnames.selectionEnd : ""),
145757
145760
  caretPosition: overlap.end + 1
@@ -146044,7 +146047,6 @@ ${seq.sequence}
146044
146047
  width,
146045
146048
  position: "absolute"
146046
146049
  },
146047
- ref: "rowViewTextContainer",
146048
146050
  className: "rowViewTextContainer",
146049
146051
  height: Math.max(0, Number(height2))
146050
146052
  },
@@ -148182,6 +148184,7 @@ double click --> edit`}`;
148182
148184
  return /* @__PURE__ */ React$2.createElement(
148183
148185
  "rect",
148184
148186
  {
148187
+ key: annotation.id + aminoAcidSliver.sequenceIndex,
148185
148188
  x: index2 * charWidth2,
148186
148189
  y: height2 / 2 - height2 / 16,
148187
148190
  width: charWidth2,
@@ -149220,10 +149223,10 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
149220
149223
  return layer.start > -1 && /* @__PURE__ */ React$2.createElement(
149221
149224
  SelectionLayer$3,
149222
149225
  __spreadValues(__spreadValues({
149223
- hideTitle: true
149226
+ hideTitle: true,
149227
+ key: "restrictionSiteRange" + index2
149224
149228
  }, annotationCommonProps), {
149225
149229
  id: cutsite.id,
149226
- key: "restrictionSiteRange" + index2,
149227
149230
  height: showReverseSequence ? sequenceHeight * 2 : sequenceHeight,
149228
149231
  regions: [layer],
149229
149232
  row: alignmentData ? { start: 0, end: alignmentData.sequence.length - 1 } : row,
@@ -149698,7 +149701,6 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
149698
149701
  height: sequenceHeight,
149699
149702
  position: "absolute"
149700
149703
  },
149701
- ref: "rowViewTextContainer",
149702
149704
  onClick: function(event) {
149703
149705
  replacementLayerClicked({
149704
149706
  annotation: replacementLayer,
@@ -150437,7 +150439,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
150437
150439
  }
150438
150440
  __name(showFileDialog, "showFileDialog");
150439
150441
  const name = "@teselagen/ove";
150440
- const version = "0.7.0";
150442
+ const version = "0.7.3-beta.1";
150441
150443
  const main = "./src/index.js";
150442
150444
  const type = "module";
150443
150445
  const exports$1 = {
@@ -158941,8 +158943,9 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
158941
158943
  });
158942
158944
  return /* @__PURE__ */ React$2.createElement(React$2.Fragment, { key: "labelLine" }, /* @__PURE__ */ React$2.createElement(
158943
158945
  "polyline",
158944
- __spreadValues({}, __spreadValues({
158945
- key: "polyline-long",
158946
+ __spreadValues({
158947
+ key: "polyline-long"
158948
+ }, __spreadValues({
158946
158949
  points,
158947
158950
  stroke: "black",
158948
158951
  fill: "none",
@@ -160368,12 +160371,11 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
160368
160371
  return /* @__PURE__ */ React$2.createElement(
160369
160372
  SelectionLayer$1,
160370
160373
  __spreadValues({
160371
- key: index2
160374
+ key: "veCircularViewSelectionLayer" + index2
160372
160375
  }, {
160373
160376
  index: index2,
160374
160377
  isDraggable: true,
160375
160378
  isProtein: isProtein2,
160376
- key: "veCircularViewSelectionLayer" + index2,
160377
160379
  selectionLayer: selectionLayer22,
160378
160380
  onRightClicked: selectionLayer22.isSearchLayer ? searchLayerRightClicked : selectionLayerRightClicked,
160379
160381
  onClick: selectionLayer22.isSearchLayer ? searchLayerClicked : void 0,
@@ -160394,13 +160396,14 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
160394
160396
  if (caretPosition2 !== -1 && selectionLayer2.start < 0 && sequenceLength >= 0) {
160395
160397
  return /* @__PURE__ */ React$2.createElement(
160396
160398
  Caret$1,
160397
- __spreadValues({}, {
160399
+ __spreadValues({
160400
+ key: "veCircularViewCaret"
160401
+ }, {
160398
160402
  caretPosition: caretPosition2,
160399
160403
  sequenceLength,
160400
160404
  isProtein: isProtein2,
160401
160405
  innerRadius,
160402
- outerRadius: radius,
160403
- key: "veCircularViewCaret"
160406
+ outerRadius: radius
160404
160407
  })
160405
160408
  );
160406
160409
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teselagen/ove",
3
- "version": "0.7.1",
3
+ "version": "0.7.3-beta.2",
4
4
  "main": "./src/index.js",
5
5
  "exports": {
6
6
  ".": {
@@ -12,7 +12,7 @@
12
12
  "dependencies": {
13
13
  "@teselagen/sequence-utils": "0.3.27",
14
14
  "@teselagen/range-utils": "0.3.7",
15
- "@teselagen/ui": "0.7.1",
15
+ "@teselagen/ui": "0.7.3-beta.2",
16
16
  "@teselagen/file-utils": "0.3.16",
17
17
  "@teselagen/bounce-loader": "0.3.11",
18
18
  "@teselagen/bio-parsers": "0.4.22",
@@ -72,7 +72,6 @@
72
72
  "react-dom": "^18.3.1",
73
73
  "react-draggable": "4.4.5",
74
74
  "react-dropzone": "^11.4.2",
75
- "react-markdown": "8.0.7",
76
75
  "react-measure": "^2.5.2",
77
76
  "react-redux": "^8.0.5",
78
77
  "react-rnd": "^10.2.4",
@@ -84,7 +83,6 @@
84
83
  "redux-act": "^1.8.0",
85
84
  "redux-form": "^8.3.10",
86
85
  "redux-thunk": "2.4.1",
87
- "remark-gfm": "^3.0.1",
88
86
  "reselect": "^4.1.7",
89
87
  "shortid": "^2.2.16",
90
88
  "tg-use-local-storage-state": "^16.0.3",
@@ -257,6 +257,7 @@ FRT GAAGTTCCTATTCTCTAGAAAGTATAGGAACTTC misc_recomb orchid pink 0 0`,
257
257
  <div>
258
258
  <DataTable
259
259
  isInfinite
260
+ formName={"customAnnsTable"}
260
261
  schema={
261
262
  annotationType === "feature"
262
263
  ? customAnnsSchema
@@ -416,23 +416,9 @@ function LabelLine(pointArray, options) {
416
416
  });
417
417
  return (
418
418
  <React.Fragment key="labelLine">
419
- {/* <polyline
420
- {...{
421
- key: "polyline-short",
422
- points,
423
- stroke: "black",
424
- fill: "none",
425
- strokeWidth: 1,
426
- // style: {
427
- // opacity: 0.2
428
- // },
429
- className: "veLabelLine",
430
- ...options
431
- }}
432
- /> */}
433
419
  <polyline
420
+ key="polyline-long"
434
421
  {...{
435
- key: "polyline-long",
436
422
  points,
437
423
  stroke: "black",
438
424
  fill: "none",
@@ -597,12 +597,11 @@ export function CircularView(props) {
597
597
  ) {
598
598
  return (
599
599
  <SelectionLayer
600
- key={index}
600
+ key={"veCircularViewSelectionLayer" + index}
601
601
  {...{
602
602
  index,
603
603
  isDraggable: true,
604
604
  isProtein,
605
- key: "veCircularViewSelectionLayer" + index,
606
605
  selectionLayer,
607
606
  onRightClicked: selectionLayer.isSearchLayer
608
607
  ? searchLayerRightClicked
@@ -635,13 +634,13 @@ export function CircularView(props) {
635
634
  //only render if there is no selection layer
636
635
  return (
637
636
  <Caret
637
+ key="veCircularViewCaret"
638
638
  {...{
639
639
  caretPosition,
640
640
  sequenceLength,
641
641
  isProtein,
642
642
  innerRadius,
643
- outerRadius: radius,
644
- key: "veCircularViewCaret"
643
+ outerRadius: radius
645
644
  }}
646
645
  />
647
646
  );
@@ -34,19 +34,19 @@
34
34
  }
35
35
 
36
36
  .reflex-layout > .reflex-splitter {
37
- background-color: #f5f8fa;
37
+ background-color: #f1f1f1;
38
38
  z-index: 100;
39
39
  }
40
40
 
41
41
  .reflex-layout > .reflex-splitter.active,
42
42
  .reflex-layout > .reflex-splitter:hover {
43
- background-color: #f5f8fa;
43
+ background-color: #cccccc;
44
44
  transition: all 1s ease;
45
45
  }
46
46
 
47
47
  .reflex-layout.horizontal > .reflex-splitter {
48
- border-bottom: 1px solid #f5f8fa;
49
- border-top: 1px solid #f5f8fa;
48
+ border-bottom: 1px solid #f1f1f1;
49
+ border-top: 1px solid #f1f1f1;
50
50
  cursor: row-resize;
51
51
  width: 100%;
52
52
  height: 2px;
@@ -54,13 +54,13 @@
54
54
 
55
55
  .reflex-layout.horizontal > .reflex-splitter:hover,
56
56
  .reflex-layout.horizontal > .reflex-splitter.active {
57
- border-bottom: 1px solid #f5f8fa;
58
- border-top: 1px solid #f5f8fa;
57
+ border-bottom: 1px solid #cccccc;
58
+ border-top: 1px solid #cccccc;
59
59
  }
60
60
 
61
61
  .reflex-layout.vertical > .reflex-splitter {
62
- border-right: 1px solid #f5f8fa;
63
- border-left: 1px solid #f5f8fa;
62
+ border-right: 1px solid #f1f1f1;
63
+ border-left: 1px solid #f1f1f1;
64
64
  cursor: col-resize;
65
65
  height: 95%;
66
66
  width: 2px;
@@ -73,8 +73,8 @@
73
73
 
74
74
  .reflex-layout.vertical > .reflex-splitter:hover,
75
75
  .reflex-layout.vertical > .reflex-splitter.active {
76
- border-right: 1px solid #f5f8fa;
77
- border-left: 1px solid #f5f8fa;
76
+ border-right: 1px solid #cccccc;
77
+ border-left: 1px solid #cccccc;
78
78
  }
79
79
 
80
80
  .reflex-layout > .reflex-splitter.reflex-thin {
@@ -26,10 +26,10 @@ export const CutsiteSelectionLayers = connectToEditor(
26
26
  layer.start > -1 && (
27
27
  <SelectionLayer
28
28
  hideTitle
29
+ key={"restrictionSiteRange" + index}
29
30
  {...annotationCommonProps}
30
31
  {...{
31
32
  id: cutsite.id,
32
- key: "restrictionSiteRange" + index,
33
33
  height: showReverseSequence ? sequenceHeight * 2 : sequenceHeight,
34
34
  regions: [layer],
35
35
  row: alignmentData
@@ -105,6 +105,7 @@ function SelectionLayer(props) {
105
105
  caretSvgs = [
106
106
  overlap.start === start && (
107
107
  <Caret
108
+ key={key + "caret1"}
108
109
  {...{
109
110
  leftMargin,
110
111
  onClick: _onClick || preventDefaultStopPropagation,
@@ -115,7 +116,6 @@ function SelectionLayer(props) {
115
116
  getGaps,
116
117
  isDraggable,
117
118
  ignoreGaps,
118
- key: key + "caret1",
119
119
  sequenceLength,
120
120
  className:
121
121
  classNameToPass +
@@ -127,6 +127,7 @@ function SelectionLayer(props) {
127
127
  ),
128
128
  overlap.end === end && (
129
129
  <Caret
130
+ key={key + "caret2"}
130
131
  {...{
131
132
  leftMargin,
132
133
  onClick: _onClick || preventDefaultStopPropagation,
@@ -137,7 +138,6 @@ function SelectionLayer(props) {
137
138
  getGaps,
138
139
  style: selectionLayer.style,
139
140
  ignoreGaps,
140
- key: key + "caret2",
141
141
  sequenceLength,
142
142
  className:
143
143
  classNameToPass +
@@ -175,7 +175,6 @@ class Sequence extends React.Component {
175
175
  width,
176
176
  position: "absolute"
177
177
  }}
178
- ref="rowViewTextContainer"
179
178
  className="rowViewTextContainer"
180
179
  height={Math.max(0, Number(height))}
181
180
  >
@@ -69,6 +69,7 @@ class Translation extends React.Component {
69
69
  nextAaSliver = aminoAcidsForSubrange[index + 2];
70
70
  return (
71
71
  <rect
72
+ key={annotation.id + aminoAcidSliver.sequenceIndex}
72
73
  x={index * charWidth}
73
74
  y={height / 2 - height / 16}
74
75
  width={charWidth}
@@ -561,7 +561,6 @@ export default function RowItem(props) {
561
561
  height: sequenceHeight,
562
562
  position: "absolute"
563
563
  }}
564
- ref="rowViewTextContainer"
565
564
  onClick={function (event) {
566
565
  replacementLayerClicked({
567
566
  annotation: replacementLayer,
package/style.css CHANGED
@@ -9081,11 +9081,7 @@ button:not(:disabled):active {
9081
9081
  .bp3-popover[style*="transform-origin"][style*="right"] .bp3-popover-arrow {
9082
9082
  transform: translate(-0.5px, 0);
9083
9083
  }
9084
- .tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}.rg-celleditor-input,
9085
- .rg-celleditor input {
9086
- border: none;
9087
- }
9088
- .tg-flex-form-content .bp3-form-content {
9084
+ .tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}.tg-flex-form-content .bp3-form-content {
9089
9085
  display: flex;
9090
9086
  }
9091
9087
 
@@ -9336,6 +9332,34 @@ button:not(:disabled):active {
9336
9332
  .bp3-dark .tg-color-picker-selector input {
9337
9333
  color: #222222;
9338
9334
  }
9335
+
9336
+ .form-separator {
9337
+ p {
9338
+ display: flex;
9339
+ align-items: center;
9340
+ width: 100%;
9341
+ }
9342
+ p::before {
9343
+ content: "";
9344
+ display: block;
9345
+ width: 100%;
9346
+ height: 1px;
9347
+ background-color: #e1e4e8;
9348
+ margin-right: 16px;
9349
+ }
9350
+ p::after {
9351
+ content: "";
9352
+ display: block;
9353
+ width: 100%;
9354
+ height: 1px;
9355
+ background-color: #e1e4e8;
9356
+ margin-left: 16px;
9357
+ }
9358
+ }
9359
+ .rg-celleditor-input,
9360
+ .rg-celleditor input {
9361
+ border: none;
9362
+ }
9339
9363
  .tg-select {
9340
9364
  width: 100%;
9341
9365
  min-width: 170px;
@@ -10557,19 +10581,19 @@ li.bp3-menu-divider:last-child {
10557
10581
  }
10558
10582
 
10559
10583
  .reflex-layout > .reflex-splitter {
10560
- background-color: #f5f8fa;
10584
+ background-color: #f1f1f1;
10561
10585
  z-index: 100;
10562
10586
  }
10563
10587
 
10564
10588
  .reflex-layout > .reflex-splitter.active,
10565
10589
  .reflex-layout > .reflex-splitter:hover {
10566
- background-color: #f5f8fa;
10590
+ background-color: #cccccc;
10567
10591
  transition: all 1s ease;
10568
10592
  }
10569
10593
 
10570
10594
  .reflex-layout.horizontal > .reflex-splitter {
10571
- border-bottom: 1px solid #f5f8fa;
10572
- border-top: 1px solid #f5f8fa;
10595
+ border-bottom: 1px solid #f1f1f1;
10596
+ border-top: 1px solid #f1f1f1;
10573
10597
  cursor: row-resize;
10574
10598
  width: 100%;
10575
10599
  height: 2px;
@@ -10577,13 +10601,13 @@ li.bp3-menu-divider:last-child {
10577
10601
 
10578
10602
  .reflex-layout.horizontal > .reflex-splitter:hover,
10579
10603
  .reflex-layout.horizontal > .reflex-splitter.active {
10580
- border-bottom: 1px solid #f5f8fa;
10581
- border-top: 1px solid #f5f8fa;
10604
+ border-bottom: 1px solid #cccccc;
10605
+ border-top: 1px solid #cccccc;
10582
10606
  }
10583
10607
 
10584
10608
  .reflex-layout.vertical > .reflex-splitter {
10585
- border-right: 1px solid #f5f8fa;
10586
- border-left: 1px solid #f5f8fa;
10609
+ border-right: 1px solid #f1f1f1;
10610
+ border-left: 1px solid #f1f1f1;
10587
10611
  cursor: col-resize;
10588
10612
  height: 95%;
10589
10613
  width: 2px;
@@ -10596,8 +10620,8 @@ li.bp3-menu-divider:last-child {
10596
10620
 
10597
10621
  .reflex-layout.vertical > .reflex-splitter:hover,
10598
10622
  .reflex-layout.vertical > .reflex-splitter.active {
10599
- border-right: 1px solid #f5f8fa;
10600
- border-left: 1px solid #f5f8fa;
10623
+ border-right: 1px solid #cccccc;
10624
+ border-left: 1px solid #cccccc;
10601
10625
  }
10602
10626
 
10603
10627
  .reflex-layout > .reflex-splitter.reflex-thin {