@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.es.js
CHANGED
|
@@ -2906,6 +2906,13 @@ document.addEventListener("mouseup", () => {
|
|
|
2906
2906
|
isDragging$1 = false;
|
|
2907
2907
|
});
|
|
2908
2908
|
let tippys = [];
|
|
2909
|
+
function isInAllowedContainer(element2) {
|
|
2910
|
+
if (window.onlyAllowTooltipsInVeEditor) {
|
|
2911
|
+
return element2.closest(".veEditor") !== null;
|
|
2912
|
+
}
|
|
2913
|
+
return true;
|
|
2914
|
+
}
|
|
2915
|
+
__name(isInAllowedContainer, "isInAllowedContainer");
|
|
2909
2916
|
let recentlyHidden = false;
|
|
2910
2917
|
let clearMe;
|
|
2911
2918
|
(function() {
|
|
@@ -2913,6 +2920,9 @@ let clearMe;
|
|
|
2913
2920
|
document.addEventListener("mouseover", function(event) {
|
|
2914
2921
|
var _a2, _b2;
|
|
2915
2922
|
const element2 = event.target;
|
|
2923
|
+
if (!isInAllowedContainer(element2)) {
|
|
2924
|
+
return;
|
|
2925
|
+
}
|
|
2916
2926
|
if (element2 instanceof Element && element2 !== lastMouseOverElement) {
|
|
2917
2927
|
let clearOldTippys = /* @__PURE__ */ __name(function(maybeInst) {
|
|
2918
2928
|
tippys = tippys.filter((t2) => {
|
|
@@ -9237,6 +9247,195 @@ function DialogFooter({
|
|
|
9237
9247
|
);
|
|
9238
9248
|
}
|
|
9239
9249
|
__name(DialogFooter, "DialogFooter");
|
|
9250
|
+
var NOT_FOUND = "NOT_FOUND";
|
|
9251
|
+
function createSingletonCache(equals) {
|
|
9252
|
+
var entry;
|
|
9253
|
+
return {
|
|
9254
|
+
get: /* @__PURE__ */ __name(function get7(key) {
|
|
9255
|
+
if (entry && equals(entry.key, key)) {
|
|
9256
|
+
return entry.value;
|
|
9257
|
+
}
|
|
9258
|
+
return NOT_FOUND;
|
|
9259
|
+
}, "get"),
|
|
9260
|
+
put: /* @__PURE__ */ __name(function put(key, value) {
|
|
9261
|
+
entry = {
|
|
9262
|
+
key,
|
|
9263
|
+
value
|
|
9264
|
+
};
|
|
9265
|
+
}, "put"),
|
|
9266
|
+
getEntries: /* @__PURE__ */ __name(function getEntries() {
|
|
9267
|
+
return entry ? [entry] : [];
|
|
9268
|
+
}, "getEntries"),
|
|
9269
|
+
clear: /* @__PURE__ */ __name(function clear3() {
|
|
9270
|
+
entry = void 0;
|
|
9271
|
+
}, "clear")
|
|
9272
|
+
};
|
|
9273
|
+
}
|
|
9274
|
+
__name(createSingletonCache, "createSingletonCache");
|
|
9275
|
+
function createLruCache(maxSize, equals) {
|
|
9276
|
+
var entries2 = [];
|
|
9277
|
+
function get7(key) {
|
|
9278
|
+
var cacheIndex = entries2.findIndex(function(entry2) {
|
|
9279
|
+
return equals(key, entry2.key);
|
|
9280
|
+
});
|
|
9281
|
+
if (cacheIndex > -1) {
|
|
9282
|
+
var entry = entries2[cacheIndex];
|
|
9283
|
+
if (cacheIndex > 0) {
|
|
9284
|
+
entries2.splice(cacheIndex, 1);
|
|
9285
|
+
entries2.unshift(entry);
|
|
9286
|
+
}
|
|
9287
|
+
return entry.value;
|
|
9288
|
+
}
|
|
9289
|
+
return NOT_FOUND;
|
|
9290
|
+
}
|
|
9291
|
+
__name(get7, "get");
|
|
9292
|
+
function put(key, value) {
|
|
9293
|
+
if (get7(key) === NOT_FOUND) {
|
|
9294
|
+
entries2.unshift({
|
|
9295
|
+
key,
|
|
9296
|
+
value
|
|
9297
|
+
});
|
|
9298
|
+
if (entries2.length > maxSize) {
|
|
9299
|
+
entries2.pop();
|
|
9300
|
+
}
|
|
9301
|
+
}
|
|
9302
|
+
}
|
|
9303
|
+
__name(put, "put");
|
|
9304
|
+
function getEntries() {
|
|
9305
|
+
return entries2;
|
|
9306
|
+
}
|
|
9307
|
+
__name(getEntries, "getEntries");
|
|
9308
|
+
function clear3() {
|
|
9309
|
+
entries2 = [];
|
|
9310
|
+
}
|
|
9311
|
+
__name(clear3, "clear");
|
|
9312
|
+
return {
|
|
9313
|
+
get: get7,
|
|
9314
|
+
put,
|
|
9315
|
+
getEntries,
|
|
9316
|
+
clear: clear3
|
|
9317
|
+
};
|
|
9318
|
+
}
|
|
9319
|
+
__name(createLruCache, "createLruCache");
|
|
9320
|
+
var defaultEqualityCheck = /* @__PURE__ */ __name(function defaultEqualityCheck2(a2, b3) {
|
|
9321
|
+
return a2 === b3;
|
|
9322
|
+
}, "defaultEqualityCheck");
|
|
9323
|
+
function createCacheKeyComparator(equalityCheck) {
|
|
9324
|
+
return /* @__PURE__ */ __name(function areArgumentsShallowlyEqual(prev, next) {
|
|
9325
|
+
if (prev === null || next === null || prev.length !== next.length) {
|
|
9326
|
+
return false;
|
|
9327
|
+
}
|
|
9328
|
+
var length = prev.length;
|
|
9329
|
+
for (var i = 0; i < length; i++) {
|
|
9330
|
+
if (!equalityCheck(prev[i], next[i])) {
|
|
9331
|
+
return false;
|
|
9332
|
+
}
|
|
9333
|
+
}
|
|
9334
|
+
return true;
|
|
9335
|
+
}, "areArgumentsShallowlyEqual");
|
|
9336
|
+
}
|
|
9337
|
+
__name(createCacheKeyComparator, "createCacheKeyComparator");
|
|
9338
|
+
function defaultMemoize(func, equalityCheckOrOptions) {
|
|
9339
|
+
var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
|
|
9340
|
+
equalityCheck: equalityCheckOrOptions
|
|
9341
|
+
};
|
|
9342
|
+
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;
|
|
9343
|
+
var comparator = createCacheKeyComparator(equalityCheck);
|
|
9344
|
+
var cache2 = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
|
|
9345
|
+
function memoized() {
|
|
9346
|
+
var value = cache2.get(arguments);
|
|
9347
|
+
if (value === NOT_FOUND) {
|
|
9348
|
+
value = func.apply(null, arguments);
|
|
9349
|
+
if (resultEqualityCheck) {
|
|
9350
|
+
var entries2 = cache2.getEntries();
|
|
9351
|
+
var matchingEntry = entries2.find(function(entry) {
|
|
9352
|
+
return resultEqualityCheck(entry.value, value);
|
|
9353
|
+
});
|
|
9354
|
+
if (matchingEntry) {
|
|
9355
|
+
value = matchingEntry.value;
|
|
9356
|
+
}
|
|
9357
|
+
}
|
|
9358
|
+
cache2.put(arguments, value);
|
|
9359
|
+
}
|
|
9360
|
+
return value;
|
|
9361
|
+
}
|
|
9362
|
+
__name(memoized, "memoized");
|
|
9363
|
+
memoized.clearCache = function() {
|
|
9364
|
+
return cache2.clear();
|
|
9365
|
+
};
|
|
9366
|
+
return memoized;
|
|
9367
|
+
}
|
|
9368
|
+
__name(defaultMemoize, "defaultMemoize");
|
|
9369
|
+
function getDependencies(funcs) {
|
|
9370
|
+
var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
|
|
9371
|
+
if (!dependencies.every(function(dep) {
|
|
9372
|
+
return typeof dep === "function";
|
|
9373
|
+
})) {
|
|
9374
|
+
var dependencyTypes = dependencies.map(function(dep) {
|
|
9375
|
+
return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
|
|
9376
|
+
}).join(", ");
|
|
9377
|
+
throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
|
|
9378
|
+
}
|
|
9379
|
+
return dependencies;
|
|
9380
|
+
}
|
|
9381
|
+
__name(getDependencies, "getDependencies");
|
|
9382
|
+
function createSelectorCreator(memoize2) {
|
|
9383
|
+
for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
9384
|
+
memoizeOptionsFromArgs[_key - 1] = arguments[_key];
|
|
9385
|
+
}
|
|
9386
|
+
var createSelector2 = /* @__PURE__ */ __name(function createSelector3() {
|
|
9387
|
+
for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
9388
|
+
funcs[_key2] = arguments[_key2];
|
|
9389
|
+
}
|
|
9390
|
+
var _recomputations = 0;
|
|
9391
|
+
var _lastResult;
|
|
9392
|
+
var directlyPassedOptions = {
|
|
9393
|
+
memoizeOptions: void 0
|
|
9394
|
+
};
|
|
9395
|
+
var resultFunc = funcs.pop();
|
|
9396
|
+
if (typeof resultFunc === "object") {
|
|
9397
|
+
directlyPassedOptions = resultFunc;
|
|
9398
|
+
resultFunc = funcs.pop();
|
|
9399
|
+
}
|
|
9400
|
+
if (typeof resultFunc !== "function") {
|
|
9401
|
+
throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
|
|
9402
|
+
}
|
|
9403
|
+
var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
|
|
9404
|
+
var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];
|
|
9405
|
+
var dependencies = getDependencies(funcs);
|
|
9406
|
+
var memoizedResultFunc = memoize2.apply(void 0, [/* @__PURE__ */ __name(function recomputationWrapper() {
|
|
9407
|
+
_recomputations++;
|
|
9408
|
+
return resultFunc.apply(null, arguments);
|
|
9409
|
+
}, "recomputationWrapper")].concat(finalMemoizeOptions));
|
|
9410
|
+
var selector = memoize2(/* @__PURE__ */ __name(function dependenciesChecker() {
|
|
9411
|
+
var params = [];
|
|
9412
|
+
var length = dependencies.length;
|
|
9413
|
+
for (var i = 0; i < length; i++) {
|
|
9414
|
+
params.push(dependencies[i].apply(null, arguments));
|
|
9415
|
+
}
|
|
9416
|
+
_lastResult = memoizedResultFunc.apply(null, params);
|
|
9417
|
+
return _lastResult;
|
|
9418
|
+
}, "dependenciesChecker"));
|
|
9419
|
+
Object.assign(selector, {
|
|
9420
|
+
resultFunc,
|
|
9421
|
+
memoizedResultFunc,
|
|
9422
|
+
dependencies,
|
|
9423
|
+
lastResult: /* @__PURE__ */ __name(function lastResult() {
|
|
9424
|
+
return _lastResult;
|
|
9425
|
+
}, "lastResult"),
|
|
9426
|
+
recomputations: /* @__PURE__ */ __name(function recomputations() {
|
|
9427
|
+
return _recomputations;
|
|
9428
|
+
}, "recomputations"),
|
|
9429
|
+
resetRecomputations: /* @__PURE__ */ __name(function resetRecomputations() {
|
|
9430
|
+
return _recomputations = 0;
|
|
9431
|
+
}, "resetRecomputations")
|
|
9432
|
+
});
|
|
9433
|
+
return selector;
|
|
9434
|
+
}, "createSelector");
|
|
9435
|
+
return createSelector2;
|
|
9436
|
+
}
|
|
9437
|
+
__name(createSelectorCreator, "createSelectorCreator");
|
|
9438
|
+
var createSelector = /* @__PURE__ */ createSelectorCreator(defaultMemoize);
|
|
9240
9439
|
function useCombinedRefs() {
|
|
9241
9440
|
for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
9242
9441
|
refs[_key] = arguments[_key];
|
|
@@ -56633,21 +56832,27 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
|
|
|
56633
56832
|
}
|
|
56634
56833
|
return false;
|
|
56635
56834
|
});
|
|
56835
|
+
const dtFormParamsSelector = useMemo$1(
|
|
56836
|
+
() => createSelector(
|
|
56837
|
+
(state2) => formValueSelector(formName)(
|
|
56838
|
+
state2,
|
|
56839
|
+
"reduxFormCellValidation",
|
|
56840
|
+
"reduxFormEntities",
|
|
56841
|
+
"reduxFormQueryParams",
|
|
56842
|
+
"reduxFormSelectedEntityIdMap"
|
|
56843
|
+
),
|
|
56844
|
+
(result) => result
|
|
56845
|
+
// identity, but memoized
|
|
56846
|
+
),
|
|
56847
|
+
[formName]
|
|
56848
|
+
);
|
|
56636
56849
|
const {
|
|
56637
56850
|
reduxFormCellValidation: _reduxFormCellValidation,
|
|
56638
56851
|
reduxFormEditingCell,
|
|
56639
56852
|
reduxFormEntities,
|
|
56640
56853
|
reduxFormQueryParams: _reduxFormQueryParams = {},
|
|
56641
56854
|
reduxFormSelectedEntityIdMap: _reduxFormSelectedEntityIdMap = {}
|
|
56642
|
-
} = useSelector(
|
|
56643
|
-
return formValueSelector(formName)(
|
|
56644
|
-
state2,
|
|
56645
|
-
"reduxFormCellValidation",
|
|
56646
|
-
"reduxFormEntities",
|
|
56647
|
-
"reduxFormQueryParams",
|
|
56648
|
-
"reduxFormSelectedEntityIdMap"
|
|
56649
|
-
);
|
|
56650
|
-
}, "dtFormParamsSelector"));
|
|
56855
|
+
} = useSelector(dtFormParamsSelector);
|
|
56651
56856
|
const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
|
|
56652
56857
|
_reduxFormCellValidation
|
|
56653
56858
|
);
|
|
@@ -56954,11 +57159,9 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
|
|
|
56954
57159
|
newTableConfig = {
|
|
56955
57160
|
fieldOptions: []
|
|
56956
57161
|
};
|
|
56957
|
-
|
|
56958
|
-
|
|
56959
|
-
|
|
56960
|
-
return newTableConfig;
|
|
56961
|
-
}
|
|
57162
|
+
}
|
|
57163
|
+
if (isEqual$3(prev, newTableConfig)) {
|
|
57164
|
+
return prev;
|
|
56962
57165
|
} else {
|
|
56963
57166
|
return newTableConfig;
|
|
56964
57167
|
}
|
|
@@ -74955,14 +75158,16 @@ function filterSequenceString(sequenceString = "", {
|
|
|
74955
75158
|
name: name2,
|
|
74956
75159
|
isProtein: isProtein2,
|
|
74957
75160
|
isRna: isRna2,
|
|
74958
|
-
isMixedRnaAndDna
|
|
75161
|
+
isMixedRnaAndDna,
|
|
75162
|
+
getAcceptedInsertChars
|
|
74959
75163
|
} = {}) {
|
|
74960
|
-
const
|
|
75164
|
+
const sequenceTypeInfo = {
|
|
74961
75165
|
isOligo: isOligo2,
|
|
74962
75166
|
isProtein: isProtein2,
|
|
74963
75167
|
isRna: isRna2,
|
|
74964
75168
|
isMixedRnaAndDna
|
|
74965
|
-
}
|
|
75169
|
+
};
|
|
75170
|
+
const acceptedChars = isFunction$2(getAcceptedInsertChars) ? getAcceptedInsertChars(sequenceTypeInfo) : getAcceptedChars(sequenceTypeInfo);
|
|
74966
75171
|
const replaceChars = getReplaceChars({
|
|
74967
75172
|
isOligo: isOligo2,
|
|
74968
75173
|
isProtein: isProtein2,
|
|
@@ -75198,6 +75403,7 @@ function tidyUpSequenceData(pSeqData, options = {}) {
|
|
|
75198
75403
|
doNotProvideIdsForAnnotations,
|
|
75199
75404
|
noCdsTranslations,
|
|
75200
75405
|
convertAnnotationsFromAAIndices,
|
|
75406
|
+
getAcceptedInsertChars,
|
|
75201
75407
|
topLevelSeqData
|
|
75202
75408
|
} = options;
|
|
75203
75409
|
let seqData = cloneDeep(pSeqData);
|
|
@@ -75229,13 +75435,16 @@ function tidyUpSequenceData(pSeqData, options = {}) {
|
|
|
75229
75435
|
if (!doNotRemoveInvalidChars) {
|
|
75230
75436
|
if (seqData.isProtein) {
|
|
75231
75437
|
const [newSeq] = filterSequenceString(seqData.proteinSequence, __spreadProps(__spreadValues({}, topLevelSeqData || seqData), {
|
|
75232
|
-
isProtein: true
|
|
75438
|
+
isProtein: true,
|
|
75439
|
+
getAcceptedInsertChars
|
|
75233
75440
|
}));
|
|
75234
75441
|
seqData.proteinSequence = newSeq;
|
|
75235
75442
|
} else {
|
|
75236
|
-
const [newSeq] = filterSequenceString(seqData.sequence, __spreadValues({
|
|
75443
|
+
const [newSeq] = filterSequenceString(seqData.sequence, __spreadProps(__spreadValues({
|
|
75237
75444
|
additionalValidChars
|
|
75238
|
-
}, topLevelSeqData || seqData)
|
|
75445
|
+
}, topLevelSeqData || seqData), {
|
|
75446
|
+
getAcceptedInsertChars
|
|
75447
|
+
}));
|
|
75239
75448
|
seqData.sequence = newSeq;
|
|
75240
75449
|
}
|
|
75241
75450
|
}
|
|
@@ -97591,195 +97800,6 @@ function sequenceSelector(state2) {
|
|
|
97591
97800
|
return sequenceDataSelector(state2).sequence;
|
|
97592
97801
|
}
|
|
97593
97802
|
__name(sequenceSelector, "sequenceSelector");
|
|
97594
|
-
var NOT_FOUND = "NOT_FOUND";
|
|
97595
|
-
function createSingletonCache(equals) {
|
|
97596
|
-
var entry;
|
|
97597
|
-
return {
|
|
97598
|
-
get: /* @__PURE__ */ __name(function get7(key) {
|
|
97599
|
-
if (entry && equals(entry.key, key)) {
|
|
97600
|
-
return entry.value;
|
|
97601
|
-
}
|
|
97602
|
-
return NOT_FOUND;
|
|
97603
|
-
}, "get"),
|
|
97604
|
-
put: /* @__PURE__ */ __name(function put(key, value) {
|
|
97605
|
-
entry = {
|
|
97606
|
-
key,
|
|
97607
|
-
value
|
|
97608
|
-
};
|
|
97609
|
-
}, "put"),
|
|
97610
|
-
getEntries: /* @__PURE__ */ __name(function getEntries() {
|
|
97611
|
-
return entry ? [entry] : [];
|
|
97612
|
-
}, "getEntries"),
|
|
97613
|
-
clear: /* @__PURE__ */ __name(function clear3() {
|
|
97614
|
-
entry = void 0;
|
|
97615
|
-
}, "clear")
|
|
97616
|
-
};
|
|
97617
|
-
}
|
|
97618
|
-
__name(createSingletonCache, "createSingletonCache");
|
|
97619
|
-
function createLruCache(maxSize, equals) {
|
|
97620
|
-
var entries2 = [];
|
|
97621
|
-
function get7(key) {
|
|
97622
|
-
var cacheIndex = entries2.findIndex(function(entry2) {
|
|
97623
|
-
return equals(key, entry2.key);
|
|
97624
|
-
});
|
|
97625
|
-
if (cacheIndex > -1) {
|
|
97626
|
-
var entry = entries2[cacheIndex];
|
|
97627
|
-
if (cacheIndex > 0) {
|
|
97628
|
-
entries2.splice(cacheIndex, 1);
|
|
97629
|
-
entries2.unshift(entry);
|
|
97630
|
-
}
|
|
97631
|
-
return entry.value;
|
|
97632
|
-
}
|
|
97633
|
-
return NOT_FOUND;
|
|
97634
|
-
}
|
|
97635
|
-
__name(get7, "get");
|
|
97636
|
-
function put(key, value) {
|
|
97637
|
-
if (get7(key) === NOT_FOUND) {
|
|
97638
|
-
entries2.unshift({
|
|
97639
|
-
key,
|
|
97640
|
-
value
|
|
97641
|
-
});
|
|
97642
|
-
if (entries2.length > maxSize) {
|
|
97643
|
-
entries2.pop();
|
|
97644
|
-
}
|
|
97645
|
-
}
|
|
97646
|
-
}
|
|
97647
|
-
__name(put, "put");
|
|
97648
|
-
function getEntries() {
|
|
97649
|
-
return entries2;
|
|
97650
|
-
}
|
|
97651
|
-
__name(getEntries, "getEntries");
|
|
97652
|
-
function clear3() {
|
|
97653
|
-
entries2 = [];
|
|
97654
|
-
}
|
|
97655
|
-
__name(clear3, "clear");
|
|
97656
|
-
return {
|
|
97657
|
-
get: get7,
|
|
97658
|
-
put,
|
|
97659
|
-
getEntries,
|
|
97660
|
-
clear: clear3
|
|
97661
|
-
};
|
|
97662
|
-
}
|
|
97663
|
-
__name(createLruCache, "createLruCache");
|
|
97664
|
-
var defaultEqualityCheck = /* @__PURE__ */ __name(function defaultEqualityCheck2(a2, b3) {
|
|
97665
|
-
return a2 === b3;
|
|
97666
|
-
}, "defaultEqualityCheck");
|
|
97667
|
-
function createCacheKeyComparator(equalityCheck) {
|
|
97668
|
-
return /* @__PURE__ */ __name(function areArgumentsShallowlyEqual(prev, next) {
|
|
97669
|
-
if (prev === null || next === null || prev.length !== next.length) {
|
|
97670
|
-
return false;
|
|
97671
|
-
}
|
|
97672
|
-
var length = prev.length;
|
|
97673
|
-
for (var i = 0; i < length; i++) {
|
|
97674
|
-
if (!equalityCheck(prev[i], next[i])) {
|
|
97675
|
-
return false;
|
|
97676
|
-
}
|
|
97677
|
-
}
|
|
97678
|
-
return true;
|
|
97679
|
-
}, "areArgumentsShallowlyEqual");
|
|
97680
|
-
}
|
|
97681
|
-
__name(createCacheKeyComparator, "createCacheKeyComparator");
|
|
97682
|
-
function defaultMemoize(func, equalityCheckOrOptions) {
|
|
97683
|
-
var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
|
|
97684
|
-
equalityCheck: equalityCheckOrOptions
|
|
97685
|
-
};
|
|
97686
|
-
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;
|
|
97687
|
-
var comparator = createCacheKeyComparator(equalityCheck);
|
|
97688
|
-
var cache2 = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
|
|
97689
|
-
function memoized() {
|
|
97690
|
-
var value = cache2.get(arguments);
|
|
97691
|
-
if (value === NOT_FOUND) {
|
|
97692
|
-
value = func.apply(null, arguments);
|
|
97693
|
-
if (resultEqualityCheck) {
|
|
97694
|
-
var entries2 = cache2.getEntries();
|
|
97695
|
-
var matchingEntry = entries2.find(function(entry) {
|
|
97696
|
-
return resultEqualityCheck(entry.value, value);
|
|
97697
|
-
});
|
|
97698
|
-
if (matchingEntry) {
|
|
97699
|
-
value = matchingEntry.value;
|
|
97700
|
-
}
|
|
97701
|
-
}
|
|
97702
|
-
cache2.put(arguments, value);
|
|
97703
|
-
}
|
|
97704
|
-
return value;
|
|
97705
|
-
}
|
|
97706
|
-
__name(memoized, "memoized");
|
|
97707
|
-
memoized.clearCache = function() {
|
|
97708
|
-
return cache2.clear();
|
|
97709
|
-
};
|
|
97710
|
-
return memoized;
|
|
97711
|
-
}
|
|
97712
|
-
__name(defaultMemoize, "defaultMemoize");
|
|
97713
|
-
function getDependencies(funcs) {
|
|
97714
|
-
var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
|
|
97715
|
-
if (!dependencies.every(function(dep) {
|
|
97716
|
-
return typeof dep === "function";
|
|
97717
|
-
})) {
|
|
97718
|
-
var dependencyTypes = dependencies.map(function(dep) {
|
|
97719
|
-
return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
|
|
97720
|
-
}).join(", ");
|
|
97721
|
-
throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
|
|
97722
|
-
}
|
|
97723
|
-
return dependencies;
|
|
97724
|
-
}
|
|
97725
|
-
__name(getDependencies, "getDependencies");
|
|
97726
|
-
function createSelectorCreator(memoize2) {
|
|
97727
|
-
for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
97728
|
-
memoizeOptionsFromArgs[_key - 1] = arguments[_key];
|
|
97729
|
-
}
|
|
97730
|
-
var createSelector2 = /* @__PURE__ */ __name(function createSelector3() {
|
|
97731
|
-
for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
97732
|
-
funcs[_key2] = arguments[_key2];
|
|
97733
|
-
}
|
|
97734
|
-
var _recomputations = 0;
|
|
97735
|
-
var _lastResult;
|
|
97736
|
-
var directlyPassedOptions = {
|
|
97737
|
-
memoizeOptions: void 0
|
|
97738
|
-
};
|
|
97739
|
-
var resultFunc = funcs.pop();
|
|
97740
|
-
if (typeof resultFunc === "object") {
|
|
97741
|
-
directlyPassedOptions = resultFunc;
|
|
97742
|
-
resultFunc = funcs.pop();
|
|
97743
|
-
}
|
|
97744
|
-
if (typeof resultFunc !== "function") {
|
|
97745
|
-
throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
|
|
97746
|
-
}
|
|
97747
|
-
var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
|
|
97748
|
-
var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];
|
|
97749
|
-
var dependencies = getDependencies(funcs);
|
|
97750
|
-
var memoizedResultFunc = memoize2.apply(void 0, [/* @__PURE__ */ __name(function recomputationWrapper() {
|
|
97751
|
-
_recomputations++;
|
|
97752
|
-
return resultFunc.apply(null, arguments);
|
|
97753
|
-
}, "recomputationWrapper")].concat(finalMemoizeOptions));
|
|
97754
|
-
var selector = memoize2(/* @__PURE__ */ __name(function dependenciesChecker() {
|
|
97755
|
-
var params = [];
|
|
97756
|
-
var length = dependencies.length;
|
|
97757
|
-
for (var i = 0; i < length; i++) {
|
|
97758
|
-
params.push(dependencies[i].apply(null, arguments));
|
|
97759
|
-
}
|
|
97760
|
-
_lastResult = memoizedResultFunc.apply(null, params);
|
|
97761
|
-
return _lastResult;
|
|
97762
|
-
}, "dependenciesChecker"));
|
|
97763
|
-
Object.assign(selector, {
|
|
97764
|
-
resultFunc,
|
|
97765
|
-
memoizedResultFunc,
|
|
97766
|
-
dependencies,
|
|
97767
|
-
lastResult: /* @__PURE__ */ __name(function lastResult() {
|
|
97768
|
-
return _lastResult;
|
|
97769
|
-
}, "lastResult"),
|
|
97770
|
-
recomputations: /* @__PURE__ */ __name(function recomputations() {
|
|
97771
|
-
return _recomputations;
|
|
97772
|
-
}, "recomputations"),
|
|
97773
|
-
resetRecomputations: /* @__PURE__ */ __name(function resetRecomputations() {
|
|
97774
|
-
return _recomputations = 0;
|
|
97775
|
-
}, "resetRecomputations")
|
|
97776
|
-
});
|
|
97777
|
-
return selector;
|
|
97778
|
-
}, "createSelector");
|
|
97779
|
-
return createSelector2;
|
|
97780
|
-
}
|
|
97781
|
-
__name(createSelectorCreator, "createSelectorCreator");
|
|
97782
|
-
var createSelector = /* @__PURE__ */ createSelectorCreator(defaultMemoize);
|
|
97783
97803
|
const restrictionEnzymesSelector = createSelector(
|
|
97784
97804
|
() => defaultEnzymesByName,
|
|
97785
97805
|
(state2, additionalEnzymes) => {
|
|
@@ -97805,7 +97825,34 @@ const restrictionEnzymesSelector = createSelector(
|
|
|
97805
97825
|
const cutsiteLabelColorSelector = createSelector(sequenceDataSelector, function(sequenceData2) {
|
|
97806
97826
|
return sequenceData2.cutsiteLabelColors;
|
|
97807
97827
|
});
|
|
97808
|
-
|
|
97828
|
+
const cutsitesCache = [];
|
|
97829
|
+
function getCachedResult(argsObj) {
|
|
97830
|
+
const idx = cutsitesCache.findIndex(
|
|
97831
|
+
(entry) => entry && isEqual$3(entry.args, argsObj)
|
|
97832
|
+
);
|
|
97833
|
+
if (idx === -1) return;
|
|
97834
|
+
const hit = cutsitesCache[idx];
|
|
97835
|
+
return hit.result;
|
|
97836
|
+
}
|
|
97837
|
+
__name(getCachedResult, "getCachedResult");
|
|
97838
|
+
function setCachedResult(argsObj, result, cacheSize = 1) {
|
|
97839
|
+
cutsitesCache.push({
|
|
97840
|
+
args: argsObj,
|
|
97841
|
+
result
|
|
97842
|
+
});
|
|
97843
|
+
if (cutsitesCache.length > cacheSize) cutsitesCache.shift();
|
|
97844
|
+
}
|
|
97845
|
+
__name(setCachedResult, "setCachedResult");
|
|
97846
|
+
function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors, editorSize = 1) {
|
|
97847
|
+
const cachedResult = getCachedResult({
|
|
97848
|
+
sequence: sequence2,
|
|
97849
|
+
circular: circular2,
|
|
97850
|
+
enzymeList,
|
|
97851
|
+
cutsiteLabelColors
|
|
97852
|
+
});
|
|
97853
|
+
if (cachedResult) {
|
|
97854
|
+
return cachedResult;
|
|
97855
|
+
}
|
|
97809
97856
|
const cutsitesByName = getLowerCaseObj(
|
|
97810
97857
|
getCutsitesFromSequence(sequence2, circular2, map$3(enzymeList))
|
|
97811
97858
|
);
|
|
@@ -97838,11 +97885,22 @@ function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors)
|
|
|
97838
97885
|
const cutsitesArray = flatMap(cutsitesByName, function(cutsitesForEnzyme) {
|
|
97839
97886
|
return cutsitesForEnzyme;
|
|
97840
97887
|
});
|
|
97841
|
-
|
|
97888
|
+
const result = {
|
|
97842
97889
|
cutsitesByName,
|
|
97843
97890
|
cutsitesById,
|
|
97844
97891
|
cutsitesArray
|
|
97845
97892
|
};
|
|
97893
|
+
setCachedResult(
|
|
97894
|
+
{
|
|
97895
|
+
sequence: sequence2,
|
|
97896
|
+
circular: circular2,
|
|
97897
|
+
enzymeList,
|
|
97898
|
+
cutsiteLabelColors
|
|
97899
|
+
},
|
|
97900
|
+
result,
|
|
97901
|
+
editorSize
|
|
97902
|
+
);
|
|
97903
|
+
return result;
|
|
97846
97904
|
}
|
|
97847
97905
|
__name(cutsitesSelector, "cutsitesSelector");
|
|
97848
97906
|
const cutsitesSelector$1 = createSelector(
|
|
@@ -97850,6 +97908,7 @@ const cutsitesSelector$1 = createSelector(
|
|
|
97850
97908
|
circularSelector,
|
|
97851
97909
|
restrictionEnzymesSelector,
|
|
97852
97910
|
cutsiteLabelColorSelector,
|
|
97911
|
+
(editorState) => editorState.editorSize,
|
|
97853
97912
|
cutsitesSelector
|
|
97854
97913
|
);
|
|
97855
97914
|
function divideBy3(num, shouldDivideBy3) {
|
|
@@ -99265,11 +99324,12 @@ function showDialog({
|
|
|
99265
99324
|
props,
|
|
99266
99325
|
overrideName
|
|
99267
99326
|
}) {
|
|
99268
|
-
var _a2;
|
|
99327
|
+
var _a2, _b2, _c, _d;
|
|
99269
99328
|
dialogHolder.dialogType = dialogType;
|
|
99270
99329
|
if (!dialogHolder.dialogType && ModalComponent) {
|
|
99271
99330
|
dialogHolder.dialogType = "TGCustomModal";
|
|
99272
99331
|
}
|
|
99332
|
+
dialogHolder.editorName = props == null ? void 0 : props.editorName;
|
|
99273
99333
|
if (document.activeElement && document.activeElement.closest(".veEditor")) {
|
|
99274
99334
|
let editorName;
|
|
99275
99335
|
(_a2 = document.activeElement.closest(".veEditor")) == null ? void 0 : _a2.className.split(" ").forEach((c2) => {
|
|
@@ -99283,16 +99343,28 @@ function showDialog({
|
|
|
99283
99343
|
dialogHolder.CustomModalComponent = ModalComponent;
|
|
99284
99344
|
dialogHolder.props = props;
|
|
99285
99345
|
dialogHolder.overrideName = overrideName;
|
|
99286
|
-
dialogHolder.
|
|
99346
|
+
if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
|
|
99347
|
+
(_c = (_b2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _b2.setUniqKeyToForceRerender) == null ? void 0 : _c.call(
|
|
99348
|
+
_b2,
|
|
99349
|
+
uuid()
|
|
99350
|
+
);
|
|
99351
|
+
} else {
|
|
99352
|
+
(_d = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _d.call(dialogHolder, uuid());
|
|
99353
|
+
}
|
|
99287
99354
|
}
|
|
99288
99355
|
__name(showDialog, "showDialog");
|
|
99289
99356
|
function hideDialog() {
|
|
99357
|
+
var _a2, _b2, _c;
|
|
99290
99358
|
delete dialogHolder.dialogType;
|
|
99291
99359
|
delete dialogHolder.CustomModalComponent;
|
|
99292
99360
|
delete dialogHolder.props;
|
|
99293
99361
|
delete dialogHolder.overrideName;
|
|
99362
|
+
if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
|
|
99363
|
+
(_b2 = (_a2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _a2.setUniqKeyToForceRerender) == null ? void 0 : _b2.call(_a2);
|
|
99364
|
+
} else {
|
|
99365
|
+
(_c = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _c.call(dialogHolder);
|
|
99366
|
+
}
|
|
99294
99367
|
delete dialogHolder.editorName;
|
|
99295
|
-
dialogHolder.setUniqKeyToForceRerender();
|
|
99296
99368
|
}
|
|
99297
99369
|
__name(hideDialog, "hideDialog");
|
|
99298
99370
|
const typeToDialogType = {
|
|
@@ -99567,7 +99639,8 @@ const handleSave = /* @__PURE__ */ __name((props) => (..._0) => __async(void 0,
|
|
|
99567
99639
|
readOnly: readOnly2,
|
|
99568
99640
|
alwaysAllowSave,
|
|
99569
99641
|
sequenceData: sequenceData2,
|
|
99570
|
-
lastSavedIdUpdate: lastSavedIdUpdate2
|
|
99642
|
+
lastSavedIdUpdate: lastSavedIdUpdate2,
|
|
99643
|
+
getAcceptedInsertChars
|
|
99571
99644
|
} = props;
|
|
99572
99645
|
const saveHandler = opts2.isSaveAs ? onSaveAs || onSave : onSave;
|
|
99573
99646
|
const updateLastSavedIdToCurrent = /* @__PURE__ */ __name(() => {
|
|
@@ -99580,7 +99653,8 @@ const handleSave = /* @__PURE__ */ __name((props) => (..._0) => __async(void 0,
|
|
|
99580
99653
|
opts2,
|
|
99581
99654
|
tidyUpSequenceData(sequenceData2, {
|
|
99582
99655
|
doNotRemoveInvalidChars: true,
|
|
99583
|
-
annotationsAsObjects: true
|
|
99656
|
+
annotationsAsObjects: true,
|
|
99657
|
+
getAcceptedInsertChars
|
|
99584
99658
|
}),
|
|
99585
99659
|
props,
|
|
99586
99660
|
updateLastSavedIdToCurrent
|
|
@@ -99762,8 +99836,8 @@ const withEditorProps = compose(
|
|
|
99762
99836
|
caretPositionOrRange,
|
|
99763
99837
|
options
|
|
99764
99838
|
} = props.beforeSequenceInsertOrDelete ? (yield props.beforeSequenceInsertOrDelete(
|
|
99765
|
-
tidyUpSequenceData(_sequenceDataToInsert),
|
|
99766
|
-
tidyUpSequenceData(_existingSequenceData),
|
|
99839
|
+
tidyUpSequenceData(_sequenceDataToInsert, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
|
|
99840
|
+
tidyUpSequenceData(_existingSequenceData, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
|
|
99767
99841
|
_caretPositionOrRange,
|
|
99768
99842
|
_options
|
|
99769
99843
|
)) || {} : {};
|
|
@@ -99926,7 +100000,11 @@ const getEditorState = createSelector(
|
|
|
99926
100000
|
(state2) => state2.VectorEditor,
|
|
99927
100001
|
(state2, editorName) => editorName,
|
|
99928
100002
|
(VectorEditor, editorName) => {
|
|
99929
|
-
|
|
100003
|
+
const editorState = VectorEditor[editorName];
|
|
100004
|
+
editorState && (editorState.editorSize = Object.values(VectorEditor).filter(
|
|
100005
|
+
(editorItem) => editorItem == null ? void 0 : editorItem.sequenceData
|
|
100006
|
+
).length);
|
|
100007
|
+
return editorState;
|
|
99930
100008
|
}
|
|
99931
100009
|
);
|
|
99932
100010
|
function mapStateToProps(state2, ownProps) {
|
|
@@ -99963,6 +100041,9 @@ function mapStateToProps(state2, ownProps) {
|
|
|
99963
100041
|
annotationTypePlural,
|
|
99964
100042
|
sequenceLength
|
|
99965
100043
|
);
|
|
100044
|
+
if (dialogHolder.editorName) {
|
|
100045
|
+
annotationToAdd = dialogHolder.editorName === editorName ? annotationToAdd : void 0;
|
|
100046
|
+
}
|
|
99966
100047
|
}
|
|
99967
100048
|
});
|
|
99968
100049
|
const toReturn = __spreadProps(__spreadValues({}, editorState), {
|
|
@@ -100190,13 +100271,15 @@ function getShowGCContent(state2, ownProps) {
|
|
|
100190
100271
|
return toRet;
|
|
100191
100272
|
}
|
|
100192
100273
|
__name(getShowGCContent, "getShowGCContent");
|
|
100193
|
-
function jsonToJson(incomingJson) {
|
|
100274
|
+
function jsonToJson(incomingJson, options) {
|
|
100275
|
+
const { getAcceptedInsertChars } = options || {};
|
|
100194
100276
|
return JSON.stringify(
|
|
100195
100277
|
omit$1(
|
|
100196
100278
|
cleanUpTeselagenJsonForExport(
|
|
100197
100279
|
tidyUpSequenceData(incomingJson, {
|
|
100198
100280
|
doNotRemoveInvalidChars: true,
|
|
100199
|
-
annotationsAsObjects: false
|
|
100281
|
+
annotationsAsObjects: false,
|
|
100282
|
+
getAcceptedInsertChars
|
|
100200
100283
|
})
|
|
100201
100284
|
),
|
|
100202
100285
|
[
|
|
@@ -110096,7 +110179,8 @@ function getAnnotationNameAndStartStopString({
|
|
|
110096
110179
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
110097
110180
|
click → top cut position
|
|
110098
110181
|
alt/option+click → bottom cut position
|
|
110099
|
-
cmd/ctrl+click → recognition range
|
|
110182
|
+
cmd/ctrl+click → recognition range
|
|
110183
|
+
double click → show info` : `
|
|
110100
110184
|
|
|
110101
110185
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
110102
110186
|
INTERACTIONS:
|
|
@@ -110882,9 +110966,19 @@ const _AnnotationPositioner = class _AnnotationPositioner extends React__default
|
|
|
110882
110966
|
};
|
|
110883
110967
|
__name(_AnnotationPositioner, "AnnotationPositioner");
|
|
110884
110968
|
let AnnotationPositioner = _AnnotationPositioner;
|
|
110969
|
+
let measureCanvas;
|
|
110970
|
+
function getAnnotationTextWidth(text2, fontSize = ANNOTATION_LABEL_FONT_WIDTH, fontFamily = "monospace") {
|
|
110971
|
+
if (!measureCanvas) {
|
|
110972
|
+
measureCanvas = document.createElement("canvas");
|
|
110973
|
+
}
|
|
110974
|
+
const ctx = measureCanvas.getContext("2d");
|
|
110975
|
+
ctx.font = `${fontSize}px ${fontFamily}`;
|
|
110976
|
+
return ctx.measureText(text2).width;
|
|
110977
|
+
}
|
|
110978
|
+
__name(getAnnotationTextWidth, "getAnnotationTextWidth");
|
|
110885
110979
|
const doesLabelFitInAnnotation = /* @__PURE__ */ __name((text2 = "", { range: range2, width }, charWidth2) => {
|
|
110886
|
-
const textLength = text2
|
|
110887
|
-
const widthMinusOne =
|
|
110980
|
+
const textLength = getAnnotationTextWidth(text2);
|
|
110981
|
+
const widthMinusOne = range2 ? getWidth(range2, charWidth2, 0) - ANNOTATION_LABEL_FONT_WIDTH * 2 : width - ANNOTATION_LABEL_FONT_WIDTH * 2;
|
|
110888
110982
|
return widthMinusOne > textLength;
|
|
110889
110983
|
}, "doesLabelFitInAnnotation");
|
|
110890
110984
|
function getAnnotationClassnames({ overlapsSelf }, { viewName, type: type2 }) {
|
|
@@ -110894,6 +110988,78 @@ function getAnnotationClassnames({ overlapsSelf }, { viewName, type: type2 }) {
|
|
|
110894
110988
|
});
|
|
110895
110989
|
}
|
|
110896
110990
|
__name(getAnnotationClassnames, "getAnnotationClassnames");
|
|
110991
|
+
function getAnnotationTextOffset({
|
|
110992
|
+
width,
|
|
110993
|
+
nameToDisplay,
|
|
110994
|
+
hasAPoint,
|
|
110995
|
+
pointiness,
|
|
110996
|
+
forward
|
|
110997
|
+
}) {
|
|
110998
|
+
return width / 2 - getAnnotationTextWidth(nameToDisplay) / 2 - (hasAPoint ? (pointiness / 2 + ANNOTATION_LABEL_FONT_WIDTH / 2) * (forward ? 1 : -1) : 0);
|
|
110999
|
+
}
|
|
111000
|
+
__name(getAnnotationTextOffset, "getAnnotationTextOffset");
|
|
111001
|
+
function getAnnotationNameInfo({
|
|
111002
|
+
name: name2,
|
|
111003
|
+
width,
|
|
111004
|
+
hasAPoint,
|
|
111005
|
+
pointiness,
|
|
111006
|
+
forward,
|
|
111007
|
+
charWidth: charWidth2,
|
|
111008
|
+
truncateLabelsThatDoNotFit,
|
|
111009
|
+
onlyShowLabelsThatDoNotFit,
|
|
111010
|
+
annotation
|
|
111011
|
+
}) {
|
|
111012
|
+
let nameToDisplay = name2;
|
|
111013
|
+
let textOffset = getAnnotationTextOffset({
|
|
111014
|
+
width,
|
|
111015
|
+
nameToDisplay,
|
|
111016
|
+
hasAPoint,
|
|
111017
|
+
pointiness,
|
|
111018
|
+
forward
|
|
111019
|
+
});
|
|
111020
|
+
const widthAvailableForText = width - ANNOTATION_LABEL_FONT_WIDTH * 2;
|
|
111021
|
+
if (!doesLabelFitInAnnotation(name2, { width }, charWidth2) || !onlyShowLabelsThatDoNotFit && ["parts", "features"].includes(annotation.annotationTypePlural)) {
|
|
111022
|
+
if (truncateLabelsThatDoNotFit) {
|
|
111023
|
+
let left2 = 0;
|
|
111024
|
+
let right2 = name2.length;
|
|
111025
|
+
let bestFit = "";
|
|
111026
|
+
while (left2 <= right2) {
|
|
111027
|
+
const mid = Math.floor((left2 + right2) / 2);
|
|
111028
|
+
const candidate = name2.slice(0, mid);
|
|
111029
|
+
const candidateWidth = getAnnotationTextWidth(candidate);
|
|
111030
|
+
if (candidateWidth <= widthAvailableForText) {
|
|
111031
|
+
if (candidate.length > bestFit.length) {
|
|
111032
|
+
bestFit = candidate;
|
|
111033
|
+
}
|
|
111034
|
+
left2 = mid + 1;
|
|
111035
|
+
} else {
|
|
111036
|
+
right2 = mid - 1;
|
|
111037
|
+
}
|
|
111038
|
+
}
|
|
111039
|
+
if (bestFit.length < name2.length) {
|
|
111040
|
+
bestFit = bestFit.slice(0, -2) + "..";
|
|
111041
|
+
}
|
|
111042
|
+
nameToDisplay = bestFit;
|
|
111043
|
+
if (nameToDisplay.length <= 3) {
|
|
111044
|
+
textOffset = 0;
|
|
111045
|
+
nameToDisplay = "";
|
|
111046
|
+
} else {
|
|
111047
|
+
textOffset = getAnnotationTextOffset({
|
|
111048
|
+
width,
|
|
111049
|
+
nameToDisplay,
|
|
111050
|
+
hasAPoint,
|
|
111051
|
+
pointiness,
|
|
111052
|
+
forward
|
|
111053
|
+
});
|
|
111054
|
+
}
|
|
111055
|
+
} else {
|
|
111056
|
+
textOffset = 0;
|
|
111057
|
+
nameToDisplay = "";
|
|
111058
|
+
}
|
|
111059
|
+
}
|
|
111060
|
+
return { textOffset, nameToDisplay };
|
|
111061
|
+
}
|
|
111062
|
+
__name(getAnnotationNameInfo, "getAnnotationNameInfo");
|
|
110897
111063
|
function PointedAnnotation(props) {
|
|
110898
111064
|
const {
|
|
110899
111065
|
className,
|
|
@@ -111029,27 +111195,17 @@ function PointedAnnotation(props) {
|
|
|
111029
111195
|
Q ${pointiness},${height / 2} ${0},${0}
|
|
111030
111196
|
z`;
|
|
111031
111197
|
}
|
|
111032
|
-
|
|
111033
|
-
|
|
111034
|
-
|
|
111035
|
-
|
|
111036
|
-
|
|
111037
|
-
|
|
111038
|
-
|
|
111039
|
-
|
|
111040
|
-
|
|
111041
|
-
|
|
111042
|
-
|
|
111043
|
-
textOffset = width / 2 - nameToDisplay.length * 5 / 2 - (hasAPoint ? pointiness / 2 * (forward ? 1 : -1) : 0);
|
|
111044
|
-
} else {
|
|
111045
|
-
textOffset = 0;
|
|
111046
|
-
nameToDisplay = "";
|
|
111047
|
-
}
|
|
111048
|
-
} else {
|
|
111049
|
-
textOffset = 0;
|
|
111050
|
-
nameToDisplay = "";
|
|
111051
|
-
}
|
|
111052
|
-
}
|
|
111198
|
+
const { textOffset, nameToDisplay } = getAnnotationNameInfo({
|
|
111199
|
+
name: name2,
|
|
111200
|
+
width,
|
|
111201
|
+
hasAPoint,
|
|
111202
|
+
pointiness,
|
|
111203
|
+
forward,
|
|
111204
|
+
charWidth: charWidth2,
|
|
111205
|
+
truncateLabelsThatDoNotFit,
|
|
111206
|
+
onlyShowLabelsThatDoNotFit,
|
|
111207
|
+
annotation
|
|
111208
|
+
});
|
|
111053
111209
|
let _textColor = textColor;
|
|
111054
111210
|
if (!textColor) {
|
|
111055
111211
|
try {
|
|
@@ -116968,7 +117124,7 @@ function showFileDialog({ multiple = false, onSelect }) {
|
|
|
116968
117124
|
input.click();
|
|
116969
117125
|
}
|
|
116970
117126
|
__name(showFileDialog, "showFileDialog");
|
|
116971
|
-
const version = "0.8.
|
|
117127
|
+
const version = "0.8.31";
|
|
116972
117128
|
const packageJson = {
|
|
116973
117129
|
version
|
|
116974
117130
|
};
|
|
@@ -117886,7 +118042,7 @@ const fileCommandDefs = __spreadValues(__spreadProps(__spreadValues({
|
|
|
117886
118042
|
},
|
|
117887
118043
|
exportSequenceAsTeselagenJson: {
|
|
117888
118044
|
name: "Download Teselagen JSON File",
|
|
117889
|
-
handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson"), "handler")
|
|
118045
|
+
handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson", { getAcceptedInsertChars: props.getAcceptedInsertChars }), "handler")
|
|
117890
118046
|
},
|
|
117891
118047
|
viewProperties: {
|
|
117892
118048
|
handler: /* @__PURE__ */ __name((props) => props.propertiesViewOpen(), "handler")
|
|
@@ -120697,6 +120853,7 @@ const _SequenceInputNoHotkeys = class _SequenceInputNoHotkeys extends React__def
|
|
|
120697
120853
|
caretPosition: caretPosition2,
|
|
120698
120854
|
sequenceData: sequenceData2,
|
|
120699
120855
|
maxInsertSize,
|
|
120856
|
+
getAcceptedInsertChars,
|
|
120700
120857
|
showAminoAcidUnitAsCodon
|
|
120701
120858
|
} = this.props;
|
|
120702
120859
|
const { charsToInsert, hasTempError } = this.state;
|
|
@@ -120732,7 +120889,8 @@ const _SequenceInputNoHotkeys = class _SequenceInputNoHotkeys extends React__def
|
|
|
120732
120889
|
const [sanitizedVal, warnings] = filterSequenceString(
|
|
120733
120890
|
e.target.value,
|
|
120734
120891
|
__spreadProps(__spreadValues({}, sequenceData2), {
|
|
120735
|
-
name: void 0
|
|
120892
|
+
name: void 0,
|
|
120893
|
+
getAcceptedInsertChars
|
|
120736
120894
|
})
|
|
120737
120895
|
);
|
|
120738
120896
|
if (warnings.length) {
|
|
@@ -121611,7 +121769,8 @@ function VectorInteractionHOC(Component2) {
|
|
|
121611
121769
|
onPaste,
|
|
121612
121770
|
disableBpEditing,
|
|
121613
121771
|
sequenceData: sequenceData2,
|
|
121614
|
-
maxInsertSize
|
|
121772
|
+
maxInsertSize,
|
|
121773
|
+
getAcceptedInsertChars
|
|
121615
121774
|
} = this.props;
|
|
121616
121775
|
if (disableBpEditing) {
|
|
121617
121776
|
return this.createDisableBpEditingMsg();
|
|
@@ -121650,7 +121809,8 @@ function VectorInteractionHOC(Component2) {
|
|
|
121650
121809
|
topLevelSeqData: sequenceData2,
|
|
121651
121810
|
provideNewIdsForAnnotations: true,
|
|
121652
121811
|
annotationsAsObjects: true,
|
|
121653
|
-
noCdsTranslations: true
|
|
121812
|
+
noCdsTranslations: true,
|
|
121813
|
+
getAcceptedInsertChars
|
|
121654
121814
|
});
|
|
121655
121815
|
if (!seqDataToInsert.sequence.length)
|
|
121656
121816
|
return window.toastr.warning("Sorry no valid base pairs to paste");
|
|
@@ -121670,7 +121830,8 @@ function VectorInteractionHOC(Component2) {
|
|
|
121670
121830
|
selectionLayer: selectionLayer2,
|
|
121671
121831
|
copyOptions: copyOptions2,
|
|
121672
121832
|
disableBpEditing,
|
|
121673
|
-
readOnly: readOnly2
|
|
121833
|
+
readOnly: readOnly2,
|
|
121834
|
+
getAcceptedInsertChars
|
|
121674
121835
|
} = this.props;
|
|
121675
121836
|
const onCut = this.props.onCut || this.props.onCopy || noop$8;
|
|
121676
121837
|
const seqData = tidyUpSequenceData(
|
|
@@ -121694,7 +121855,8 @@ function VectorInteractionHOC(Component2) {
|
|
|
121694
121855
|
{
|
|
121695
121856
|
doNotRemoveInvalidChars: true,
|
|
121696
121857
|
annotationsAsObjects: true,
|
|
121697
|
-
includeProteinSequence: true
|
|
121858
|
+
includeProteinSequence: true,
|
|
121859
|
+
getAcceptedInsertChars
|
|
121698
121860
|
}
|
|
121699
121861
|
);
|
|
121700
121862
|
if (!(this.sequenceDataToCopy || {}).textToCopy && !seqData.sequence.length)
|
|
@@ -121712,7 +121874,8 @@ function VectorInteractionHOC(Component2) {
|
|
|
121712
121874
|
e,
|
|
121713
121875
|
tidyUpSequenceData(seqData, {
|
|
121714
121876
|
doNotRemoveInvalidChars: true,
|
|
121715
|
-
annotationsAsObjects: true
|
|
121877
|
+
annotationsAsObjects: true,
|
|
121878
|
+
getAcceptedInsertChars
|
|
121716
121879
|
}),
|
|
121717
121880
|
this.props
|
|
121718
121881
|
);
|
|
@@ -121762,6 +121925,7 @@ function VectorInteractionHOC(Component2) {
|
|
|
121762
121925
|
readOnly: readOnly2,
|
|
121763
121926
|
disableBpEditing,
|
|
121764
121927
|
maxInsertSize,
|
|
121928
|
+
getAcceptedInsertChars,
|
|
121765
121929
|
showAminoAcidUnitAsCodon
|
|
121766
121930
|
} = this.props;
|
|
121767
121931
|
const sequenceLength = sequenceData2.sequence.length;
|
|
@@ -121781,6 +121945,7 @@ function VectorInteractionHOC(Component2) {
|
|
|
121781
121945
|
sequenceLength,
|
|
121782
121946
|
caretPosition: caretPosition2,
|
|
121783
121947
|
maxInsertSize,
|
|
121948
|
+
getAcceptedInsertChars,
|
|
121784
121949
|
showAminoAcidUnitAsCodon,
|
|
121785
121950
|
handleInsert: /* @__PURE__ */ __name((seqDataToInsert) => __async(this, null, function* () {
|
|
121786
121951
|
yield insertAndSelectHelper({
|
|
@@ -127473,6 +127638,30 @@ const sizeSchema = /* @__PURE__ */ __name((isProtein2) => ({
|
|
|
127473
127638
|
}) : /* @__PURE__ */ React__default.createElement("span", null, "(", base1Range.start, "-", base1Range.end, ")")));
|
|
127474
127639
|
}, "render")
|
|
127475
127640
|
}), "sizeSchema");
|
|
127641
|
+
const getMemoOrfs = /* @__PURE__ */ (() => {
|
|
127642
|
+
let lastDeps;
|
|
127643
|
+
let lastResult;
|
|
127644
|
+
return (editorState) => {
|
|
127645
|
+
const {
|
|
127646
|
+
sequenceData: sequenceData2,
|
|
127647
|
+
minimumOrfSize: minimumOrfSize2,
|
|
127648
|
+
useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
|
|
127649
|
+
} = editorState;
|
|
127650
|
+
const { sequence: sequence2, circular: circular2 } = sequenceData2;
|
|
127651
|
+
const deps = {
|
|
127652
|
+
sequence: sequence2,
|
|
127653
|
+
circular: circular2,
|
|
127654
|
+
minimumOrfSize: minimumOrfSize2,
|
|
127655
|
+
useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
|
|
127656
|
+
};
|
|
127657
|
+
if (lastResult && isEqual$3(deps, lastDeps)) {
|
|
127658
|
+
return lastResult;
|
|
127659
|
+
}
|
|
127660
|
+
lastResult = selectors.orfsSelector(editorState);
|
|
127661
|
+
lastDeps = deps;
|
|
127662
|
+
return lastResult;
|
|
127663
|
+
};
|
|
127664
|
+
})();
|
|
127476
127665
|
var lodash$1 = { exports: {} };
|
|
127477
127666
|
/**
|
|
127478
127667
|
* @license
|
|
@@ -138028,10 +138217,16 @@ function GlobalDialog(props) {
|
|
|
138028
138217
|
hideDialog();
|
|
138029
138218
|
};
|
|
138030
138219
|
}, []);
|
|
138220
|
+
useEffect(() => {
|
|
138221
|
+
dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
|
|
138222
|
+
if (editorName) {
|
|
138223
|
+
const slot = dialogHolder[editorName] = dialogHolder[editorName] || {};
|
|
138224
|
+
slot.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
|
|
138225
|
+
}
|
|
138226
|
+
}, [editorName]);
|
|
138031
138227
|
if (dialogHolder.editorName && editorName && dialogHolder.editorName !== editorName) {
|
|
138032
138228
|
return null;
|
|
138033
138229
|
}
|
|
138034
|
-
dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
|
|
138035
138230
|
const Comp = dialogHolder.CustomModalComponent || dialogOverrides[dialogHolder.overrideName] || Dialogs[dialogHolder.dialogType];
|
|
138036
138231
|
if (!Comp) return null;
|
|
138037
138232
|
return /* @__PURE__ */ React__default.createElement(
|
|
@@ -142795,6 +142990,8 @@ const userDefinedHandlersAndOpts = [
|
|
|
142795
142990
|
"enzymeManageOverride",
|
|
142796
142991
|
"enzymeGroupsOverride",
|
|
142797
142992
|
"additionalEnzymes",
|
|
142993
|
+
"getAcceptedInsertChars",
|
|
142994
|
+
"maxInsertSize",
|
|
142798
142995
|
"onDelete",
|
|
142799
142996
|
"onCopy",
|
|
142800
142997
|
"autoAnnotateFeatures",
|
|
@@ -144568,7 +144765,7 @@ const OrfProperties$1 = compose(
|
|
|
144568
144765
|
readOnly: readOnly2,
|
|
144569
144766
|
annotationVisibility: annotationVisibility2,
|
|
144570
144767
|
useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2,
|
|
144571
|
-
orfs:
|
|
144768
|
+
orfs: getMemoOrfs(editorState),
|
|
144572
144769
|
sequenceLength: sequence2.length,
|
|
144573
144770
|
sequenceData: sequenceData2,
|
|
144574
144771
|
minimumOrfSize: minimumOrfSize2
|
|
@@ -144758,7 +144955,7 @@ const TranslationProperties$1 = compose(
|
|
|
144758
144955
|
return {
|
|
144759
144956
|
readOnly: readOnly2,
|
|
144760
144957
|
translations: selectors.translationsSelector(editorState),
|
|
144761
|
-
orfs:
|
|
144958
|
+
orfs: getMemoOrfs(editorState),
|
|
144762
144959
|
annotationVisibility: annotationVisibility2,
|
|
144763
144960
|
sequenceLength: (sequenceData2.sequence || "").length,
|
|
144764
144961
|
sequenceData: sequenceData2
|
|
@@ -146043,6 +146240,7 @@ const _Editor = class _Editor extends React__default.Component {
|
|
|
146043
146240
|
hoveredId,
|
|
146044
146241
|
isFullscreen,
|
|
146045
146242
|
maxInsertSize,
|
|
146243
|
+
getAcceptedInsertChars,
|
|
146046
146244
|
showAminoAcidUnitAsCodon,
|
|
146047
146245
|
maxAnnotationsToDisplay,
|
|
146048
146246
|
minHeight = 400,
|
|
@@ -146232,6 +146430,7 @@ const _Editor = class _Editor extends React__default.Component {
|
|
|
146232
146430
|
}), panelPropsToSpread), {
|
|
146233
146431
|
editorName,
|
|
146234
146432
|
maxInsertSize,
|
|
146433
|
+
getAcceptedInsertChars,
|
|
146235
146434
|
showAminoAcidUnitAsCodon,
|
|
146236
146435
|
isProtein: sequenceData2.isProtein,
|
|
146237
146436
|
onlyShowLabelsThatDoNotFit,
|