@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.es.js CHANGED
@@ -17242,23 +17242,6 @@ const useTableEntities = /* @__PURE__ */ __name((tableFormName) => {
17242
17242
  const { allOrderedEntities, selectedEntities } = useSelector(entitySelector);
17243
17243
  return { selectTableEntities, allOrderedEntities, selectedEntities };
17244
17244
  }, "useTableEntities");
17245
- const isEqualIgnoreFunctions = /* @__PURE__ */ __name((o1, o2) => {
17246
- const isEq = isEqualWith(o1, o2, function(val1, val2) {
17247
- if (isFunction$2(val1) && isFunction$2(val2)) {
17248
- return val1 === val2 || val1.toString() === val2.toString();
17249
- }
17250
- if (val1 && val1.constructor && val1.constructor.name === "FiberNode")
17251
- return true;
17252
- });
17253
- return isEq;
17254
- }, "isEqualIgnoreFunctions");
17255
- const useDeepEqualMemo = /* @__PURE__ */ __name((value) => {
17256
- const ref2 = useRef();
17257
- if (!isEqualIgnoreFunctions(value, ref2.current)) {
17258
- ref2.current = value;
17259
- }
17260
- return ref2.current;
17261
- }, "useDeepEqualMemo");
17262
17245
  function rowClick(e, rowInfo, entities, {
17263
17246
  reduxFormSelectedEntityIdMap,
17264
17247
  isSingleSelect,
@@ -56552,6 +56535,33 @@ if (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === "object") {
56552
56535
  $mobx
56553
56536
  });
56554
56537
  }
56538
+ const isEqualIgnoreFunctions = /* @__PURE__ */ __name((o1, o2) => {
56539
+ const isEq = isEqualWith(o1, o2, function(val1, val2) {
56540
+ if (isFunction$2(val1) && isFunction$2(val2)) {
56541
+ return val1 === val2 || val1.toString() === val2.toString();
56542
+ }
56543
+ if (val1 && val1.constructor && val1.constructor.name === "FiberNode")
56544
+ return true;
56545
+ });
56546
+ return isEq;
56547
+ }, "isEqualIgnoreFunctions");
56548
+ const useDeepEqualMemoIgnoreFns = /* @__PURE__ */ __name((value) => {
56549
+ const ref2 = useRef();
56550
+ if (!isEqualIgnoreFunctions(value, ref2.current)) {
56551
+ ref2.current = value;
56552
+ }
56553
+ return ref2.current;
56554
+ }, "useDeepEqualMemoIgnoreFns");
56555
+ const useDeepEqualMemo = /* @__PURE__ */ __name((value) => {
56556
+ const ref2 = useRef();
56557
+ if (!isEqual$3(value, ref2.current)) {
56558
+ ref2.current = value;
56559
+ }
56560
+ return ref2.current;
56561
+ }, "useDeepEqualMemo");
56562
+ const useMemoDeepEqual = /* @__PURE__ */ __name((value, depsArray) => {
56563
+ return useMemo$1(value, useDeepEqualMemo(depsArray));
56564
+ }, "useMemoDeepEqual");
56555
56565
  T();
56556
56566
  const IS_LINUX = window.navigator.platform.toLowerCase().search("linux") > -1;
56557
56567
  const itemSizeEstimators = {
@@ -56638,9 +56648,11 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
56638
56648
  "reduxFormSelectedEntityIdMap"
56639
56649
  );
56640
56650
  }, "dtFormParamsSelector"));
56641
- const reduxFormCellValidation = useDeepEqualMemo(_reduxFormCellValidation);
56642
- const reduxFormQueryParams = useDeepEqualMemo(_reduxFormQueryParams);
56643
- const reduxFormSelectedEntityIdMap = useDeepEqualMemo(
56651
+ const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
56652
+ _reduxFormCellValidation
56653
+ );
56654
+ const reduxFormQueryParams = useDeepEqualMemoIgnoreFns(_reduxFormQueryParams);
56655
+ const reduxFormSelectedEntityIdMap = useDeepEqualMemoIgnoreFns(
56644
56656
  _reduxFormSelectedEntityIdMap
56645
56657
  );
56646
56658
  let props = ownProps;
@@ -56715,7 +56727,7 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
56715
56727
  const tmp = (urlConnected ? getCurrentParamsFromUrl(history.location) : reduxFormQueryParams) || {};
56716
56728
  return tmp;
56717
56729
  }, [history, reduxFormQueryParams, urlConnected]);
56718
- const currentParams = useDeepEqualMemo(_currentParams);
56730
+ const currentParams = useDeepEqualMemoIgnoreFns(_currentParams);
56719
56731
  const tableParams = useMemo$1(() => {
56720
56732
  if (!isTableParamsConnected) {
56721
56733
  const setNewParams2 = /* @__PURE__ */ __name((newParams) => {
@@ -56896,8 +56908,8 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
56896
56908
  () => ((reduxFormEntities == null ? void 0 : reduxFormEntities.length) ? reduxFormEntities : _origEntities) || [],
56897
56909
  [_origEntities, reduxFormEntities]
56898
56910
  );
56899
- const entities = useDeepEqualMemo(_entities);
56900
- const entitiesAcrossPages = useDeepEqualMemo(_entitiesAcrossPages);
56911
+ const entities = useDeepEqualMemoIgnoreFns(_entities);
56912
+ const entitiesAcrossPages = useDeepEqualMemoIgnoreFns(_entitiesAcrossPages);
56901
56913
  useEffect(() => {
56902
56914
  change$1("allOrderedEntities", entitiesAcrossPages);
56903
56915
  if (entities.length === 0 || isEmpty$1(reduxFormSelectedEntityIdMap)) return;
@@ -61461,7 +61473,7 @@ const SimpleInsertDataDialog = compose(
61461
61473
  return (_b2 = (_a3 = state2.form) == null ? void 0 : _a3[dataTableForm]) == null ? void 0 : _b2.values.reduxFormEntities;
61462
61474
  }
61463
61475
  );
61464
- const reduxFormEntities = useDeepEqualMemo(_reduxFormEntities);
61476
+ const reduxFormEntities = useDeepEqualMemoIgnoreFns(_reduxFormEntities);
61465
61477
  useEffect(() => {
61466
61478
  return () => dispatch(destroy$1(dataTableForm));
61467
61479
  }, [dataTableForm, dispatch]);
@@ -61471,7 +61483,9 @@ const SimpleInsertDataDialog = compose(
61471
61483
  return (_b2 = (_a3 = state2.form) == null ? void 0 : _a3[dataTableForm]) == null ? void 0 : _b2.values.reduxFormCellValidation;
61472
61484
  }, "_reduxFormCellValidationSelector")
61473
61485
  );
61474
- const reduxFormCellValidation = useDeepEqualMemo(_reduxFormCellValidation);
61486
+ const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
61487
+ _reduxFormCellValidation
61488
+ );
61475
61489
  const { entsToUse, validationToUse } = useMemo$1(
61476
61490
  () => removeCleanRows(reduxFormEntities, reduxFormCellValidation),
61477
61491
  [reduxFormEntities, reduxFormCellValidation]
@@ -61556,8 +61570,10 @@ const UploadCsvWizardDialogInner = reduxForm()(({
61556
61570
  "reduxFormCellValidation"
61557
61571
  );
61558
61572
  }, "dtFormNameSelector"));
61559
- const reduxFormEntities = useDeepEqualMemo(_reduxFormEntities);
61560
- const reduxFormCellValidation = useDeepEqualMemo(_reduxFormCellValidation);
61573
+ const reduxFormEntities = useDeepEqualMemoIgnoreFns(_reduxFormEntities);
61574
+ const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
61575
+ _reduxFormCellValidation
61576
+ );
61561
61577
  let inner2;
61562
61578
  if (hasSubmitted) {
61563
61579
  inner2 = /* @__PURE__ */ React__default.createElement(
@@ -61859,8 +61875,10 @@ const UploadCsvWizardDialog = compose(
61859
61875
  };
61860
61876
  }
61861
61877
  });
61862
- const reduxFormEntitiesArray = useDeepEqualMemo(_reduxFormEntitiesArray);
61863
- const finishedFiles = useDeepEqualMemo(_finishedFiles);
61878
+ const reduxFormEntitiesArray = useDeepEqualMemoIgnoreFns(
61879
+ _reduxFormEntitiesArray
61880
+ );
61881
+ const finishedFiles = useDeepEqualMemoIgnoreFns(_finishedFiles);
61864
61882
  const [hasSubmittedOuter, setSubmittedOuter] = useState();
61865
61883
  const [steps, setSteps] = useState(getInitialSteps(true));
61866
61884
  const [focusedTab, setFocusedTab] = useState(0);
@@ -70365,12 +70383,21 @@ const _ResizableDraggableDialog = class _ResizableDraggableDialog extends React_
70365
70383
  }, RndProps),
70366
70384
  /* @__PURE__ */ React__default.createElement(
70367
70385
  Dialog,
70368
- __spreadValues({
70386
+ __spreadProps(__spreadValues({
70369
70387
  enforceFocus: false,
70370
70388
  hasBackdrop: false,
70371
70389
  usePortal: false,
70372
70390
  canEscapeKeyClose: true
70373
- }, rest)
70391
+ }, rest), {
70392
+ title: /* @__PURE__ */ React__default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 8 } }, /* @__PURE__ */ React__default.createElement(
70393
+ Icon,
70394
+ {
70395
+ size: "14",
70396
+ "data-tip": "I'm a resizable draggable dialog!",
70397
+ icon: "move"
70398
+ }
70399
+ ), rest.title)
70400
+ })
70374
70401
  )
70375
70402
  )
70376
70403
  );
@@ -73644,7 +73671,7 @@ const genbankFeatureTypes = [
73644
73671
  { name: "regulatory", color: "#3F6C51" },
73645
73672
  { name: "SecStr", color: "#7B4B94" },
73646
73673
  { name: "Site", color: "#7D82B8" },
73647
- { name: "telomere", color: "DE9151" },
73674
+ { name: "telomere", color: "#DE9151" },
73648
73675
  { name: "tmRNA", color: "#B7E3CC" },
73649
73676
  { name: "unsure", color: "#C4FFB2" },
73650
73677
  { name: "V_segment", color: "#D6F7A3" },
@@ -83783,7 +83810,10 @@ function getOrfsFromSequence(options) {
83783
83810
  return nonDuplicatedOrfRanges;
83784
83811
  }
83785
83812
  __name(getOrfsFromSequence, "getOrfsFromSequence");
83786
- function findOrfsInPlasmid(sequence2, circular2, minimumOrfSize2, useAdditionalOrfStartCodons2) {
83813
+ function findOrfsInPlasmid(sequence2, circular2, minimumOrfSize2, useAdditionalOrfStartCodons2, isProteinOrOligo) {
83814
+ if (isProteinOrOligo) {
83815
+ return [];
83816
+ }
83787
83817
  const forwardOrfs = getOrfsFromSequence({
83788
83818
  sequence: sequence2,
83789
83819
  minimumOrfSize: minimumOrfSize2,
@@ -98068,6 +98098,10 @@ const orfsSelector = createSelector(
98068
98098
  circularSelector,
98069
98099
  minimumOrfSizeSelector,
98070
98100
  (state2) => state2.useAdditionalOrfStartCodons,
98101
+ (state2) => {
98102
+ var _a2, _b2;
98103
+ return ((_a2 = state2.sequenceData) == null ? void 0 : _a2.isProtein) || ((_b2 = state2.sequenceData) == null ? void 0 : _b2.isOligo);
98104
+ },
98071
98105
  findOrfsInPlasmid
98072
98106
  );
98073
98107
  function translationsRawSelector(sequenceData2) {
@@ -98103,10 +98137,7 @@ function searchLayersSelector(sequence2, isCircular, isOpen, searchString, ambig
98103
98137
  end: end2 * 3 + 2
98104
98138
  });
98105
98139
  });
98106
- return [
98107
- ...toReturn,
98108
- ...r2
98109
- ];
98140
+ return [...toReturn, ...r2];
98110
98141
  }
98111
98142
  if (dnaOrAA === "DNA" && ambiguousOrLiteral === "LITERAL" && mismatchesAllowed > 0) {
98112
98143
  const approxMatches = findApproxMatches(
@@ -98124,9 +98155,12 @@ function searchLayersSelector(sequence2, isCircular, isOpen, searchString, ambig
98124
98155
  isSearchLayer: true,
98125
98156
  forward: true
98126
98157
  })).sort((a2, b3) => a2.start - b3.start);
98127
- return [...toReturn, ...matches2.map((match) => __spreadProps(__spreadValues({}, match), {
98128
- className: "veSearchLayer"
98129
- }))];
98158
+ return [
98159
+ ...toReturn,
98160
+ ...matches2.map((match) => __spreadProps(__spreadValues({}, match), {
98161
+ className: "veSearchLayer"
98162
+ }))
98163
+ ];
98130
98164
  }
98131
98165
  const matches = findSequenceMatches(sequence2, searchString, {
98132
98166
  isCircular,
@@ -98136,11 +98170,14 @@ function searchLayersSelector(sequence2, isCircular, isOpen, searchString, ambig
98136
98170
  }).sort(({ start: start2 }, { start: start22 }) => {
98137
98171
  return start2 - start22;
98138
98172
  });
98139
- return [...toReturn, ...matches.map((match) => __spreadProps(__spreadValues({}, match), {
98140
- forward: !match.bottomStrand,
98141
- className: "veSearchLayer " + (match.bottomStrand ? " veSearchLayerBottomStrand" : ""),
98142
- isSearchLayer: true
98143
- }))];
98173
+ return [
98174
+ ...toReturn,
98175
+ ...matches.map((match) => __spreadProps(__spreadValues({}, match), {
98176
+ forward: !match.bottomStrand,
98177
+ className: "veSearchLayer " + (match.bottomStrand ? " veSearchLayerBottomStrand" : ""),
98178
+ isSearchLayer: true
98179
+ }))
98180
+ ];
98144
98181
  }
98145
98182
  __name(searchLayersSelector, "searchLayersSelector");
98146
98183
  const searchLayersSelector$1 = createSelector(
@@ -98153,7 +98190,10 @@ const searchLayersSelector$1 = createSelector(
98153
98190
  (state2) => state2.sequenceData.isProtein,
98154
98191
  (state2) => state2.sequenceData.proteinSequence,
98155
98192
  (state2) => state2.findTool && state2.findTool.mismatchesAllowed,
98156
- (state2) => state2.temporaryAnnotations.searchLayers,
98193
+ (state2) => {
98194
+ var _a2;
98195
+ return (_a2 = state2.temporaryAnnotations) == null ? void 0 : _a2.searchLayers;
98196
+ },
98157
98197
  searchLayersSelector
98158
98198
  );
98159
98199
  const translationSearchMatchesSelector = createSelector(
@@ -116919,7 +116959,7 @@ function showFileDialog({ multiple = false, onSelect }) {
116919
116959
  input.click();
116920
116960
  }
116921
116961
  __name(showFileDialog, "showFileDialog");
116922
- const version = "0.8.21";
116962
+ const version = "0.8.23";
116923
116963
  const packageJson = {
116924
116964
  version
116925
116965
  };
@@ -143882,12 +143922,29 @@ const genericAnnotationProperties = /* @__PURE__ */ __name(({
143882
143922
  additionalFooterEls
143883
143923
  }) => {
143884
143924
  const annotationTypeUpper = upperFirst(annotationType);
143885
- const _AnnotationProperties = class _AnnotationProperties extends React__default.Component {
143886
- constructor(props) {
143887
- super(props);
143888
- __publicField(this, "onRowSelect", /* @__PURE__ */ __name(([record]) => {
143925
+ const AnnotationProperties = /* @__PURE__ */ __name((props) => {
143926
+ var _a2, _b2, _c;
143927
+ const {
143928
+ readOnly: readOnly2,
143929
+ annotations = {},
143930
+ annotationVisibility: annotationVisibility2,
143931
+ sequenceLength,
143932
+ selectionLayer: selectionLayer2,
143933
+ sequence: sequence2,
143934
+ isProtein: isProtein2,
143935
+ allPartTags,
143936
+ annotationPropertiesSelectedEntities: _annotationPropertiesSelectedEntities,
143937
+ selectedAnnotationId,
143938
+ PropertiesProps,
143939
+ dispatch,
143940
+ editorName
143941
+ } = props;
143942
+ const instanceRef = React__default.useRef({ props });
143943
+ instanceRef.current.props = props;
143944
+ const cmds = React__default.useMemo(() => getCommands(instanceRef.current), []);
143945
+ const onRowSelect = React__default.useCallback(
143946
+ ([record]) => {
143889
143947
  if (!record) return;
143890
- const { dispatch, editorName } = this.props;
143891
143948
  dispatch({
143892
143949
  type: "SELECTION_LAYER_UPDATE",
143893
143950
  payload: record,
@@ -143895,44 +143952,33 @@ const genericAnnotationProperties = /* @__PURE__ */ __name(({
143895
143952
  editorName
143896
143953
  }
143897
143954
  });
143898
- }, "onRowSelect"));
143899
- this.commands = getCommands(this);
143900
- }
143901
- render() {
143902
- var _a2, _b2, _c;
143903
- const {
143904
- readOnly: readOnly2,
143905
- annotations = {},
143906
- annotationVisibility: annotationVisibility2,
143907
- sequenceLength,
143908
- selectionLayer: selectionLayer2,
143909
- sequence: sequence2,
143910
- isProtein: isProtein2,
143911
- allPartTags,
143912
- annotationPropertiesSelectedEntities: _annotationPropertiesSelectedEntities,
143913
- selectedAnnotationId,
143914
- PropertiesProps
143915
- } = this.props;
143916
- const annotationPropertiesSelectedEntities = _annotationPropertiesSelectedEntities.filter((a2) => annotations[a2.id]);
143917
- const deleteAnnotation = this.props[`delete${annotationTypeUpper}`];
143918
- const annotationsToUse = map$3(annotations, (annotation) => {
143955
+ },
143956
+ [dispatch, editorName]
143957
+ );
143958
+ const annotationPropertiesSelectedEntities = _annotationPropertiesSelectedEntities.filter((a2) => annotations[a2.id]);
143959
+ const deleteAnnotation = props[`delete${annotationTypeUpper}`];
143960
+ const annotationsToUse = React__default.useMemo(
143961
+ () => map$3(annotations, (annotation) => {
143919
143962
  return __spreadProps(__spreadValues(__spreadValues({}, annotation), annotation.strand === void 0 && {
143920
143963
  strand: annotation.forward ? 1 : -1
143921
143964
  }), {
143922
143965
  size: getRangeLength(annotation, sequenceLength)
143923
143966
  });
143924
- });
143925
- const keyedPartTags = (_a2 = getKeyedTagsAndTagOptions(allPartTags)) != null ? _a2 : {};
143926
- const additionalColumns = ((_c = (_b2 = PropertiesProps == null ? void 0 : PropertiesProps.propertiesList) == null ? void 0 : _b2.find(
143927
- (p2) => (p2.name || p2) === (pluralize(annotationType) || "")
143928
- )) == null ? void 0 : _c.additionalColumns) || [];
143929
- this.schema = {
143967
+ }),
143968
+ [annotations, sequenceLength]
143969
+ );
143970
+ const keyedPartTags = (_a2 = getKeyedTagsAndTagOptions(allPartTags)) != null ? _a2 : {};
143971
+ const additionalColumns = ((_c = (_b2 = PropertiesProps == null ? void 0 : PropertiesProps.propertiesList) == null ? void 0 : _b2.find(
143972
+ (p2) => (p2.name || p2) === (pluralize(annotationType) || "")
143973
+ )) == null ? void 0 : _c.additionalColumns) || [];
143974
+ const schema2 = useMemoDeepEqual(
143975
+ () => ({
143930
143976
  fields: [
143931
143977
  {
143932
143978
  path: "name",
143933
143979
  type: "string",
143934
143980
  render: /* @__PURE__ */ __name((name2, ann) => {
143935
- const checked = !this.props.annotationVisibility[`${annotationType}IndividualToHide`][ann.id];
143981
+ const checked = !annotationVisibility2[`${annotationType}IndividualToHide`][ann.id];
143936
143982
  return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
143937
143983
  Icon,
143938
143984
  {
@@ -143941,9 +143987,9 @@ const genericAnnotationProperties = /* @__PURE__ */ __name(({
143941
143987
  e.stopPropagation();
143942
143988
  const upperType = startCase(annotationType);
143943
143989
  if (checked) {
143944
- this.props[`hide${upperType}Individual`]([ann.id]);
143990
+ props[`hide${upperType}Individual`]([ann.id]);
143945
143991
  } else {
143946
- this.props[`show${upperType}Individual`]([ann.id]);
143992
+ props[`show${upperType}Individual`]([ann.id]);
143947
143993
  }
143948
143994
  }, "onClick"),
143949
143995
  style: {
@@ -143964,7 +144010,7 @@ const genericAnnotationProperties = /* @__PURE__ */ __name(({
143964
144010
  render: /* @__PURE__ */ __name((bases, primer) => {
143965
144011
  let bps = bases;
143966
144012
  if (!bases) {
143967
- bps = getSequenceWithinRange(primer, this.props.sequence);
144013
+ bps = getSequenceWithinRange(primer, sequence2);
143968
144014
  if (!primer.forward) {
143969
144015
  bps = getReverseComplementSequenceString(bps);
143970
144016
  }
@@ -143989,8 +144035,8 @@ const genericAnnotationProperties = /* @__PURE__ */ __name(({
143989
144035
  }, "render")
143990
144036
  }
143991
144037
  ],
143992
- sizeSchema(this.props.isProtein),
143993
- ...withTags && this.props.allPartTags ? [
144038
+ sizeSchema(isProtein2),
144039
+ ...withTags && allPartTags ? [
143994
144040
  {
143995
144041
  path: "tags",
143996
144042
  type: "string",
@@ -144014,138 +144060,144 @@ const genericAnnotationProperties = /* @__PURE__ */ __name(({
144014
144060
  { path: "strand", type: "number" },
144015
144061
  ...additionalColumns
144016
144062
  ]
144017
- };
144018
- return /* @__PURE__ */ React__default.createElement(
144019
- WrappedDT,
144020
- {
144021
- topLeftItems: getVisFilter(
144022
- createCommandMenu(
144023
- isFunction$2(visSubmenu) ? visSubmenu(this.props) : visSubmenu,
144024
- this.commands,
144025
- {
144026
- useTicks: true
144027
- }
144028
- )
144029
- ),
144030
- annotationPropertiesSelectedEntities,
144031
- leftOfSearchBarItems: /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, !readOnly2 && /* @__PURE__ */ React__default.createElement(ButtonGroup, { style: { marginTop: 3, marginRight: 4 } }, /* @__PURE__ */ React__default.createElement(
144032
- Tooltip,
144033
- {
144034
- position: "top",
144035
- modifiers: popoverOverflowModifiers,
144036
- content: "New"
144037
- },
144038
- /* @__PURE__ */ React__default.createElement(
144039
- AnchorButton,
144040
- {
144041
- disabled: !sequenceLength,
144042
- icon: "plus",
144043
- className: "tgNewAnnBtn",
144044
- onClick: /* @__PURE__ */ __name(() => {
144045
- showAddOrEditAnnotationDialog({
144046
- type: annotationType,
144047
- annotation: pick$1(
144048
- selectionLayer2,
144049
- "start",
144050
- "end",
144051
- "forward"
144052
- )
144053
- });
144054
- }, "onClick")
144055
- }
144056
- )
144057
- ), /* @__PURE__ */ React__default.createElement(
144058
- Tooltip,
144063
+ }),
144064
+ [
144065
+ additionalColumns,
144066
+ allPartTags,
144067
+ annotationVisibility2,
144068
+ isProtein2,
144069
+ keyedPartTags,
144070
+ sequence2
144071
+ ]
144072
+ );
144073
+ return /* @__PURE__ */ React__default.createElement(
144074
+ WrappedDT,
144075
+ {
144076
+ topLeftItems: getVisFilter(
144077
+ createCommandMenu(
144078
+ isFunction$2(visSubmenu) ? visSubmenu(props) : visSubmenu,
144079
+ cmds,
144059
144080
  {
144060
- position: "top",
144061
- modifiers: popoverOverflowModifiers,
144062
- content: "Edit"
144063
- },
144064
- /* @__PURE__ */ React__default.createElement(
144065
- AnchorButton,
144066
- {
144067
- onClick: /* @__PURE__ */ __name(() => {
144068
- showAddOrEditAnnotationDialog({
144069
- type: annotationType,
144070
- annotation: annotationPropertiesSelectedEntities[0]
144071
- });
144072
- }, "onClick"),
144073
- disabled: annotationPropertiesSelectedEntities.length !== 1,
144074
- icon: "edit"
144075
- }
144076
- )
144077
- ), ["feature"].includes(annotationType) && /* @__PURE__ */ React__default.createElement(
144078
- CmdButton,
144081
+ useTicks: true
144082
+ }
144083
+ )
144084
+ ),
144085
+ annotationPropertiesSelectedEntities,
144086
+ leftOfSearchBarItems: /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, !readOnly2 && /* @__PURE__ */ React__default.createElement(ButtonGroup, { style: { marginTop: 3, marginRight: 4 } }, /* @__PURE__ */ React__default.createElement(
144087
+ Tooltip,
144088
+ {
144089
+ position: "top",
144090
+ modifiers: popoverOverflowModifiers,
144091
+ content: "New"
144092
+ },
144093
+ /* @__PURE__ */ React__default.createElement(
144094
+ AnchorButton,
144079
144095
  {
144080
- text: "",
144081
- icon: "cog",
144082
- "data-tip": "Configure Feature Types",
144083
- cmd: this.commands.onConfigureFeatureTypesClick
144096
+ disabled: !sequenceLength,
144097
+ icon: "plus",
144098
+ className: "tgNewAnnBtn",
144099
+ onClick: /* @__PURE__ */ __name(() => {
144100
+ showAddOrEditAnnotationDialog({
144101
+ type: annotationType,
144102
+ annotation: pick$1(
144103
+ selectionLayer2,
144104
+ "start",
144105
+ "end",
144106
+ "forward"
144107
+ )
144108
+ });
144109
+ }, "onClick")
144084
144110
  }
144085
- ), ["part", "primer", "feature"].includes(annotationType) && /* @__PURE__ */ React__default.createElement(
144086
- CmdButton,
144111
+ )
144112
+ ), /* @__PURE__ */ React__default.createElement(
144113
+ Tooltip,
144114
+ {
144115
+ position: "top",
144116
+ modifiers: popoverOverflowModifiers,
144117
+ content: "Edit"
144118
+ },
144119
+ /* @__PURE__ */ React__default.createElement(
144120
+ AnchorButton,
144087
144121
  {
144088
- text: "",
144089
- icon: removeDuplicatesIcon,
144090
- "data-tip": "Remove Duplicates",
144091
- cmd: this.commands[`showRemoveDuplicatesDialog${annotationTypeUpper + "s"}`]
144122
+ onClick: /* @__PURE__ */ __name(() => {
144123
+ showAddOrEditAnnotationDialog({
144124
+ type: annotationType,
144125
+ annotation: annotationPropertiesSelectedEntities[0]
144126
+ });
144127
+ }, "onClick"),
144128
+ disabled: annotationPropertiesSelectedEntities.length !== 1,
144129
+ icon: "edit"
144092
144130
  }
144093
- ), additionalFooterEls && additionalFooterEls(this.props), /* @__PURE__ */ React__default.createElement(
144094
- Tooltip,
144131
+ )
144132
+ ), ["feature"].includes(annotationType) && /* @__PURE__ */ React__default.createElement(
144133
+ CmdButton,
144134
+ {
144135
+ text: "",
144136
+ icon: "cog",
144137
+ "data-tip": "Configure Feature Types",
144138
+ cmd: cmds.onConfigureFeatureTypesClick
144139
+ }
144140
+ ), ["part", "primer", "feature"].includes(annotationType) && /* @__PURE__ */ React__default.createElement(
144141
+ CmdButton,
144142
+ {
144143
+ text: "",
144144
+ icon: removeDuplicatesIcon,
144145
+ "data-tip": "Remove Duplicates",
144146
+ cmd: cmds[`showRemoveDuplicatesDialog${annotationTypeUpper + "s"}`]
144147
+ }
144148
+ ), additionalFooterEls && additionalFooterEls(props), /* @__PURE__ */ React__default.createElement(
144149
+ Tooltip,
144150
+ {
144151
+ position: "top",
144152
+ modifiers: popoverOverflowModifiers,
144153
+ content: "Delete"
144154
+ },
144155
+ /* @__PURE__ */ React__default.createElement(
144156
+ AnchorButton,
144095
144157
  {
144096
- position: "top",
144097
- modifiers: popoverOverflowModifiers,
144098
- content: "Delete"
144099
- },
144100
- /* @__PURE__ */ React__default.createElement(
144101
- AnchorButton,
144102
- {
144103
- onClick: /* @__PURE__ */ __name(() => {
144104
- deleteAnnotation(annotationPropertiesSelectedEntities);
144105
- }, "onClick"),
144106
- className: "tgDeleteAnnsBtn",
144107
- intent: "danger",
144108
- disabled: !annotationPropertiesSelectedEntities.length,
144109
- icon: "trash"
144110
- }
144111
- )
144112
- ))),
144113
- onDoubleClick: /* @__PURE__ */ __name((annotation) => {
144114
- showAddOrEditAnnotationDialog({
144115
- type: annotationType,
144116
- annotation
144117
- });
144118
- }, "onDoubleClick"),
144119
- withCheckboxes: true,
144120
- showFeatureIndividual: this.props.showFeatureIndividual,
144121
- hideFeatureIndividual: this.props.hideFeatureIndividual,
144122
- showPartIndividual: this.props.showPartIndividual,
144123
- hidePartIndividual: this.props.hidePartIndividual,
144124
- showPrimerIndividual: this.props.showPrimerIndividual,
144125
- hidePrimerIndividual: this.props.hidePrimerIndividual,
144126
- annotationVisibility: annotationVisibility2,
144127
- featureLengthsToHide: this.props.featureLengthsToHide,
144128
- primerLengthsToHide: this.props.primerLengthsToHide,
144129
- partLengthsToHide: this.props.partLengthsToHide,
144130
- sequence: sequence2,
144131
- noPadding: true,
144132
- noFullscreenButton: true,
144133
- onRowSelect: this.onRowSelect,
144134
- selectedIds: selectedAnnotationId,
144135
- formName: "annotationProperties",
144136
- noRouter: true,
144137
- isProtein: isProtein2,
144138
- compact: true,
144139
- isInfinite: true,
144140
- withDisplayOptions: true,
144141
- schema: this.schema,
144142
- entities: annotationsToUse
144143
- }
144144
- );
144145
- }
144146
- };
144147
- __name(_AnnotationProperties, "AnnotationProperties");
144148
- let AnnotationProperties = _AnnotationProperties;
144158
+ onClick: /* @__PURE__ */ __name(() => {
144159
+ deleteAnnotation(annotationPropertiesSelectedEntities);
144160
+ }, "onClick"),
144161
+ className: "tgDeleteAnnsBtn",
144162
+ intent: "danger",
144163
+ disabled: !annotationPropertiesSelectedEntities.length,
144164
+ icon: "trash"
144165
+ }
144166
+ )
144167
+ ))),
144168
+ onDoubleClick: /* @__PURE__ */ __name((annotation) => {
144169
+ showAddOrEditAnnotationDialog({
144170
+ type: annotationType,
144171
+ annotation
144172
+ });
144173
+ }, "onDoubleClick"),
144174
+ withCheckboxes: true,
144175
+ showFeatureIndividual: props.showFeatureIndividual,
144176
+ hideFeatureIndividual: props.hideFeatureIndividual,
144177
+ showPartIndividual: props.showPartIndividual,
144178
+ hidePartIndividual: props.hidePartIndividual,
144179
+ showPrimerIndividual: props.showPrimerIndividual,
144180
+ hidePrimerIndividual: props.hidePrimerIndividual,
144181
+ annotationVisibility: annotationVisibility2,
144182
+ featureLengthsToHide: props.featureLengthsToHide,
144183
+ primerLengthsToHide: props.primerLengthsToHide,
144184
+ partLengthsToHide: props.partLengthsToHide,
144185
+ sequence: sequence2,
144186
+ noPadding: true,
144187
+ noFullscreenButton: true,
144188
+ onRowSelect,
144189
+ selectedIds: selectedAnnotationId,
144190
+ formName: "annotationProperties",
144191
+ noRouter: true,
144192
+ isProtein: isProtein2,
144193
+ compact: true,
144194
+ isInfinite: true,
144195
+ withDisplayOptions: true,
144196
+ schema: schema2,
144197
+ entities: annotationsToUse
144198
+ }
144199
+ );
144200
+ }, "AnnotationProperties");
144149
144201
  return compose(
144150
144202
  connectToEditor(
144151
144203
  ({