@teselagen/ove 0.8.22 → 0.8.24

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
@@ -17260,23 +17260,6 @@ const useTableEntities = /* @__PURE__ */ __name((tableFormName) => {
17260
17260
  const { allOrderedEntities, selectedEntities } = reactRedux.useSelector(entitySelector);
17261
17261
  return { selectTableEntities, allOrderedEntities, selectedEntities };
17262
17262
  }, "useTableEntities");
17263
- const isEqualIgnoreFunctions = /* @__PURE__ */ __name((o1, o2) => {
17264
- const isEq = isEqualWith(o1, o2, function(val1, val2) {
17265
- if (isFunction$2(val1) && isFunction$2(val2)) {
17266
- return val1 === val2 || val1.toString() === val2.toString();
17267
- }
17268
- if (val1 && val1.constructor && val1.constructor.name === "FiberNode")
17269
- return true;
17270
- });
17271
- return isEq;
17272
- }, "isEqualIgnoreFunctions");
17273
- const useDeepEqualMemo = /* @__PURE__ */ __name((value) => {
17274
- const ref2 = React.useRef();
17275
- if (!isEqualIgnoreFunctions(value, ref2.current)) {
17276
- ref2.current = value;
17277
- }
17278
- return ref2.current;
17279
- }, "useDeepEqualMemo");
17280
17263
  function rowClick(e, rowInfo, entities, {
17281
17264
  reduxFormSelectedEntityIdMap,
17282
17265
  isSingleSelect,
@@ -56570,6 +56553,33 @@ if (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === "object") {
56570
56553
  $mobx
56571
56554
  });
56572
56555
  }
56556
+ const isEqualIgnoreFunctions = /* @__PURE__ */ __name((o1, o2) => {
56557
+ const isEq = isEqualWith(o1, o2, function(val1, val2) {
56558
+ if (isFunction$2(val1) && isFunction$2(val2)) {
56559
+ return val1 === val2 || val1.toString() === val2.toString();
56560
+ }
56561
+ if (val1 && val1.constructor && val1.constructor.name === "FiberNode")
56562
+ return true;
56563
+ });
56564
+ return isEq;
56565
+ }, "isEqualIgnoreFunctions");
56566
+ const useDeepEqualMemoIgnoreFns = /* @__PURE__ */ __name((value) => {
56567
+ const ref2 = React.useRef();
56568
+ if (!isEqualIgnoreFunctions(value, ref2.current)) {
56569
+ ref2.current = value;
56570
+ }
56571
+ return ref2.current;
56572
+ }, "useDeepEqualMemoIgnoreFns");
56573
+ const useDeepEqualMemo = /* @__PURE__ */ __name((value) => {
56574
+ const ref2 = React.useRef();
56575
+ if (!isEqual$3(value, ref2.current)) {
56576
+ ref2.current = value;
56577
+ }
56578
+ return ref2.current;
56579
+ }, "useDeepEqualMemo");
56580
+ const useMemoDeepEqual = /* @__PURE__ */ __name((value, depsArray) => {
56581
+ return React.useMemo(value, useDeepEqualMemo(depsArray));
56582
+ }, "useMemoDeepEqual");
56573
56583
  T();
56574
56584
  const IS_LINUX = window.navigator.platform.toLowerCase().search("linux") > -1;
56575
56585
  const itemSizeEstimators = {
@@ -56656,9 +56666,11 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
56656
56666
  "reduxFormSelectedEntityIdMap"
56657
56667
  );
56658
56668
  }, "dtFormParamsSelector"));
56659
- const reduxFormCellValidation = useDeepEqualMemo(_reduxFormCellValidation);
56660
- const reduxFormQueryParams = useDeepEqualMemo(_reduxFormQueryParams);
56661
- const reduxFormSelectedEntityIdMap = useDeepEqualMemo(
56669
+ const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
56670
+ _reduxFormCellValidation
56671
+ );
56672
+ const reduxFormQueryParams = useDeepEqualMemoIgnoreFns(_reduxFormQueryParams);
56673
+ const reduxFormSelectedEntityIdMap = useDeepEqualMemoIgnoreFns(
56662
56674
  _reduxFormSelectedEntityIdMap
56663
56675
  );
56664
56676
  let props = ownProps;
@@ -56733,7 +56745,7 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
56733
56745
  const tmp = (urlConnected ? getCurrentParamsFromUrl(history.location) : reduxFormQueryParams) || {};
56734
56746
  return tmp;
56735
56747
  }, [history, reduxFormQueryParams, urlConnected]);
56736
- const currentParams = useDeepEqualMemo(_currentParams);
56748
+ const currentParams = useDeepEqualMemoIgnoreFns(_currentParams);
56737
56749
  const tableParams = React.useMemo(() => {
56738
56750
  if (!isTableParamsConnected) {
56739
56751
  const setNewParams2 = /* @__PURE__ */ __name((newParams) => {
@@ -56914,8 +56926,8 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
56914
56926
  () => ((reduxFormEntities == null ? void 0 : reduxFormEntities.length) ? reduxFormEntities : _origEntities) || [],
56915
56927
  [_origEntities, reduxFormEntities]
56916
56928
  );
56917
- const entities = useDeepEqualMemo(_entities);
56918
- const entitiesAcrossPages = useDeepEqualMemo(_entitiesAcrossPages);
56929
+ const entities = useDeepEqualMemoIgnoreFns(_entities);
56930
+ const entitiesAcrossPages = useDeepEqualMemoIgnoreFns(_entitiesAcrossPages);
56919
56931
  React.useEffect(() => {
56920
56932
  change("allOrderedEntities", entitiesAcrossPages);
56921
56933
  if (entities.length === 0 || isEmpty$1(reduxFormSelectedEntityIdMap)) return;
@@ -61479,7 +61491,7 @@ const SimpleInsertDataDialog = compose(
61479
61491
  return (_b2 = (_a3 = state2.form) == null ? void 0 : _a3[dataTableForm]) == null ? void 0 : _b2.values.reduxFormEntities;
61480
61492
  }
61481
61493
  );
61482
- const reduxFormEntities = useDeepEqualMemo(_reduxFormEntities);
61494
+ const reduxFormEntities = useDeepEqualMemoIgnoreFns(_reduxFormEntities);
61483
61495
  React.useEffect(() => {
61484
61496
  return () => dispatch(reduxForm.destroy(dataTableForm));
61485
61497
  }, [dataTableForm, dispatch]);
@@ -61489,7 +61501,9 @@ const SimpleInsertDataDialog = compose(
61489
61501
  return (_b2 = (_a3 = state2.form) == null ? void 0 : _a3[dataTableForm]) == null ? void 0 : _b2.values.reduxFormCellValidation;
61490
61502
  }, "_reduxFormCellValidationSelector")
61491
61503
  );
61492
- const reduxFormCellValidation = useDeepEqualMemo(_reduxFormCellValidation);
61504
+ const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
61505
+ _reduxFormCellValidation
61506
+ );
61493
61507
  const { entsToUse, validationToUse } = React.useMemo(
61494
61508
  () => removeCleanRows(reduxFormEntities, reduxFormCellValidation),
61495
61509
  [reduxFormEntities, reduxFormCellValidation]
@@ -61574,8 +61588,10 @@ const UploadCsvWizardDialogInner = reduxForm.reduxForm()(({
61574
61588
  "reduxFormCellValidation"
61575
61589
  );
61576
61590
  }, "dtFormNameSelector"));
61577
- const reduxFormEntities = useDeepEqualMemo(_reduxFormEntities);
61578
- const reduxFormCellValidation = useDeepEqualMemo(_reduxFormCellValidation);
61591
+ const reduxFormEntities = useDeepEqualMemoIgnoreFns(_reduxFormEntities);
61592
+ const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
61593
+ _reduxFormCellValidation
61594
+ );
61579
61595
  let inner2;
61580
61596
  if (hasSubmitted) {
61581
61597
  inner2 = /* @__PURE__ */ React.createElement(
@@ -61877,8 +61893,10 @@ const UploadCsvWizardDialog = compose(
61877
61893
  };
61878
61894
  }
61879
61895
  });
61880
- const reduxFormEntitiesArray = useDeepEqualMemo(_reduxFormEntitiesArray);
61881
- const finishedFiles = useDeepEqualMemo(_finishedFiles);
61896
+ const reduxFormEntitiesArray = useDeepEqualMemoIgnoreFns(
61897
+ _reduxFormEntitiesArray
61898
+ );
61899
+ const finishedFiles = useDeepEqualMemoIgnoreFns(_finishedFiles);
61882
61900
  const [hasSubmittedOuter, setSubmittedOuter] = React.useState();
61883
61901
  const [steps, setSteps] = React.useState(getInitialSteps(true));
61884
61902
  const [focusedTab, setFocusedTab] = React.useState(0);
@@ -70383,12 +70401,21 @@ const _ResizableDraggableDialog = class _ResizableDraggableDialog extends React.
70383
70401
  }, RndProps),
70384
70402
  /* @__PURE__ */ React.createElement(
70385
70403
  core.Dialog,
70386
- __spreadValues({
70404
+ __spreadProps(__spreadValues({
70387
70405
  enforceFocus: false,
70388
70406
  hasBackdrop: false,
70389
70407
  usePortal: false,
70390
70408
  canEscapeKeyClose: true
70391
- }, rest)
70409
+ }, rest), {
70410
+ title: /* @__PURE__ */ React.createElement("div", { style: { display: "flex", alignItems: "center", gap: 8 } }, /* @__PURE__ */ React.createElement(
70411
+ core.Icon,
70412
+ {
70413
+ size: "14",
70414
+ "data-tip": "I'm a resizable draggable dialog!",
70415
+ icon: "move"
70416
+ }
70417
+ ), rest.title)
70418
+ })
70392
70419
  )
70393
70420
  )
70394
70421
  );
@@ -73662,7 +73689,7 @@ const genbankFeatureTypes = [
73662
73689
  { name: "regulatory", color: "#3F6C51" },
73663
73690
  { name: "SecStr", color: "#7B4B94" },
73664
73691
  { name: "Site", color: "#7D82B8" },
73665
- { name: "telomere", color: "DE9151" },
73692
+ { name: "telomere", color: "#DE9151" },
73666
73693
  { name: "tmRNA", color: "#B7E3CC" },
73667
73694
  { name: "unsure", color: "#C4FFB2" },
73668
73695
  { name: "V_segment", color: "#D6F7A3" },
@@ -83801,7 +83828,10 @@ function getOrfsFromSequence(options) {
83801
83828
  return nonDuplicatedOrfRanges;
83802
83829
  }
83803
83830
  __name(getOrfsFromSequence, "getOrfsFromSequence");
83804
- function findOrfsInPlasmid(sequence2, circular2, minimumOrfSize2, useAdditionalOrfStartCodons2) {
83831
+ function findOrfsInPlasmid(sequence2, circular2, minimumOrfSize2, useAdditionalOrfStartCodons2, isProteinOrOligo) {
83832
+ if (isProteinOrOligo) {
83833
+ return [];
83834
+ }
83805
83835
  const forwardOrfs = getOrfsFromSequence({
83806
83836
  sequence: sequence2,
83807
83837
  minimumOrfSize: minimumOrfSize2,
@@ -98086,6 +98116,10 @@ const orfsSelector = createSelector(
98086
98116
  circularSelector,
98087
98117
  minimumOrfSizeSelector,
98088
98118
  (state2) => state2.useAdditionalOrfStartCodons,
98119
+ (state2) => {
98120
+ var _a2, _b2;
98121
+ return ((_a2 = state2.sequenceData) == null ? void 0 : _a2.isProtein) || ((_b2 = state2.sequenceData) == null ? void 0 : _b2.isOligo);
98122
+ },
98089
98123
  findOrfsInPlasmid
98090
98124
  );
98091
98125
  function translationsRawSelector(sequenceData2) {
@@ -98121,10 +98155,7 @@ function searchLayersSelector(sequence2, isCircular, isOpen, searchString, ambig
98121
98155
  end: end2 * 3 + 2
98122
98156
  });
98123
98157
  });
98124
- return [
98125
- ...toReturn,
98126
- ...r2
98127
- ];
98158
+ return [...toReturn, ...r2];
98128
98159
  }
98129
98160
  if (dnaOrAA === "DNA" && ambiguousOrLiteral === "LITERAL" && mismatchesAllowed > 0) {
98130
98161
  const approxMatches = findApproxMatches(
@@ -98142,9 +98173,12 @@ function searchLayersSelector(sequence2, isCircular, isOpen, searchString, ambig
98142
98173
  isSearchLayer: true,
98143
98174
  forward: true
98144
98175
  })).sort((a2, b3) => a2.start - b3.start);
98145
- return [...toReturn, ...matches2.map((match) => __spreadProps(__spreadValues({}, match), {
98146
- className: "veSearchLayer"
98147
- }))];
98176
+ return [
98177
+ ...toReturn,
98178
+ ...matches2.map((match) => __spreadProps(__spreadValues({}, match), {
98179
+ className: "veSearchLayer"
98180
+ }))
98181
+ ];
98148
98182
  }
98149
98183
  const matches = findSequenceMatches(sequence2, searchString, {
98150
98184
  isCircular,
@@ -98154,11 +98188,14 @@ function searchLayersSelector(sequence2, isCircular, isOpen, searchString, ambig
98154
98188
  }).sort(({ start: start2 }, { start: start22 }) => {
98155
98189
  return start2 - start22;
98156
98190
  });
98157
- return [...toReturn, ...matches.map((match) => __spreadProps(__spreadValues({}, match), {
98158
- forward: !match.bottomStrand,
98159
- className: "veSearchLayer " + (match.bottomStrand ? " veSearchLayerBottomStrand" : ""),
98160
- isSearchLayer: true
98161
- }))];
98191
+ return [
98192
+ ...toReturn,
98193
+ ...matches.map((match) => __spreadProps(__spreadValues({}, match), {
98194
+ forward: !match.bottomStrand,
98195
+ className: "veSearchLayer " + (match.bottomStrand ? " veSearchLayerBottomStrand" : ""),
98196
+ isSearchLayer: true
98197
+ }))
98198
+ ];
98162
98199
  }
98163
98200
  __name(searchLayersSelector, "searchLayersSelector");
98164
98201
  const searchLayersSelector$1 = createSelector(
@@ -98171,7 +98208,10 @@ const searchLayersSelector$1 = createSelector(
98171
98208
  (state2) => state2.sequenceData.isProtein,
98172
98209
  (state2) => state2.sequenceData.proteinSequence,
98173
98210
  (state2) => state2.findTool && state2.findTool.mismatchesAllowed,
98174
- (state2) => state2.temporaryAnnotations.searchLayers,
98211
+ (state2) => {
98212
+ var _a2;
98213
+ return (_a2 = state2.temporaryAnnotations) == null ? void 0 : _a2.searchLayers;
98214
+ },
98175
98215
  searchLayersSelector
98176
98216
  );
98177
98217
  const translationSearchMatchesSelector = createSelector(
@@ -116937,7 +116977,7 @@ function showFileDialog({ multiple = false, onSelect }) {
116937
116977
  input.click();
116938
116978
  }
116939
116979
  __name(showFileDialog, "showFileDialog");
116940
- const version = "0.8.21";
116980
+ const version = "0.8.23";
116941
116981
  const packageJson = {
116942
116982
  version
116943
116983
  };
@@ -143900,12 +143940,29 @@ const genericAnnotationProperties = /* @__PURE__ */ __name(({
143900
143940
  additionalFooterEls
143901
143941
  }) => {
143902
143942
  const annotationTypeUpper = upperFirst(annotationType);
143903
- const _AnnotationProperties = class _AnnotationProperties extends React.Component {
143904
- constructor(props) {
143905
- super(props);
143906
- __publicField(this, "onRowSelect", /* @__PURE__ */ __name(([record]) => {
143943
+ const AnnotationProperties = /* @__PURE__ */ __name((props) => {
143944
+ var _a2, _b2, _c;
143945
+ const {
143946
+ readOnly: readOnly2,
143947
+ annotations = {},
143948
+ annotationVisibility: annotationVisibility2,
143949
+ sequenceLength,
143950
+ selectionLayer: selectionLayer2,
143951
+ sequence: sequence2,
143952
+ isProtein: isProtein2,
143953
+ allPartTags,
143954
+ annotationPropertiesSelectedEntities: _annotationPropertiesSelectedEntities,
143955
+ selectedAnnotationId,
143956
+ PropertiesProps,
143957
+ dispatch,
143958
+ editorName
143959
+ } = props;
143960
+ const instanceRef = React.useRef({ props });
143961
+ instanceRef.current.props = props;
143962
+ const cmds = React.useMemo(() => getCommands(instanceRef.current), []);
143963
+ const onRowSelect = React.useCallback(
143964
+ ([record]) => {
143907
143965
  if (!record) return;
143908
- const { dispatch, editorName } = this.props;
143909
143966
  dispatch({
143910
143967
  type: "SELECTION_LAYER_UPDATE",
143911
143968
  payload: record,
@@ -143913,44 +143970,33 @@ const genericAnnotationProperties = /* @__PURE__ */ __name(({
143913
143970
  editorName
143914
143971
  }
143915
143972
  });
143916
- }, "onRowSelect"));
143917
- this.commands = getCommands(this);
143918
- }
143919
- render() {
143920
- var _a2, _b2, _c;
143921
- const {
143922
- readOnly: readOnly2,
143923
- annotations = {},
143924
- annotationVisibility: annotationVisibility2,
143925
- sequenceLength,
143926
- selectionLayer: selectionLayer2,
143927
- sequence: sequence2,
143928
- isProtein: isProtein2,
143929
- allPartTags,
143930
- annotationPropertiesSelectedEntities: _annotationPropertiesSelectedEntities,
143931
- selectedAnnotationId,
143932
- PropertiesProps
143933
- } = this.props;
143934
- const annotationPropertiesSelectedEntities = _annotationPropertiesSelectedEntities.filter((a2) => annotations[a2.id]);
143935
- const deleteAnnotation = this.props[`delete${annotationTypeUpper}`];
143936
- const annotationsToUse = map$3(annotations, (annotation) => {
143973
+ },
143974
+ [dispatch, editorName]
143975
+ );
143976
+ const annotationPropertiesSelectedEntities = _annotationPropertiesSelectedEntities.filter((a2) => annotations[a2.id]);
143977
+ const deleteAnnotation = props[`delete${annotationTypeUpper}`];
143978
+ const annotationsToUse = React.useMemo(
143979
+ () => map$3(annotations, (annotation) => {
143937
143980
  return __spreadProps(__spreadValues(__spreadValues({}, annotation), annotation.strand === void 0 && {
143938
143981
  strand: annotation.forward ? 1 : -1
143939
143982
  }), {
143940
143983
  size: getRangeLength(annotation, sequenceLength)
143941
143984
  });
143942
- });
143943
- const keyedPartTags = (_a2 = getKeyedTagsAndTagOptions(allPartTags)) != null ? _a2 : {};
143944
- const additionalColumns = ((_c = (_b2 = PropertiesProps == null ? void 0 : PropertiesProps.propertiesList) == null ? void 0 : _b2.find(
143945
- (p2) => (p2.name || p2) === (pluralize(annotationType) || "")
143946
- )) == null ? void 0 : _c.additionalColumns) || [];
143947
- this.schema = {
143985
+ }),
143986
+ [annotations, sequenceLength]
143987
+ );
143988
+ const keyedPartTags = (_a2 = getKeyedTagsAndTagOptions(allPartTags)) != null ? _a2 : {};
143989
+ const additionalColumns = ((_c = (_b2 = PropertiesProps == null ? void 0 : PropertiesProps.propertiesList) == null ? void 0 : _b2.find(
143990
+ (p2) => (p2.name || p2) === (pluralize(annotationType) || "")
143991
+ )) == null ? void 0 : _c.additionalColumns) || [];
143992
+ const schema2 = useMemoDeepEqual(
143993
+ () => ({
143948
143994
  fields: [
143949
143995
  {
143950
143996
  path: "name",
143951
143997
  type: "string",
143952
143998
  render: /* @__PURE__ */ __name((name2, ann) => {
143953
- const checked = !this.props.annotationVisibility[`${annotationType}IndividualToHide`][ann.id];
143999
+ const checked = !annotationVisibility2[`${annotationType}IndividualToHide`][ann.id];
143954
144000
  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
143955
144001
  core.Icon,
143956
144002
  {
@@ -143959,9 +144005,9 @@ const genericAnnotationProperties = /* @__PURE__ */ __name(({
143959
144005
  e.stopPropagation();
143960
144006
  const upperType = startCase(annotationType);
143961
144007
  if (checked) {
143962
- this.props[`hide${upperType}Individual`]([ann.id]);
144008
+ props[`hide${upperType}Individual`]([ann.id]);
143963
144009
  } else {
143964
- this.props[`show${upperType}Individual`]([ann.id]);
144010
+ props[`show${upperType}Individual`]([ann.id]);
143965
144011
  }
143966
144012
  }, "onClick"),
143967
144013
  style: {
@@ -143982,7 +144028,7 @@ const genericAnnotationProperties = /* @__PURE__ */ __name(({
143982
144028
  render: /* @__PURE__ */ __name((bases, primer) => {
143983
144029
  let bps = bases;
143984
144030
  if (!bases) {
143985
- bps = getSequenceWithinRange(primer, this.props.sequence);
144031
+ bps = getSequenceWithinRange(primer, sequence2);
143986
144032
  if (!primer.forward) {
143987
144033
  bps = getReverseComplementSequenceString(bps);
143988
144034
  }
@@ -144007,8 +144053,8 @@ const genericAnnotationProperties = /* @__PURE__ */ __name(({
144007
144053
  }, "render")
144008
144054
  }
144009
144055
  ],
144010
- sizeSchema(this.props.isProtein),
144011
- ...withTags && this.props.allPartTags ? [
144056
+ sizeSchema(isProtein2),
144057
+ ...withTags && allPartTags ? [
144012
144058
  {
144013
144059
  path: "tags",
144014
144060
  type: "string",
@@ -144032,138 +144078,144 @@ const genericAnnotationProperties = /* @__PURE__ */ __name(({
144032
144078
  { path: "strand", type: "number" },
144033
144079
  ...additionalColumns
144034
144080
  ]
144035
- };
144036
- return /* @__PURE__ */ React.createElement(
144037
- WrappedDT,
144038
- {
144039
- topLeftItems: getVisFilter(
144040
- createCommandMenu(
144041
- isFunction$2(visSubmenu) ? visSubmenu(this.props) : visSubmenu,
144042
- this.commands,
144043
- {
144044
- useTicks: true
144045
- }
144046
- )
144047
- ),
144048
- annotationPropertiesSelectedEntities,
144049
- leftOfSearchBarItems: /* @__PURE__ */ React.createElement(React.Fragment, null, !readOnly2 && /* @__PURE__ */ React.createElement(core.ButtonGroup, { style: { marginTop: 3, marginRight: 4 } }, /* @__PURE__ */ React.createElement(
144050
- core.Tooltip,
144051
- {
144052
- position: "top",
144053
- modifiers: popoverOverflowModifiers,
144054
- content: "New"
144055
- },
144056
- /* @__PURE__ */ React.createElement(
144057
- core.AnchorButton,
144058
- {
144059
- disabled: !sequenceLength,
144060
- icon: "plus",
144061
- className: "tgNewAnnBtn",
144062
- onClick: /* @__PURE__ */ __name(() => {
144063
- showAddOrEditAnnotationDialog({
144064
- type: annotationType,
144065
- annotation: pick$1(
144066
- selectionLayer2,
144067
- "start",
144068
- "end",
144069
- "forward"
144070
- )
144071
- });
144072
- }, "onClick")
144073
- }
144074
- )
144075
- ), /* @__PURE__ */ React.createElement(
144076
- core.Tooltip,
144081
+ }),
144082
+ [
144083
+ additionalColumns,
144084
+ allPartTags,
144085
+ annotationVisibility2,
144086
+ isProtein2,
144087
+ keyedPartTags,
144088
+ sequence2
144089
+ ]
144090
+ );
144091
+ return /* @__PURE__ */ React.createElement(
144092
+ WrappedDT,
144093
+ {
144094
+ topLeftItems: getVisFilter(
144095
+ createCommandMenu(
144096
+ isFunction$2(visSubmenu) ? visSubmenu(props) : visSubmenu,
144097
+ cmds,
144077
144098
  {
144078
- position: "top",
144079
- modifiers: popoverOverflowModifiers,
144080
- content: "Edit"
144081
- },
144082
- /* @__PURE__ */ React.createElement(
144083
- core.AnchorButton,
144084
- {
144085
- onClick: /* @__PURE__ */ __name(() => {
144086
- showAddOrEditAnnotationDialog({
144087
- type: annotationType,
144088
- annotation: annotationPropertiesSelectedEntities[0]
144089
- });
144090
- }, "onClick"),
144091
- disabled: annotationPropertiesSelectedEntities.length !== 1,
144092
- icon: "edit"
144093
- }
144094
- )
144095
- ), ["feature"].includes(annotationType) && /* @__PURE__ */ React.createElement(
144096
- CmdButton,
144099
+ useTicks: true
144100
+ }
144101
+ )
144102
+ ),
144103
+ annotationPropertiesSelectedEntities,
144104
+ leftOfSearchBarItems: /* @__PURE__ */ React.createElement(React.Fragment, null, !readOnly2 && /* @__PURE__ */ React.createElement(core.ButtonGroup, { style: { marginTop: 3, marginRight: 4 } }, /* @__PURE__ */ React.createElement(
144105
+ core.Tooltip,
144106
+ {
144107
+ position: "top",
144108
+ modifiers: popoverOverflowModifiers,
144109
+ content: "New"
144110
+ },
144111
+ /* @__PURE__ */ React.createElement(
144112
+ core.AnchorButton,
144097
144113
  {
144098
- text: "",
144099
- icon: "cog",
144100
- "data-tip": "Configure Feature Types",
144101
- cmd: this.commands.onConfigureFeatureTypesClick
144114
+ disabled: !sequenceLength,
144115
+ icon: "plus",
144116
+ className: "tgNewAnnBtn",
144117
+ onClick: /* @__PURE__ */ __name(() => {
144118
+ showAddOrEditAnnotationDialog({
144119
+ type: annotationType,
144120
+ annotation: pick$1(
144121
+ selectionLayer2,
144122
+ "start",
144123
+ "end",
144124
+ "forward"
144125
+ )
144126
+ });
144127
+ }, "onClick")
144102
144128
  }
144103
- ), ["part", "primer", "feature"].includes(annotationType) && /* @__PURE__ */ React.createElement(
144104
- CmdButton,
144129
+ )
144130
+ ), /* @__PURE__ */ React.createElement(
144131
+ core.Tooltip,
144132
+ {
144133
+ position: "top",
144134
+ modifiers: popoverOverflowModifiers,
144135
+ content: "Edit"
144136
+ },
144137
+ /* @__PURE__ */ React.createElement(
144138
+ core.AnchorButton,
144105
144139
  {
144106
- text: "",
144107
- icon: removeDuplicatesIcon,
144108
- "data-tip": "Remove Duplicates",
144109
- cmd: this.commands[`showRemoveDuplicatesDialog${annotationTypeUpper + "s"}`]
144140
+ onClick: /* @__PURE__ */ __name(() => {
144141
+ showAddOrEditAnnotationDialog({
144142
+ type: annotationType,
144143
+ annotation: annotationPropertiesSelectedEntities[0]
144144
+ });
144145
+ }, "onClick"),
144146
+ disabled: annotationPropertiesSelectedEntities.length !== 1,
144147
+ icon: "edit"
144110
144148
  }
144111
- ), additionalFooterEls && additionalFooterEls(this.props), /* @__PURE__ */ React.createElement(
144112
- core.Tooltip,
144149
+ )
144150
+ ), ["feature"].includes(annotationType) && /* @__PURE__ */ React.createElement(
144151
+ CmdButton,
144152
+ {
144153
+ text: "",
144154
+ icon: "cog",
144155
+ "data-tip": "Configure Feature Types",
144156
+ cmd: cmds.onConfigureFeatureTypesClick
144157
+ }
144158
+ ), ["part", "primer", "feature"].includes(annotationType) && /* @__PURE__ */ React.createElement(
144159
+ CmdButton,
144160
+ {
144161
+ text: "",
144162
+ icon: removeDuplicatesIcon,
144163
+ "data-tip": "Remove Duplicates",
144164
+ cmd: cmds[`showRemoveDuplicatesDialog${annotationTypeUpper + "s"}`]
144165
+ }
144166
+ ), additionalFooterEls && additionalFooterEls(props), /* @__PURE__ */ React.createElement(
144167
+ core.Tooltip,
144168
+ {
144169
+ position: "top",
144170
+ modifiers: popoverOverflowModifiers,
144171
+ content: "Delete"
144172
+ },
144173
+ /* @__PURE__ */ React.createElement(
144174
+ core.AnchorButton,
144113
144175
  {
144114
- position: "top",
144115
- modifiers: popoverOverflowModifiers,
144116
- content: "Delete"
144117
- },
144118
- /* @__PURE__ */ React.createElement(
144119
- core.AnchorButton,
144120
- {
144121
- onClick: /* @__PURE__ */ __name(() => {
144122
- deleteAnnotation(annotationPropertiesSelectedEntities);
144123
- }, "onClick"),
144124
- className: "tgDeleteAnnsBtn",
144125
- intent: "danger",
144126
- disabled: !annotationPropertiesSelectedEntities.length,
144127
- icon: "trash"
144128
- }
144129
- )
144130
- ))),
144131
- onDoubleClick: /* @__PURE__ */ __name((annotation) => {
144132
- showAddOrEditAnnotationDialog({
144133
- type: annotationType,
144134
- annotation
144135
- });
144136
- }, "onDoubleClick"),
144137
- withCheckboxes: true,
144138
- showFeatureIndividual: this.props.showFeatureIndividual,
144139
- hideFeatureIndividual: this.props.hideFeatureIndividual,
144140
- showPartIndividual: this.props.showPartIndividual,
144141
- hidePartIndividual: this.props.hidePartIndividual,
144142
- showPrimerIndividual: this.props.showPrimerIndividual,
144143
- hidePrimerIndividual: this.props.hidePrimerIndividual,
144144
- annotationVisibility: annotationVisibility2,
144145
- featureLengthsToHide: this.props.featureLengthsToHide,
144146
- primerLengthsToHide: this.props.primerLengthsToHide,
144147
- partLengthsToHide: this.props.partLengthsToHide,
144148
- sequence: sequence2,
144149
- noPadding: true,
144150
- noFullscreenButton: true,
144151
- onRowSelect: this.onRowSelect,
144152
- selectedIds: selectedAnnotationId,
144153
- formName: "annotationProperties",
144154
- noRouter: true,
144155
- isProtein: isProtein2,
144156
- compact: true,
144157
- isInfinite: true,
144158
- withDisplayOptions: true,
144159
- schema: this.schema,
144160
- entities: annotationsToUse
144161
- }
144162
- );
144163
- }
144164
- };
144165
- __name(_AnnotationProperties, "AnnotationProperties");
144166
- let AnnotationProperties = _AnnotationProperties;
144176
+ onClick: /* @__PURE__ */ __name(() => {
144177
+ deleteAnnotation(annotationPropertiesSelectedEntities);
144178
+ }, "onClick"),
144179
+ className: "tgDeleteAnnsBtn",
144180
+ intent: "danger",
144181
+ disabled: !annotationPropertiesSelectedEntities.length,
144182
+ icon: "trash"
144183
+ }
144184
+ )
144185
+ ))),
144186
+ onDoubleClick: /* @__PURE__ */ __name((annotation) => {
144187
+ showAddOrEditAnnotationDialog({
144188
+ type: annotationType,
144189
+ annotation
144190
+ });
144191
+ }, "onDoubleClick"),
144192
+ withCheckboxes: true,
144193
+ showFeatureIndividual: props.showFeatureIndividual,
144194
+ hideFeatureIndividual: props.hideFeatureIndividual,
144195
+ showPartIndividual: props.showPartIndividual,
144196
+ hidePartIndividual: props.hidePartIndividual,
144197
+ showPrimerIndividual: props.showPrimerIndividual,
144198
+ hidePrimerIndividual: props.hidePrimerIndividual,
144199
+ annotationVisibility: annotationVisibility2,
144200
+ featureLengthsToHide: props.featureLengthsToHide,
144201
+ primerLengthsToHide: props.primerLengthsToHide,
144202
+ partLengthsToHide: props.partLengthsToHide,
144203
+ sequence: sequence2,
144204
+ noPadding: true,
144205
+ noFullscreenButton: true,
144206
+ onRowSelect,
144207
+ selectedIds: selectedAnnotationId,
144208
+ formName: "annotationProperties",
144209
+ noRouter: true,
144210
+ isProtein: isProtein2,
144211
+ compact: true,
144212
+ isInfinite: true,
144213
+ withDisplayOptions: true,
144214
+ schema: schema2,
144215
+ entities: annotationsToUse
144216
+ }
144217
+ );
144218
+ }, "AnnotationProperties");
144167
144219
  return compose(
144168
144220
  connectToEditor(
144169
144221
  ({