@teselagen/ove 0.8.29 → 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 +443 -255
- package/index.es.js +443 -255
- package/index.umd.js +443 -255
- 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/withEditorInteractions/createSequenceInputPopup.js +4 -2
- package/src/withEditorInteractions/index.js +12 -5
- package/src/withEditorProps/index.js +21 -8
package/index.es.js
CHANGED
|
@@ -9237,6 +9237,195 @@ function DialogFooter({
|
|
|
9237
9237
|
);
|
|
9238
9238
|
}
|
|
9239
9239
|
__name(DialogFooter, "DialogFooter");
|
|
9240
|
+
var NOT_FOUND = "NOT_FOUND";
|
|
9241
|
+
function createSingletonCache(equals) {
|
|
9242
|
+
var entry;
|
|
9243
|
+
return {
|
|
9244
|
+
get: /* @__PURE__ */ __name(function get7(key) {
|
|
9245
|
+
if (entry && equals(entry.key, key)) {
|
|
9246
|
+
return entry.value;
|
|
9247
|
+
}
|
|
9248
|
+
return NOT_FOUND;
|
|
9249
|
+
}, "get"),
|
|
9250
|
+
put: /* @__PURE__ */ __name(function put(key, value) {
|
|
9251
|
+
entry = {
|
|
9252
|
+
key,
|
|
9253
|
+
value
|
|
9254
|
+
};
|
|
9255
|
+
}, "put"),
|
|
9256
|
+
getEntries: /* @__PURE__ */ __name(function getEntries() {
|
|
9257
|
+
return entry ? [entry] : [];
|
|
9258
|
+
}, "getEntries"),
|
|
9259
|
+
clear: /* @__PURE__ */ __name(function clear3() {
|
|
9260
|
+
entry = void 0;
|
|
9261
|
+
}, "clear")
|
|
9262
|
+
};
|
|
9263
|
+
}
|
|
9264
|
+
__name(createSingletonCache, "createSingletonCache");
|
|
9265
|
+
function createLruCache(maxSize, equals) {
|
|
9266
|
+
var entries2 = [];
|
|
9267
|
+
function get7(key) {
|
|
9268
|
+
var cacheIndex = entries2.findIndex(function(entry2) {
|
|
9269
|
+
return equals(key, entry2.key);
|
|
9270
|
+
});
|
|
9271
|
+
if (cacheIndex > -1) {
|
|
9272
|
+
var entry = entries2[cacheIndex];
|
|
9273
|
+
if (cacheIndex > 0) {
|
|
9274
|
+
entries2.splice(cacheIndex, 1);
|
|
9275
|
+
entries2.unshift(entry);
|
|
9276
|
+
}
|
|
9277
|
+
return entry.value;
|
|
9278
|
+
}
|
|
9279
|
+
return NOT_FOUND;
|
|
9280
|
+
}
|
|
9281
|
+
__name(get7, "get");
|
|
9282
|
+
function put(key, value) {
|
|
9283
|
+
if (get7(key) === NOT_FOUND) {
|
|
9284
|
+
entries2.unshift({
|
|
9285
|
+
key,
|
|
9286
|
+
value
|
|
9287
|
+
});
|
|
9288
|
+
if (entries2.length > maxSize) {
|
|
9289
|
+
entries2.pop();
|
|
9290
|
+
}
|
|
9291
|
+
}
|
|
9292
|
+
}
|
|
9293
|
+
__name(put, "put");
|
|
9294
|
+
function getEntries() {
|
|
9295
|
+
return entries2;
|
|
9296
|
+
}
|
|
9297
|
+
__name(getEntries, "getEntries");
|
|
9298
|
+
function clear3() {
|
|
9299
|
+
entries2 = [];
|
|
9300
|
+
}
|
|
9301
|
+
__name(clear3, "clear");
|
|
9302
|
+
return {
|
|
9303
|
+
get: get7,
|
|
9304
|
+
put,
|
|
9305
|
+
getEntries,
|
|
9306
|
+
clear: clear3
|
|
9307
|
+
};
|
|
9308
|
+
}
|
|
9309
|
+
__name(createLruCache, "createLruCache");
|
|
9310
|
+
var defaultEqualityCheck = /* @__PURE__ */ __name(function defaultEqualityCheck2(a2, b3) {
|
|
9311
|
+
return a2 === b3;
|
|
9312
|
+
}, "defaultEqualityCheck");
|
|
9313
|
+
function createCacheKeyComparator(equalityCheck) {
|
|
9314
|
+
return /* @__PURE__ */ __name(function areArgumentsShallowlyEqual(prev, next) {
|
|
9315
|
+
if (prev === null || next === null || prev.length !== next.length) {
|
|
9316
|
+
return false;
|
|
9317
|
+
}
|
|
9318
|
+
var length = prev.length;
|
|
9319
|
+
for (var i = 0; i < length; i++) {
|
|
9320
|
+
if (!equalityCheck(prev[i], next[i])) {
|
|
9321
|
+
return false;
|
|
9322
|
+
}
|
|
9323
|
+
}
|
|
9324
|
+
return true;
|
|
9325
|
+
}, "areArgumentsShallowlyEqual");
|
|
9326
|
+
}
|
|
9327
|
+
__name(createCacheKeyComparator, "createCacheKeyComparator");
|
|
9328
|
+
function defaultMemoize(func, equalityCheckOrOptions) {
|
|
9329
|
+
var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
|
|
9330
|
+
equalityCheck: equalityCheckOrOptions
|
|
9331
|
+
};
|
|
9332
|
+
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;
|
|
9333
|
+
var comparator = createCacheKeyComparator(equalityCheck);
|
|
9334
|
+
var cache2 = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
|
|
9335
|
+
function memoized() {
|
|
9336
|
+
var value = cache2.get(arguments);
|
|
9337
|
+
if (value === NOT_FOUND) {
|
|
9338
|
+
value = func.apply(null, arguments);
|
|
9339
|
+
if (resultEqualityCheck) {
|
|
9340
|
+
var entries2 = cache2.getEntries();
|
|
9341
|
+
var matchingEntry = entries2.find(function(entry) {
|
|
9342
|
+
return resultEqualityCheck(entry.value, value);
|
|
9343
|
+
});
|
|
9344
|
+
if (matchingEntry) {
|
|
9345
|
+
value = matchingEntry.value;
|
|
9346
|
+
}
|
|
9347
|
+
}
|
|
9348
|
+
cache2.put(arguments, value);
|
|
9349
|
+
}
|
|
9350
|
+
return value;
|
|
9351
|
+
}
|
|
9352
|
+
__name(memoized, "memoized");
|
|
9353
|
+
memoized.clearCache = function() {
|
|
9354
|
+
return cache2.clear();
|
|
9355
|
+
};
|
|
9356
|
+
return memoized;
|
|
9357
|
+
}
|
|
9358
|
+
__name(defaultMemoize, "defaultMemoize");
|
|
9359
|
+
function getDependencies(funcs) {
|
|
9360
|
+
var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
|
|
9361
|
+
if (!dependencies.every(function(dep) {
|
|
9362
|
+
return typeof dep === "function";
|
|
9363
|
+
})) {
|
|
9364
|
+
var dependencyTypes = dependencies.map(function(dep) {
|
|
9365
|
+
return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
|
|
9366
|
+
}).join(", ");
|
|
9367
|
+
throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
|
|
9368
|
+
}
|
|
9369
|
+
return dependencies;
|
|
9370
|
+
}
|
|
9371
|
+
__name(getDependencies, "getDependencies");
|
|
9372
|
+
function createSelectorCreator(memoize2) {
|
|
9373
|
+
for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
9374
|
+
memoizeOptionsFromArgs[_key - 1] = arguments[_key];
|
|
9375
|
+
}
|
|
9376
|
+
var createSelector2 = /* @__PURE__ */ __name(function createSelector3() {
|
|
9377
|
+
for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
9378
|
+
funcs[_key2] = arguments[_key2];
|
|
9379
|
+
}
|
|
9380
|
+
var _recomputations = 0;
|
|
9381
|
+
var _lastResult;
|
|
9382
|
+
var directlyPassedOptions = {
|
|
9383
|
+
memoizeOptions: void 0
|
|
9384
|
+
};
|
|
9385
|
+
var resultFunc = funcs.pop();
|
|
9386
|
+
if (typeof resultFunc === "object") {
|
|
9387
|
+
directlyPassedOptions = resultFunc;
|
|
9388
|
+
resultFunc = funcs.pop();
|
|
9389
|
+
}
|
|
9390
|
+
if (typeof resultFunc !== "function") {
|
|
9391
|
+
throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
|
|
9392
|
+
}
|
|
9393
|
+
var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
|
|
9394
|
+
var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];
|
|
9395
|
+
var dependencies = getDependencies(funcs);
|
|
9396
|
+
var memoizedResultFunc = memoize2.apply(void 0, [/* @__PURE__ */ __name(function recomputationWrapper() {
|
|
9397
|
+
_recomputations++;
|
|
9398
|
+
return resultFunc.apply(null, arguments);
|
|
9399
|
+
}, "recomputationWrapper")].concat(finalMemoizeOptions));
|
|
9400
|
+
var selector = memoize2(/* @__PURE__ */ __name(function dependenciesChecker() {
|
|
9401
|
+
var params = [];
|
|
9402
|
+
var length = dependencies.length;
|
|
9403
|
+
for (var i = 0; i < length; i++) {
|
|
9404
|
+
params.push(dependencies[i].apply(null, arguments));
|
|
9405
|
+
}
|
|
9406
|
+
_lastResult = memoizedResultFunc.apply(null, params);
|
|
9407
|
+
return _lastResult;
|
|
9408
|
+
}, "dependenciesChecker"));
|
|
9409
|
+
Object.assign(selector, {
|
|
9410
|
+
resultFunc,
|
|
9411
|
+
memoizedResultFunc,
|
|
9412
|
+
dependencies,
|
|
9413
|
+
lastResult: /* @__PURE__ */ __name(function lastResult() {
|
|
9414
|
+
return _lastResult;
|
|
9415
|
+
}, "lastResult"),
|
|
9416
|
+
recomputations: /* @__PURE__ */ __name(function recomputations() {
|
|
9417
|
+
return _recomputations;
|
|
9418
|
+
}, "recomputations"),
|
|
9419
|
+
resetRecomputations: /* @__PURE__ */ __name(function resetRecomputations() {
|
|
9420
|
+
return _recomputations = 0;
|
|
9421
|
+
}, "resetRecomputations")
|
|
9422
|
+
});
|
|
9423
|
+
return selector;
|
|
9424
|
+
}, "createSelector");
|
|
9425
|
+
return createSelector2;
|
|
9426
|
+
}
|
|
9427
|
+
__name(createSelectorCreator, "createSelectorCreator");
|
|
9428
|
+
var createSelector = /* @__PURE__ */ createSelectorCreator(defaultMemoize);
|
|
9240
9429
|
function useCombinedRefs() {
|
|
9241
9430
|
for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
9242
9431
|
refs[_key] = arguments[_key];
|
|
@@ -56633,21 +56822,27 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
|
|
|
56633
56822
|
}
|
|
56634
56823
|
return false;
|
|
56635
56824
|
});
|
|
56825
|
+
const dtFormParamsSelector = useMemo$1(
|
|
56826
|
+
() => createSelector(
|
|
56827
|
+
(state2) => formValueSelector(formName)(
|
|
56828
|
+
state2,
|
|
56829
|
+
"reduxFormCellValidation",
|
|
56830
|
+
"reduxFormEntities",
|
|
56831
|
+
"reduxFormQueryParams",
|
|
56832
|
+
"reduxFormSelectedEntityIdMap"
|
|
56833
|
+
),
|
|
56834
|
+
(result) => result
|
|
56835
|
+
// identity, but memoized
|
|
56836
|
+
),
|
|
56837
|
+
[formName]
|
|
56838
|
+
);
|
|
56636
56839
|
const {
|
|
56637
56840
|
reduxFormCellValidation: _reduxFormCellValidation,
|
|
56638
56841
|
reduxFormEditingCell,
|
|
56639
56842
|
reduxFormEntities,
|
|
56640
56843
|
reduxFormQueryParams: _reduxFormQueryParams = {},
|
|
56641
56844
|
reduxFormSelectedEntityIdMap: _reduxFormSelectedEntityIdMap = {}
|
|
56642
|
-
} = useSelector(
|
|
56643
|
-
return formValueSelector(formName)(
|
|
56644
|
-
state2,
|
|
56645
|
-
"reduxFormCellValidation",
|
|
56646
|
-
"reduxFormEntities",
|
|
56647
|
-
"reduxFormQueryParams",
|
|
56648
|
-
"reduxFormSelectedEntityIdMap"
|
|
56649
|
-
);
|
|
56650
|
-
}, "dtFormParamsSelector"));
|
|
56845
|
+
} = useSelector(dtFormParamsSelector);
|
|
56651
56846
|
const reduxFormCellValidation = useDeepEqualMemoIgnoreFns(
|
|
56652
56847
|
_reduxFormCellValidation
|
|
56653
56848
|
);
|
|
@@ -56954,11 +57149,9 @@ const DataTable = /* @__PURE__ */ __name((_w) => {
|
|
|
56954
57149
|
newTableConfig = {
|
|
56955
57150
|
fieldOptions: []
|
|
56956
57151
|
};
|
|
56957
|
-
|
|
56958
|
-
|
|
56959
|
-
|
|
56960
|
-
return newTableConfig;
|
|
56961
|
-
}
|
|
57152
|
+
}
|
|
57153
|
+
if (isEqual$3(prev, newTableConfig)) {
|
|
57154
|
+
return prev;
|
|
56962
57155
|
} else {
|
|
56963
57156
|
return newTableConfig;
|
|
56964
57157
|
}
|
|
@@ -74955,14 +75148,16 @@ function filterSequenceString(sequenceString = "", {
|
|
|
74955
75148
|
name: name2,
|
|
74956
75149
|
isProtein: isProtein2,
|
|
74957
75150
|
isRna: isRna2,
|
|
74958
|
-
isMixedRnaAndDna
|
|
75151
|
+
isMixedRnaAndDna,
|
|
75152
|
+
getAcceptedInsertChars
|
|
74959
75153
|
} = {}) {
|
|
74960
|
-
const
|
|
75154
|
+
const sequenceTypeInfo = {
|
|
74961
75155
|
isOligo: isOligo2,
|
|
74962
75156
|
isProtein: isProtein2,
|
|
74963
75157
|
isRna: isRna2,
|
|
74964
75158
|
isMixedRnaAndDna
|
|
74965
|
-
}
|
|
75159
|
+
};
|
|
75160
|
+
const acceptedChars = isFunction$2(getAcceptedInsertChars) ? getAcceptedInsertChars(sequenceTypeInfo) : getAcceptedChars(sequenceTypeInfo);
|
|
74966
75161
|
const replaceChars = getReplaceChars({
|
|
74967
75162
|
isOligo: isOligo2,
|
|
74968
75163
|
isProtein: isProtein2,
|
|
@@ -75198,6 +75393,7 @@ function tidyUpSequenceData(pSeqData, options = {}) {
|
|
|
75198
75393
|
doNotProvideIdsForAnnotations,
|
|
75199
75394
|
noCdsTranslations,
|
|
75200
75395
|
convertAnnotationsFromAAIndices,
|
|
75396
|
+
getAcceptedInsertChars,
|
|
75201
75397
|
topLevelSeqData
|
|
75202
75398
|
} = options;
|
|
75203
75399
|
let seqData = cloneDeep(pSeqData);
|
|
@@ -75229,13 +75425,16 @@ function tidyUpSequenceData(pSeqData, options = {}) {
|
|
|
75229
75425
|
if (!doNotRemoveInvalidChars) {
|
|
75230
75426
|
if (seqData.isProtein) {
|
|
75231
75427
|
const [newSeq] = filterSequenceString(seqData.proteinSequence, __spreadProps(__spreadValues({}, topLevelSeqData || seqData), {
|
|
75232
|
-
isProtein: true
|
|
75428
|
+
isProtein: true,
|
|
75429
|
+
getAcceptedInsertChars
|
|
75233
75430
|
}));
|
|
75234
75431
|
seqData.proteinSequence = newSeq;
|
|
75235
75432
|
} else {
|
|
75236
|
-
const [newSeq] = filterSequenceString(seqData.sequence, __spreadValues({
|
|
75433
|
+
const [newSeq] = filterSequenceString(seqData.sequence, __spreadProps(__spreadValues({
|
|
75237
75434
|
additionalValidChars
|
|
75238
|
-
}, topLevelSeqData || seqData)
|
|
75435
|
+
}, topLevelSeqData || seqData), {
|
|
75436
|
+
getAcceptedInsertChars
|
|
75437
|
+
}));
|
|
75239
75438
|
seqData.sequence = newSeq;
|
|
75240
75439
|
}
|
|
75241
75440
|
}
|
|
@@ -97591,195 +97790,6 @@ function sequenceSelector(state2) {
|
|
|
97591
97790
|
return sequenceDataSelector(state2).sequence;
|
|
97592
97791
|
}
|
|
97593
97792
|
__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
97793
|
const restrictionEnzymesSelector = createSelector(
|
|
97784
97794
|
() => defaultEnzymesByName,
|
|
97785
97795
|
(state2, additionalEnzymes) => {
|
|
@@ -97805,7 +97815,34 @@ const restrictionEnzymesSelector = createSelector(
|
|
|
97805
97815
|
const cutsiteLabelColorSelector = createSelector(sequenceDataSelector, function(sequenceData2) {
|
|
97806
97816
|
return sequenceData2.cutsiteLabelColors;
|
|
97807
97817
|
});
|
|
97808
|
-
|
|
97818
|
+
const cutsitesCache = [];
|
|
97819
|
+
function getCachedResult(argsObj) {
|
|
97820
|
+
const idx = cutsitesCache.findIndex(
|
|
97821
|
+
(entry) => entry && isEqual$3(entry.args, argsObj)
|
|
97822
|
+
);
|
|
97823
|
+
if (idx === -1) return;
|
|
97824
|
+
const hit = cutsitesCache[idx];
|
|
97825
|
+
return hit.result;
|
|
97826
|
+
}
|
|
97827
|
+
__name(getCachedResult, "getCachedResult");
|
|
97828
|
+
function setCachedResult(argsObj, result, cacheSize = 1) {
|
|
97829
|
+
cutsitesCache.push({
|
|
97830
|
+
args: argsObj,
|
|
97831
|
+
result
|
|
97832
|
+
});
|
|
97833
|
+
if (cutsitesCache.length > cacheSize) cutsitesCache.shift();
|
|
97834
|
+
}
|
|
97835
|
+
__name(setCachedResult, "setCachedResult");
|
|
97836
|
+
function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors, editorSize = 1) {
|
|
97837
|
+
const cachedResult = getCachedResult({
|
|
97838
|
+
sequence: sequence2,
|
|
97839
|
+
circular: circular2,
|
|
97840
|
+
enzymeList,
|
|
97841
|
+
cutsiteLabelColors
|
|
97842
|
+
});
|
|
97843
|
+
if (cachedResult) {
|
|
97844
|
+
return cachedResult;
|
|
97845
|
+
}
|
|
97809
97846
|
const cutsitesByName = getLowerCaseObj(
|
|
97810
97847
|
getCutsitesFromSequence(sequence2, circular2, map$3(enzymeList))
|
|
97811
97848
|
);
|
|
@@ -97838,11 +97875,22 @@ function cutsitesSelector(sequence2, circular2, enzymeList, cutsiteLabelColors)
|
|
|
97838
97875
|
const cutsitesArray = flatMap(cutsitesByName, function(cutsitesForEnzyme) {
|
|
97839
97876
|
return cutsitesForEnzyme;
|
|
97840
97877
|
});
|
|
97841
|
-
|
|
97878
|
+
const result = {
|
|
97842
97879
|
cutsitesByName,
|
|
97843
97880
|
cutsitesById,
|
|
97844
97881
|
cutsitesArray
|
|
97845
97882
|
};
|
|
97883
|
+
setCachedResult(
|
|
97884
|
+
{
|
|
97885
|
+
sequence: sequence2,
|
|
97886
|
+
circular: circular2,
|
|
97887
|
+
enzymeList,
|
|
97888
|
+
cutsiteLabelColors
|
|
97889
|
+
},
|
|
97890
|
+
result,
|
|
97891
|
+
editorSize
|
|
97892
|
+
);
|
|
97893
|
+
return result;
|
|
97846
97894
|
}
|
|
97847
97895
|
__name(cutsitesSelector, "cutsitesSelector");
|
|
97848
97896
|
const cutsitesSelector$1 = createSelector(
|
|
@@ -97850,6 +97898,7 @@ const cutsitesSelector$1 = createSelector(
|
|
|
97850
97898
|
circularSelector,
|
|
97851
97899
|
restrictionEnzymesSelector,
|
|
97852
97900
|
cutsiteLabelColorSelector,
|
|
97901
|
+
(editorState) => editorState.editorSize,
|
|
97853
97902
|
cutsitesSelector
|
|
97854
97903
|
);
|
|
97855
97904
|
function divideBy3(num, shouldDivideBy3) {
|
|
@@ -99265,11 +99314,12 @@ function showDialog({
|
|
|
99265
99314
|
props,
|
|
99266
99315
|
overrideName
|
|
99267
99316
|
}) {
|
|
99268
|
-
var _a2;
|
|
99317
|
+
var _a2, _b2, _c, _d;
|
|
99269
99318
|
dialogHolder.dialogType = dialogType;
|
|
99270
99319
|
if (!dialogHolder.dialogType && ModalComponent) {
|
|
99271
99320
|
dialogHolder.dialogType = "TGCustomModal";
|
|
99272
99321
|
}
|
|
99322
|
+
dialogHolder.editorName = props == null ? void 0 : props.editorName;
|
|
99273
99323
|
if (document.activeElement && document.activeElement.closest(".veEditor")) {
|
|
99274
99324
|
let editorName;
|
|
99275
99325
|
(_a2 = document.activeElement.closest(".veEditor")) == null ? void 0 : _a2.className.split(" ").forEach((c2) => {
|
|
@@ -99283,16 +99333,28 @@ function showDialog({
|
|
|
99283
99333
|
dialogHolder.CustomModalComponent = ModalComponent;
|
|
99284
99334
|
dialogHolder.props = props;
|
|
99285
99335
|
dialogHolder.overrideName = overrideName;
|
|
99286
|
-
dialogHolder.
|
|
99336
|
+
if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
|
|
99337
|
+
(_c = (_b2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _b2.setUniqKeyToForceRerender) == null ? void 0 : _c.call(
|
|
99338
|
+
_b2,
|
|
99339
|
+
uuid()
|
|
99340
|
+
);
|
|
99341
|
+
} else {
|
|
99342
|
+
(_d = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _d.call(dialogHolder, uuid());
|
|
99343
|
+
}
|
|
99287
99344
|
}
|
|
99288
99345
|
__name(showDialog, "showDialog");
|
|
99289
99346
|
function hideDialog() {
|
|
99347
|
+
var _a2, _b2, _c;
|
|
99290
99348
|
delete dialogHolder.dialogType;
|
|
99291
99349
|
delete dialogHolder.CustomModalComponent;
|
|
99292
99350
|
delete dialogHolder.props;
|
|
99293
99351
|
delete dialogHolder.overrideName;
|
|
99352
|
+
if (dialogHolder.editorName && (dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName])) {
|
|
99353
|
+
(_b2 = (_a2 = dialogHolder == null ? void 0 : dialogHolder[dialogHolder.editorName]) == null ? void 0 : _a2.setUniqKeyToForceRerender) == null ? void 0 : _b2.call(_a2);
|
|
99354
|
+
} else {
|
|
99355
|
+
(_c = dialogHolder == null ? void 0 : dialogHolder.setUniqKeyToForceRerender) == null ? void 0 : _c.call(dialogHolder);
|
|
99356
|
+
}
|
|
99294
99357
|
delete dialogHolder.editorName;
|
|
99295
|
-
dialogHolder.setUniqKeyToForceRerender();
|
|
99296
99358
|
}
|
|
99297
99359
|
__name(hideDialog, "hideDialog");
|
|
99298
99360
|
const typeToDialogType = {
|
|
@@ -99567,7 +99629,8 @@ const handleSave = /* @__PURE__ */ __name((props) => (..._0) => __async(void 0,
|
|
|
99567
99629
|
readOnly: readOnly2,
|
|
99568
99630
|
alwaysAllowSave,
|
|
99569
99631
|
sequenceData: sequenceData2,
|
|
99570
|
-
lastSavedIdUpdate: lastSavedIdUpdate2
|
|
99632
|
+
lastSavedIdUpdate: lastSavedIdUpdate2,
|
|
99633
|
+
getAcceptedInsertChars
|
|
99571
99634
|
} = props;
|
|
99572
99635
|
const saveHandler = opts2.isSaveAs ? onSaveAs || onSave : onSave;
|
|
99573
99636
|
const updateLastSavedIdToCurrent = /* @__PURE__ */ __name(() => {
|
|
@@ -99580,7 +99643,8 @@ const handleSave = /* @__PURE__ */ __name((props) => (..._0) => __async(void 0,
|
|
|
99580
99643
|
opts2,
|
|
99581
99644
|
tidyUpSequenceData(sequenceData2, {
|
|
99582
99645
|
doNotRemoveInvalidChars: true,
|
|
99583
|
-
annotationsAsObjects: true
|
|
99646
|
+
annotationsAsObjects: true,
|
|
99647
|
+
getAcceptedInsertChars
|
|
99584
99648
|
}),
|
|
99585
99649
|
props,
|
|
99586
99650
|
updateLastSavedIdToCurrent
|
|
@@ -99762,8 +99826,8 @@ const withEditorProps = compose(
|
|
|
99762
99826
|
caretPositionOrRange,
|
|
99763
99827
|
options
|
|
99764
99828
|
} = props.beforeSequenceInsertOrDelete ? (yield props.beforeSequenceInsertOrDelete(
|
|
99765
|
-
tidyUpSequenceData(_sequenceDataToInsert),
|
|
99766
|
-
tidyUpSequenceData(_existingSequenceData),
|
|
99829
|
+
tidyUpSequenceData(_sequenceDataToInsert, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
|
|
99830
|
+
tidyUpSequenceData(_existingSequenceData, { getAcceptedInsertChars: props.getAcceptedInsertChars }),
|
|
99767
99831
|
_caretPositionOrRange,
|
|
99768
99832
|
_options
|
|
99769
99833
|
)) || {} : {};
|
|
@@ -99926,7 +99990,11 @@ const getEditorState = createSelector(
|
|
|
99926
99990
|
(state2) => state2.VectorEditor,
|
|
99927
99991
|
(state2, editorName) => editorName,
|
|
99928
99992
|
(VectorEditor, editorName) => {
|
|
99929
|
-
|
|
99993
|
+
const editorState = VectorEditor[editorName];
|
|
99994
|
+
editorState && (editorState.editorSize = Object.values(VectorEditor).filter(
|
|
99995
|
+
(editorItem) => editorItem == null ? void 0 : editorItem.sequenceData
|
|
99996
|
+
).length);
|
|
99997
|
+
return editorState;
|
|
99930
99998
|
}
|
|
99931
99999
|
);
|
|
99932
100000
|
function mapStateToProps(state2, ownProps) {
|
|
@@ -99963,6 +100031,9 @@ function mapStateToProps(state2, ownProps) {
|
|
|
99963
100031
|
annotationTypePlural,
|
|
99964
100032
|
sequenceLength
|
|
99965
100033
|
);
|
|
100034
|
+
if (dialogHolder.editorName) {
|
|
100035
|
+
annotationToAdd = dialogHolder.editorName === editorName ? annotationToAdd : void 0;
|
|
100036
|
+
}
|
|
99966
100037
|
}
|
|
99967
100038
|
});
|
|
99968
100039
|
const toReturn = __spreadProps(__spreadValues({}, editorState), {
|
|
@@ -100190,13 +100261,15 @@ function getShowGCContent(state2, ownProps) {
|
|
|
100190
100261
|
return toRet;
|
|
100191
100262
|
}
|
|
100192
100263
|
__name(getShowGCContent, "getShowGCContent");
|
|
100193
|
-
function jsonToJson(incomingJson) {
|
|
100264
|
+
function jsonToJson(incomingJson, options) {
|
|
100265
|
+
const { getAcceptedInsertChars } = options || {};
|
|
100194
100266
|
return JSON.stringify(
|
|
100195
100267
|
omit$1(
|
|
100196
100268
|
cleanUpTeselagenJsonForExport(
|
|
100197
100269
|
tidyUpSequenceData(incomingJson, {
|
|
100198
100270
|
doNotRemoveInvalidChars: true,
|
|
100199
|
-
annotationsAsObjects: false
|
|
100271
|
+
annotationsAsObjects: false,
|
|
100272
|
+
getAcceptedInsertChars
|
|
100200
100273
|
})
|
|
100201
100274
|
),
|
|
100202
100275
|
[
|
|
@@ -110882,9 +110955,19 @@ const _AnnotationPositioner = class _AnnotationPositioner extends React__default
|
|
|
110882
110955
|
};
|
|
110883
110956
|
__name(_AnnotationPositioner, "AnnotationPositioner");
|
|
110884
110957
|
let AnnotationPositioner = _AnnotationPositioner;
|
|
110958
|
+
let measureCanvas;
|
|
110959
|
+
function getAnnotationTextWidth(text2, fontSize = ANNOTATION_LABEL_FONT_WIDTH, fontFamily = "monospace") {
|
|
110960
|
+
if (!measureCanvas) {
|
|
110961
|
+
measureCanvas = document.createElement("canvas");
|
|
110962
|
+
}
|
|
110963
|
+
const ctx = measureCanvas.getContext("2d");
|
|
110964
|
+
ctx.font = `${fontSize}px ${fontFamily}`;
|
|
110965
|
+
return ctx.measureText(text2).width;
|
|
110966
|
+
}
|
|
110967
|
+
__name(getAnnotationTextWidth, "getAnnotationTextWidth");
|
|
110885
110968
|
const doesLabelFitInAnnotation = /* @__PURE__ */ __name((text2 = "", { range: range2, width }, charWidth2) => {
|
|
110886
|
-
const textLength = text2
|
|
110887
|
-
const widthMinusOne =
|
|
110969
|
+
const textLength = getAnnotationTextWidth(text2);
|
|
110970
|
+
const widthMinusOne = range2 ? getWidth(range2, charWidth2, 0) - ANNOTATION_LABEL_FONT_WIDTH * 2 : width - ANNOTATION_LABEL_FONT_WIDTH * 2;
|
|
110888
110971
|
return widthMinusOne > textLength;
|
|
110889
110972
|
}, "doesLabelFitInAnnotation");
|
|
110890
110973
|
function getAnnotationClassnames({ overlapsSelf }, { viewName, type: type2 }) {
|
|
@@ -110894,6 +110977,78 @@ function getAnnotationClassnames({ overlapsSelf }, { viewName, type: type2 }) {
|
|
|
110894
110977
|
});
|
|
110895
110978
|
}
|
|
110896
110979
|
__name(getAnnotationClassnames, "getAnnotationClassnames");
|
|
110980
|
+
function getAnnotationTextOffset({
|
|
110981
|
+
width,
|
|
110982
|
+
nameToDisplay,
|
|
110983
|
+
hasAPoint,
|
|
110984
|
+
pointiness,
|
|
110985
|
+
forward
|
|
110986
|
+
}) {
|
|
110987
|
+
return width / 2 - getAnnotationTextWidth(nameToDisplay) / 2 - (hasAPoint ? (pointiness / 2 + ANNOTATION_LABEL_FONT_WIDTH / 2) * (forward ? 1 : -1) : 0);
|
|
110988
|
+
}
|
|
110989
|
+
__name(getAnnotationTextOffset, "getAnnotationTextOffset");
|
|
110990
|
+
function getAnnotationNameInfo({
|
|
110991
|
+
name: name2,
|
|
110992
|
+
width,
|
|
110993
|
+
hasAPoint,
|
|
110994
|
+
pointiness,
|
|
110995
|
+
forward,
|
|
110996
|
+
charWidth: charWidth2,
|
|
110997
|
+
truncateLabelsThatDoNotFit,
|
|
110998
|
+
onlyShowLabelsThatDoNotFit,
|
|
110999
|
+
annotation
|
|
111000
|
+
}) {
|
|
111001
|
+
let nameToDisplay = name2;
|
|
111002
|
+
let textOffset = getAnnotationTextOffset({
|
|
111003
|
+
width,
|
|
111004
|
+
nameToDisplay,
|
|
111005
|
+
hasAPoint,
|
|
111006
|
+
pointiness,
|
|
111007
|
+
forward
|
|
111008
|
+
});
|
|
111009
|
+
const widthAvailableForText = width - ANNOTATION_LABEL_FONT_WIDTH * 2;
|
|
111010
|
+
if (!doesLabelFitInAnnotation(name2, { width }, charWidth2) || !onlyShowLabelsThatDoNotFit && ["parts", "features"].includes(annotation.annotationTypePlural)) {
|
|
111011
|
+
if (truncateLabelsThatDoNotFit) {
|
|
111012
|
+
let left2 = 0;
|
|
111013
|
+
let right2 = name2.length;
|
|
111014
|
+
let bestFit = "";
|
|
111015
|
+
while (left2 <= right2) {
|
|
111016
|
+
const mid = Math.floor((left2 + right2) / 2);
|
|
111017
|
+
const candidate = name2.slice(0, mid);
|
|
111018
|
+
const candidateWidth = getAnnotationTextWidth(candidate);
|
|
111019
|
+
if (candidateWidth <= widthAvailableForText) {
|
|
111020
|
+
if (candidate.length > bestFit.length) {
|
|
111021
|
+
bestFit = candidate;
|
|
111022
|
+
}
|
|
111023
|
+
left2 = mid + 1;
|
|
111024
|
+
} else {
|
|
111025
|
+
right2 = mid - 1;
|
|
111026
|
+
}
|
|
111027
|
+
}
|
|
111028
|
+
if (bestFit.length < name2.length) {
|
|
111029
|
+
bestFit = bestFit.slice(0, -2) + "..";
|
|
111030
|
+
}
|
|
111031
|
+
nameToDisplay = bestFit;
|
|
111032
|
+
if (nameToDisplay.length <= 3) {
|
|
111033
|
+
textOffset = 0;
|
|
111034
|
+
nameToDisplay = "";
|
|
111035
|
+
} else {
|
|
111036
|
+
textOffset = getAnnotationTextOffset({
|
|
111037
|
+
width,
|
|
111038
|
+
nameToDisplay,
|
|
111039
|
+
hasAPoint,
|
|
111040
|
+
pointiness,
|
|
111041
|
+
forward
|
|
111042
|
+
});
|
|
111043
|
+
}
|
|
111044
|
+
} else {
|
|
111045
|
+
textOffset = 0;
|
|
111046
|
+
nameToDisplay = "";
|
|
111047
|
+
}
|
|
111048
|
+
}
|
|
111049
|
+
return { textOffset, nameToDisplay };
|
|
111050
|
+
}
|
|
111051
|
+
__name(getAnnotationNameInfo, "getAnnotationNameInfo");
|
|
110897
111052
|
function PointedAnnotation(props) {
|
|
110898
111053
|
const {
|
|
110899
111054
|
className,
|
|
@@ -111029,27 +111184,17 @@ function PointedAnnotation(props) {
|
|
|
111029
111184
|
Q ${pointiness},${height / 2} ${0},${0}
|
|
111030
111185
|
z`;
|
|
111031
111186
|
}
|
|
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
|
-
}
|
|
111187
|
+
const { textOffset, nameToDisplay } = getAnnotationNameInfo({
|
|
111188
|
+
name: name2,
|
|
111189
|
+
width,
|
|
111190
|
+
hasAPoint,
|
|
111191
|
+
pointiness,
|
|
111192
|
+
forward,
|
|
111193
|
+
charWidth: charWidth2,
|
|
111194
|
+
truncateLabelsThatDoNotFit,
|
|
111195
|
+
onlyShowLabelsThatDoNotFit,
|
|
111196
|
+
annotation
|
|
111197
|
+
});
|
|
111053
111198
|
let _textColor = textColor;
|
|
111054
111199
|
if (!textColor) {
|
|
111055
111200
|
try {
|
|
@@ -116968,7 +117113,7 @@ function showFileDialog({ multiple = false, onSelect }) {
|
|
|
116968
117113
|
input.click();
|
|
116969
117114
|
}
|
|
116970
117115
|
__name(showFileDialog, "showFileDialog");
|
|
116971
|
-
const version = "0.8.
|
|
117116
|
+
const version = "0.8.30";
|
|
116972
117117
|
const packageJson = {
|
|
116973
117118
|
version
|
|
116974
117119
|
};
|
|
@@ -117886,7 +118031,7 @@ const fileCommandDefs = __spreadValues(__spreadProps(__spreadValues({
|
|
|
117886
118031
|
},
|
|
117887
118032
|
exportSequenceAsTeselagenJson: {
|
|
117888
118033
|
name: "Download Teselagen JSON File",
|
|
117889
|
-
handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson"), "handler")
|
|
118034
|
+
handler: /* @__PURE__ */ __name((props) => props.exportSequenceToFile("teselagenJson", { getAcceptedInsertChars: props.getAcceptedInsertChars }), "handler")
|
|
117890
118035
|
},
|
|
117891
118036
|
viewProperties: {
|
|
117892
118037
|
handler: /* @__PURE__ */ __name((props) => props.propertiesViewOpen(), "handler")
|
|
@@ -120697,6 +120842,7 @@ const _SequenceInputNoHotkeys = class _SequenceInputNoHotkeys extends React__def
|
|
|
120697
120842
|
caretPosition: caretPosition2,
|
|
120698
120843
|
sequenceData: sequenceData2,
|
|
120699
120844
|
maxInsertSize,
|
|
120845
|
+
getAcceptedInsertChars,
|
|
120700
120846
|
showAminoAcidUnitAsCodon
|
|
120701
120847
|
} = this.props;
|
|
120702
120848
|
const { charsToInsert, hasTempError } = this.state;
|
|
@@ -120732,7 +120878,8 @@ const _SequenceInputNoHotkeys = class _SequenceInputNoHotkeys extends React__def
|
|
|
120732
120878
|
const [sanitizedVal, warnings] = filterSequenceString(
|
|
120733
120879
|
e.target.value,
|
|
120734
120880
|
__spreadProps(__spreadValues({}, sequenceData2), {
|
|
120735
|
-
name: void 0
|
|
120881
|
+
name: void 0,
|
|
120882
|
+
getAcceptedInsertChars
|
|
120736
120883
|
})
|
|
120737
120884
|
);
|
|
120738
120885
|
if (warnings.length) {
|
|
@@ -121611,7 +121758,8 @@ function VectorInteractionHOC(Component2) {
|
|
|
121611
121758
|
onPaste,
|
|
121612
121759
|
disableBpEditing,
|
|
121613
121760
|
sequenceData: sequenceData2,
|
|
121614
|
-
maxInsertSize
|
|
121761
|
+
maxInsertSize,
|
|
121762
|
+
getAcceptedInsertChars
|
|
121615
121763
|
} = this.props;
|
|
121616
121764
|
if (disableBpEditing) {
|
|
121617
121765
|
return this.createDisableBpEditingMsg();
|
|
@@ -121650,7 +121798,8 @@ function VectorInteractionHOC(Component2) {
|
|
|
121650
121798
|
topLevelSeqData: sequenceData2,
|
|
121651
121799
|
provideNewIdsForAnnotations: true,
|
|
121652
121800
|
annotationsAsObjects: true,
|
|
121653
|
-
noCdsTranslations: true
|
|
121801
|
+
noCdsTranslations: true,
|
|
121802
|
+
getAcceptedInsertChars
|
|
121654
121803
|
});
|
|
121655
121804
|
if (!seqDataToInsert.sequence.length)
|
|
121656
121805
|
return window.toastr.warning("Sorry no valid base pairs to paste");
|
|
@@ -121670,7 +121819,8 @@ function VectorInteractionHOC(Component2) {
|
|
|
121670
121819
|
selectionLayer: selectionLayer2,
|
|
121671
121820
|
copyOptions: copyOptions2,
|
|
121672
121821
|
disableBpEditing,
|
|
121673
|
-
readOnly: readOnly2
|
|
121822
|
+
readOnly: readOnly2,
|
|
121823
|
+
getAcceptedInsertChars
|
|
121674
121824
|
} = this.props;
|
|
121675
121825
|
const onCut = this.props.onCut || this.props.onCopy || noop$8;
|
|
121676
121826
|
const seqData = tidyUpSequenceData(
|
|
@@ -121694,7 +121844,8 @@ function VectorInteractionHOC(Component2) {
|
|
|
121694
121844
|
{
|
|
121695
121845
|
doNotRemoveInvalidChars: true,
|
|
121696
121846
|
annotationsAsObjects: true,
|
|
121697
|
-
includeProteinSequence: true
|
|
121847
|
+
includeProteinSequence: true,
|
|
121848
|
+
getAcceptedInsertChars
|
|
121698
121849
|
}
|
|
121699
121850
|
);
|
|
121700
121851
|
if (!(this.sequenceDataToCopy || {}).textToCopy && !seqData.sequence.length)
|
|
@@ -121712,7 +121863,8 @@ function VectorInteractionHOC(Component2) {
|
|
|
121712
121863
|
e,
|
|
121713
121864
|
tidyUpSequenceData(seqData, {
|
|
121714
121865
|
doNotRemoveInvalidChars: true,
|
|
121715
|
-
annotationsAsObjects: true
|
|
121866
|
+
annotationsAsObjects: true,
|
|
121867
|
+
getAcceptedInsertChars
|
|
121716
121868
|
}),
|
|
121717
121869
|
this.props
|
|
121718
121870
|
);
|
|
@@ -121762,6 +121914,7 @@ function VectorInteractionHOC(Component2) {
|
|
|
121762
121914
|
readOnly: readOnly2,
|
|
121763
121915
|
disableBpEditing,
|
|
121764
121916
|
maxInsertSize,
|
|
121917
|
+
getAcceptedInsertChars,
|
|
121765
121918
|
showAminoAcidUnitAsCodon
|
|
121766
121919
|
} = this.props;
|
|
121767
121920
|
const sequenceLength = sequenceData2.sequence.length;
|
|
@@ -121781,6 +121934,7 @@ function VectorInteractionHOC(Component2) {
|
|
|
121781
121934
|
sequenceLength,
|
|
121782
121935
|
caretPosition: caretPosition2,
|
|
121783
121936
|
maxInsertSize,
|
|
121937
|
+
getAcceptedInsertChars,
|
|
121784
121938
|
showAminoAcidUnitAsCodon,
|
|
121785
121939
|
handleInsert: /* @__PURE__ */ __name((seqDataToInsert) => __async(this, null, function* () {
|
|
121786
121940
|
yield insertAndSelectHelper({
|
|
@@ -127473,6 +127627,30 @@ const sizeSchema = /* @__PURE__ */ __name((isProtein2) => ({
|
|
|
127473
127627
|
}) : /* @__PURE__ */ React__default.createElement("span", null, "(", base1Range.start, "-", base1Range.end, ")")));
|
|
127474
127628
|
}, "render")
|
|
127475
127629
|
}), "sizeSchema");
|
|
127630
|
+
const getMemoOrfs = /* @__PURE__ */ (() => {
|
|
127631
|
+
let lastDeps;
|
|
127632
|
+
let lastResult;
|
|
127633
|
+
return (editorState) => {
|
|
127634
|
+
const {
|
|
127635
|
+
sequenceData: sequenceData2,
|
|
127636
|
+
minimumOrfSize: minimumOrfSize2,
|
|
127637
|
+
useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
|
|
127638
|
+
} = editorState;
|
|
127639
|
+
const { sequence: sequence2, circular: circular2 } = sequenceData2;
|
|
127640
|
+
const deps = {
|
|
127641
|
+
sequence: sequence2,
|
|
127642
|
+
circular: circular2,
|
|
127643
|
+
minimumOrfSize: minimumOrfSize2,
|
|
127644
|
+
useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2
|
|
127645
|
+
};
|
|
127646
|
+
if (lastResult && isEqual$3(deps, lastDeps)) {
|
|
127647
|
+
return lastResult;
|
|
127648
|
+
}
|
|
127649
|
+
lastResult = selectors.orfsSelector(editorState);
|
|
127650
|
+
lastDeps = deps;
|
|
127651
|
+
return lastResult;
|
|
127652
|
+
};
|
|
127653
|
+
})();
|
|
127476
127654
|
var lodash$1 = { exports: {} };
|
|
127477
127655
|
/**
|
|
127478
127656
|
* @license
|
|
@@ -138028,10 +138206,16 @@ function GlobalDialog(props) {
|
|
|
138028
138206
|
hideDialog();
|
|
138029
138207
|
};
|
|
138030
138208
|
}, []);
|
|
138209
|
+
useEffect(() => {
|
|
138210
|
+
dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
|
|
138211
|
+
if (editorName) {
|
|
138212
|
+
const slot = dialogHolder[editorName] = dialogHolder[editorName] || {};
|
|
138213
|
+
slot.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
|
|
138214
|
+
}
|
|
138215
|
+
}, [editorName]);
|
|
138031
138216
|
if (dialogHolder.editorName && editorName && dialogHolder.editorName !== editorName) {
|
|
138032
138217
|
return null;
|
|
138033
138218
|
}
|
|
138034
|
-
dialogHolder.setUniqKeyToForceRerender = setUniqKeyToForceRerender;
|
|
138035
138219
|
const Comp = dialogHolder.CustomModalComponent || dialogOverrides[dialogHolder.overrideName] || Dialogs[dialogHolder.dialogType];
|
|
138036
138220
|
if (!Comp) return null;
|
|
138037
138221
|
return /* @__PURE__ */ React__default.createElement(
|
|
@@ -142795,6 +142979,8 @@ const userDefinedHandlersAndOpts = [
|
|
|
142795
142979
|
"enzymeManageOverride",
|
|
142796
142980
|
"enzymeGroupsOverride",
|
|
142797
142981
|
"additionalEnzymes",
|
|
142982
|
+
"getAcceptedInsertChars",
|
|
142983
|
+
"maxInsertSize",
|
|
142798
142984
|
"onDelete",
|
|
142799
142985
|
"onCopy",
|
|
142800
142986
|
"autoAnnotateFeatures",
|
|
@@ -144568,7 +144754,7 @@ const OrfProperties$1 = compose(
|
|
|
144568
144754
|
readOnly: readOnly2,
|
|
144569
144755
|
annotationVisibility: annotationVisibility2,
|
|
144570
144756
|
useAdditionalOrfStartCodons: useAdditionalOrfStartCodons2,
|
|
144571
|
-
orfs:
|
|
144757
|
+
orfs: getMemoOrfs(editorState),
|
|
144572
144758
|
sequenceLength: sequence2.length,
|
|
144573
144759
|
sequenceData: sequenceData2,
|
|
144574
144760
|
minimumOrfSize: minimumOrfSize2
|
|
@@ -144758,7 +144944,7 @@ const TranslationProperties$1 = compose(
|
|
|
144758
144944
|
return {
|
|
144759
144945
|
readOnly: readOnly2,
|
|
144760
144946
|
translations: selectors.translationsSelector(editorState),
|
|
144761
|
-
orfs:
|
|
144947
|
+
orfs: getMemoOrfs(editorState),
|
|
144762
144948
|
annotationVisibility: annotationVisibility2,
|
|
144763
144949
|
sequenceLength: (sequenceData2.sequence || "").length,
|
|
144764
144950
|
sequenceData: sequenceData2
|
|
@@ -146043,6 +146229,7 @@ const _Editor = class _Editor extends React__default.Component {
|
|
|
146043
146229
|
hoveredId,
|
|
146044
146230
|
isFullscreen,
|
|
146045
146231
|
maxInsertSize,
|
|
146232
|
+
getAcceptedInsertChars,
|
|
146046
146233
|
showAminoAcidUnitAsCodon,
|
|
146047
146234
|
maxAnnotationsToDisplay,
|
|
146048
146235
|
minHeight = 400,
|
|
@@ -146232,6 +146419,7 @@ const _Editor = class _Editor extends React__default.Component {
|
|
|
146232
146419
|
}), panelPropsToSpread), {
|
|
146233
146420
|
editorName,
|
|
146234
146421
|
maxInsertSize,
|
|
146422
|
+
getAcceptedInsertChars,
|
|
146235
146423
|
showAminoAcidUnitAsCodon,
|
|
146236
146424
|
isProtein: sequenceData2.isProtein,
|
|
146237
146425
|
onlyShowLabelsThatDoNotFit,
|