@teselagen/range-utils 0.3.13 → 0.3.14-beta.2
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/RangeAngles.d.ts +7 -0
- package/adjustRangeToDeletionOfAnotherRange.d.ts +2 -1
- package/adjustRangeToInsert.d.ts +2 -1
- package/adjustRangeToRotation.d.ts +5 -1
- package/checkIfNonCircularRangesOverlap.d.ts +2 -1
- package/checkIfPotentiallyCircularRangesOverlap.d.ts +2 -1
- package/collapseOverlapsGeneratedFromRangeComparisonIfPossible.d.ts +2 -1
- package/convertRangeIndices.d.ts +10 -1
- package/convertRangeTo0Based.d.ts +5 -1
- package/convertRangeTo1Based.d.ts +5 -1
- package/doesRangeSpanEntireSequence.d.ts +2 -1
- package/doesRangeSpanOrigin.d.ts +2 -1
- package/expandOrContractCircularRangeToPosition.d.ts +3 -2
- package/expandOrContractNonCircularRangeToPosition.d.ts +3 -2
- package/expandOrContractRangeByLength.d.ts +5 -1
- package/expandOrContractRangeToPosition.d.ts +3 -2
- package/flipContainedRange.d.ts +5 -1
- package/generateRandomRange.d.ts +3 -3
- package/getAnnotationRangeType.d.ts +2 -1
- package/getEachPositionInRangeAsArray.d.ts +2 -1
- package/getLengthOfOverlappingRegionsBetweenTwoRanges.d.ts +2 -1
- package/getMiddleOfRange.d.ts +2 -1
- package/getOverlapOfNonCircularRanges.d.ts +5 -4
- package/getOverlapsOfPotentiallyCircularRanges.d.ts +2 -1
- package/getPositionFromAngle.d.ts +1 -1
- package/getRangeAngles.d.ts +3 -7
- package/getRangeLength.d.ts +5 -1
- package/getRangesBetweenTwoRanges.d.ts +2 -1
- package/getSequenceWithinRange.d.ts +2 -1
- package/getShortestDistanceBetweenTwoPositions.d.ts +1 -1
- package/getYOffsetForPotentiallyCircularRange.d.ts +2 -1
- package/getYOffsetsForPotentiallyCircularRanges.d.ts +3 -2
- package/getZeroedRangeOverlaps.d.ts +2 -1
- package/index.cjs +87 -88
- package/index.d.ts +1 -0
- package/index.js +87 -88
- package/index.umd.cjs +87 -88
- package/invertRange.d.ts +5 -1
- package/isPositionCloserToRangeStartThanRangeEnd.d.ts +2 -1
- package/isPositionWithinRange.d.ts +3 -2
- package/isRangeOrPositionWithinRange.d.ts +2 -1
- package/isRangeWithinRange.d.ts +2 -1
- package/loopEachPositionInRange.d.ts +2 -1
- package/modulatePositionByRange.d.ts +2 -1
- package/modulateRangeBySequenceLength.d.ts +8 -1
- package/normalizePositionByRangeLength.d.ts +1 -1
- package/normalizePositionByRangeLength1Based.d.ts +1 -1
- package/normalizeRange.d.ts +5 -1
- package/package.json +9 -1
- package/provideInclusiveOptions.d.ts +6 -1
- package/reversePositionInRange.d.ts +1 -1
- package/splitRangeIntoTwoPartsIfItIsCircular.d.ts +4 -3
- package/src/RangeAngles.ts +9 -0
- package/src/adjustRangeToDeletionOfAnotherRange.js +33 -30
- package/src/adjustRangeToDeletionOfAnotherRange.ts +57 -0
- package/src/adjustRangeToInsert.ts +32 -0
- package/src/adjustRangeToRotation.ts +23 -0
- package/src/checkIfNonCircularRangesOverlap.ts +35 -0
- package/src/checkIfPotentiallyCircularRangesOverlap.ts +28 -0
- package/src/collapseOverlapsGeneratedFromRangeComparisonIfPossible.ts +81 -0
- package/src/convertRangeIndices.test.js +1 -1
- package/src/convertRangeIndices.ts +34 -0
- package/src/convertRangeTo0Based.ts +9 -0
- package/src/convertRangeTo1Based.ts +10 -0
- package/src/doesRangeSpanEntireSequence.ts +12 -0
- package/src/doesRangeSpanOrigin.ts +5 -0
- package/src/expandOrContractCircularRangeToPosition.ts +50 -0
- package/src/expandOrContractNonCircularRangeToPosition.ts +30 -0
- package/src/expandOrContractRangeByLength.test.js +1 -1
- package/src/expandOrContractRangeByLength.ts +18 -0
- package/src/expandOrContractRangeToPosition.ts +16 -0
- package/src/flipContainedRange.test.js +1 -1
- package/src/flipContainedRange.ts +156 -0
- package/src/generateRandomRange.test.js +1 -1
- package/src/generateRandomRange.ts +26 -0
- package/src/getAnnotationRangeType.test.js +1 -1
- package/src/getAnnotationRangeType.ts +30 -0
- package/src/getEachPositionInRangeAsArray.ts +19 -0
- package/src/getLengthOfOverlappingRegionsBetweenTwoRanges.ts +18 -0
- package/src/getMiddleOfRange.ts +11 -0
- package/src/getOverlapOfNonCircularRanges.ts +41 -0
- package/src/getOverlapsOfPotentiallyCircularRanges.ts +60 -0
- package/src/getPositionFromAngle.ts +12 -0
- package/src/getRangeAngles.ts +38 -0
- package/src/getRangeLength.test.ts +30 -0
- package/src/getRangeLength.ts +17 -0
- package/src/getRangesBetweenTwoRanges.ts +42 -0
- package/src/getSequenceWithinRange.test.ts +47 -0
- package/src/getSequenceWithinRange.ts +24 -0
- package/src/getShortestDistanceBetweenTwoPositions.test.ts +12 -0
- package/src/getShortestDistanceBetweenTwoPositions.ts +16 -0
- package/src/getYOffsetForPotentiallyCircularRange.ts +37 -0
- package/src/getYOffsetsForPotentiallyCircularRanges.test.ts +17 -0
- package/src/getYOffsetsForPotentiallyCircularRanges.ts +28 -0
- package/src/getZeroedRangeOverlaps.test.ts +65 -0
- package/src/getZeroedRangeOverlaps.ts +33 -0
- package/src/index.test.ts +39 -0
- package/src/index.ts +53 -0
- package/src/invertRange.test.js +1 -1
- package/src/invertRange.ts +25 -0
- package/src/isPositionCloserToRangeStartThanRangeEnd.ts +22 -0
- package/src/isPositionWithinRange.ts +40 -0
- package/src/isRangeOrPositionWithinRange.ts +40 -0
- package/src/isRangeWithinRange.ts +18 -0
- package/src/loopEachPositionInRange.ts +11 -0
- package/src/modulatePositionByRange.ts +15 -0
- package/src/modulateRangeBySequenceLength.ts +13 -0
- package/src/normalizePositionByRangeLength.ts +24 -0
- package/src/normalizePositionByRangeLength1Based.ts +9 -0
- package/src/normalizeRange.ts +12 -0
- package/src/provideInclusiveOptions.ts +79 -0
- package/src/reversePositionInRange.ts +17 -0
- package/src/splitRangeIntoTwoPartsIfItIsCircular.ts +36 -0
- package/src/translateRange.ts +21 -0
- package/src/trimAnnStartEndToFitSeqLength.ts +9 -0
- package/src/trimNonCicularRangeByAnotherNonCircularRange.ts +63 -0
- package/src/trimNumberToFitWithin0ToAnotherNumber.ts +15 -0
- package/src/trimRangeByAnotherRange.ts +103 -0
- package/src/types.ts +12 -0
- package/src/zeroSubrangeByContainerRange.ts +49 -0
- package/translateRange.d.ts +5 -1
- package/trimAnnStartEndToFitSeqLength.d.ts +1 -1
- package/trimNonCicularRangeByAnotherNonCircularRange.d.ts +2 -4
- package/trimNumberToFitWithin0ToAnotherNumber.d.ts +1 -1
- package/trimRangeByAnotherRange.d.ts +2 -1
- package/types.d.ts +12 -0
- package/zeroSubrangeByContainerRange.d.ts +2 -1
package/RangeAngles.d.ts
ADDED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function adjustRangeToDeletionOfAnotherRange(rangeToBeAdjusted: Range, anotherRange: Range, maxLength: number): Range | null;
|
package/adjustRangeToInsert.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function adjustRangeToInsert(rangeToBeAdjusted: Range, insertStart: number, insertLength: number): Range;
|
|
@@ -1 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function adjustRangeToRotation(rangeToBeAdjusted: Range, rotateTo?: number, rangeLength?: number): Range & {
|
|
3
|
+
start: number;
|
|
4
|
+
end: number;
|
|
5
|
+
};
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function checkIfNonCircularRangesOverlap(range: Range, comparisonRange: Range): boolean;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function checkIfPotentiallyCircularRangesOverlap(range: Range, comparisonRange: Range): boolean;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps: Range[], sequenceLength: number, optionalOriginalRange?: Range): Range[];
|
package/convertRangeIndices.d.ts
CHANGED
|
@@ -1 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
interface RangeIndicesOptions {
|
|
3
|
+
inclusive1BasedStart?: boolean;
|
|
4
|
+
inclusive1BasedEnd?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export default function convertRangeIndices(range: Range, inputType?: RangeIndicesOptions, outputType?: RangeIndicesOptions): Range & {
|
|
7
|
+
start: number;
|
|
8
|
+
end: number;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function doesRangeSpanEntireSequence(range: Range, sequenceLength: number): boolean;
|
package/doesRangeSpanOrigin.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function doesRangeSpanOrigin(range: Range): boolean;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function expandOrContractCircularRangeToPosition(range: Range, position: number, maxLength: number): {
|
|
3
|
+
newRange: Range;
|
|
3
4
|
endMoved: boolean;
|
|
4
5
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function expandOrContractNonCircularRangeToPosition(range: Range, position: number): {
|
|
3
|
+
newRange: Range;
|
|
3
4
|
endMoved: boolean;
|
|
4
5
|
};
|
|
@@ -1 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function expandOrContractRangeByLength(range: Range, shiftBy: number, shiftStart: boolean, sequenceLength: number): Range & {
|
|
3
|
+
start: number;
|
|
4
|
+
end: number;
|
|
5
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function expandOrContractRangeToPosition(range: Range, position: number, maxLength: number): {
|
|
3
|
+
newRange: Range;
|
|
3
4
|
endMoved: boolean;
|
|
4
5
|
};
|
package/flipContainedRange.d.ts
CHANGED
|
@@ -1 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function flipRelativeRange(innerRange: Range, outerRange: Range, sequenceLength: number): Range & {
|
|
3
|
+
start: number;
|
|
4
|
+
end: number;
|
|
5
|
+
};
|
package/generateRandomRange.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export default function generateRandomRange(minStart:
|
|
2
|
-
start:
|
|
3
|
-
end:
|
|
1
|
+
export default function generateRandomRange(minStart: number, maxEnd: number, maxLength: number): {
|
|
2
|
+
start: number;
|
|
3
|
+
end: number;
|
|
4
4
|
};
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function getAnnotationRangeType(annotationRange: Range, enclosingRangeType: Range, forward: boolean): "end" | "beginningAndEnd" | "start" | "middle";
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function getEachPositionInRangeAsArray(range: Range, rangeMax: number): number[];
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function getLengthOfOverlappingRegionsBetweenTwoRanges(rangeA: Range, rangeB: Range, maxLength: number): number;
|
package/getMiddleOfRange.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function getMiddleOfRange(range: Range, rangeMax: number): number;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function getOverlapOfNonCircularRanges(rangeA: Range, rangeB: Range): {
|
|
3
|
+
start: number;
|
|
4
|
+
end: number;
|
|
5
|
+
} | null;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function getOverlapsOfPotentiallyCircularRanges(rangeA: Range, rangeB: Range, maxRangeLength: number, joinIfPossible?: boolean): Range[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function getPositionFromAngle(angle:
|
|
1
|
+
export default function getPositionFromAngle(angle: number, rangeMax: number, isInBetweenPositions?: boolean): number;
|
package/getRangeAngles.d.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
endAngle: number;
|
|
5
|
-
centerAngle: number;
|
|
6
|
-
locationAngles: any;
|
|
7
|
-
};
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
import { RangeAngles } from './RangeAngles';
|
|
3
|
+
export default function getRangeAngles(range: Range, rangeMax: number): RangeAngles;
|
package/getRangeLength.d.ts
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
declare const _default: (range: Range, rangeMax: number, options?: {
|
|
3
|
+
inclusive1BasedEnd?: boolean;
|
|
4
|
+
inclusive1BasedStart?: boolean;
|
|
5
|
+
} | undefined) => number;
|
|
2
6
|
export default _default;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function getRangesBetweenTwoRanges(range1: Range, range2: Range): Range[];
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function getSequenceWithinRange<T>(range: Range, sequence: string | T[]): string | T[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function getShortestDistanceBetweenTwoPositions(position1:
|
|
1
|
+
export default function getShortestDistanceBetweenTwoPositions(position1: number, position2: number, sequenceLength: number): number;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function getYOffsetForPotentiallyCircularRange(range: Range, YOffsetLevelsWithRanges: Range[][], assignYOffsetToRange: boolean): number;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function getYOffsetsForPotentiallyCircularRanges(ranges: Range[], assignYOffsetToRange: boolean): {
|
|
3
|
+
yOffsets: number[];
|
|
3
4
|
maxYOffset: number;
|
|
4
5
|
};
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Range } from './types';
|
|
2
|
+
export default function getZeroedRangeOverlaps(annotation: Range, selection: Range, sequenceLength: number): Range[];
|
package/index.cjs
CHANGED
|
@@ -87,7 +87,6 @@ function arrayMap(array, iteratee) {
|
|
|
87
87
|
}
|
|
88
88
|
__name(arrayMap, "arrayMap");
|
|
89
89
|
var isArray = Array.isArray;
|
|
90
|
-
var INFINITY$1 = 1 / 0;
|
|
91
90
|
var symbolProto$2 = Symbol$1 ? Symbol$1.prototype : void 0, symbolToString = symbolProto$2 ? symbolProto$2.toString : void 0;
|
|
92
91
|
function baseToString(value) {
|
|
93
92
|
if (typeof value == "string") {
|
|
@@ -100,7 +99,7 @@ function baseToString(value) {
|
|
|
100
99
|
return symbolToString ? symbolToString.call(value) : "";
|
|
101
100
|
}
|
|
102
101
|
var result = value + "";
|
|
103
|
-
return result == "0" && 1 / value == -
|
|
102
|
+
return result == "0" && 1 / value == -Infinity ? "-0" : result;
|
|
104
103
|
}
|
|
105
104
|
__name(baseToString, "baseToString");
|
|
106
105
|
function isObject(value) {
|
|
@@ -773,13 +772,12 @@ function castPath(value, object) {
|
|
|
773
772
|
return isKey(value, object) ? [value] : stringToPath(toString(value));
|
|
774
773
|
}
|
|
775
774
|
__name(castPath, "castPath");
|
|
776
|
-
var INFINITY = 1 / 0;
|
|
777
775
|
function toKey(value) {
|
|
778
776
|
if (typeof value == "string" || isSymbol(value)) {
|
|
779
777
|
return value;
|
|
780
778
|
}
|
|
781
779
|
var result = value + "";
|
|
782
|
-
return result == "0" && 1 / value == -
|
|
780
|
+
return result == "0" && 1 / value == -Infinity ? "-0" : result;
|
|
783
781
|
}
|
|
784
782
|
__name(toKey, "toKey");
|
|
785
783
|
function baseGet(object, path) {
|
|
@@ -1538,8 +1536,7 @@ function flatMap(collection, iteratee) {
|
|
|
1538
1536
|
__name(flatMap, "flatMap");
|
|
1539
1537
|
function getOverlapOfNonCircularRanges(rangeA, rangeB) {
|
|
1540
1538
|
if (rangeA.start < rangeB.start) {
|
|
1541
|
-
if (rangeA.end < rangeB.start)
|
|
1542
|
-
;
|
|
1539
|
+
if (rangeA.end < rangeB.start) ;
|
|
1543
1540
|
else {
|
|
1544
1541
|
if (rangeA.end < rangeB.end) {
|
|
1545
1542
|
return {
|
|
@@ -1554,8 +1551,7 @@ function getOverlapOfNonCircularRanges(rangeA, rangeB) {
|
|
|
1554
1551
|
}
|
|
1555
1552
|
}
|
|
1556
1553
|
} else {
|
|
1557
|
-
if (rangeA.start > rangeB.end)
|
|
1558
|
-
;
|
|
1554
|
+
if (rangeA.start > rangeB.end) ;
|
|
1559
1555
|
else {
|
|
1560
1556
|
if (rangeA.end < rangeB.end) {
|
|
1561
1557
|
return {
|
|
@@ -1570,9 +1566,10 @@ function getOverlapOfNonCircularRanges(rangeA, rangeB) {
|
|
|
1570
1566
|
}
|
|
1571
1567
|
}
|
|
1572
1568
|
}
|
|
1569
|
+
return null;
|
|
1573
1570
|
}
|
|
1574
1571
|
__name(getOverlapOfNonCircularRanges, "getOverlapOfNonCircularRanges");
|
|
1575
|
-
function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength, joinIfPossible) {
|
|
1572
|
+
function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength, joinIfPossible = false) {
|
|
1576
1573
|
const normalizedRangeA = splitRangeIntoTwoPartsIfItIsCircular(
|
|
1577
1574
|
rangeA,
|
|
1578
1575
|
maxRangeLength
|
|
@@ -1603,8 +1600,11 @@ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength,
|
|
|
1603
1600
|
joinedOverlap.start = o.start;
|
|
1604
1601
|
return [];
|
|
1605
1602
|
}
|
|
1603
|
+
return [o];
|
|
1606
1604
|
});
|
|
1607
|
-
|
|
1605
|
+
if (Object.keys(joinedOverlap).length > 0) {
|
|
1606
|
+
overlaps.push(joinedOverlap);
|
|
1607
|
+
}
|
|
1608
1608
|
}
|
|
1609
1609
|
return overlaps;
|
|
1610
1610
|
}
|
|
@@ -1634,8 +1634,7 @@ function trimNonCicularRangeByAnotherNonCircularRange(rangeToBeTrimmed, trimming
|
|
|
1634
1634
|
}
|
|
1635
1635
|
}
|
|
1636
1636
|
} else {
|
|
1637
|
-
if (rangeToBeTrimmed.end <= trimmingRange.end)
|
|
1638
|
-
;
|
|
1637
|
+
if (rangeToBeTrimmed.end <= trimmingRange.end) ;
|
|
1639
1638
|
else {
|
|
1640
1639
|
if (rangeToBeTrimmed.start > trimmingRange.end) {
|
|
1641
1640
|
outputTrimmedRange = {
|
|
@@ -1678,10 +1677,7 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
|
|
|
1678
1677
|
if (!overlaps.length) {
|
|
1679
1678
|
return rangeToBeTrimmed;
|
|
1680
1679
|
}
|
|
1681
|
-
const splitRangesToBeTrimmed = splitRangeIntoTwoPartsIfItIsCircular(
|
|
1682
|
-
rangeToBeTrimmed,
|
|
1683
|
-
sequenceLength
|
|
1684
|
-
);
|
|
1680
|
+
const splitRangesToBeTrimmed = splitRangeIntoTwoPartsIfItIsCircular(rangeToBeTrimmed, sequenceLength);
|
|
1685
1681
|
splitRangesToBeTrimmed.forEach(function(nonCircularRangeToBeTrimmed, index) {
|
|
1686
1682
|
overlaps.forEach(function(overlap) {
|
|
1687
1683
|
if (nonCircularRangeToBeTrimmed) {
|
|
@@ -1702,8 +1698,7 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
|
|
|
1702
1698
|
}
|
|
1703
1699
|
);
|
|
1704
1700
|
let outputTrimmedRange;
|
|
1705
|
-
if (outputSplitRanges.length < 0)
|
|
1706
|
-
;
|
|
1701
|
+
if (outputSplitRanges.length < 0) ;
|
|
1707
1702
|
else if (outputSplitRanges.length === 1) {
|
|
1708
1703
|
outputTrimmedRange = outputSplitRanges[0];
|
|
1709
1704
|
} else if (outputSplitRanges.length === 2) {
|
|
@@ -1725,6 +1720,7 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
|
|
|
1725
1720
|
end: outputTrimmedRange.end
|
|
1726
1721
|
});
|
|
1727
1722
|
}
|
|
1723
|
+
return void 0;
|
|
1728
1724
|
}
|
|
1729
1725
|
__name(trimRangeByAnotherRange, "trimRangeByAnotherRange");
|
|
1730
1726
|
function adjustRangeToDeletionOfAnotherRange(rangeToBeAdjusted, anotherRange, maxLength) {
|
|
@@ -1733,32 +1729,31 @@ function adjustRangeToDeletionOfAnotherRange(rangeToBeAdjusted, anotherRange, ma
|
|
|
1733
1729
|
anotherRange,
|
|
1734
1730
|
maxLength
|
|
1735
1731
|
);
|
|
1736
|
-
if (trimmedRange) {
|
|
1737
|
-
|
|
1738
|
-
anotherRange,
|
|
1739
|
-
maxLength
|
|
1740
|
-
);
|
|
1741
|
-
nonCircularDeletionRanges.forEach(function(nonCircularDeletionRange) {
|
|
1742
|
-
const deletionLength = nonCircularDeletionRange.end - nonCircularDeletionRange.start + 1;
|
|
1743
|
-
if (trimmedRange.start > trimmedRange.end) {
|
|
1744
|
-
if (nonCircularDeletionRange.start < trimmedRange.end) {
|
|
1745
|
-
trimmedRange.start -= deletionLength;
|
|
1746
|
-
trimmedRange.end -= deletionLength;
|
|
1747
|
-
} else if (nonCircularDeletionRange.start < trimmedRange.start) {
|
|
1748
|
-
trimmedRange.start -= deletionLength;
|
|
1749
|
-
} else
|
|
1750
|
-
;
|
|
1751
|
-
} else {
|
|
1752
|
-
if (nonCircularDeletionRange.start < trimmedRange.start) {
|
|
1753
|
-
trimmedRange.start -= deletionLength;
|
|
1754
|
-
trimmedRange.end -= deletionLength;
|
|
1755
|
-
} else if (nonCircularDeletionRange.start < trimmedRange.end) {
|
|
1756
|
-
trimmedRange.end -= deletionLength;
|
|
1757
|
-
} else
|
|
1758
|
-
;
|
|
1759
|
-
}
|
|
1760
|
-
});
|
|
1732
|
+
if (!trimmedRange) {
|
|
1733
|
+
return null;
|
|
1761
1734
|
}
|
|
1735
|
+
const nonCircularDeletionRanges = splitRangeIntoTwoPartsIfItIsCircular(
|
|
1736
|
+
anotherRange,
|
|
1737
|
+
maxLength
|
|
1738
|
+
);
|
|
1739
|
+
nonCircularDeletionRanges.forEach(function(nonCircularDeletionRange) {
|
|
1740
|
+
const deletionLength = nonCircularDeletionRange.end - nonCircularDeletionRange.start + 1;
|
|
1741
|
+
if (trimmedRange.start > trimmedRange.end) {
|
|
1742
|
+
if (nonCircularDeletionRange.start < trimmedRange.end) {
|
|
1743
|
+
trimmedRange.start -= deletionLength;
|
|
1744
|
+
trimmedRange.end -= deletionLength;
|
|
1745
|
+
} else if (nonCircularDeletionRange.start < trimmedRange.start) {
|
|
1746
|
+
trimmedRange.start -= deletionLength;
|
|
1747
|
+
} else ;
|
|
1748
|
+
} else {
|
|
1749
|
+
if (nonCircularDeletionRange.start < trimmedRange.start) {
|
|
1750
|
+
trimmedRange.start -= deletionLength;
|
|
1751
|
+
trimmedRange.end -= deletionLength;
|
|
1752
|
+
} else if (nonCircularDeletionRange.start < trimmedRange.end) {
|
|
1753
|
+
trimmedRange.end -= deletionLength;
|
|
1754
|
+
} else ;
|
|
1755
|
+
}
|
|
1756
|
+
});
|
|
1762
1757
|
return trimmedRange;
|
|
1763
1758
|
}
|
|
1764
1759
|
__name(adjustRangeToDeletionOfAnotherRange, "adjustRangeToDeletionOfAnotherRange");
|
|
@@ -1872,11 +1867,10 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
|
|
|
1872
1867
|
}
|
|
1873
1868
|
}
|
|
1874
1869
|
}
|
|
1870
|
+
return overlaps;
|
|
1875
1871
|
}
|
|
1876
1872
|
__name(collapseOverlapsGeneratedFromRangeComparisonIfPossible, "collapseOverlapsGeneratedFromRangeComparisonIfPossible");
|
|
1877
|
-
function convertRangeIndices(range, inputType, outputType) {
|
|
1878
|
-
inputType = inputType || {};
|
|
1879
|
-
outputType = outputType || {};
|
|
1873
|
+
function convertRangeIndices(range, inputType = {}, outputType = {}) {
|
|
1880
1874
|
return assign({}, range, {
|
|
1881
1875
|
start: Number(range.start) + (inputType.inclusive1BasedStart ? outputType.inclusive1BasedStart ? 0 : -1 : outputType.inclusive1BasedStart ? 1 : 0),
|
|
1882
1876
|
end: Number(range.end) + (inputType.inclusive1BasedEnd ? outputType.inclusive1BasedEnd ? 0 : -1 : outputType.inclusive1BasedEnd ? 1 : 0)
|
|
@@ -1899,25 +1893,32 @@ function convertRangeTo1Based(range) {
|
|
|
1899
1893
|
}
|
|
1900
1894
|
__name(convertRangeTo1Based, "convertRangeTo1Based");
|
|
1901
1895
|
function provideInclusiveOptions(funToWrap) {
|
|
1902
|
-
return function() {
|
|
1903
|
-
const args = Array.prototype.slice.call(arguments);
|
|
1896
|
+
return function(...args) {
|
|
1904
1897
|
const options = args[args.length - 1];
|
|
1905
1898
|
if (options && (options.inclusive1BasedEnd || options.inclusive1BasedStart)) {
|
|
1906
1899
|
args.forEach(function(arg, index) {
|
|
1907
|
-
|
|
1908
|
-
|
|
1900
|
+
const potentialRange = arg;
|
|
1901
|
+
if (potentialRange && typeof potentialRange.start === "number" && potentialRange.start > -1 && options.inclusive1BasedStart) {
|
|
1902
|
+
args[index] = assign(potentialRange, {
|
|
1903
|
+
start: potentialRange.start - 1
|
|
1904
|
+
});
|
|
1909
1905
|
}
|
|
1910
|
-
if (
|
|
1911
|
-
args[index] = assign(
|
|
1906
|
+
if (potentialRange && typeof potentialRange.end === "number" && potentialRange.end > -1 && options.inclusive1BasedEnd) {
|
|
1907
|
+
args[index] = assign(potentialRange, {
|
|
1908
|
+
end: potentialRange.end - 1
|
|
1909
|
+
});
|
|
1912
1910
|
}
|
|
1913
1911
|
});
|
|
1914
1912
|
}
|
|
1915
1913
|
let returnVal = funToWrap.apply(this, args);
|
|
1916
|
-
|
|
1917
|
-
|
|
1914
|
+
const potentialReturn = returnVal;
|
|
1915
|
+
if (potentialReturn && typeof potentialReturn.start === "number" && potentialReturn.start > -1 && options && options.inclusive1BasedStart) {
|
|
1916
|
+
returnVal = assign(potentialReturn, {
|
|
1917
|
+
start: potentialReturn.start + 1
|
|
1918
|
+
});
|
|
1918
1919
|
}
|
|
1919
|
-
if (
|
|
1920
|
-
returnVal = assign(
|
|
1920
|
+
if (potentialReturn && typeof potentialReturn.end === "number" && potentialReturn.end > -1 && options && options.inclusive1BasedEnd) {
|
|
1921
|
+
returnVal = assign(potentialReturn, { end: potentialReturn.end + 1 });
|
|
1921
1922
|
}
|
|
1922
1923
|
return returnVal;
|
|
1923
1924
|
};
|
|
@@ -1938,9 +1939,10 @@ function getRangeLength$1(range, rangeMax) {
|
|
|
1938
1939
|
}
|
|
1939
1940
|
__name(getRangeLength$1, "getRangeLength$1");
|
|
1940
1941
|
function doesRangeSpanEntireSequence(range, sequenceLength) {
|
|
1941
|
-
if (getRangeLength(range) === sequenceLength) {
|
|
1942
|
+
if (getRangeLength(range, sequenceLength) === sequenceLength) {
|
|
1942
1943
|
return true;
|
|
1943
1944
|
}
|
|
1945
|
+
return false;
|
|
1944
1946
|
}
|
|
1945
1947
|
__name(doesRangeSpanEntireSequence, "doesRangeSpanEntireSequence");
|
|
1946
1948
|
function isRangeWithinRange(rangeToCheck, containingRange, maxLength) {
|
|
@@ -1949,8 +1951,7 @@ function isRangeWithinRange(rangeToCheck, containingRange, maxLength) {
|
|
|
1949
1951
|
containingRange,
|
|
1950
1952
|
maxLength
|
|
1951
1953
|
);
|
|
1952
|
-
if (ranges === null)
|
|
1953
|
-
return false;
|
|
1954
|
+
if (ranges === null) return false;
|
|
1954
1955
|
return !ranges;
|
|
1955
1956
|
}
|
|
1956
1957
|
__name(isRangeWithinRange, "isRangeWithinRange");
|
|
@@ -1975,6 +1976,9 @@ function isRangeOrPositionWithinRange(rangeOrPositionToCheck, containingRange, m
|
|
|
1975
1976
|
return false;
|
|
1976
1977
|
}
|
|
1977
1978
|
if (isObject(rangeOrPositionToCheck)) {
|
|
1979
|
+
if (typeof rangeOrPositionToCheck.start !== "number") {
|
|
1980
|
+
return false;
|
|
1981
|
+
}
|
|
1978
1982
|
return isRangeWithinRange(
|
|
1979
1983
|
rangeOrPositionToCheck,
|
|
1980
1984
|
containingRange,
|
|
@@ -1995,7 +1999,7 @@ function doesRangeSpanOrigin(range) {
|
|
|
1995
1999
|
return range.start > range.end;
|
|
1996
2000
|
}
|
|
1997
2001
|
__name(doesRangeSpanOrigin, "doesRangeSpanOrigin");
|
|
1998
|
-
function normalizePositionByRangeLength(pPosition, sequenceLength, isInBetweenPositions) {
|
|
2002
|
+
function normalizePositionByRangeLength(pPosition, sequenceLength, isInBetweenPositions = false) {
|
|
1999
2003
|
let position = pPosition;
|
|
2000
2004
|
if (position < 0) {
|
|
2001
2005
|
position += sequenceLength;
|
|
@@ -2087,10 +2091,7 @@ function expandOrContractRangeToPosition(range, position, maxLength) {
|
|
|
2087
2091
|
if (range.start > range.end) {
|
|
2088
2092
|
return expandOrContractCircularRangeToPosition(range, position, maxLength);
|
|
2089
2093
|
} else {
|
|
2090
|
-
return expandOrContractNonCircularRangeToPosition(
|
|
2091
|
-
range,
|
|
2092
|
-
position
|
|
2093
|
-
);
|
|
2094
|
+
return expandOrContractNonCircularRangeToPosition(range, position);
|
|
2094
2095
|
}
|
|
2095
2096
|
}
|
|
2096
2097
|
__name(expandOrContractRangeToPosition, "expandOrContractRangeToPosition");
|
|
@@ -2348,14 +2349,15 @@ function getRangesBetweenTwoRanges(range1, range2) {
|
|
|
2348
2349
|
}
|
|
2349
2350
|
__name(getRangesBetweenTwoRanges, "getRangesBetweenTwoRanges");
|
|
2350
2351
|
function getSequenceWithinRange(range, sequence) {
|
|
2351
|
-
if (range.start < 0 || range.end < 0)
|
|
2352
|
-
return "";
|
|
2352
|
+
if (range.start < 0 || range.end < 0) return "";
|
|
2353
2353
|
if (range.start > range.end) {
|
|
2354
2354
|
let subSequence = sequence.slice(range.start, sequence.length);
|
|
2355
2355
|
if (typeof subSequence === "string") {
|
|
2356
2356
|
subSequence += sequence.slice(0, range.end + 1);
|
|
2357
2357
|
} else {
|
|
2358
|
-
subSequence = subSequence.concat(
|
|
2358
|
+
subSequence = subSequence.concat(
|
|
2359
|
+
sequence.slice(0, range.end + 1)
|
|
2360
|
+
);
|
|
2359
2361
|
}
|
|
2360
2362
|
return subSequence;
|
|
2361
2363
|
} else {
|
|
@@ -2375,7 +2377,7 @@ function getShortestDistanceBetweenTwoPositions(position1, position2, sequenceLe
|
|
|
2375
2377
|
}
|
|
2376
2378
|
__name(getShortestDistanceBetweenTwoPositions, "getShortestDistanceBetweenTwoPositions");
|
|
2377
2379
|
function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, assignYOffsetToRange) {
|
|
2378
|
-
let yOffset =
|
|
2380
|
+
let yOffset = 0;
|
|
2379
2381
|
const openYOffsetFound = YOffsetLevelsWithRanges.some(
|
|
2380
2382
|
function(rangesAlreadyAddedToYOffset, index) {
|
|
2381
2383
|
const rangeBlocked = rangesAlreadyAddedToYOffset.some(
|
|
@@ -2388,8 +2390,7 @@ function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, a
|
|
|
2388
2390
|
);
|
|
2389
2391
|
if (!rangeBlocked) {
|
|
2390
2392
|
yOffset = index;
|
|
2391
|
-
if (assignYOffsetToRange)
|
|
2392
|
-
range.yOffset = index;
|
|
2393
|
+
if (assignYOffsetToRange) range.yOffset = index;
|
|
2393
2394
|
rangesAlreadyAddedToYOffset.push(range);
|
|
2394
2395
|
return true;
|
|
2395
2396
|
}
|
|
@@ -2398,8 +2399,7 @@ function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, a
|
|
|
2398
2399
|
);
|
|
2399
2400
|
if (!openYOffsetFound) {
|
|
2400
2401
|
yOffset = YOffsetLevelsWithRanges.length;
|
|
2401
|
-
if (assignYOffsetToRange)
|
|
2402
|
-
range.yOffset = YOffsetLevelsWithRanges.length;
|
|
2402
|
+
if (assignYOffsetToRange) range.yOffset = YOffsetLevelsWithRanges.length;
|
|
2403
2403
|
}
|
|
2404
2404
|
return yOffset;
|
|
2405
2405
|
}
|
|
@@ -2419,8 +2419,7 @@ function getYOffsetsForPotentiallyCircularRanges(ranges, assignYOffsetToRange) {
|
|
|
2419
2419
|
maxYOffset = yOffset;
|
|
2420
2420
|
}
|
|
2421
2421
|
range.yOffset = yOffset;
|
|
2422
|
-
if (!yOffsetLevels[yOffset])
|
|
2423
|
-
yOffsetLevels[yOffset] = [];
|
|
2422
|
+
if (!yOffsetLevels[yOffset]) yOffsetLevels[yOffset] = [];
|
|
2424
2423
|
yOffsetLevels[yOffset].push(range);
|
|
2425
2424
|
});
|
|
2426
2425
|
return { yOffsets, maxYOffset };
|
|
@@ -2428,21 +2427,20 @@ function getYOffsetsForPotentiallyCircularRanges(ranges, assignYOffsetToRange) {
|
|
|
2428
2427
|
__name(getYOffsetsForPotentiallyCircularRanges, "getYOffsetsForPotentiallyCircularRanges");
|
|
2429
2428
|
const invertRange = provideInclusiveOptions(invertRange$1);
|
|
2430
2429
|
function invertRange$1(rangeOrCaret, rangeMax) {
|
|
2431
|
-
if (rangeOrCaret.start > -1) {
|
|
2430
|
+
if (typeof rangeOrCaret !== "number" && rangeOrCaret.start > -1) {
|
|
2432
2431
|
const start = rangeOrCaret.end + 1;
|
|
2433
2432
|
const end = rangeOrCaret.start - 1;
|
|
2434
2433
|
return {
|
|
2435
2434
|
start: normalizePositionByRangeLength(start, rangeMax, false),
|
|
2436
2435
|
end: normalizePositionByRangeLength(end, rangeMax, false)
|
|
2437
2436
|
};
|
|
2438
|
-
} else {
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
};
|
|
2444
|
-
}
|
|
2437
|
+
} else if (typeof rangeOrCaret === "number" && rangeOrCaret > -1) {
|
|
2438
|
+
return {
|
|
2439
|
+
start: normalizePositionByRangeLength(rangeOrCaret, rangeMax, false),
|
|
2440
|
+
end: normalizePositionByRangeLength(rangeOrCaret - 1, rangeMax, false)
|
|
2441
|
+
};
|
|
2445
2442
|
}
|
|
2443
|
+
return void 0;
|
|
2446
2444
|
}
|
|
2447
2445
|
__name(invertRange$1, "invertRange$1");
|
|
2448
2446
|
function isPositionCloserToRangeStartThanRangeEnd(position, range, maxLength) {
|
|
@@ -2510,9 +2508,10 @@ function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength)
|
|
|
2510
2508
|
"subRange must be fully contained by containerRange! Otherwise this function does not make sense"
|
|
2511
2509
|
);
|
|
2512
2510
|
}
|
|
2513
|
-
const newSubrange = {
|
|
2514
|
-
|
|
2515
|
-
|
|
2511
|
+
const newSubrange = {
|
|
2512
|
+
start: subRange.start - containerRange.start,
|
|
2513
|
+
end: subRange.end - containerRange.start
|
|
2514
|
+
};
|
|
2516
2515
|
if (newSubrange.start < 0) {
|
|
2517
2516
|
newSubrange.start += sequenceLength;
|
|
2518
2517
|
}
|
|
@@ -2523,10 +2522,10 @@ function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength)
|
|
|
2523
2522
|
}
|
|
2524
2523
|
__name(zeroSubrangeByContainerRange, "zeroSubrangeByContainerRange");
|
|
2525
2524
|
function adjustRangeToRotation(rangeToBeAdjusted, rotateTo = 0, rangeLength) {
|
|
2526
|
-
const mod = rangeLength ? modulo :
|
|
2525
|
+
const mod = /* @__PURE__ */ __name((n) => rangeLength ? modulo(n, rangeLength) : n, "mod");
|
|
2527
2526
|
const newRange = assign({}, rangeToBeAdjusted, {
|
|
2528
|
-
start: mod(rangeToBeAdjusted.start - (rotateTo || 0)
|
|
2529
|
-
end: mod(rangeToBeAdjusted.end - (rotateTo || 0)
|
|
2527
|
+
start: mod(rangeToBeAdjusted.start - (rotateTo || 0)),
|
|
2528
|
+
end: mod(rangeToBeAdjusted.end - (rotateTo || 0))
|
|
2530
2529
|
});
|
|
2531
2530
|
return newRange;
|
|
2532
2531
|
}
|
package/index.d.ts
CHANGED
|
@@ -50,3 +50,4 @@ export { default as zeroSubrangeByContainerRange } from './zeroSubrangeByContain
|
|
|
50
50
|
export { default as adjustRangeToRotation } from './adjustRangeToRotation';
|
|
51
51
|
export { default as getZeroedRangeOverlaps } from './getZeroedRangeOverlaps';
|
|
52
52
|
export { default as trimAnnStartEndToFitSeqLength } from './trimAnnStartEndToFitSeqLength';
|
|
53
|
+
export * from './types';
|