@teselagen/ove 0.8.28 → 0.8.30
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 +448 -258
- package/index.es.js +448 -258
- package/index.umd.js +448 -258
- 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/LinearView/index.js +4 -3
- 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/withEditorInteractions/createSequenceInputPopup.js +4 -2
- package/src/withEditorInteractions/index.js +12 -5
- package/src/withEditorProps/index.js +21 -8
package/index.cjs.js
CHANGED
|
@@ -9255,6 +9255,195 @@ function DialogFooter({
|
|
|
9255
9255
|
);
|
|
9256
9256
|
}
|
|
9257
9257
|
__name(DialogFooter, "DialogFooter");
|
|
9258
|
+
var NOT_FOUND = "NOT_FOUND";
|
|
9259
|
+
function createSingletonCache(equals) {
|
|
9260
|
+
var entry;
|
|
9261
|
+
return {
|
|
9262
|
+
get: /* @__PURE__ */ __name(function get7(key) {
|
|
9263
|
+
if (entry && equals(entry.key, key)) {
|
|
9264
|
+
return entry.value;
|
|
9265
|
+
}
|
|
9266
|
+
return NOT_FOUND;
|
|
9267
|
+
}, "get"),
|
|
9268
|
+
put: /* @__PURE__ */ __name(function put(key, value) {
|
|
9269
|
+
entry = {
|
|
9270
|
+
key,
|
|
9271
|
+
value
|
|
9272
|
+
};
|
|
9273
|
+
}, "put"),
|
|
9274
|
+
getEntries: /* @__PURE__ */ __name(function getEntries() {
|
|
9275
|
+
return entry ? [entry] : [];
|
|
9276
|
+
}, "getEntries"),
|
|
9277
|
+
clear: /* @__PURE__ */ __name(function clear3() {
|
|
9278
|
+
entry = void 0;
|
|
9279
|
+
}, "clear")
|
|
9280
|
+
};
|
|
9281
|
+
}
|
|
9282
|
+
__name(createSingletonCache, "createSingletonCache");
|
|
9283
|
+
function createLruCache(maxSize, equals) {
|
|
9284
|
+
var entries2 = [];
|
|
9285
|
+
function get7(key) {
|
|
9286
|
+
var cacheIndex = entries2.findIndex(function(entry2) {
|
|
9287
|
+
return equals(key, entry2.key);
|
|
9288
|
+
});
|
|
9289
|
+
if (cacheIndex > -1) {
|
|
9290
|
+
var entry = entries2[cacheIndex];
|
|
9291
|
+
if (cacheIndex > 0) {
|
|
9292
|
+
entries2.splice(cacheIndex, 1);
|
|
9293
|
+
entries2.unshift(entry);
|
|
9294
|
+
}
|
|
9295
|
+
return entry.value;
|
|
9296
|
+
}
|
|
9297
|
+
return NOT_FOUND;
|
|
9298
|
+
}
|
|
9299
|
+
__name(get7, "get");
|
|
9300
|
+
function put(key, value) {
|
|
9301
|
+
if (get7(key) === NOT_FOUND) {
|
|
9302
|
+
entries2.unshift({
|
|
9303
|
+
key,
|
|
9304
|
+
value
|
|
9305
|
+
});
|
|
9306
|
+
if (entries2.length > maxSize) {
|
|
9307
|
+
entries2.pop();
|
|
9308
|
+
}
|
|
9309
|
+
}
|
|
9310
|
+
}
|
|
9311
|
+
__name(put, "put");
|
|
9312
|
+
function getEntries() {
|
|
9313
|
+
return entries2;
|
|
9314
|
+
}
|
|
9315
|
+
__name(getEntries, "getEntries");
|
|
9316
|
+
function clear3() {
|
|
9317
|
+
entries2 = [];
|
|
9318
|
+
}
|
|
9319
|
+
__name(clear3, "clear");
|
|
9320
|
+
return {
|
|
9321
|
+
get: get7,
|
|
9322
|
+
put,
|
|
9323
|
+
getEntries,
|
|
9324
|
+
clear: clear3
|
|
9325
|
+
};
|
|
9326
|
+
}
|
|
9327
|
+
__name(createLruCache, "createLruCache");
|
|
9328
|
+
var defaultEqualityCheck = /* @__PURE__ */ __name(function defaultEqualityCheck2(a2, b3) {
|
|
9329
|
+
return a2 === b3;
|
|
9330
|
+
}, "defaultEqualityCheck");
|
|
9331
|
+
function createCacheKeyComparator(equalityCheck) {
|
|
9332
|
+
return /* @__PURE__ */ __name(function areArgumentsShallowlyEqual(prev, next) {
|
|
9333
|
+
if (prev === null || next === null || prev.length !== next.length) {
|
|
9334
|
+
return false;
|
|
9335
|
+
}
|
|
9336
|
+
var length = prev.length;
|
|
9337
|
+
for (var i = 0; i < length; i++) {
|
|
9338
|
+
if (!equalityCheck(prev[i], next[i])) {
|
|
9339
|
+
return false;
|
|
9340
|
+
}
|
|
9341
|
+
}
|
|
9342
|
+
return true;
|
|
9343
|
+
}, "areArgumentsShallowlyEqual");
|
|
9344
|
+
}
|
|
9345
|
+
__name(createCacheKeyComparator, "createCacheKeyComparator");
|
|
9346
|
+
function defaultMemoize(func, equalityCheckOrOptions) {
|
|
9347
|
+
var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
|
|
9348
|
+
equalityCheck: equalityCheckOrOptions
|
|
9349
|
+
};
|
|
9350
|
+
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;
|
|
9351
|
+
var comparator = createCacheKeyComparator(equalityCheck);
|
|
9352
|
+
var cache2 = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
|
|
9353
|
+
function memoized() {
|
|
9354
|
+
var value = cache2.get(arguments);
|
|
9355
|
+
if (value === NOT_FOUND) {
|
|
9356
|
+
value = func.apply(null, arguments);
|
|
9357
|
+
if (resultEqualityCheck) {
|
|
9358
|
+
var entries2 = cache2.getEntries();
|
|
9359
|
+
var matchingEntry = entries2.find(function(entry) {
|
|
9360
|
+
return resultEqualityCheck(entry.value, value);
|
|
9361
|
+
});
|
|
9362
|
+
if (matchingEntry) {
|
|
9363
|
+
value = matchingEntry.value;
|
|
9364
|
+
}
|
|
9365
|
+
}
|
|
9366
|
+
cache2.put(arguments, value);
|
|
9367
|
+
}
|
|
9368
|
+
return value;
|
|
9369
|
+
}
|
|
9370
|
+
__name(memoized, "memoized");
|
|
9371
|
+
memoized.clearCache = function() {
|
|
9372
|
+
return cache2.clear();
|
|
9373
|
+
};
|
|
9374
|
+
return memoized;
|
|
9375
|
+
}
|
|
9376
|
+
__name(defaultMemoize, "defaultMemoize");
|
|
9377
|
+
function getDependencies(funcs) {
|
|
9378
|
+
var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
|
|
9379
|
+
if (!dependencies.every(function(dep) {
|
|
9380
|
+
return typeof dep === "function";
|
|
9381
|
+
})) {
|
|
9382
|
+
var dependencyTypes = dependencies.map(function(dep) {
|
|
9383
|
+
return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
|
|
9384
|
+
}).join(", ");
|
|
9385
|
+
throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
|
|
9386
|
+
}
|
|
9387
|
+
return dependencies;
|
|
9388
|
+
}
|
|
9389
|
+
__name(getDependencies, "getDependencies");
|
|
9390
|
+
function createSelectorCreator(memoize2) {
|
|
9391
|
+
for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
9392
|
+
memoizeOptionsFromArgs[_key - 1] = arguments[_key];
|
|
9393
|
+
}
|
|
9394
|
+
var createSelector2 = /* @__PURE__ */ __name(function createSelector3() {
|
|
9395
|
+
for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
9396
|
+
funcs[_key2] = arguments[_key2];
|
|
9397
|
+
}
|
|
9398
|
+
var _recomputations = 0;
|
|
9399
|
+
var _lastResult;
|
|
9400
|
+
var directlyPassedOptions = {
|
|
9401
|
+
memoizeOptions: void 0
|
|
9402
|
+
};
|
|
9403
|
+
var resultFunc = funcs.pop();
|
|
9404
|
+
if (typeof resultFunc === "object") {
|
|
9405
|
+
directlyPassedOptions = resultFunc;
|
|
9406
|
+
resultFunc = funcs.pop();
|
|
9407
|
+
}
|
|
9408
|
+
if (typeof resultFunc !== "function") {
|
|
9409
|
+
throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
|
|
9410
|
+
}
|
|
9411
|
+
var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
|
|
9412
|
+
var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];
|
|
9413
|
+
var dependencies = getDependencies(funcs);
|
|
9414
|
+
var memoizedResultFunc = memoize2.apply(void 0, [/* @__PURE__ */ __name(function recomputationWrapper() {
|
|
9415
|
+
_recomputations++;
|
|
9416
|
+
return resultFunc.apply(null, arguments);
|
|
9417
|
+
}, "recomputationWrapper")].concat(finalMemoizeOptions));
|
|
9418
|
+
var selector = memoize2(/* @__PURE__ */ __name(function dependenciesChecker() {
|
|
9419
|
+
var params = [];
|
|
9420
|
+
var length = dependencies.length;
|
|
9421
|
+
for (var i = 0; i < length; i++) {
|
|
9422
|
+
params.push(dependencies[i].apply(null, arguments));
|
|
9423
|
+
}
|
|
9424
|
+
_lastResult = memoizedResultFunc.apply(null, params);
|
|
9425
|
+
return _lastResult;
|
|
9426
|
+
}, "dependenciesChecker"));
|
|
9427
|
+
Object.assign(selector, {
|
|
9428
|
+
resultFunc,
|
|
9429
|
+
memoizedResultFunc,
|
|
9430
|
+
dependencies,
|
|
9431
|
+
lastResult: /* @__PURE__ */ __name(function lastResult() {
|
|
9432
|
+
return _lastResult;
|
|
9433
|
+
}, "lastResult"),
|
|
9434
|
+
recomputations: /* @__PURE__ */ __name(function recomputations() {
|
|
9435
|
+
return _recomputations;
|
|
9436
|
+
}, "recomputations"),
|
|
9437
|
+
resetRecomputations: /* @__PURE__ */ __name(function resetRecomputations() {
|
|
9438
|
+
return _recomputations = 0;
|
|
9439
|
+
}, "resetRecomputations")
|
|
9440
|
+
});
|
|
9441
|
+
return selector;
|
|
9442
|
+
}, "createSelector");
|
|
9443
|
+
return createSelector2;
|
|
9444
|
+
}
|
|
9445
|
+
__name(createSelectorCreator, "createSelectorCreator");
|
|
9446
|
+
var createSelector = /* @__PURE__ */ createSelectorCreator(defaultMemoize);
|
|
9258
9447
|
function useCombinedRefs() {
|
|
9259
9448
|
for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
9260
9449
|
refs[_key] = arguments[_key];
|
|
@@ -56651,21 +56840,27 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
|
|
|
56651
56840
|
}
|
|
56652
56841
|
return false;
|
|
56653
56842
|
});
|
|
56843
|
+
const dtFormParamsSelector = React.useMemo(
|
|
56844
|
+
() => createSelector(
|
|
56845
|
+
(state2) => reduxForm.formValueSelector(formName)(
|
|
56846
|
+
state2,
|
|
56847
|
+
"reduxFormCellValidation",
|
|
56848
|
+
"reduxFormEntities",
|
|
56849
|
+
"reduxFormQueryParams",
|
|
56850
|
+
"reduxFormSelectedEntityIdMap"
|
|
56851
|
+
),
|
|
56852
|
+
(result) => result
|
|
56853
|
+
// identity, but memoized
|
|
56854
|
+
),
|
|
56855
|
+
[formName]
|
|
56856
|
+
);
|
|
56654
56857
|
const {
|
|
56655
56858
|
reduxFormCellValidation: _reduxFormCellValidation,
|
|
56656
56859
|
reduxFormEditingCell,
|
|
56657
56860
|
reduxFormEntities,
|
|
56658
56861
|
reduxFormQueryParams: _reduxFormQueryParams = {},
|
|
56659
56862
|
reduxFormSelectedEntityIdMap: _reduxFormSelectedEntityIdMap = {}
|
|
56660
|
-
} = reactRedux.useSelector(
|
|
56661
|
-
return reduxForm.formValueSelector(formName)(
|
|
56662
|
-
state2,
|
|
56663
|
-
"reduxFormCellValidation",
|
|
56664
|
-
"reduxFormEntities",
|
|
56665
|
-
"reduxFormQueryParams",
|
|
56666
|
-
"reduxFormSelectedEntityIdMap"
|
|
56667
|
-
);
|
|
56668
|
-
}, "dtFormParamsSelector"));
|
|
56863
|
+
} = reactRedux.useSelector(dtFormParamsSelector);
|
|
56669
56864
|
const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
|
|
56670
56865
|
_reduxFormCellValidation
|
|
56671
56866
|
);
|
|
@@ -56972,11 +57167,9 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
|
|
|
56972
57167
|
newTableConfig = {
|
|
56973
57168
|
fieldOptions: []
|
|
56974
57169
|
};
|
|
56975
|
-
|
|
56976
|
-
|
|
56977
|
-
|
|
56978
|
-
return newTableConfig;
|
|
56979
|
-
}
|
|
57170
|
+
}
|
|
57171
|
+
if (isEqual$3(prev, newTableConfig)) {
|
|
57172
|
+
return prev;
|
|
56980
57173
|
} else {
|
|
56981
57174
|
return newTableConfig;
|
|
56982
57175
|
}
|
|
@@ -74973,14 +75166,16 @@ function filterSequenceString(sequenceString = "", {
|
|
|
74973
75166
|
name: name2,
|
|
74974
75167
|
isProtein: isProtein2,
|
|
74975
75168
|
isRna: isRna2,
|
|
74976
|
-
isMixedRnaAndDna
|
|
75169
|
+
isMixedRnaAndDna,
|
|
75170
|
+
getAcceptedInsertChars
|
|
74977
75171
|
} = {}) {
|
|
74978
|
-
const
|
|
75172
|
+
const sequenceTypeInfo = {
|
|
74979
75173
|
isOligo: isOligo2,
|
|
74980
75174
|
isProtein: isProtein2,
|
|
74981
75175
|
isRna: isRna2,
|
|
74982
75176
|
isMixedRnaAndDna
|
|
74983
|
-
}
|
|
75177
|
+
};
|
|
75178
|
+
const acceptedChars = isFunction$2(getAcceptedInsertChars) ? getAcceptedInsertChars(sequenceTypeInfo) : getAcceptedChars(sequenceTypeInfo);
|
|
74984
75179
|
const replaceChars = getReplaceChars({
|
|
74985
75180
|
isOligo: isOligo2,
|
|
74986
75181
|
isProtein: isProtein2,
|
|
@@ -75216,6 +75411,7 @@ function tidyUpSequenceData(pSeqData, options = {}) {
|
|
|
75216
75411
|
doNotProvideIdsForAnnotations,
|
|
75217
75412
|
noCdsTranslations,
|
|
75218
75413
|
convertAnnotationsFromAAIndices,
|
|
75414
|
+
getAcceptedInsertChars,
|
|
75219
75415
|
topLevelSeqData
|
|
75220
75416
|
} = options;
|
|
75221
75417
|
let seqData = cloneDeep(pSeqData);
|
|
@@ -75247,13 +75443,16 @@ function tidyUpSequenceData(pSeqData, options = {}) {
|
|
|
75247
75443
|
if (!doNotRemoveInvalidChars) {
|
|
75248
75444
|
if (seqData.isProtein) {
|
|
75249
75445
|
const [newSeq] = filterSequenceString(seqData.proteinSequence, __spreadProps(__spreadValues({}, topLevelSeqData || seqData), {
|
|
75250
|
-
isProtein: true
|
|
75446
|
+
isProtein: true,
|
|
75447
|
+
getAcceptedInsertChars
|
|
75251
75448
|
}));
|
|
75252
75449
|
seqData.proteinSequence = newSeq;
|
|
75253
75450
|
} else {
|
|
75254
|
-
const [newSeq] = filterSequenceString(seqData.sequence, __spreadValues({
|
|
75451
|
+
const [newSeq] = filterSequenceString(seqData.sequence, __spreadProps(__spreadValues({
|
|
75255
75452
|
additionalValidChars
|
|
75256
|
-
}, topLevelSeqData || seqData)
|
|
75453
|
+
}, topLevelSeqData || seqData), {
|
|
75454
|
+
getAcceptedInsertChars
|
|
75455
|
+
}));
|
|
75257
75456
|
seqData.sequence = newSeq;
|
|
75258
75457
|
}
|
|
75259
75458
|
}
|
|
@@ -97609,195 +97808,6 @@ function sequenceSelector(state2) {
|
|
|
97609
97808
|
return sequenceDataSelector(state2).sequence;
|
|
97610
97809
|
}
|
|
97611
97810
|
__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
97811
|
const restrictionEnzymesSelector = createSelector(
|
|
97802
97812
|
() => defaultEnzymesByName,
|
|
97803
97813
|
(state2, additionalEnzymes) => {
|
|
@@ -97823,7 +97833,34 @@ const restrictionEnzymesSelector = createSelector(
|
|
|
97823
97833
|
const cutsiteLabelColorSelector = createSelector(sequenceDataSelector, function(sequenceData2) {
|
|
97824
97834
|
return sequenceData2.cutsiteLabelColors;
|
|
97825
97835
|
});
|
|
97826
|
-
|
|
97836
|
+
const cutsitesCache = [];
|
|
97837
|
+
function getCachedResult(argsObj) {
|
|
97838
|
+
const idx = cutsitesCache.findIndex(
|
|
97839
|
+
(entry) => entry && isEqual$3(entry.args, argsObj)
|
|
97840
|
+
);
|
|
97841
|
+
if (idx === -1) return;
|
|
97842
|
+
const hit = cutsitesCache[idx];
|
|
97843
|
+
return hit.result;
|
|
97844
|
+
}
|
|
97845
|
+
__name(getCachedResult, "getCachedResult");
|
|
97846
|
+
function setCachedResult(argsObj, result, cacheSize = 1) {
|
|
97847
|
+
cutsitesCache.push({
|
|
97848
|
+
args: argsObj,
|
|
97849
|
+
result
|
|
97850
|
+
});
|
|
97851
|
+
if (cutsitesCache.length > cacheSize) cutsitesCache.shift();
|
|
97852
|
+
}
|
|
97853
|
+
__name(setCachedResult, "setCachedResult");
|
|
97854
|
+
function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors, editorSize = 1) {
|
|
97855
|
+
const cachedResult = getCachedResult({
|
|
97856
|
+
sequence: sequence2,
|
|
97857
|
+
circular: circular2,
|
|
97858
|
+
enzymeList,
|
|
97859
|
+
cutsiteLabelColors
|
|
97860
|
+
});
|
|
97861
|
+
if (cachedResult) {
|
|
97862
|
+
return cachedResult;
|
|
97863
|
+
}
|
|
97827
97864
|
const cutsitesByName = getLowerCaseObj(
|
|
97828
97865
|
getCutsitesFromSequence(sequence2, circular2, map$3(enzymeList))
|
|
97829
97866
|
);
|
|
@@ -97856,11 +97893,22 @@ function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors)
|
|
|
97856
97893
|
const cutsitesArray = flatMap(cutsitesByName, function(cutsitesForEnzyme) {
|
|
97857
97894
|
return cutsitesForEnzyme;
|
|
97858
97895
|
});
|
|
97859
|
-
|
|
97896
|
+
const result = {
|
|
97860
97897
|
cutsitesByName,
|
|
97861
97898
|
cutsitesById,
|
|
97862
97899
|
cutsitesArray
|
|
97863
97900
|
};
|
|
97901
|
+
setCachedResult(
|
|
97902
|
+
{
|
|
97903
|
+
sequence: sequence2,
|
|
97904
|
+
circular: circular2,
|
|
97905
|
+
enzymeList,
|
|
97906
|
+
cutsiteLabelColors
|
|
97907
|
+
},
|
|
97908
|
+
result,
|
|
97909
|
+
editorSize
|
|
97910
|
+
);
|
|
97911
|
+
return result;
|
|
97864
97912
|
}
|
|
97865
97913
|
__name(cutsitesSelector, "cutsitesSelector");
|
|
97866
97914
|
const cutsitesSelector$1 = createSelector(
|
|
@@ -97868,6 +97916,7 @@ const cutsitesSelector$1 = createSelector(
|
|
|
97868
97916
|
circularSelector,
|
|
97869
97917
|
restrictionEnzymesSelector,
|
|
97870
97918
|
cutsiteLabelColorSelector,
|
|
97919
|
+
(editorState) => editorState.editorSize,
|
|
97871
97920
|
cutsitesSelector
|
|
97872
97921
|
);
|
|
97873
97922
|
function divideBy3(num, shouldDivideBy3) {
|
|
@@ -99283,11 +99332,12 @@ function showDialog({
|
|
|
99283
99332
|
props,
|
|
99284
99333
|
overrideName
|
|
99285
99334
|
}) {
|
|
99286
|
-
var _a2;
|
|
99335
|
+
var _a2, _b2, _c, _d;
|
|
99287
99336
|
dialogHolder.dialogType = dialogType;
|
|
99288
99337
|
if (!dialogHolder.dialogType && ModalComponent) {
|
|
99289
99338
|
dialogHolder.dialogType = "TGCustomModal";
|
|
99290
99339
|
}
|
|
99340
|
+
dialogHolder.editorName = props == null ? void 0 : props.editorName;
|
|
99291
99341
|
if (document.activeElement && document.activeElement.closest(".veEditor")) {
|
|
99292
99342
|
let editorName;
|
|
99293
99343
|
(_a2 = document.activeElement.closest(".veEditor")) == null ? void 0 : _a2.className.split(" ").forEach((c2) => {
|
|
@@ -99301,16 +99351,28 @@ function showDialog({
|
|
|
99301
99351
|
dialogHolder.CustomModalComponent = ModalComponent;
|
|
99302
99352
|
dialogHolder.props = props;
|
|
99303
99353
|
dialogHolder.overrideName = overrideName;
|
|
99304
|
-
dialogHolder.
|
|
99354
|
+
if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
|
|
99355
|
+
(_c = (_b2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _b2.setUniqKeyToForceRerender) == null ? void 0 : _c.call(
|
|
99356
|
+
_b2,
|
|
99357
|
+
uuid()
|
|
99358
|
+
);
|
|
99359
|
+
} else {
|
|
99360
|
+
(_d = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _d.call(dialogHolder, uuid());
|
|
99361
|
+
}
|
|
99305
99362
|
}
|
|
99306
99363
|
__name(showDialog, "showDialog");
|
|
99307
99364
|
function hideDialog() {
|
|
99365
|
+
var _a2, _b2, _c;
|
|
99308
99366
|
delete dialogHolder.dialogType;
|
|
99309
99367
|
delete dialogHolder.CustomModalComponent;
|
|
99310
99368
|
delete dialogHolder.props;
|
|
99311
99369
|
delete dialogHolder.overrideName;
|
|
99370
|
+
if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
|
|
99371
|
+
(_b2 = (_a2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _a2.setUniqKeyToForceRerender) == null ? void 0 : _b2.call(_a2);
|
|
99372
|
+
} else {
|
|
99373
|
+
(_c = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _c.call(dialogHolder);
|
|
99374
|
+
}
|
|
99312
99375
|
delete dialogHolder.editorName;
|
|
99313
|
-
dialogHolder.setUniqKeyToForceRerender();
|
|
99314
99376
|
}
|
|
99315
99377
|
__name(hideDialog, "hideDialog");
|
|
99316
99378
|
const typeToDialogType = {
|
|
@@ -99585,7 +99647,8 @@ const handleSave = /* @__PURE__ */ __name((props) => (..._0) => __async(exports,
|
|
|
99585
99647
|
readOnly: readOnly2,
|
|
99586
99648
|
alwaysAllowSave,
|
|
99587
99649
|
sequenceData: sequenceData2,
|
|
99588
|
-
lastSavedIdUpdate: lastSavedIdUpdate2
|
|
99650
|
+
lastSavedIdUpdate: lastSavedIdUpdate2,
|
|
99651
|
+
getAcceptedInsertChars
|
|
99589
99652
|
} = props;
|
|
99590
99653
|
const saveHandler = opts2.isSaveAs ? onSaveAs || onSave : onSave;
|
|
99591
99654
|
const updateLastSavedIdToCurrent = /* @__PURE__ */ __name(() => {
|
|
@@ -99598,7 +99661,8 @@ const handleSave = /* @__PURE__ */ __name((props) => (..._0) => __async(exports,
|
|
|
99598
99661
|
opts2,
|
|
99599
99662
|
tidyUpSequenceData(sequenceData2, {
|
|
99600
99663
|
doNotRemoveInvalidChars: true,
|
|
99601
|
-
annotationsAsObjects: true
|
|
99664
|
+
annotationsAsObjects: true,
|
|
99665
|
+
getAcceptedInsertChars
|
|
99602
99666
|
}),
|
|
99603
99667
|
props,
|
|
99604
99668
|
updateLastSavedIdToCurrent
|
|
@@ -99780,8 +99844,8 @@ const withEditorProps = compose(
|
|
|
99780
99844
|
caretPositionOrRange,
|
|
99781
99845
|
options
|
|
99782
99846
|
} = props.beforeSequenceInsertOrDelete ? (yield props.beforeSequenceInsertOrDelete(
|
|
99783
|
-
tidyUpSequenceData(_sequenceDataToInsert),
|
|
99784
|
-
tidyUpSequenceData(_existingSequenceData),
|
|
99847
|
+
tidyUpSequenceData(_sequenceDataToInsert, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
|
|
99848
|
+
tidyUpSequenceData(_existingSequenceData, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
|
|
99785
99849
|
_caretPositionOrRange,
|
|
99786
99850
|
_options
|
|
99787
99851
|
)) || {} : {};
|
|
@@ -99944,7 +100008,11 @@ const getEditorState = createSelector(
|
|
|
99944
100008
|
(state2) => state2.VectorEditor,
|
|
99945
100009
|
(state2, editorName) => editorName,
|
|
99946
100010
|
(VectorEditor, editorName) => {
|
|
99947
|
-
|
|
100011
|
+
const editorState = VectorEditor[editorName];
|
|
100012
|
+
editorState && (editorState.editorSize = Object.values(VectorEditor).filter(
|
|
100013
|
+
(editorItem) => editorItem == null ? void 0 : editorItem.sequenceData
|
|
100014
|
+
).length);
|
|
100015
|
+
return editorState;
|
|
99948
100016
|
}
|
|
99949
100017
|
);
|
|
99950
100018
|
function mapStateToProps(state2, ownProps) {
|
|
@@ -99981,6 +100049,9 @@ function mapStateToProps(state2, ownProps) {
|
|
|
99981
100049
|
annotationTypePlural,
|
|
99982
100050
|
sequenceLength
|
|
99983
100051
|
);
|
|
100052
|
+
if (dialogHolder.editorName) {
|
|
100053
|
+
annotationToAdd = dialogHolder.editorName === editorName ? annotationToAdd : void 0;
|
|
100054
|
+
}
|
|
99984
100055
|
}
|
|
99985
100056
|
});
|
|
99986
100057
|
const toReturn = __spreadProps(__spreadValues({}, editorState), {
|
|
@@ -100208,13 +100279,15 @@ function getShowGCContent(state2, ownProps) {
|
|
|
100208
100279
|
return toRet;
|
|
100209
100280
|
}
|
|
100210
100281
|
__name(getShowGCContent, "getShowGCContent");
|
|
100211
|
-
function jsonToJson(incomingJson) {
|
|
100282
|
+
function jsonToJson(incomingJson, options) {
|
|
100283
|
+
const { getAcceptedInsertChars } = options || {};
|
|
100212
100284
|
return JSON.stringify(
|
|
100213
100285
|
omit$1(
|
|
100214
100286
|
cleanUpTeselagenJsonForExport(
|
|
100215
100287
|
tidyUpSequenceData(incomingJson, {
|
|
100216
100288
|
doNotRemoveInvalidChars: true,
|
|
100217
|
-
annotationsAsObjects: false
|
|
100289
|
+
annotationsAsObjects: false,
|
|
100290
|
+
getAcceptedInsertChars
|
|
100218
100291
|
})
|
|
100219
100292
|
),
|
|
100220
100293
|
[
|
|
@@ -110900,9 +110973,19 @@ const _AnnotationPositioner = class _AnnotationPositioner extends React.PureComp
|
|
|
110900
110973
|
};
|
|
110901
110974
|
__name(_AnnotationPositioner, "AnnotationPositioner");
|
|
110902
110975
|
let AnnotationPositioner = _AnnotationPositioner;
|
|
110976
|
+
let measureCanvas;
|
|
110977
|
+
function getAnnotationTextWidth(text2, fontSize = ANNOTATION_LABEL_FONT_WIDTH, fontFamily = "monospace") {
|
|
110978
|
+
if (!measureCanvas) {
|
|
110979
|
+
measureCanvas = document.createElement("canvas");
|
|
110980
|
+
}
|
|
110981
|
+
const ctx = measureCanvas.getContext("2d");
|
|
110982
|
+
ctx.font = `${fontSize}px ${fontFamily}`;
|
|
110983
|
+
return ctx.measureText(text2).width;
|
|
110984
|
+
}
|
|
110985
|
+
__name(getAnnotationTextWidth, "getAnnotationTextWidth");
|
|
110903
110986
|
const doesLabelFitInAnnotation = /* @__PURE__ */ __name((text2 = "", { range: range2, width }, charWidth2) => {
|
|
110904
|
-
const textLength = text2
|
|
110905
|
-
const widthMinusOne =
|
|
110987
|
+
const textLength = getAnnotationTextWidth(text2);
|
|
110988
|
+
const widthMinusOne = range2 ? getWidth(range2, charWidth2, 0) - ANNOTATION_LABEL_FONT_WIDTH * 2 : width - ANNOTATION_LABEL_FONT_WIDTH * 2;
|
|
110906
110989
|
return widthMinusOne > textLength;
|
|
110907
110990
|
}, "doesLabelFitInAnnotation");
|
|
110908
110991
|
function getAnnotationClassnames({ overlapsSelf }, { viewName, type: type2 }) {
|
|
@@ -110912,6 +110995,78 @@ function getAnnotationClassnames({ overlapsSelf }, { viewName, type: type2 }) {
|
|
|
110912
110995
|
});
|
|
110913
110996
|
}
|
|
110914
110997
|
__name(getAnnotationClassnames, "getAnnotationClassnames");
|
|
110998
|
+
function getAnnotationTextOffset({
|
|
110999
|
+
width,
|
|
111000
|
+
nameToDisplay,
|
|
111001
|
+
hasAPoint,
|
|
111002
|
+
pointiness,
|
|
111003
|
+
forward
|
|
111004
|
+
}) {
|
|
111005
|
+
return width / 2 - getAnnotationTextWidth(nameToDisplay) / 2 - (hasAPoint ? (pointiness / 2 + ANNOTATION_LABEL_FONT_WIDTH / 2) * (forward ? 1 : -1) : 0);
|
|
111006
|
+
}
|
|
111007
|
+
__name(getAnnotationTextOffset, "getAnnotationTextOffset");
|
|
111008
|
+
function getAnnotationNameInfo({
|
|
111009
|
+
name: name2,
|
|
111010
|
+
width,
|
|
111011
|
+
hasAPoint,
|
|
111012
|
+
pointiness,
|
|
111013
|
+
forward,
|
|
111014
|
+
charWidth: charWidth2,
|
|
111015
|
+
truncateLabelsThatDoNotFit,
|
|
111016
|
+
onlyShowLabelsThatDoNotFit,
|
|
111017
|
+
annotation
|
|
111018
|
+
}) {
|
|
111019
|
+
let nameToDisplay = name2;
|
|
111020
|
+
let textOffset = getAnnotationTextOffset({
|
|
111021
|
+
width,
|
|
111022
|
+
nameToDisplay,
|
|
111023
|
+
hasAPoint,
|
|
111024
|
+
pointiness,
|
|
111025
|
+
forward
|
|
111026
|
+
});
|
|
111027
|
+
const widthAvailableForText = width - ANNOTATION_LABEL_FONT_WIDTH * 2;
|
|
111028
|
+
if (!doesLabelFitInAnnotation(name2, { width }, charWidth2) || !onlyShowLabelsThatDoNotFit && ["parts", "features"].includes(annotation.annotationTypePlural)) {
|
|
111029
|
+
if (truncateLabelsThatDoNotFit) {
|
|
111030
|
+
let left2 = 0;
|
|
111031
|
+
let right2 = name2.length;
|
|
111032
|
+
let bestFit = "";
|
|
111033
|
+
while (left2 <= right2) {
|
|
111034
|
+
const mid = Math.floor((left2 + right2) / 2);
|
|
111035
|
+
const candidate = name2.slice(0, mid);
|
|
111036
|
+
const candidateWidth = getAnnotationTextWidth(candidate);
|
|
111037
|
+
if (candidateWidth <= widthAvailableForText) {
|
|
111038
|
+
if (candidate.length > bestFit.length) {
|
|
111039
|
+
bestFit = candidate;
|
|
111040
|
+
}
|
|
111041
|
+
left2 = mid + 1;
|
|
111042
|
+
} else {
|
|
111043
|
+
right2 = mid - 1;
|
|
111044
|
+
}
|
|
111045
|
+
}
|
|
111046
|
+
if (bestFit.length < name2.length) {
|
|
111047
|
+
bestFit = bestFit.slice(0, -2) + "..";
|
|
111048
|
+
}
|
|
111049
|
+
nameToDisplay = bestFit;
|
|
111050
|
+
if (nameToDisplay.length <= 3) {
|
|
111051
|
+
textOffset = 0;
|
|
111052
|
+
nameToDisplay = "";
|
|
111053
|
+
} else {
|
|
111054
|
+
textOffset = getAnnotationTextOffset({
|
|
111055
|
+
width,
|
|
111056
|
+
nameToDisplay,
|
|
111057
|
+
hasAPoint,
|
|
111058
|
+
pointiness,
|
|
111059
|
+
forward
|
|
111060
|
+
});
|
|
111061
|
+
}
|
|
111062
|
+
} else {
|
|
111063
|
+
textOffset = 0;
|
|
111064
|
+
nameToDisplay = "";
|
|
111065
|
+
}
|
|
111066
|
+
}
|
|
111067
|
+
return { textOffset, nameToDisplay };
|
|
111068
|
+
}
|
|
111069
|
+
__name(getAnnotationNameInfo, "getAnnotationNameInfo");
|
|
110915
111070
|
function PointedAnnotation(props) {
|
|
110916
111071
|
const {
|
|
110917
111072
|
className,
|
|
@@ -111047,27 +111202,17 @@ function PointedAnnotation(props) {
|
|
|
111047
111202
|
Q ${pointiness},${height / 2} ${0},${0}
|
|
111048
111203
|
z`;
|
|
111049
111204
|
}
|
|
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
|
-
}
|
|
111205
|
+
const { textOffset, nameToDisplay } = getAnnotationNameInfo({
|
|
111206
|
+
name: name2,
|
|
111207
|
+
width,
|
|
111208
|
+
hasAPoint,
|
|
111209
|
+
pointiness,
|
|
111210
|
+
forward,
|
|
111211
|
+
charWidth: charWidth2,
|
|
111212
|
+
truncateLabelsThatDoNotFit,
|
|
111213
|
+
onlyShowLabelsThatDoNotFit,
|
|
111214
|
+
annotation
|
|
111215
|
+
});
|
|
111071
111216
|
let _textColor = textColor;
|
|
111072
111217
|
if (!textColor) {
|
|
111073
111218
|
try {
|
|
@@ -116986,7 +117131,7 @@ function showFileDialog({ multiple = false, onSelect }) {
|
|
|
116986
117131
|
input.click();
|
|
116987
117132
|
}
|
|
116988
117133
|
__name(showFileDialog, "showFileDialog");
|
|
116989
|
-
const version = "0.8.
|
|
117134
|
+
const version = "0.8.30";
|
|
116990
117135
|
const packageJson = {
|
|
116991
117136
|
version
|
|
116992
117137
|
};
|
|
@@ -117904,7 +118049,7 @@ const fileCommandDefs = __spreadValues(__spreadProps(__spreadValues({
|
|
|
117904
118049
|
},
|
|
117905
118050
|
exportSequenceAsTeselagenJson: {
|
|
117906
118051
|
name: "Download Teselagen JSON File",
|
|
117907
|
-
handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson"), "handler")
|
|
118052
|
+
handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson", { getAcceptedInsertChars: props.getAcceptedInsertChars }), "handler")
|
|
117908
118053
|
},
|
|
117909
118054
|
viewProperties: {
|
|
117910
118055
|
handler: /* @__PURE__ */ __name((props) => props.propertiesViewOpen(), "handler")
|
|
@@ -120715,6 +120860,7 @@ const _SequenceInputNoHotkeys = class _SequenceInputNoHotkeys extends React.Comp
|
|
|
120715
120860
|
caretPosition: caretPosition2,
|
|
120716
120861
|
sequenceData: sequenceData2,
|
|
120717
120862
|
maxInsertSize,
|
|
120863
|
+
getAcceptedInsertChars,
|
|
120718
120864
|
showAminoAcidUnitAsCodon
|
|
120719
120865
|
} = this.props;
|
|
120720
120866
|
const { charsToInsert, hasTempError } = this.state;
|
|
@@ -120750,7 +120896,8 @@ const _SequenceInputNoHotkeys = class _SequenceInputNoHotkeys extends React.Comp
|
|
|
120750
120896
|
const [sanitizedVal, warnings] = filterSequenceString(
|
|
120751
120897
|
e.target.value,
|
|
120752
120898
|
__spreadProps(__spreadValues({}, sequenceData2), {
|
|
120753
|
-
name: void 0
|
|
120899
|
+
name: void 0,
|
|
120900
|
+
getAcceptedInsertChars
|
|
120754
120901
|
})
|
|
120755
120902
|
);
|
|
120756
120903
|
if (warnings.length) {
|
|
@@ -121629,7 +121776,8 @@ function VectorInteractionHOC(Component) {
|
|
|
121629
121776
|
onPaste,
|
|
121630
121777
|
disableBpEditing,
|
|
121631
121778
|
sequenceData: sequenceData2,
|
|
121632
|
-
maxInsertSize
|
|
121779
|
+
maxInsertSize,
|
|
121780
|
+
getAcceptedInsertChars
|
|
121633
121781
|
} = this.props;
|
|
121634
121782
|
if (disableBpEditing) {
|
|
121635
121783
|
return this.createDisableBpEditingMsg();
|
|
@@ -121668,7 +121816,8 @@ function VectorInteractionHOC(Component) {
|
|
|
121668
121816
|
topLevelSeqData: sequenceData2,
|
|
121669
121817
|
provideNewIdsForAnnotations: true,
|
|
121670
121818
|
annotationsAsObjects: true,
|
|
121671
|
-
noCdsTranslations: true
|
|
121819
|
+
noCdsTranslations: true,
|
|
121820
|
+
getAcceptedInsertChars
|
|
121672
121821
|
});
|
|
121673
121822
|
if (!seqDataToInsert.sequence.length)
|
|
121674
121823
|
return window.toastr.warning("Sorry no valid base pairs to paste");
|
|
@@ -121688,7 +121837,8 @@ function VectorInteractionHOC(Component) {
|
|
|
121688
121837
|
selectionLayer: selectionLayer2,
|
|
121689
121838
|
copyOptions: copyOptions2,
|
|
121690
121839
|
disableBpEditing,
|
|
121691
|
-
readOnly: readOnly2
|
|
121840
|
+
readOnly: readOnly2,
|
|
121841
|
+
getAcceptedInsertChars
|
|
121692
121842
|
} = this.props;
|
|
121693
121843
|
const onCut = this.props.onCut || this.props.onCopy || noop$8;
|
|
121694
121844
|
const seqData = tidyUpSequenceData(
|
|
@@ -121712,7 +121862,8 @@ function VectorInteractionHOC(Component) {
|
|
|
121712
121862
|
{
|
|
121713
121863
|
doNotRemoveInvalidChars: true,
|
|
121714
121864
|
annotationsAsObjects: true,
|
|
121715
|
-
includeProteinSequence: true
|
|
121865
|
+
includeProteinSequence: true,
|
|
121866
|
+
getAcceptedInsertChars
|
|
121716
121867
|
}
|
|
121717
121868
|
);
|
|
121718
121869
|
if (!(this.sequenceDataToCopy || {}).textToCopy && !seqData.sequence.length)
|
|
@@ -121730,7 +121881,8 @@ function VectorInteractionHOC(Component) {
|
|
|
121730
121881
|
e,
|
|
121731
121882
|
tidyUpSequenceData(seqData, {
|
|
121732
121883
|
doNotRemoveInvalidChars: true,
|
|
121733
|
-
annotationsAsObjects: true
|
|
121884
|
+
annotationsAsObjects: true,
|
|
121885
|
+
getAcceptedInsertChars
|
|
121734
121886
|
}),
|
|
121735
121887
|
this.props
|
|
121736
121888
|
);
|
|
@@ -121780,6 +121932,7 @@ function VectorInteractionHOC(Component) {
|
|
|
121780
121932
|
readOnly: readOnly2,
|
|
121781
121933
|
disableBpEditing,
|
|
121782
121934
|
maxInsertSize,
|
|
121935
|
+
getAcceptedInsertChars,
|
|
121783
121936
|
showAminoAcidUnitAsCodon
|
|
121784
121937
|
} = this.props;
|
|
121785
121938
|
const sequenceLength = sequenceData2.sequence.length;
|
|
@@ -121799,6 +121952,7 @@ function VectorInteractionHOC(Component) {
|
|
|
121799
121952
|
sequenceLength,
|
|
121800
121953
|
caretPosition: caretPosition2,
|
|
121801
121954
|
maxInsertSize,
|
|
121955
|
+
getAcceptedInsertChars,
|
|
121802
121956
|
showAminoAcidUnitAsCodon,
|
|
121803
121957
|
handleInsert: /* @__PURE__ */ __name((seqDataToInsert) => __async(this, null, function* () {
|
|
121804
121958
|
yield insertAndSelectHelper({
|
|
@@ -124405,6 +124559,8 @@ const __LinearView = class __LinearView extends React.Component {
|
|
|
124405
124559
|
}));
|
|
124406
124560
|
}
|
|
124407
124561
|
getNearestCursorPositionToMouseEvent(rowData, event, callback2) {
|
|
124562
|
+
var _a2;
|
|
124563
|
+
const isProtein2 = (_a2 = this.props.sequenceData) == null ? void 0 : _a2.isProtein;
|
|
124408
124564
|
let nearestCaretPos = 0;
|
|
124409
124565
|
let rowDomNode = this.linearView;
|
|
124410
124566
|
rowDomNode = rowDomNode.querySelector(".veRowItem");
|
|
@@ -124418,11 +124574,11 @@ const __LinearView = class __LinearView extends React.Component {
|
|
|
124418
124574
|
(clickXPositionRelativeToRowContainer + this.charWidth / 2) / this.charWidth
|
|
124419
124575
|
);
|
|
124420
124576
|
nearestCaretPos = numberOfBPsInFromRowStart + 0;
|
|
124421
|
-
if (nearestCaretPos > maxEnd
|
|
124422
|
-
nearestCaretPos = maxEnd + 1;
|
|
124577
|
+
if (nearestCaretPos > maxEnd) {
|
|
124578
|
+
nearestCaretPos = isProtein2 ? maxEnd + 1 : maxEnd;
|
|
124423
124579
|
}
|
|
124424
124580
|
}
|
|
124425
|
-
if (
|
|
124581
|
+
if (isProtein2) {
|
|
124426
124582
|
nearestCaretPos = Math.round(nearestCaretPos / 3) * 3;
|
|
124427
124583
|
}
|
|
124428
124584
|
if (maxEnd === 0) nearestCaretPos = 0;
|
|
@@ -127489,6 +127645,30 @@ const sizeSchema = /* @__PURE__ */ __name((isProtein2) => ({
|
|
|
127489
127645
|
}) : /* @__PURE__ */ React.createElement("span", null, "(", base1Range.start, "-", base1Range.end, ")")));
|
|
127490
127646
|
}, "render")
|
|
127491
127647
|
}), "sizeSchema");
|
|
127648
|
+
const getMemoOrfs = /* @__PURE__ */ (() => {
|
|
127649
|
+
let lastDeps;
|
|
127650
|
+
let lastResult;
|
|
127651
|
+
return (editorState) => {
|
|
127652
|
+
const {
|
|
127653
|
+
sequenceData: sequenceData2,
|
|
127654
|
+
minimumOrfSize: minimumOrfSize2,
|
|
127655
|
+
useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
|
|
127656
|
+
} = editorState;
|
|
127657
|
+
const { sequence: sequence2, circular: circular2 } = sequenceData2;
|
|
127658
|
+
const deps = {
|
|
127659
|
+
sequence: sequence2,
|
|
127660
|
+
circular: circular2,
|
|
127661
|
+
minimumOrfSize: minimumOrfSize2,
|
|
127662
|
+
useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
|
|
127663
|
+
};
|
|
127664
|
+
if (lastResult && isEqual$3(deps, lastDeps)) {
|
|
127665
|
+
return lastResult;
|
|
127666
|
+
}
|
|
127667
|
+
lastResult = selectors.orfsSelector(editorState);
|
|
127668
|
+
lastDeps = deps;
|
|
127669
|
+
return lastResult;
|
|
127670
|
+
};
|
|
127671
|
+
})();
|
|
127492
127672
|
var lodash$1 = { exports: {} };
|
|
127493
127673
|
/**
|
|
127494
127674
|
* @license
|
|
@@ -138044,10 +138224,16 @@ function GlobalDialog(props) {
|
|
|
138044
138224
|
hideDialog();
|
|
138045
138225
|
};
|
|
138046
138226
|
}, []);
|
|
138227
|
+
React.useEffect(() => {
|
|
138228
|
+
dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
|
|
138229
|
+
if (editorName) {
|
|
138230
|
+
const slot = dialogHolder[editorName] = dialogHolder[editorName] || {};
|
|
138231
|
+
slot.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
|
|
138232
|
+
}
|
|
138233
|
+
}, [editorName]);
|
|
138047
138234
|
if (dialogHolder.editorName && editorName && dialogHolder.editorName !== editorName) {
|
|
138048
138235
|
return null;
|
|
138049
138236
|
}
|
|
138050
|
-
dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
|
|
138051
138237
|
const Comp = dialogHolder.CustomModalComponent || dialogOverrides[dialogHolder.overrideName] || Dialogs[dialogHolder.dialogType];
|
|
138052
138238
|
if (!Comp) return null;
|
|
138053
138239
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -142811,6 +142997,8 @@ const userDefinedHandlersAndOpts = [
|
|
|
142811
142997
|
"enzymeManageOverride",
|
|
142812
142998
|
"enzymeGroupsOverride",
|
|
142813
142999
|
"additionalEnzymes",
|
|
143000
|
+
"getAcceptedInsertChars",
|
|
143001
|
+
"maxInsertSize",
|
|
142814
143002
|
"onDelete",
|
|
142815
143003
|
"onCopy",
|
|
142816
143004
|
"autoAnnotateFeatures",
|
|
@@ -144584,7 +144772,7 @@ const OrfProperties$1 = compose(
|
|
|
144584
144772
|
readOnly: readOnly2,
|
|
144585
144773
|
annotationVisibility: annotationVisibility2,
|
|
144586
144774
|
useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2,
|
|
144587
|
-
orfs:
|
|
144775
|
+
orfs: getMemoOrfs(editorState),
|
|
144588
144776
|
sequenceLength: sequence2.length,
|
|
144589
144777
|
sequenceData: sequenceData2,
|
|
144590
144778
|
minimumOrfSize: minimumOrfSize2
|
|
@@ -144774,7 +144962,7 @@ const TranslationProperties$1 = compose(
|
|
|
144774
144962
|
return {
|
|
144775
144963
|
readOnly: readOnly2,
|
|
144776
144964
|
translations: selectors.translationsSelector(editorState),
|
|
144777
|
-
orfs:
|
|
144965
|
+
orfs: getMemoOrfs(editorState),
|
|
144778
144966
|
annotationVisibility: annotationVisibility2,
|
|
144779
144967
|
sequenceLength: (sequenceData2.sequence || "").length,
|
|
144780
144968
|
sequenceData: sequenceData2
|
|
@@ -146059,6 +146247,7 @@ const _Editor = class _Editor extends React.Component {
|
|
|
146059
146247
|
hoveredId,
|
|
146060
146248
|
isFullscreen,
|
|
146061
146249
|
maxInsertSize,
|
|
146250
|
+
getAcceptedInsertChars,
|
|
146062
146251
|
showAminoAcidUnitAsCodon,
|
|
146063
146252
|
maxAnnotationsToDisplay,
|
|
146064
146253
|
minHeight = 400,
|
|
@@ -146248,6 +146437,7 @@ const _Editor = class _Editor extends React.Component {
|
|
|
146248
146437
|
}), panelPropsToSpread), {
|
|
146249
146438
|
editorName,
|
|
146250
146439
|
maxInsertSize,
|
|
146440
|
+
getAcceptedInsertChars,
|
|
146251
146441
|
showAminoAcidUnitAsCodon,
|
|
146252
146442
|
isProtein: sequenceData2.isProtein,
|
|
146253
146443
|
onlyShowLabelsThatDoNotFit,
|