@teselagen/ove 0.8.29 → 0.8.31
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/RowItem/utils.d.ts +1 -0
- package/helperComponents/PropertiesDialog/utils.d.ts +1 -0
- package/index.cjs.js +455 -256
- package/index.es.js +455 -256
- package/index.umd.js +455 -256
- package/package.json +3 -3
- package/selectors/cutsitesSelector.d.ts +1 -9
- package/selectors/filteredCutsitesSelector.d.ts +5 -1
- package/src/Editor/index.js +2 -0
- package/src/Editor/userDefinedHandlersAndOpts.js +2 -0
- package/src/GlobalDialog.js +11 -1
- package/src/GlobalDialogUtils.js +14 -2
- package/src/RowItem/StackedAnnotations/PointedAnnotation.js +101 -34
- package/src/RowItem/utils.js +19 -3
- package/src/commands/index.js +1 -1
- package/src/helperComponents/PropertiesDialog/OrfProperties.js +2 -3
- package/src/helperComponents/PropertiesDialog/TranslationProperties.js +2 -1
- package/src/helperComponents/PropertiesDialog/utils.js +29 -0
- package/src/selectors/cutsitesSelector.js +57 -2
- package/src/utils/getAnnotationNameAndStartStopString.js +1 -1
- package/src/withEditorInteractions/createSequenceInputPopup.js +4 -2
- package/src/withEditorInteractions/index.js +12 -5
- package/src/withEditorProps/index.js +21 -8
package/index.cjs.js
CHANGED
|
@@ -2924,6 +2924,13 @@ document.addEventListener("mouseup", () => {
|
|
|
2924
2924
|
isDragging$1 = false;
|
|
2925
2925
|
});
|
|
2926
2926
|
let tippys = [];
|
|
2927
|
+
function isInAllowedContainer(element2) {
|
|
2928
|
+
if (window.onlyAllowTooltipsInVeEditor) {
|
|
2929
|
+
return element2.closest(".veEditor") !== null;
|
|
2930
|
+
}
|
|
2931
|
+
return true;
|
|
2932
|
+
}
|
|
2933
|
+
__name(isInAllowedContainer, "isInAllowedContainer");
|
|
2927
2934
|
let recentlyHidden = false;
|
|
2928
2935
|
let clearMe;
|
|
2929
2936
|
(function() {
|
|
@@ -2931,6 +2938,9 @@ let clearMe;
|
|
|
2931
2938
|
document.addEventListener("mouseover", function(event) {
|
|
2932
2939
|
var _a2, _b2;
|
|
2933
2940
|
const element2 = event.target;
|
|
2941
|
+
if (!isInAllowedContainer(element2)) {
|
|
2942
|
+
return;
|
|
2943
|
+
}
|
|
2934
2944
|
if (element2 instanceof Element && element2 !== lastMouseOverElement) {
|
|
2935
2945
|
let clearOldTippys = /* @__PURE__ */ __name(function(maybeInst) {
|
|
2936
2946
|
tippys = tippys.filter((t2) => {
|
|
@@ -9255,6 +9265,195 @@ function DialogFooter({
|
|
|
9255
9265
|
);
|
|
9256
9266
|
}
|
|
9257
9267
|
__name(DialogFooter, "DialogFooter");
|
|
9268
|
+
var NOT_FOUND = "NOT_FOUND";
|
|
9269
|
+
function createSingletonCache(equals) {
|
|
9270
|
+
var entry;
|
|
9271
|
+
return {
|
|
9272
|
+
get: /* @__PURE__ */ __name(function get7(key) {
|
|
9273
|
+
if (entry && equals(entry.key, key)) {
|
|
9274
|
+
return entry.value;
|
|
9275
|
+
}
|
|
9276
|
+
return NOT_FOUND;
|
|
9277
|
+
}, "get"),
|
|
9278
|
+
put: /* @__PURE__ */ __name(function put(key, value) {
|
|
9279
|
+
entry = {
|
|
9280
|
+
key,
|
|
9281
|
+
value
|
|
9282
|
+
};
|
|
9283
|
+
}, "put"),
|
|
9284
|
+
getEntries: /* @__PURE__ */ __name(function getEntries() {
|
|
9285
|
+
return entry ? [entry] : [];
|
|
9286
|
+
}, "getEntries"),
|
|
9287
|
+
clear: /* @__PURE__ */ __name(function clear3() {
|
|
9288
|
+
entry = void 0;
|
|
9289
|
+
}, "clear")
|
|
9290
|
+
};
|
|
9291
|
+
}
|
|
9292
|
+
__name(createSingletonCache, "createSingletonCache");
|
|
9293
|
+
function createLruCache(maxSize, equals) {
|
|
9294
|
+
var entries2 = [];
|
|
9295
|
+
function get7(key) {
|
|
9296
|
+
var cacheIndex = entries2.findIndex(function(entry2) {
|
|
9297
|
+
return equals(key, entry2.key);
|
|
9298
|
+
});
|
|
9299
|
+
if (cacheIndex > -1) {
|
|
9300
|
+
var entry = entries2[cacheIndex];
|
|
9301
|
+
if (cacheIndex > 0) {
|
|
9302
|
+
entries2.splice(cacheIndex, 1);
|
|
9303
|
+
entries2.unshift(entry);
|
|
9304
|
+
}
|
|
9305
|
+
return entry.value;
|
|
9306
|
+
}
|
|
9307
|
+
return NOT_FOUND;
|
|
9308
|
+
}
|
|
9309
|
+
__name(get7, "get");
|
|
9310
|
+
function put(key, value) {
|
|
9311
|
+
if (get7(key) === NOT_FOUND) {
|
|
9312
|
+
entries2.unshift({
|
|
9313
|
+
key,
|
|
9314
|
+
value
|
|
9315
|
+
});
|
|
9316
|
+
if (entries2.length > maxSize) {
|
|
9317
|
+
entries2.pop();
|
|
9318
|
+
}
|
|
9319
|
+
}
|
|
9320
|
+
}
|
|
9321
|
+
__name(put, "put");
|
|
9322
|
+
function getEntries() {
|
|
9323
|
+
return entries2;
|
|
9324
|
+
}
|
|
9325
|
+
__name(getEntries, "getEntries");
|
|
9326
|
+
function clear3() {
|
|
9327
|
+
entries2 = [];
|
|
9328
|
+
}
|
|
9329
|
+
__name(clear3, "clear");
|
|
9330
|
+
return {
|
|
9331
|
+
get: get7,
|
|
9332
|
+
put,
|
|
9333
|
+
getEntries,
|
|
9334
|
+
clear: clear3
|
|
9335
|
+
};
|
|
9336
|
+
}
|
|
9337
|
+
__name(createLruCache, "createLruCache");
|
|
9338
|
+
var defaultEqualityCheck = /* @__PURE__ */ __name(function defaultEqualityCheck2(a2, b3) {
|
|
9339
|
+
return a2 === b3;
|
|
9340
|
+
}, "defaultEqualityCheck");
|
|
9341
|
+
function createCacheKeyComparator(equalityCheck) {
|
|
9342
|
+
return /* @__PURE__ */ __name(function areArgumentsShallowlyEqual(prev, next) {
|
|
9343
|
+
if (prev === null || next === null || prev.length !== next.length) {
|
|
9344
|
+
return false;
|
|
9345
|
+
}
|
|
9346
|
+
var length = prev.length;
|
|
9347
|
+
for (var i = 0; i < length; i++) {
|
|
9348
|
+
if (!equalityCheck(prev[i], next[i])) {
|
|
9349
|
+
return false;
|
|
9350
|
+
}
|
|
9351
|
+
}
|
|
9352
|
+
return true;
|
|
9353
|
+
}, "areArgumentsShallowlyEqual");
|
|
9354
|
+
}
|
|
9355
|
+
__name(createCacheKeyComparator, "createCacheKeyComparator");
|
|
9356
|
+
function defaultMemoize(func, equalityCheckOrOptions) {
|
|
9357
|
+
var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
|
|
9358
|
+
equalityCheck: equalityCheckOrOptions
|
|
9359
|
+
};
|
|
9360
|
+
var _providedOptions$equa = providedOptions.equalityCheck, equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa, _providedOptions$maxS = providedOptions.maxSize, maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS, resultEqualityCheck = providedOptions.resultEqualityCheck;
|
|
9361
|
+
var comparator = createCacheKeyComparator(equalityCheck);
|
|
9362
|
+
var cache2 = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
|
|
9363
|
+
function memoized() {
|
|
9364
|
+
var value = cache2.get(arguments);
|
|
9365
|
+
if (value === NOT_FOUND) {
|
|
9366
|
+
value = func.apply(null, arguments);
|
|
9367
|
+
if (resultEqualityCheck) {
|
|
9368
|
+
var entries2 = cache2.getEntries();
|
|
9369
|
+
var matchingEntry = entries2.find(function(entry) {
|
|
9370
|
+
return resultEqualityCheck(entry.value, value);
|
|
9371
|
+
});
|
|
9372
|
+
if (matchingEntry) {
|
|
9373
|
+
value = matchingEntry.value;
|
|
9374
|
+
}
|
|
9375
|
+
}
|
|
9376
|
+
cache2.put(arguments, value);
|
|
9377
|
+
}
|
|
9378
|
+
return value;
|
|
9379
|
+
}
|
|
9380
|
+
__name(memoized, "memoized");
|
|
9381
|
+
memoized.clearCache = function() {
|
|
9382
|
+
return cache2.clear();
|
|
9383
|
+
};
|
|
9384
|
+
return memoized;
|
|
9385
|
+
}
|
|
9386
|
+
__name(defaultMemoize, "defaultMemoize");
|
|
9387
|
+
function getDependencies(funcs) {
|
|
9388
|
+
var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
|
|
9389
|
+
if (!dependencies.every(function(dep) {
|
|
9390
|
+
return typeof dep === "function";
|
|
9391
|
+
})) {
|
|
9392
|
+
var dependencyTypes = dependencies.map(function(dep) {
|
|
9393
|
+
return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
|
|
9394
|
+
}).join(", ");
|
|
9395
|
+
throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
|
|
9396
|
+
}
|
|
9397
|
+
return dependencies;
|
|
9398
|
+
}
|
|
9399
|
+
__name(getDependencies, "getDependencies");
|
|
9400
|
+
function createSelectorCreator(memoize2) {
|
|
9401
|
+
for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
9402
|
+
memoizeOptionsFromArgs[_key - 1] = arguments[_key];
|
|
9403
|
+
}
|
|
9404
|
+
var createSelector2 = /* @__PURE__ */ __name(function createSelector3() {
|
|
9405
|
+
for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
9406
|
+
funcs[_key2] = arguments[_key2];
|
|
9407
|
+
}
|
|
9408
|
+
var _recomputations = 0;
|
|
9409
|
+
var _lastResult;
|
|
9410
|
+
var directlyPassedOptions = {
|
|
9411
|
+
memoizeOptions: void 0
|
|
9412
|
+
};
|
|
9413
|
+
var resultFunc = funcs.pop();
|
|
9414
|
+
if (typeof resultFunc === "object") {
|
|
9415
|
+
directlyPassedOptions = resultFunc;
|
|
9416
|
+
resultFunc = funcs.pop();
|
|
9417
|
+
}
|
|
9418
|
+
if (typeof resultFunc !== "function") {
|
|
9419
|
+
throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
|
|
9420
|
+
}
|
|
9421
|
+
var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
|
|
9422
|
+
var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];
|
|
9423
|
+
var dependencies = getDependencies(funcs);
|
|
9424
|
+
var memoizedResultFunc = memoize2.apply(void 0, [/* @__PURE__ */ __name(function recomputationWrapper() {
|
|
9425
|
+
_recomputations++;
|
|
9426
|
+
return resultFunc.apply(null, arguments);
|
|
9427
|
+
}, "recomputationWrapper")].concat(finalMemoizeOptions));
|
|
9428
|
+
var selector = memoize2(/* @__PURE__ */ __name(function dependenciesChecker() {
|
|
9429
|
+
var params = [];
|
|
9430
|
+
var length = dependencies.length;
|
|
9431
|
+
for (var i = 0; i < length; i++) {
|
|
9432
|
+
params.push(dependencies[i].apply(null, arguments));
|
|
9433
|
+
}
|
|
9434
|
+
_lastResult = memoizedResultFunc.apply(null, params);
|
|
9435
|
+
return _lastResult;
|
|
9436
|
+
}, "dependenciesChecker"));
|
|
9437
|
+
Object.assign(selector, {
|
|
9438
|
+
resultFunc,
|
|
9439
|
+
memoizedResultFunc,
|
|
9440
|
+
dependencies,
|
|
9441
|
+
lastResult: /* @__PURE__ */ __name(function lastResult() {
|
|
9442
|
+
return _lastResult;
|
|
9443
|
+
}, "lastResult"),
|
|
9444
|
+
recomputations: /* @__PURE__ */ __name(function recomputations() {
|
|
9445
|
+
return _recomputations;
|
|
9446
|
+
}, "recomputations"),
|
|
9447
|
+
resetRecomputations: /* @__PURE__ */ __name(function resetRecomputations() {
|
|
9448
|
+
return _recomputations = 0;
|
|
9449
|
+
}, "resetRecomputations")
|
|
9450
|
+
});
|
|
9451
|
+
return selector;
|
|
9452
|
+
}, "createSelector");
|
|
9453
|
+
return createSelector2;
|
|
9454
|
+
}
|
|
9455
|
+
__name(createSelectorCreator, "createSelectorCreator");
|
|
9456
|
+
var createSelector = /* @__PURE__ */ createSelectorCreator(defaultMemoize);
|
|
9258
9457
|
function useCombinedRefs() {
|
|
9259
9458
|
for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
9260
9459
|
refs[_key] = arguments[_key];
|
|
@@ -56651,21 +56850,27 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
|
|
|
56651
56850
|
}
|
|
56652
56851
|
return false;
|
|
56653
56852
|
});
|
|
56853
|
+
const dtFormParamsSelector = React.useMemo(
|
|
56854
|
+
() => createSelector(
|
|
56855
|
+
(state2) => reduxForm.formValueSelector(formName)(
|
|
56856
|
+
state2,
|
|
56857
|
+
"reduxFormCellValidation",
|
|
56858
|
+
"reduxFormEntities",
|
|
56859
|
+
"reduxFormQueryParams",
|
|
56860
|
+
"reduxFormSelectedEntityIdMap"
|
|
56861
|
+
),
|
|
56862
|
+
(result) => result
|
|
56863
|
+
// identity, but memoized
|
|
56864
|
+
),
|
|
56865
|
+
[formName]
|
|
56866
|
+
);
|
|
56654
56867
|
const {
|
|
56655
56868
|
reduxFormCellValidation: _reduxFormCellValidation,
|
|
56656
56869
|
reduxFormEditingCell,
|
|
56657
56870
|
reduxFormEntities,
|
|
56658
56871
|
reduxFormQueryParams: _reduxFormQueryParams = {},
|
|
56659
56872
|
reduxFormSelectedEntityIdMap: _reduxFormSelectedEntityIdMap = {}
|
|
56660
|
-
} = reactRedux.useSelector(
|
|
56661
|
-
return reduxForm.formValueSelector(formName)(
|
|
56662
|
-
state2,
|
|
56663
|
-
"reduxFormCellValidation",
|
|
56664
|
-
"reduxFormEntities",
|
|
56665
|
-
"reduxFormQueryParams",
|
|
56666
|
-
"reduxFormSelectedEntityIdMap"
|
|
56667
|
-
);
|
|
56668
|
-
}, "dtFormParamsSelector"));
|
|
56873
|
+
} = reactRedux.useSelector(dtFormParamsSelector);
|
|
56669
56874
|
const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
|
|
56670
56875
|
_reduxFormCellValidation
|
|
56671
56876
|
);
|
|
@@ -56972,11 +57177,9 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
|
|
|
56972
57177
|
newTableConfig = {
|
|
56973
57178
|
fieldOptions: []
|
|
56974
57179
|
};
|
|
56975
|
-
|
|
56976
|
-
|
|
56977
|
-
|
|
56978
|
-
return newTableConfig;
|
|
56979
|
-
}
|
|
57180
|
+
}
|
|
57181
|
+
if (isEqual$3(prev, newTableConfig)) {
|
|
57182
|
+
return prev;
|
|
56980
57183
|
} else {
|
|
56981
57184
|
return newTableConfig;
|
|
56982
57185
|
}
|
|
@@ -74973,14 +75176,16 @@ function filterSequenceString(sequenceString = "", {
|
|
|
74973
75176
|
name: name2,
|
|
74974
75177
|
isProtein: isProtein2,
|
|
74975
75178
|
isRna: isRna2,
|
|
74976
|
-
isMixedRnaAndDna
|
|
75179
|
+
isMixedRnaAndDna,
|
|
75180
|
+
getAcceptedInsertChars
|
|
74977
75181
|
} = {}) {
|
|
74978
|
-
const
|
|
75182
|
+
const sequenceTypeInfo = {
|
|
74979
75183
|
isOligo: isOligo2,
|
|
74980
75184
|
isProtein: isProtein2,
|
|
74981
75185
|
isRna: isRna2,
|
|
74982
75186
|
isMixedRnaAndDna
|
|
74983
|
-
}
|
|
75187
|
+
};
|
|
75188
|
+
const acceptedChars = isFunction$2(getAcceptedInsertChars) ? getAcceptedInsertChars(sequenceTypeInfo) : getAcceptedChars(sequenceTypeInfo);
|
|
74984
75189
|
const replaceChars = getReplaceChars({
|
|
74985
75190
|
isOligo: isOligo2,
|
|
74986
75191
|
isProtein: isProtein2,
|
|
@@ -75216,6 +75421,7 @@ function tidyUpSequenceData(pSeqData, options = {}) {
|
|
|
75216
75421
|
doNotProvideIdsForAnnotations,
|
|
75217
75422
|
noCdsTranslations,
|
|
75218
75423
|
convertAnnotationsFromAAIndices,
|
|
75424
|
+
getAcceptedInsertChars,
|
|
75219
75425
|
topLevelSeqData
|
|
75220
75426
|
} = options;
|
|
75221
75427
|
let seqData = cloneDeep(pSeqData);
|
|
@@ -75247,13 +75453,16 @@ function tidyUpSequenceData(pSeqData, options = {}) {
|
|
|
75247
75453
|
if (!doNotRemoveInvalidChars) {
|
|
75248
75454
|
if (seqData.isProtein) {
|
|
75249
75455
|
const [newSeq] = filterSequenceString(seqData.proteinSequence, __spreadProps(__spreadValues({}, topLevelSeqData || seqData), {
|
|
75250
|
-
isProtein: true
|
|
75456
|
+
isProtein: true,
|
|
75457
|
+
getAcceptedInsertChars
|
|
75251
75458
|
}));
|
|
75252
75459
|
seqData.proteinSequence = newSeq;
|
|
75253
75460
|
} else {
|
|
75254
|
-
const [newSeq] = filterSequenceString(seqData.sequence, __spreadValues({
|
|
75461
|
+
const [newSeq] = filterSequenceString(seqData.sequence, __spreadProps(__spreadValues({
|
|
75255
75462
|
additionalValidChars
|
|
75256
|
-
}, topLevelSeqData || seqData)
|
|
75463
|
+
}, topLevelSeqData || seqData), {
|
|
75464
|
+
getAcceptedInsertChars
|
|
75465
|
+
}));
|
|
75257
75466
|
seqData.sequence = newSeq;
|
|
75258
75467
|
}
|
|
75259
75468
|
}
|
|
@@ -97609,195 +97818,6 @@ function sequenceSelector(state2) {
|
|
|
97609
97818
|
return sequenceDataSelector(state2).sequence;
|
|
97610
97819
|
}
|
|
97611
97820
|
__name(sequenceSelector, "sequenceSelector");
|
|
97612
|
-
var NOT_FOUND = "NOT_FOUND";
|
|
97613
|
-
function createSingletonCache(equals) {
|
|
97614
|
-
var entry;
|
|
97615
|
-
return {
|
|
97616
|
-
get: /* @__PURE__ */ __name(function get7(key) {
|
|
97617
|
-
if (entry && equals(entry.key, key)) {
|
|
97618
|
-
return entry.value;
|
|
97619
|
-
}
|
|
97620
|
-
return NOT_FOUND;
|
|
97621
|
-
}, "get"),
|
|
97622
|
-
put: /* @__PURE__ */ __name(function put(key, value) {
|
|
97623
|
-
entry = {
|
|
97624
|
-
key,
|
|
97625
|
-
value
|
|
97626
|
-
};
|
|
97627
|
-
}, "put"),
|
|
97628
|
-
getEntries: /* @__PURE__ */ __name(function getEntries() {
|
|
97629
|
-
return entry ? [entry] : [];
|
|
97630
|
-
}, "getEntries"),
|
|
97631
|
-
clear: /* @__PURE__ */ __name(function clear3() {
|
|
97632
|
-
entry = void 0;
|
|
97633
|
-
}, "clear")
|
|
97634
|
-
};
|
|
97635
|
-
}
|
|
97636
|
-
__name(createSingletonCache, "createSingletonCache");
|
|
97637
|
-
function createLruCache(maxSize, equals) {
|
|
97638
|
-
var entries2 = [];
|
|
97639
|
-
function get7(key) {
|
|
97640
|
-
var cacheIndex = entries2.findIndex(function(entry2) {
|
|
97641
|
-
return equals(key, entry2.key);
|
|
97642
|
-
});
|
|
97643
|
-
if (cacheIndex > -1) {
|
|
97644
|
-
var entry = entries2[cacheIndex];
|
|
97645
|
-
if (cacheIndex > 0) {
|
|
97646
|
-
entries2.splice(cacheIndex, 1);
|
|
97647
|
-
entries2.unshift(entry);
|
|
97648
|
-
}
|
|
97649
|
-
return entry.value;
|
|
97650
|
-
}
|
|
97651
|
-
return NOT_FOUND;
|
|
97652
|
-
}
|
|
97653
|
-
__name(get7, "get");
|
|
97654
|
-
function put(key, value) {
|
|
97655
|
-
if (get7(key) === NOT_FOUND) {
|
|
97656
|
-
entries2.unshift({
|
|
97657
|
-
key,
|
|
97658
|
-
value
|
|
97659
|
-
});
|
|
97660
|
-
if (entries2.length > maxSize) {
|
|
97661
|
-
entries2.pop();
|
|
97662
|
-
}
|
|
97663
|
-
}
|
|
97664
|
-
}
|
|
97665
|
-
__name(put, "put");
|
|
97666
|
-
function getEntries() {
|
|
97667
|
-
return entries2;
|
|
97668
|
-
}
|
|
97669
|
-
__name(getEntries, "getEntries");
|
|
97670
|
-
function clear3() {
|
|
97671
|
-
entries2 = [];
|
|
97672
|
-
}
|
|
97673
|
-
__name(clear3, "clear");
|
|
97674
|
-
return {
|
|
97675
|
-
get: get7,
|
|
97676
|
-
put,
|
|
97677
|
-
getEntries,
|
|
97678
|
-
clear: clear3
|
|
97679
|
-
};
|
|
97680
|
-
}
|
|
97681
|
-
__name(createLruCache, "createLruCache");
|
|
97682
|
-
var defaultEqualityCheck = /* @__PURE__ */ __name(function defaultEqualityCheck2(a2, b3) {
|
|
97683
|
-
return a2 === b3;
|
|
97684
|
-
}, "defaultEqualityCheck");
|
|
97685
|
-
function createCacheKeyComparator(equalityCheck) {
|
|
97686
|
-
return /* @__PURE__ */ __name(function areArgumentsShallowlyEqual(prev, next) {
|
|
97687
|
-
if (prev === null || next === null || prev.length !== next.length) {
|
|
97688
|
-
return false;
|
|
97689
|
-
}
|
|
97690
|
-
var length = prev.length;
|
|
97691
|
-
for (var i = 0; i < length; i++) {
|
|
97692
|
-
if (!equalityCheck(prev[i], next[i])) {
|
|
97693
|
-
return false;
|
|
97694
|
-
}
|
|
97695
|
-
}
|
|
97696
|
-
return true;
|
|
97697
|
-
}, "areArgumentsShallowlyEqual");
|
|
97698
|
-
}
|
|
97699
|
-
__name(createCacheKeyComparator, "createCacheKeyComparator");
|
|
97700
|
-
function defaultMemoize(func, equalityCheckOrOptions) {
|
|
97701
|
-
var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
|
|
97702
|
-
equalityCheck: equalityCheckOrOptions
|
|
97703
|
-
};
|
|
97704
|
-
var _providedOptions$equa = providedOptions.equalityCheck, equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa, _providedOptions$maxS = providedOptions.maxSize, maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS, resultEqualityCheck = providedOptions.resultEqualityCheck;
|
|
97705
|
-
var comparator = createCacheKeyComparator(equalityCheck);
|
|
97706
|
-
var cache2 = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
|
|
97707
|
-
function memoized() {
|
|
97708
|
-
var value = cache2.get(arguments);
|
|
97709
|
-
if (value === NOT_FOUND) {
|
|
97710
|
-
value = func.apply(null, arguments);
|
|
97711
|
-
if (resultEqualityCheck) {
|
|
97712
|
-
var entries2 = cache2.getEntries();
|
|
97713
|
-
var matchingEntry = entries2.find(function(entry) {
|
|
97714
|
-
return resultEqualityCheck(entry.value, value);
|
|
97715
|
-
});
|
|
97716
|
-
if (matchingEntry) {
|
|
97717
|
-
value = matchingEntry.value;
|
|
97718
|
-
}
|
|
97719
|
-
}
|
|
97720
|
-
cache2.put(arguments, value);
|
|
97721
|
-
}
|
|
97722
|
-
return value;
|
|
97723
|
-
}
|
|
97724
|
-
__name(memoized, "memoized");
|
|
97725
|
-
memoized.clearCache = function() {
|
|
97726
|
-
return cache2.clear();
|
|
97727
|
-
};
|
|
97728
|
-
return memoized;
|
|
97729
|
-
}
|
|
97730
|
-
__name(defaultMemoize, "defaultMemoize");
|
|
97731
|
-
function getDependencies(funcs) {
|
|
97732
|
-
var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
|
|
97733
|
-
if (!dependencies.every(function(dep) {
|
|
97734
|
-
return typeof dep === "function";
|
|
97735
|
-
})) {
|
|
97736
|
-
var dependencyTypes = dependencies.map(function(dep) {
|
|
97737
|
-
return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
|
|
97738
|
-
}).join(", ");
|
|
97739
|
-
throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
|
|
97740
|
-
}
|
|
97741
|
-
return dependencies;
|
|
97742
|
-
}
|
|
97743
|
-
__name(getDependencies, "getDependencies");
|
|
97744
|
-
function createSelectorCreator(memoize2) {
|
|
97745
|
-
for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
97746
|
-
memoizeOptionsFromArgs[_key - 1] = arguments[_key];
|
|
97747
|
-
}
|
|
97748
|
-
var createSelector2 = /* @__PURE__ */ __name(function createSelector3() {
|
|
97749
|
-
for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
97750
|
-
funcs[_key2] = arguments[_key2];
|
|
97751
|
-
}
|
|
97752
|
-
var _recomputations = 0;
|
|
97753
|
-
var _lastResult;
|
|
97754
|
-
var directlyPassedOptions = {
|
|
97755
|
-
memoizeOptions: void 0
|
|
97756
|
-
};
|
|
97757
|
-
var resultFunc = funcs.pop();
|
|
97758
|
-
if (typeof resultFunc === "object") {
|
|
97759
|
-
directlyPassedOptions = resultFunc;
|
|
97760
|
-
resultFunc = funcs.pop();
|
|
97761
|
-
}
|
|
97762
|
-
if (typeof resultFunc !== "function") {
|
|
97763
|
-
throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
|
|
97764
|
-
}
|
|
97765
|
-
var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
|
|
97766
|
-
var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];
|
|
97767
|
-
var dependencies = getDependencies(funcs);
|
|
97768
|
-
var memoizedResultFunc = memoize2.apply(void 0, [/* @__PURE__ */ __name(function recomputationWrapper() {
|
|
97769
|
-
_recomputations++;
|
|
97770
|
-
return resultFunc.apply(null, arguments);
|
|
97771
|
-
}, "recomputationWrapper")].concat(finalMemoizeOptions));
|
|
97772
|
-
var selector = memoize2(/* @__PURE__ */ __name(function dependenciesChecker() {
|
|
97773
|
-
var params = [];
|
|
97774
|
-
var length = dependencies.length;
|
|
97775
|
-
for (var i = 0; i < length; i++) {
|
|
97776
|
-
params.push(dependencies[i].apply(null, arguments));
|
|
97777
|
-
}
|
|
97778
|
-
_lastResult = memoizedResultFunc.apply(null, params);
|
|
97779
|
-
return _lastResult;
|
|
97780
|
-
}, "dependenciesChecker"));
|
|
97781
|
-
Object.assign(selector, {
|
|
97782
|
-
resultFunc,
|
|
97783
|
-
memoizedResultFunc,
|
|
97784
|
-
dependencies,
|
|
97785
|
-
lastResult: /* @__PURE__ */ __name(function lastResult() {
|
|
97786
|
-
return _lastResult;
|
|
97787
|
-
}, "lastResult"),
|
|
97788
|
-
recomputations: /* @__PURE__ */ __name(function recomputations() {
|
|
97789
|
-
return _recomputations;
|
|
97790
|
-
}, "recomputations"),
|
|
97791
|
-
resetRecomputations: /* @__PURE__ */ __name(function resetRecomputations() {
|
|
97792
|
-
return _recomputations = 0;
|
|
97793
|
-
}, "resetRecomputations")
|
|
97794
|
-
});
|
|
97795
|
-
return selector;
|
|
97796
|
-
}, "createSelector");
|
|
97797
|
-
return createSelector2;
|
|
97798
|
-
}
|
|
97799
|
-
__name(createSelectorCreator, "createSelectorCreator");
|
|
97800
|
-
var createSelector = /* @__PURE__ */ createSelectorCreator(defaultMemoize);
|
|
97801
97821
|
const restrictionEnzymesSelector = createSelector(
|
|
97802
97822
|
() => defaultEnzymesByName,
|
|
97803
97823
|
(state2, additionalEnzymes) => {
|
|
@@ -97823,7 +97843,34 @@ const restrictionEnzymesSelector = createSelector(
|
|
|
97823
97843
|
const cutsiteLabelColorSelector = createSelector(sequenceDataSelector, function(sequenceData2) {
|
|
97824
97844
|
return sequenceData2.cutsiteLabelColors;
|
|
97825
97845
|
});
|
|
97826
|
-
|
|
97846
|
+
const cutsitesCache = [];
|
|
97847
|
+
function getCachedResult(argsObj) {
|
|
97848
|
+
const idx = cutsitesCache.findIndex(
|
|
97849
|
+
(entry) => entry && isEqual$3(entry.args, argsObj)
|
|
97850
|
+
);
|
|
97851
|
+
if (idx === -1) return;
|
|
97852
|
+
const hit = cutsitesCache[idx];
|
|
97853
|
+
return hit.result;
|
|
97854
|
+
}
|
|
97855
|
+
__name(getCachedResult, "getCachedResult");
|
|
97856
|
+
function setCachedResult(argsObj, result, cacheSize = 1) {
|
|
97857
|
+
cutsitesCache.push({
|
|
97858
|
+
args: argsObj,
|
|
97859
|
+
result
|
|
97860
|
+
});
|
|
97861
|
+
if (cutsitesCache.length > cacheSize) cutsitesCache.shift();
|
|
97862
|
+
}
|
|
97863
|
+
__name(setCachedResult, "setCachedResult");
|
|
97864
|
+
function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors, editorSize = 1) {
|
|
97865
|
+
const cachedResult = getCachedResult({
|
|
97866
|
+
sequence: sequence2,
|
|
97867
|
+
circular: circular2,
|
|
97868
|
+
enzymeList,
|
|
97869
|
+
cutsiteLabelColors
|
|
97870
|
+
});
|
|
97871
|
+
if (cachedResult) {
|
|
97872
|
+
return cachedResult;
|
|
97873
|
+
}
|
|
97827
97874
|
const cutsitesByName = getLowerCaseObj(
|
|
97828
97875
|
getCutsitesFromSequence(sequence2, circular2, map$3(enzymeList))
|
|
97829
97876
|
);
|
|
@@ -97856,11 +97903,22 @@ function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors)
|
|
|
97856
97903
|
const cutsitesArray = flatMap(cutsitesByName, function(cutsitesForEnzyme) {
|
|
97857
97904
|
return cutsitesForEnzyme;
|
|
97858
97905
|
});
|
|
97859
|
-
|
|
97906
|
+
const result = {
|
|
97860
97907
|
cutsitesByName,
|
|
97861
97908
|
cutsitesById,
|
|
97862
97909
|
cutsitesArray
|
|
97863
97910
|
};
|
|
97911
|
+
setCachedResult(
|
|
97912
|
+
{
|
|
97913
|
+
sequence: sequence2,
|
|
97914
|
+
circular: circular2,
|
|
97915
|
+
enzymeList,
|
|
97916
|
+
cutsiteLabelColors
|
|
97917
|
+
},
|
|
97918
|
+
result,
|
|
97919
|
+
editorSize
|
|
97920
|
+
);
|
|
97921
|
+
return result;
|
|
97864
97922
|
}
|
|
97865
97923
|
__name(cutsitesSelector, "cutsitesSelector");
|
|
97866
97924
|
const cutsitesSelector$1 = createSelector(
|
|
@@ -97868,6 +97926,7 @@ const cutsitesSelector$1 = createSelector(
|
|
|
97868
97926
|
circularSelector,
|
|
97869
97927
|
restrictionEnzymesSelector,
|
|
97870
97928
|
cutsiteLabelColorSelector,
|
|
97929
|
+
(editorState) => editorState.editorSize,
|
|
97871
97930
|
cutsitesSelector
|
|
97872
97931
|
);
|
|
97873
97932
|
function divideBy3(num, shouldDivideBy3) {
|
|
@@ -99283,11 +99342,12 @@ function showDialog({
|
|
|
99283
99342
|
props,
|
|
99284
99343
|
overrideName
|
|
99285
99344
|
}) {
|
|
99286
|
-
var _a2;
|
|
99345
|
+
var _a2, _b2, _c, _d;
|
|
99287
99346
|
dialogHolder.dialogType = dialogType;
|
|
99288
99347
|
if (!dialogHolder.dialogType && ModalComponent) {
|
|
99289
99348
|
dialogHolder.dialogType = "TGCustomModal";
|
|
99290
99349
|
}
|
|
99350
|
+
dialogHolder.editorName = props == null ? void 0 : props.editorName;
|
|
99291
99351
|
if (document.activeElement && document.activeElement.closest(".veEditor")) {
|
|
99292
99352
|
let editorName;
|
|
99293
99353
|
(_a2 = document.activeElement.closest(".veEditor")) == null ? void 0 : _a2.className.split(" ").forEach((c2) => {
|
|
@@ -99301,16 +99361,28 @@ function showDialog({
|
|
|
99301
99361
|
dialogHolder.CustomModalComponent = ModalComponent;
|
|
99302
99362
|
dialogHolder.props = props;
|
|
99303
99363
|
dialogHolder.overrideName = overrideName;
|
|
99304
|
-
dialogHolder.
|
|
99364
|
+
if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
|
|
99365
|
+
(_c = (_b2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _b2.setUniqKeyToForceRerender) == null ? void 0 : _c.call(
|
|
99366
|
+
_b2,
|
|
99367
|
+
uuid()
|
|
99368
|
+
);
|
|
99369
|
+
} else {
|
|
99370
|
+
(_d = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _d.call(dialogHolder, uuid());
|
|
99371
|
+
}
|
|
99305
99372
|
}
|
|
99306
99373
|
__name(showDialog, "showDialog");
|
|
99307
99374
|
function hideDialog() {
|
|
99375
|
+
var _a2, _b2, _c;
|
|
99308
99376
|
delete dialogHolder.dialogType;
|
|
99309
99377
|
delete dialogHolder.CustomModalComponent;
|
|
99310
99378
|
delete dialogHolder.props;
|
|
99311
99379
|
delete dialogHolder.overrideName;
|
|
99380
|
+
if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
|
|
99381
|
+
(_b2 = (_a2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _a2.setUniqKeyToForceRerender) == null ? void 0 : _b2.call(_a2);
|
|
99382
|
+
} else {
|
|
99383
|
+
(_c = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _c.call(dialogHolder);
|
|
99384
|
+
}
|
|
99312
99385
|
delete dialogHolder.editorName;
|
|
99313
|
-
dialogHolder.setUniqKeyToForceRerender();
|
|
99314
99386
|
}
|
|
99315
99387
|
__name(hideDialog, "hideDialog");
|
|
99316
99388
|
const typeToDialogType = {
|
|
@@ -99585,7 +99657,8 @@ const handleSave = /* @__PURE__ */ __name((props) => (..._0) => __async(exports,
|
|
|
99585
99657
|
readOnly: readOnly2,
|
|
99586
99658
|
alwaysAllowSave,
|
|
99587
99659
|
sequenceData: sequenceData2,
|
|
99588
|
-
lastSavedIdUpdate: lastSavedIdUpdate2
|
|
99660
|
+
lastSavedIdUpdate: lastSavedIdUpdate2,
|
|
99661
|
+
getAcceptedInsertChars
|
|
99589
99662
|
} = props;
|
|
99590
99663
|
const saveHandler = opts2.isSaveAs ? onSaveAs || onSave : onSave;
|
|
99591
99664
|
const updateLastSavedIdToCurrent = /* @__PURE__ */ __name(() => {
|
|
@@ -99598,7 +99671,8 @@ const handleSave = /* @__PURE__ */ __name((props) => (..._0) => __async(exports,
|
|
|
99598
99671
|
opts2,
|
|
99599
99672
|
tidyUpSequenceData(sequenceData2, {
|
|
99600
99673
|
doNotRemoveInvalidChars: true,
|
|
99601
|
-
annotationsAsObjects: true
|
|
99674
|
+
annotationsAsObjects: true,
|
|
99675
|
+
getAcceptedInsertChars
|
|
99602
99676
|
}),
|
|
99603
99677
|
props,
|
|
99604
99678
|
updateLastSavedIdToCurrent
|
|
@@ -99780,8 +99854,8 @@ const withEditorProps = compose(
|
|
|
99780
99854
|
caretPositionOrRange,
|
|
99781
99855
|
options
|
|
99782
99856
|
} = props.beforeSequenceInsertOrDelete ? (yield props.beforeSequenceInsertOrDelete(
|
|
99783
|
-
tidyUpSequenceData(_sequenceDataToInsert),
|
|
99784
|
-
tidyUpSequenceData(_existingSequenceData),
|
|
99857
|
+
tidyUpSequenceData(_sequenceDataToInsert, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
|
|
99858
|
+
tidyUpSequenceData(_existingSequenceData, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
|
|
99785
99859
|
_caretPositionOrRange,
|
|
99786
99860
|
_options
|
|
99787
99861
|
)) || {} : {};
|
|
@@ -99944,7 +100018,11 @@ const getEditorState = createSelector(
|
|
|
99944
100018
|
(state2) => state2.VectorEditor,
|
|
99945
100019
|
(state2, editorName) => editorName,
|
|
99946
100020
|
(VectorEditor, editorName) => {
|
|
99947
|
-
|
|
100021
|
+
const editorState = VectorEditor[editorName];
|
|
100022
|
+
editorState && (editorState.editorSize = Object.values(VectorEditor).filter(
|
|
100023
|
+
(editorItem) => editorItem == null ? void 0 : editorItem.sequenceData
|
|
100024
|
+
).length);
|
|
100025
|
+
return editorState;
|
|
99948
100026
|
}
|
|
99949
100027
|
);
|
|
99950
100028
|
function mapStateToProps(state2, ownProps) {
|
|
@@ -99981,6 +100059,9 @@ function mapStateToProps(state2, ownProps) {
|
|
|
99981
100059
|
annotationTypePlural,
|
|
99982
100060
|
sequenceLength
|
|
99983
100061
|
);
|
|
100062
|
+
if (dialogHolder.editorName) {
|
|
100063
|
+
annotationToAdd = dialogHolder.editorName === editorName ? annotationToAdd : void 0;
|
|
100064
|
+
}
|
|
99984
100065
|
}
|
|
99985
100066
|
});
|
|
99986
100067
|
const toReturn = __spreadProps(__spreadValues({}, editorState), {
|
|
@@ -100208,13 +100289,15 @@ function getShowGCContent(state2, ownProps) {
|
|
|
100208
100289
|
return toRet;
|
|
100209
100290
|
}
|
|
100210
100291
|
__name(getShowGCContent, "getShowGCContent");
|
|
100211
|
-
function jsonToJson(incomingJson) {
|
|
100292
|
+
function jsonToJson(incomingJson, options) {
|
|
100293
|
+
const { getAcceptedInsertChars } = options || {};
|
|
100212
100294
|
return JSON.stringify(
|
|
100213
100295
|
omit$1(
|
|
100214
100296
|
cleanUpTeselagenJsonForExport(
|
|
100215
100297
|
tidyUpSequenceData(incomingJson, {
|
|
100216
100298
|
doNotRemoveInvalidChars: true,
|
|
100217
|
-
annotationsAsObjects: false
|
|
100299
|
+
annotationsAsObjects: false,
|
|
100300
|
+
getAcceptedInsertChars
|
|
100218
100301
|
})
|
|
100219
100302
|
),
|
|
100220
100303
|
[
|
|
@@ -110114,7 +110197,8 @@ function getAnnotationNameAndStartStopString({
|
|
|
110114
110197
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
110115
110198
|
click → top cut position
|
|
110116
110199
|
alt/option+click → bottom cut position
|
|
110117
|
-
cmd/ctrl+click → recognition range
|
|
110200
|
+
cmd/ctrl+click → recognition range
|
|
110201
|
+
double click → show info` : `
|
|
110118
110202
|
|
|
110119
110203
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
110120
110204
|
INTERACTIONS:
|
|
@@ -110900,9 +110984,19 @@ const _AnnotationPositioner = class _AnnotationPositioner extends React.PureComp
|
|
|
110900
110984
|
};
|
|
110901
110985
|
__name(_AnnotationPositioner, "AnnotationPositioner");
|
|
110902
110986
|
let AnnotationPositioner = _AnnotationPositioner;
|
|
110987
|
+
let measureCanvas;
|
|
110988
|
+
function getAnnotationTextWidth(text2, fontSize = ANNOTATION_LABEL_FONT_WIDTH, fontFamily = "monospace") {
|
|
110989
|
+
if (!measureCanvas) {
|
|
110990
|
+
measureCanvas = document.createElement("canvas");
|
|
110991
|
+
}
|
|
110992
|
+
const ctx = measureCanvas.getContext("2d");
|
|
110993
|
+
ctx.font = `${fontSize}px ${fontFamily}`;
|
|
110994
|
+
return ctx.measureText(text2).width;
|
|
110995
|
+
}
|
|
110996
|
+
__name(getAnnotationTextWidth, "getAnnotationTextWidth");
|
|
110903
110997
|
const doesLabelFitInAnnotation = /* @__PURE__ */ __name((text2 = "", { range: range2, width }, charWidth2) => {
|
|
110904
|
-
const textLength = text2
|
|
110905
|
-
const widthMinusOne =
|
|
110998
|
+
const textLength = getAnnotationTextWidth(text2);
|
|
110999
|
+
const widthMinusOne = range2 ? getWidth(range2, charWidth2, 0) - ANNOTATION_LABEL_FONT_WIDTH * 2 : width - ANNOTATION_LABEL_FONT_WIDTH * 2;
|
|
110906
111000
|
return widthMinusOne > textLength;
|
|
110907
111001
|
}, "doesLabelFitInAnnotation");
|
|
110908
111002
|
function getAnnotationClassnames({ overlapsSelf }, { viewName, type: type2 }) {
|
|
@@ -110912,6 +111006,78 @@ function getAnnotationClassnames({ overlapsSelf }, { viewName, type: type2 }) {
|
|
|
110912
111006
|
});
|
|
110913
111007
|
}
|
|
110914
111008
|
__name(getAnnotationClassnames, "getAnnotationClassnames");
|
|
111009
|
+
function getAnnotationTextOffset({
|
|
111010
|
+
width,
|
|
111011
|
+
nameToDisplay,
|
|
111012
|
+
hasAPoint,
|
|
111013
|
+
pointiness,
|
|
111014
|
+
forward
|
|
111015
|
+
}) {
|
|
111016
|
+
return width / 2 - getAnnotationTextWidth(nameToDisplay) / 2 - (hasAPoint ? (pointiness / 2 + ANNOTATION_LABEL_FONT_WIDTH / 2) * (forward ? 1 : -1) : 0);
|
|
111017
|
+
}
|
|
111018
|
+
__name(getAnnotationTextOffset, "getAnnotationTextOffset");
|
|
111019
|
+
function getAnnotationNameInfo({
|
|
111020
|
+
name: name2,
|
|
111021
|
+
width,
|
|
111022
|
+
hasAPoint,
|
|
111023
|
+
pointiness,
|
|
111024
|
+
forward,
|
|
111025
|
+
charWidth: charWidth2,
|
|
111026
|
+
truncateLabelsThatDoNotFit,
|
|
111027
|
+
onlyShowLabelsThatDoNotFit,
|
|
111028
|
+
annotation
|
|
111029
|
+
}) {
|
|
111030
|
+
let nameToDisplay = name2;
|
|
111031
|
+
let textOffset = getAnnotationTextOffset({
|
|
111032
|
+
width,
|
|
111033
|
+
nameToDisplay,
|
|
111034
|
+
hasAPoint,
|
|
111035
|
+
pointiness,
|
|
111036
|
+
forward
|
|
111037
|
+
});
|
|
111038
|
+
const widthAvailableForText = width - ANNOTATION_LABEL_FONT_WIDTH * 2;
|
|
111039
|
+
if (!doesLabelFitInAnnotation(name2, { width }, charWidth2) || !onlyShowLabelsThatDoNotFit && ["parts", "features"].includes(annotation.annotationTypePlural)) {
|
|
111040
|
+
if (truncateLabelsThatDoNotFit) {
|
|
111041
|
+
let left2 = 0;
|
|
111042
|
+
let right2 = name2.length;
|
|
111043
|
+
let bestFit = "";
|
|
111044
|
+
while (left2 <= right2) {
|
|
111045
|
+
const mid = Math.floor((left2 + right2) / 2);
|
|
111046
|
+
const candidate = name2.slice(0, mid);
|
|
111047
|
+
const candidateWidth = getAnnotationTextWidth(candidate);
|
|
111048
|
+
if (candidateWidth <= widthAvailableForText) {
|
|
111049
|
+
if (candidate.length > bestFit.length) {
|
|
111050
|
+
bestFit = candidate;
|
|
111051
|
+
}
|
|
111052
|
+
left2 = mid + 1;
|
|
111053
|
+
} else {
|
|
111054
|
+
right2 = mid - 1;
|
|
111055
|
+
}
|
|
111056
|
+
}
|
|
111057
|
+
if (bestFit.length < name2.length) {
|
|
111058
|
+
bestFit = bestFit.slice(0, -2) + "..";
|
|
111059
|
+
}
|
|
111060
|
+
nameToDisplay = bestFit;
|
|
111061
|
+
if (nameToDisplay.length <= 3) {
|
|
111062
|
+
textOffset = 0;
|
|
111063
|
+
nameToDisplay = "";
|
|
111064
|
+
} else {
|
|
111065
|
+
textOffset = getAnnotationTextOffset({
|
|
111066
|
+
width,
|
|
111067
|
+
nameToDisplay,
|
|
111068
|
+
hasAPoint,
|
|
111069
|
+
pointiness,
|
|
111070
|
+
forward
|
|
111071
|
+
});
|
|
111072
|
+
}
|
|
111073
|
+
} else {
|
|
111074
|
+
textOffset = 0;
|
|
111075
|
+
nameToDisplay = "";
|
|
111076
|
+
}
|
|
111077
|
+
}
|
|
111078
|
+
return { textOffset, nameToDisplay };
|
|
111079
|
+
}
|
|
111080
|
+
__name(getAnnotationNameInfo, "getAnnotationNameInfo");
|
|
110915
111081
|
function PointedAnnotation(props) {
|
|
110916
111082
|
const {
|
|
110917
111083
|
className,
|
|
@@ -111047,27 +111213,17 @@ function PointedAnnotation(props) {
|
|
|
111047
111213
|
Q ${pointiness},${height / 2} ${0},${0}
|
|
111048
111214
|
z`;
|
|
111049
111215
|
}
|
|
111050
|
-
|
|
111051
|
-
|
|
111052
|
-
|
|
111053
|
-
|
|
111054
|
-
|
|
111055
|
-
|
|
111056
|
-
|
|
111057
|
-
|
|
111058
|
-
|
|
111059
|
-
|
|
111060
|
-
|
|
111061
|
-
textOffset = width / 2 - nameToDisplay.length * 5 / 2 - (hasAPoint ? pointiness / 2 * (forward ? 1 : -1) : 0);
|
|
111062
|
-
} else {
|
|
111063
|
-
textOffset = 0;
|
|
111064
|
-
nameToDisplay = "";
|
|
111065
|
-
}
|
|
111066
|
-
} else {
|
|
111067
|
-
textOffset = 0;
|
|
111068
|
-
nameToDisplay = "";
|
|
111069
|
-
}
|
|
111070
|
-
}
|
|
111216
|
+
const { textOffset, nameToDisplay } = getAnnotationNameInfo({
|
|
111217
|
+
name: name2,
|
|
111218
|
+
width,
|
|
111219
|
+
hasAPoint,
|
|
111220
|
+
pointiness,
|
|
111221
|
+
forward,
|
|
111222
|
+
charWidth: charWidth2,
|
|
111223
|
+
truncateLabelsThatDoNotFit,
|
|
111224
|
+
onlyShowLabelsThatDoNotFit,
|
|
111225
|
+
annotation
|
|
111226
|
+
});
|
|
111071
111227
|
let _textColor = textColor;
|
|
111072
111228
|
if (!textColor) {
|
|
111073
111229
|
try {
|
|
@@ -116986,7 +117142,7 @@ function showFileDialog({ multiple = false, onSelect }) {
|
|
|
116986
117142
|
input.click();
|
|
116987
117143
|
}
|
|
116988
117144
|
__name(showFileDialog, "showFileDialog");
|
|
116989
|
-
const version = "0.8.
|
|
117145
|
+
const version = "0.8.31";
|
|
116990
117146
|
const packageJson = {
|
|
116991
117147
|
version
|
|
116992
117148
|
};
|
|
@@ -117904,7 +118060,7 @@ const fileCommandDefs = __spreadValues(__spreadProps(__spreadValues({
|
|
|
117904
118060
|
},
|
|
117905
118061
|
exportSequenceAsTeselagenJson: {
|
|
117906
118062
|
name: "Download Teselagen JSON File",
|
|
117907
|
-
handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson"), "handler")
|
|
118063
|
+
handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson", { getAcceptedInsertChars: props.getAcceptedInsertChars }), "handler")
|
|
117908
118064
|
},
|
|
117909
118065
|
viewProperties: {
|
|
117910
118066
|
handler: /* @__PURE__ */ __name((props) => props.propertiesViewOpen(), "handler")
|
|
@@ -120715,6 +120871,7 @@ const _SequenceInputNoHotkeys = class _SequenceInputNoHotkeys extends React.Comp
|
|
|
120715
120871
|
caretPosition: caretPosition2,
|
|
120716
120872
|
sequenceData: sequenceData2,
|
|
120717
120873
|
maxInsertSize,
|
|
120874
|
+
getAcceptedInsertChars,
|
|
120718
120875
|
showAminoAcidUnitAsCodon
|
|
120719
120876
|
} = this.props;
|
|
120720
120877
|
const { charsToInsert, hasTempError } = this.state;
|
|
@@ -120750,7 +120907,8 @@ const _SequenceInputNoHotkeys = class _SequenceInputNoHotkeys extends React.Comp
|
|
|
120750
120907
|
const [sanitizedVal, warnings] = filterSequenceString(
|
|
120751
120908
|
e.target.value,
|
|
120752
120909
|
__spreadProps(__spreadValues({}, sequenceData2), {
|
|
120753
|
-
name: void 0
|
|
120910
|
+
name: void 0,
|
|
120911
|
+
getAcceptedInsertChars
|
|
120754
120912
|
})
|
|
120755
120913
|
);
|
|
120756
120914
|
if (warnings.length) {
|
|
@@ -121629,7 +121787,8 @@ function VectorInteractionHOC(Component) {
|
|
|
121629
121787
|
onPaste,
|
|
121630
121788
|
disableBpEditing,
|
|
121631
121789
|
sequenceData: sequenceData2,
|
|
121632
|
-
maxInsertSize
|
|
121790
|
+
maxInsertSize,
|
|
121791
|
+
getAcceptedInsertChars
|
|
121633
121792
|
} = this.props;
|
|
121634
121793
|
if (disableBpEditing) {
|
|
121635
121794
|
return this.createDisableBpEditingMsg();
|
|
@@ -121668,7 +121827,8 @@ function VectorInteractionHOC(Component) {
|
|
|
121668
121827
|
topLevelSeqData: sequenceData2,
|
|
121669
121828
|
provideNewIdsForAnnotations: true,
|
|
121670
121829
|
annotationsAsObjects: true,
|
|
121671
|
-
noCdsTranslations: true
|
|
121830
|
+
noCdsTranslations: true,
|
|
121831
|
+
getAcceptedInsertChars
|
|
121672
121832
|
});
|
|
121673
121833
|
if (!seqDataToInsert.sequence.length)
|
|
121674
121834
|
return window.toastr.warning("Sorry no valid base pairs to paste");
|
|
@@ -121688,7 +121848,8 @@ function VectorInteractionHOC(Component) {
|
|
|
121688
121848
|
selectionLayer: selectionLayer2,
|
|
121689
121849
|
copyOptions: copyOptions2,
|
|
121690
121850
|
disableBpEditing,
|
|
121691
|
-
readOnly: readOnly2
|
|
121851
|
+
readOnly: readOnly2,
|
|
121852
|
+
getAcceptedInsertChars
|
|
121692
121853
|
} = this.props;
|
|
121693
121854
|
const onCut = this.props.onCut || this.props.onCopy || noop$8;
|
|
121694
121855
|
const seqData = tidyUpSequenceData(
|
|
@@ -121712,7 +121873,8 @@ function VectorInteractionHOC(Component) {
|
|
|
121712
121873
|
{
|
|
121713
121874
|
doNotRemoveInvalidChars: true,
|
|
121714
121875
|
annotationsAsObjects: true,
|
|
121715
|
-
includeProteinSequence: true
|
|
121876
|
+
includeProteinSequence: true,
|
|
121877
|
+
getAcceptedInsertChars
|
|
121716
121878
|
}
|
|
121717
121879
|
);
|
|
121718
121880
|
if (!(this.sequenceDataToCopy || {}).textToCopy && !seqData.sequence.length)
|
|
@@ -121730,7 +121892,8 @@ function VectorInteractionHOC(Component) {
|
|
|
121730
121892
|
e,
|
|
121731
121893
|
tidyUpSequenceData(seqData, {
|
|
121732
121894
|
doNotRemoveInvalidChars: true,
|
|
121733
|
-
annotationsAsObjects: true
|
|
121895
|
+
annotationsAsObjects: true,
|
|
121896
|
+
getAcceptedInsertChars
|
|
121734
121897
|
}),
|
|
121735
121898
|
this.props
|
|
121736
121899
|
);
|
|
@@ -121780,6 +121943,7 @@ function VectorInteractionHOC(Component) {
|
|
|
121780
121943
|
readOnly: readOnly2,
|
|
121781
121944
|
disableBpEditing,
|
|
121782
121945
|
maxInsertSize,
|
|
121946
|
+
getAcceptedInsertChars,
|
|
121783
121947
|
showAminoAcidUnitAsCodon
|
|
121784
121948
|
} = this.props;
|
|
121785
121949
|
const sequenceLength = sequenceData2.sequence.length;
|
|
@@ -121799,6 +121963,7 @@ function VectorInteractionHOC(Component) {
|
|
|
121799
121963
|
sequenceLength,
|
|
121800
121964
|
caretPosition: caretPosition2,
|
|
121801
121965
|
maxInsertSize,
|
|
121966
|
+
getAcceptedInsertChars,
|
|
121802
121967
|
showAminoAcidUnitAsCodon,
|
|
121803
121968
|
handleInsert: /* @__PURE__ */ __name((seqDataToInsert) => __async(this, null, function* () {
|
|
121804
121969
|
yield insertAndSelectHelper({
|
|
@@ -127491,6 +127656,30 @@ const sizeSchema = /* @__PURE__ */ __name((isProtein2) => ({
|
|
|
127491
127656
|
}) : /* @__PURE__ */ React.createElement("span", null, "(", base1Range.start, "-", base1Range.end, ")")));
|
|
127492
127657
|
}, "render")
|
|
127493
127658
|
}), "sizeSchema");
|
|
127659
|
+
const getMemoOrfs = /* @__PURE__ */ (() => {
|
|
127660
|
+
let lastDeps;
|
|
127661
|
+
let lastResult;
|
|
127662
|
+
return (editorState) => {
|
|
127663
|
+
const {
|
|
127664
|
+
sequenceData: sequenceData2,
|
|
127665
|
+
minimumOrfSize: minimumOrfSize2,
|
|
127666
|
+
useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
|
|
127667
|
+
} = editorState;
|
|
127668
|
+
const { sequence: sequence2, circular: circular2 } = sequenceData2;
|
|
127669
|
+
const deps = {
|
|
127670
|
+
sequence: sequence2,
|
|
127671
|
+
circular: circular2,
|
|
127672
|
+
minimumOrfSize: minimumOrfSize2,
|
|
127673
|
+
useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
|
|
127674
|
+
};
|
|
127675
|
+
if (lastResult && isEqual$3(deps, lastDeps)) {
|
|
127676
|
+
return lastResult;
|
|
127677
|
+
}
|
|
127678
|
+
lastResult = selectors.orfsSelector(editorState);
|
|
127679
|
+
lastDeps = deps;
|
|
127680
|
+
return lastResult;
|
|
127681
|
+
};
|
|
127682
|
+
})();
|
|
127494
127683
|
var lodash$1 = { exports: {} };
|
|
127495
127684
|
/**
|
|
127496
127685
|
* @license
|
|
@@ -138046,10 +138235,16 @@ function GlobalDialog(props) {
|
|
|
138046
138235
|
hideDialog();
|
|
138047
138236
|
};
|
|
138048
138237
|
}, []);
|
|
138238
|
+
React.useEffect(() => {
|
|
138239
|
+
dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
|
|
138240
|
+
if (editorName) {
|
|
138241
|
+
const slot = dialogHolder[editorName] = dialogHolder[editorName] || {};
|
|
138242
|
+
slot.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
|
|
138243
|
+
}
|
|
138244
|
+
}, [editorName]);
|
|
138049
138245
|
if (dialogHolder.editorName && editorName && dialogHolder.editorName !== editorName) {
|
|
138050
138246
|
return null;
|
|
138051
138247
|
}
|
|
138052
|
-
dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
|
|
138053
138248
|
const Comp = dialogHolder.CustomModalComponent || dialogOverrides[dialogHolder.overrideName] || Dialogs[dialogHolder.dialogType];
|
|
138054
138249
|
if (!Comp) return null;
|
|
138055
138250
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -142813,6 +143008,8 @@ const userDefinedHandlersAndOpts = [
|
|
|
142813
143008
|
"enzymeManageOverride",
|
|
142814
143009
|
"enzymeGroupsOverride",
|
|
142815
143010
|
"additionalEnzymes",
|
|
143011
|
+
"getAcceptedInsertChars",
|
|
143012
|
+
"maxInsertSize",
|
|
142816
143013
|
"onDelete",
|
|
142817
143014
|
"onCopy",
|
|
142818
143015
|
"autoAnnotateFeatures",
|
|
@@ -144586,7 +144783,7 @@ const OrfProperties$1 = compose(
|
|
|
144586
144783
|
readOnly: readOnly2,
|
|
144587
144784
|
annotationVisibility: annotationVisibility2,
|
|
144588
144785
|
useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2,
|
|
144589
|
-
orfs:
|
|
144786
|
+
orfs: getMemoOrfs(editorState),
|
|
144590
144787
|
sequenceLength: sequence2.length,
|
|
144591
144788
|
sequenceData: sequenceData2,
|
|
144592
144789
|
minimumOrfSize: minimumOrfSize2
|
|
@@ -144776,7 +144973,7 @@ const TranslationProperties$1 = compose(
|
|
|
144776
144973
|
return {
|
|
144777
144974
|
readOnly: readOnly2,
|
|
144778
144975
|
translations: selectors.translationsSelector(editorState),
|
|
144779
|
-
orfs:
|
|
144976
|
+
orfs: getMemoOrfs(editorState),
|
|
144780
144977
|
annotationVisibility: annotationVisibility2,
|
|
144781
144978
|
sequenceLength: (sequenceData2.sequence || "").length,
|
|
144782
144979
|
sequenceData: sequenceData2
|
|
@@ -146061,6 +146258,7 @@ const _Editor = class _Editor extends React.Component {
|
|
|
146061
146258
|
hoveredId,
|
|
146062
146259
|
isFullscreen,
|
|
146063
146260
|
maxInsertSize,
|
|
146261
|
+
getAcceptedInsertChars,
|
|
146064
146262
|
showAminoAcidUnitAsCodon,
|
|
146065
146263
|
maxAnnotationsToDisplay,
|
|
146066
146264
|
minHeight = 400,
|
|
@@ -146250,6 +146448,7 @@ const _Editor = class _Editor extends React.Component {
|
|
|
146250
146448
|
}), panelPropsToSpread), {
|
|
146251
146449
|
editorName,
|
|
146252
146450
|
maxInsertSize,
|
|
146451
|
+
getAcceptedInsertChars,
|
|
146253
146452
|
showAminoAcidUnitAsCodon,
|
|
146254
146453
|
isProtein: sequenceData2.isProtein,
|
|
146255
146454
|
onlyShowLabelsThatDoNotFit,
|