@teselagen/range-utils 0.3.14-beta.3 → 0.3.15
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.
Potentially problematic release.
This version of @teselagen/range-utils might be problematic. Click here for more details.
- package/adjustRangeToDeletionOfAnotherRange.d.ts +1 -2
- package/adjustRangeToInsert.d.ts +1 -2
- package/adjustRangeToRotation.d.ts +1 -5
- package/bundle.js +2 -0
- package/checkIfNonCircularRangesOverlap.d.ts +1 -2
- package/checkIfPotentiallyCircularRangesOverlap.d.ts +1 -2
- package/collapseOverlapsGeneratedFromRangeComparisonIfPossible.d.ts +1 -2
- package/convertRangeIndices.d.ts +1 -10
- package/convertRangeTo0Based.d.ts +1 -5
- package/convertRangeTo1Based.d.ts +1 -5
- package/doesRangeSpanEntireSequence.d.ts +1 -2
- package/doesRangeSpanOrigin.d.ts +1 -2
- package/expandOrContractCircularRangeToPosition.d.ts +2 -3
- package/expandOrContractNonCircularRangeToPosition.d.ts +2 -3
- package/expandOrContractRangeByLength.d.ts +1 -5
- package/expandOrContractRangeToPosition.d.ts +2 -3
- package/flipContainedRange.d.ts +1 -5
- package/generateRandomRange.d.ts +3 -3
- package/getAnnotationRangeType.d.ts +1 -2
- package/getEachPositionInRangeAsArray.d.ts +1 -2
- package/getLengthOfOverlappingRegionsBetweenTwoRanges.d.ts +1 -2
- package/getMiddleOfRange.d.ts +1 -2
- package/getOverlapOfNonCircularRanges.d.ts +4 -5
- package/getOverlapsOfPotentiallyCircularRanges.d.ts +1 -2
- package/getPositionFromAngle.d.ts +1 -1
- package/getRangeAngles.d.ts +7 -3
- package/getRangeLength.d.ts +1 -5
- package/getRangesBetweenTwoRanges.d.ts +1 -2
- package/getSequenceWithinRange.d.ts +1 -2
- package/getShortestDistanceBetweenTwoPositions.d.ts +1 -1
- package/getYOffsetForPotentiallyCircularRange.d.ts +1 -2
- package/getYOffsetsForPotentiallyCircularRanges.d.ts +2 -3
- package/getZeroedRangeOverlaps.d.ts +1 -2
- package/index.cjs +88 -87
- package/index.d.ts +0 -1
- package/index.js +88 -87
- package/index.umd.cjs +88 -87
- package/invertRange.d.ts +1 -5
- package/isPositionCloserToRangeStartThanRangeEnd.d.ts +1 -2
- package/isPositionWithinRange.d.ts +2 -3
- package/isRangeOrPositionWithinRange.d.ts +1 -2
- package/isRangeWithinRange.d.ts +1 -2
- package/loopEachPositionInRange.d.ts +1 -2
- package/modulatePositionByRange.d.ts +1 -2
- package/modulateRangeBySequenceLength.d.ts +1 -8
- package/normalizePositionByRangeLength.d.ts +1 -1
- package/normalizePositionByRangeLength1Based.d.ts +1 -1
- package/normalizeRange.d.ts +1 -5
- package/package.json +5 -10
- package/provideInclusiveOptions.d.ts +1 -6
- package/reversePositionInRange.d.ts +1 -1
- package/splitRangeIntoTwoPartsIfItIsCircular.d.ts +3 -4
- package/src/adjustRangeToDeletionOfAnotherRange.js +30 -33
- package/src/convertRangeIndices.test.js +1 -1
- package/src/expandOrContractRangeByLength.test.js +1 -1
- package/src/flipContainedRange.test.js +1 -1
- package/src/generateRandomRange.test.js +1 -1
- package/src/getAnnotationRangeType.test.js +1 -1
- package/src/invertRange.test.js +1 -1
- package/translateRange.d.ts +1 -5
- package/trimAnnStartEndToFitSeqLength.d.ts +1 -1
- package/trimNonCicularRangeByAnotherNonCircularRange.d.ts +4 -2
- package/trimNumberToFitWithin0ToAnotherNumber.d.ts +1 -1
- package/trimRangeByAnotherRange.d.ts +1 -2
- package/zeroSubrangeByContainerRange.d.ts +1 -2
- package/RangeAngles.d.ts +0 -7
- package/src/RangeAngles.ts +0 -9
- package/src/adjustRangeToDeletionOfAnotherRange.ts +0 -57
- package/src/adjustRangeToInsert.ts +0 -32
- package/src/adjustRangeToRotation.ts +0 -23
- package/src/checkIfNonCircularRangesOverlap.ts +0 -35
- package/src/checkIfPotentiallyCircularRangesOverlap.ts +0 -28
- package/src/collapseOverlapsGeneratedFromRangeComparisonIfPossible.ts +0 -81
- package/src/convertRangeIndices.ts +0 -34
- package/src/convertRangeTo0Based.ts +0 -9
- package/src/convertRangeTo1Based.ts +0 -10
- package/src/doesRangeSpanEntireSequence.ts +0 -12
- package/src/doesRangeSpanOrigin.ts +0 -5
- package/src/expandOrContractCircularRangeToPosition.ts +0 -50
- package/src/expandOrContractNonCircularRangeToPosition.ts +0 -30
- package/src/expandOrContractRangeByLength.ts +0 -18
- package/src/expandOrContractRangeToPosition.ts +0 -16
- package/src/flipContainedRange.ts +0 -156
- package/src/generateRandomRange.ts +0 -26
- package/src/getAnnotationRangeType.ts +0 -30
- package/src/getEachPositionInRangeAsArray.ts +0 -19
- package/src/getLengthOfOverlappingRegionsBetweenTwoRanges.ts +0 -18
- package/src/getMiddleOfRange.ts +0 -11
- package/src/getOverlapOfNonCircularRanges.ts +0 -41
- package/src/getOverlapsOfPotentiallyCircularRanges.ts +0 -60
- package/src/getPositionFromAngle.ts +0 -12
- package/src/getRangeAngles.ts +0 -38
- package/src/getRangeLength.test.ts +0 -30
- package/src/getRangeLength.ts +0 -17
- package/src/getRangesBetweenTwoRanges.ts +0 -42
- package/src/getSequenceWithinRange.test.ts +0 -47
- package/src/getSequenceWithinRange.ts +0 -24
- package/src/getShortestDistanceBetweenTwoPositions.test.ts +0 -12
- package/src/getShortestDistanceBetweenTwoPositions.ts +0 -16
- package/src/getYOffsetForPotentiallyCircularRange.ts +0 -37
- package/src/getYOffsetsForPotentiallyCircularRanges.test.ts +0 -17
- package/src/getYOffsetsForPotentiallyCircularRanges.ts +0 -28
- package/src/getZeroedRangeOverlaps.test.ts +0 -65
- package/src/getZeroedRangeOverlaps.ts +0 -33
- package/src/index.test.ts +0 -39
- package/src/index.ts +0 -53
- package/src/invertRange.ts +0 -25
- package/src/isPositionCloserToRangeStartThanRangeEnd.ts +0 -22
- package/src/isPositionWithinRange.ts +0 -40
- package/src/isRangeOrPositionWithinRange.ts +0 -40
- package/src/isRangeWithinRange.ts +0 -18
- package/src/loopEachPositionInRange.ts +0 -11
- package/src/modulatePositionByRange.ts +0 -15
- package/src/modulateRangeBySequenceLength.ts +0 -13
- package/src/normalizePositionByRangeLength.ts +0 -24
- package/src/normalizePositionByRangeLength1Based.ts +0 -9
- package/src/normalizeRange.ts +0 -12
- package/src/provideInclusiveOptions.ts +0 -79
- package/src/reversePositionInRange.ts +0 -17
- package/src/splitRangeIntoTwoPartsIfItIsCircular.ts +0 -36
- package/src/translateRange.ts +0 -21
- package/src/trimAnnStartEndToFitSeqLength.ts +0 -9
- package/src/trimNonCicularRangeByAnotherNonCircularRange.ts +0 -63
- package/src/trimNumberToFitWithin0ToAnotherNumber.ts +0 -15
- package/src/trimRangeByAnotherRange.ts +0 -103
- package/src/types.ts +0 -12
- package/src/zeroSubrangeByContainerRange.ts +0 -49
- package/types.d.ts +0 -12
package/index.js
CHANGED
|
@@ -85,6 +85,7 @@ function arrayMap(array, iteratee) {
|
|
|
85
85
|
}
|
|
86
86
|
__name(arrayMap, "arrayMap");
|
|
87
87
|
var isArray = Array.isArray;
|
|
88
|
+
var INFINITY$1 = 1 / 0;
|
|
88
89
|
var symbolProto$2 = Symbol$1 ? Symbol$1.prototype : void 0, symbolToString = symbolProto$2 ? symbolProto$2.toString : void 0;
|
|
89
90
|
function baseToString(value) {
|
|
90
91
|
if (typeof value == "string") {
|
|
@@ -97,7 +98,7 @@ function baseToString(value) {
|
|
|
97
98
|
return symbolToString ? symbolToString.call(value) : "";
|
|
98
99
|
}
|
|
99
100
|
var result = value + "";
|
|
100
|
-
return result == "0" && 1 / value == -
|
|
101
|
+
return result == "0" && 1 / value == -INFINITY$1 ? "-0" : result;
|
|
101
102
|
}
|
|
102
103
|
__name(baseToString, "baseToString");
|
|
103
104
|
function isObject(value) {
|
|
@@ -770,12 +771,13 @@ function castPath(value, object) {
|
|
|
770
771
|
return isKey(value, object) ? [value] : stringToPath(toString(value));
|
|
771
772
|
}
|
|
772
773
|
__name(castPath, "castPath");
|
|
774
|
+
var INFINITY = 1 / 0;
|
|
773
775
|
function toKey(value) {
|
|
774
776
|
if (typeof value == "string" || isSymbol(value)) {
|
|
775
777
|
return value;
|
|
776
778
|
}
|
|
777
779
|
var result = value + "";
|
|
778
|
-
return result == "0" && 1 / value == -
|
|
780
|
+
return result == "0" && 1 / value == -INFINITY ? "-0" : result;
|
|
779
781
|
}
|
|
780
782
|
__name(toKey, "toKey");
|
|
781
783
|
function baseGet(object, path) {
|
|
@@ -1534,7 +1536,8 @@ function flatMap(collection, iteratee) {
|
|
|
1534
1536
|
__name(flatMap, "flatMap");
|
|
1535
1537
|
function getOverlapOfNonCircularRanges(rangeA, rangeB) {
|
|
1536
1538
|
if (rangeA.start < rangeB.start) {
|
|
1537
|
-
if (rangeA.end < rangeB.start)
|
|
1539
|
+
if (rangeA.end < rangeB.start)
|
|
1540
|
+
;
|
|
1538
1541
|
else {
|
|
1539
1542
|
if (rangeA.end < rangeB.end) {
|
|
1540
1543
|
return {
|
|
@@ -1549,7 +1552,8 @@ function getOverlapOfNonCircularRanges(rangeA, rangeB) {
|
|
|
1549
1552
|
}
|
|
1550
1553
|
}
|
|
1551
1554
|
} else {
|
|
1552
|
-
if (rangeA.start > rangeB.end)
|
|
1555
|
+
if (rangeA.start > rangeB.end)
|
|
1556
|
+
;
|
|
1553
1557
|
else {
|
|
1554
1558
|
if (rangeA.end < rangeB.end) {
|
|
1555
1559
|
return {
|
|
@@ -1564,10 +1568,9 @@ function getOverlapOfNonCircularRanges(rangeA, rangeB) {
|
|
|
1564
1568
|
}
|
|
1565
1569
|
}
|
|
1566
1570
|
}
|
|
1567
|
-
return null;
|
|
1568
1571
|
}
|
|
1569
1572
|
__name(getOverlapOfNonCircularRanges, "getOverlapOfNonCircularRanges");
|
|
1570
|
-
function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength, joinIfPossible
|
|
1573
|
+
function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength, joinIfPossible) {
|
|
1571
1574
|
const normalizedRangeA = splitRangeIntoTwoPartsIfItIsCircular(
|
|
1572
1575
|
rangeA,
|
|
1573
1576
|
maxRangeLength
|
|
@@ -1598,11 +1601,8 @@ function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength,
|
|
|
1598
1601
|
joinedOverlap.start = o.start;
|
|
1599
1602
|
return [];
|
|
1600
1603
|
}
|
|
1601
|
-
return [o];
|
|
1602
1604
|
});
|
|
1603
|
-
|
|
1604
|
-
overlaps.push(joinedOverlap);
|
|
1605
|
-
}
|
|
1605
|
+
overlaps.push(joinedOverlap);
|
|
1606
1606
|
}
|
|
1607
1607
|
return overlaps;
|
|
1608
1608
|
}
|
|
@@ -1632,7 +1632,8 @@ function trimNonCicularRangeByAnotherNonCircularRange(rangeToBeTrimmed, trimming
|
|
|
1632
1632
|
}
|
|
1633
1633
|
}
|
|
1634
1634
|
} else {
|
|
1635
|
-
if (rangeToBeTrimmed.end <= trimmingRange.end)
|
|
1635
|
+
if (rangeToBeTrimmed.end <= trimmingRange.end)
|
|
1636
|
+
;
|
|
1636
1637
|
else {
|
|
1637
1638
|
if (rangeToBeTrimmed.start > trimmingRange.end) {
|
|
1638
1639
|
outputTrimmedRange = {
|
|
@@ -1675,7 +1676,10 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
|
|
|
1675
1676
|
if (!overlaps.length) {
|
|
1676
1677
|
return rangeToBeTrimmed;
|
|
1677
1678
|
}
|
|
1678
|
-
const splitRangesToBeTrimmed = splitRangeIntoTwoPartsIfItIsCircular(
|
|
1679
|
+
const splitRangesToBeTrimmed = splitRangeIntoTwoPartsIfItIsCircular(
|
|
1680
|
+
rangeToBeTrimmed,
|
|
1681
|
+
sequenceLength
|
|
1682
|
+
);
|
|
1679
1683
|
splitRangesToBeTrimmed.forEach(function(nonCircularRangeToBeTrimmed, index) {
|
|
1680
1684
|
overlaps.forEach(function(overlap) {
|
|
1681
1685
|
if (nonCircularRangeToBeTrimmed) {
|
|
@@ -1696,7 +1700,8 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
|
|
|
1696
1700
|
}
|
|
1697
1701
|
);
|
|
1698
1702
|
let outputTrimmedRange;
|
|
1699
|
-
if (outputSplitRanges.length < 0)
|
|
1703
|
+
if (outputSplitRanges.length < 0)
|
|
1704
|
+
;
|
|
1700
1705
|
else if (outputSplitRanges.length === 1) {
|
|
1701
1706
|
outputTrimmedRange = outputSplitRanges[0];
|
|
1702
1707
|
} else if (outputSplitRanges.length === 2) {
|
|
@@ -1718,7 +1723,6 @@ function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength
|
|
|
1718
1723
|
end: outputTrimmedRange.end
|
|
1719
1724
|
});
|
|
1720
1725
|
}
|
|
1721
|
-
return void 0;
|
|
1722
1726
|
}
|
|
1723
1727
|
__name(trimRangeByAnotherRange, "trimRangeByAnotherRange");
|
|
1724
1728
|
function adjustRangeToDeletionOfAnotherRange(rangeToBeAdjusted, anotherRange, maxLength) {
|
|
@@ -1727,31 +1731,32 @@ function adjustRangeToDeletionOfAnotherRange(rangeToBeAdjusted, anotherRange, ma
|
|
|
1727
1731
|
anotherRange,
|
|
1728
1732
|
maxLength
|
|
1729
1733
|
);
|
|
1730
|
-
if (
|
|
1731
|
-
|
|
1734
|
+
if (trimmedRange) {
|
|
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
|
+
;
|
|
1749
|
+
} else {
|
|
1750
|
+
if (nonCircularDeletionRange.start < trimmedRange.start) {
|
|
1751
|
+
trimmedRange.start -= deletionLength;
|
|
1752
|
+
trimmedRange.end -= deletionLength;
|
|
1753
|
+
} else if (nonCircularDeletionRange.start < trimmedRange.end) {
|
|
1754
|
+
trimmedRange.end -= deletionLength;
|
|
1755
|
+
} else
|
|
1756
|
+
;
|
|
1757
|
+
}
|
|
1758
|
+
});
|
|
1732
1759
|
}
|
|
1733
|
-
const nonCircularDeletionRanges = splitRangeIntoTwoPartsIfItIsCircular(
|
|
1734
|
-
anotherRange,
|
|
1735
|
-
maxLength
|
|
1736
|
-
);
|
|
1737
|
-
nonCircularDeletionRanges.forEach(function(nonCircularDeletionRange) {
|
|
1738
|
-
const deletionLength = nonCircularDeletionRange.end - nonCircularDeletionRange.start + 1;
|
|
1739
|
-
if (trimmedRange.start > trimmedRange.end) {
|
|
1740
|
-
if (nonCircularDeletionRange.start < trimmedRange.end) {
|
|
1741
|
-
trimmedRange.start -= deletionLength;
|
|
1742
|
-
trimmedRange.end -= deletionLength;
|
|
1743
|
-
} else if (nonCircularDeletionRange.start < trimmedRange.start) {
|
|
1744
|
-
trimmedRange.start -= deletionLength;
|
|
1745
|
-
} else ;
|
|
1746
|
-
} else {
|
|
1747
|
-
if (nonCircularDeletionRange.start < trimmedRange.start) {
|
|
1748
|
-
trimmedRange.start -= deletionLength;
|
|
1749
|
-
trimmedRange.end -= deletionLength;
|
|
1750
|
-
} else if (nonCircularDeletionRange.start < trimmedRange.end) {
|
|
1751
|
-
trimmedRange.end -= deletionLength;
|
|
1752
|
-
} else ;
|
|
1753
|
-
}
|
|
1754
|
-
});
|
|
1755
1760
|
return trimmedRange;
|
|
1756
1761
|
}
|
|
1757
1762
|
__name(adjustRangeToDeletionOfAnotherRange, "adjustRangeToDeletionOfAnotherRange");
|
|
@@ -1865,10 +1870,11 @@ function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequen
|
|
|
1865
1870
|
}
|
|
1866
1871
|
}
|
|
1867
1872
|
}
|
|
1868
|
-
return overlaps;
|
|
1869
1873
|
}
|
|
1870
1874
|
__name(collapseOverlapsGeneratedFromRangeComparisonIfPossible, "collapseOverlapsGeneratedFromRangeComparisonIfPossible");
|
|
1871
|
-
function convertRangeIndices(range, inputType
|
|
1875
|
+
function convertRangeIndices(range, inputType, outputType) {
|
|
1876
|
+
inputType = inputType || {};
|
|
1877
|
+
outputType = outputType || {};
|
|
1872
1878
|
return assign({}, range, {
|
|
1873
1879
|
start: Number(range.start) + (inputType.inclusive1BasedStart ? outputType.inclusive1BasedStart ? 0 : -1 : outputType.inclusive1BasedStart ? 1 : 0),
|
|
1874
1880
|
end: Number(range.end) + (inputType.inclusive1BasedEnd ? outputType.inclusive1BasedEnd ? 0 : -1 : outputType.inclusive1BasedEnd ? 1 : 0)
|
|
@@ -1891,32 +1897,25 @@ function convertRangeTo1Based(range) {
|
|
|
1891
1897
|
}
|
|
1892
1898
|
__name(convertRangeTo1Based, "convertRangeTo1Based");
|
|
1893
1899
|
function provideInclusiveOptions(funToWrap) {
|
|
1894
|
-
return function(
|
|
1900
|
+
return function() {
|
|
1901
|
+
const args = Array.prototype.slice.call(arguments);
|
|
1895
1902
|
const options = args[args.length - 1];
|
|
1896
1903
|
if (options && (options.inclusive1BasedEnd || options.inclusive1BasedStart)) {
|
|
1897
1904
|
args.forEach(function(arg, index) {
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
args[index] = assign(potentialRange, {
|
|
1901
|
-
start: potentialRange.start - 1
|
|
1902
|
-
});
|
|
1905
|
+
if (arg && arg.start > -1 && options.inclusive1BasedStart) {
|
|
1906
|
+
args[index] = assign(arg, { start: arg.start - 1 });
|
|
1903
1907
|
}
|
|
1904
|
-
if (
|
|
1905
|
-
args[index] = assign(
|
|
1906
|
-
end: potentialRange.end - 1
|
|
1907
|
-
});
|
|
1908
|
+
if (arg && arg.end > -1 && options.inclusive1BasedEnd) {
|
|
1909
|
+
args[index] = assign(arg, { end: arg.end - 1 });
|
|
1908
1910
|
}
|
|
1909
1911
|
});
|
|
1910
1912
|
}
|
|
1911
1913
|
let returnVal = funToWrap.apply(this, args);
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
returnVal = assign(potentialReturn, {
|
|
1915
|
-
start: potentialReturn.start + 1
|
|
1916
|
-
});
|
|
1914
|
+
if (returnVal && returnVal.start > -1 && options && options.inclusive1BasedStart) {
|
|
1915
|
+
returnVal = assign(returnVal, { start: returnVal.start + 1 });
|
|
1917
1916
|
}
|
|
1918
|
-
if (
|
|
1919
|
-
returnVal = assign(
|
|
1917
|
+
if (returnVal && returnVal.end > -1 && options && options.inclusive1BasedEnd) {
|
|
1918
|
+
returnVal = assign(returnVal, { end: returnVal.end + 1 });
|
|
1920
1919
|
}
|
|
1921
1920
|
return returnVal;
|
|
1922
1921
|
};
|
|
@@ -1937,10 +1936,9 @@ function getRangeLength$1(range, rangeMax) {
|
|
|
1937
1936
|
}
|
|
1938
1937
|
__name(getRangeLength$1, "getRangeLength$1");
|
|
1939
1938
|
function doesRangeSpanEntireSequence(range, sequenceLength) {
|
|
1940
|
-
if (getRangeLength(range
|
|
1939
|
+
if (getRangeLength(range) === sequenceLength) {
|
|
1941
1940
|
return true;
|
|
1942
1941
|
}
|
|
1943
|
-
return false;
|
|
1944
1942
|
}
|
|
1945
1943
|
__name(doesRangeSpanEntireSequence, "doesRangeSpanEntireSequence");
|
|
1946
1944
|
function isRangeWithinRange(rangeToCheck, containingRange, maxLength) {
|
|
@@ -1949,7 +1947,8 @@ function isRangeWithinRange(rangeToCheck, containingRange, maxLength) {
|
|
|
1949
1947
|
containingRange,
|
|
1950
1948
|
maxLength
|
|
1951
1949
|
);
|
|
1952
|
-
if (ranges === null)
|
|
1950
|
+
if (ranges === null)
|
|
1951
|
+
return false;
|
|
1953
1952
|
return !ranges;
|
|
1954
1953
|
}
|
|
1955
1954
|
__name(isRangeWithinRange, "isRangeWithinRange");
|
|
@@ -1974,9 +1973,6 @@ function isRangeOrPositionWithinRange(rangeOrPositionToCheck, containingRange, m
|
|
|
1974
1973
|
return false;
|
|
1975
1974
|
}
|
|
1976
1975
|
if (isObject(rangeOrPositionToCheck)) {
|
|
1977
|
-
if (typeof rangeOrPositionToCheck.start !== "number") {
|
|
1978
|
-
return false;
|
|
1979
|
-
}
|
|
1980
1976
|
return isRangeWithinRange(
|
|
1981
1977
|
rangeOrPositionToCheck,
|
|
1982
1978
|
containingRange,
|
|
@@ -1997,7 +1993,7 @@ function doesRangeSpanOrigin(range) {
|
|
|
1997
1993
|
return range.start > range.end;
|
|
1998
1994
|
}
|
|
1999
1995
|
__name(doesRangeSpanOrigin, "doesRangeSpanOrigin");
|
|
2000
|
-
function normalizePositionByRangeLength(pPosition, sequenceLength, isInBetweenPositions
|
|
1996
|
+
function normalizePositionByRangeLength(pPosition, sequenceLength, isInBetweenPositions) {
|
|
2001
1997
|
let position = pPosition;
|
|
2002
1998
|
if (position < 0) {
|
|
2003
1999
|
position += sequenceLength;
|
|
@@ -2089,7 +2085,10 @@ function expandOrContractRangeToPosition(range, position, maxLength) {
|
|
|
2089
2085
|
if (range.start > range.end) {
|
|
2090
2086
|
return expandOrContractCircularRangeToPosition(range, position, maxLength);
|
|
2091
2087
|
} else {
|
|
2092
|
-
return expandOrContractNonCircularRangeToPosition(
|
|
2088
|
+
return expandOrContractNonCircularRangeToPosition(
|
|
2089
|
+
range,
|
|
2090
|
+
position
|
|
2091
|
+
);
|
|
2093
2092
|
}
|
|
2094
2093
|
}
|
|
2095
2094
|
__name(expandOrContractRangeToPosition, "expandOrContractRangeToPosition");
|
|
@@ -2347,15 +2346,14 @@ function getRangesBetweenTwoRanges(range1, range2) {
|
|
|
2347
2346
|
}
|
|
2348
2347
|
__name(getRangesBetweenTwoRanges, "getRangesBetweenTwoRanges");
|
|
2349
2348
|
function getSequenceWithinRange(range, sequence) {
|
|
2350
|
-
if (range.start < 0 || range.end < 0)
|
|
2349
|
+
if (range.start < 0 || range.end < 0)
|
|
2350
|
+
return "";
|
|
2351
2351
|
if (range.start > range.end) {
|
|
2352
2352
|
let subSequence = sequence.slice(range.start, sequence.length);
|
|
2353
2353
|
if (typeof subSequence === "string") {
|
|
2354
2354
|
subSequence += sequence.slice(0, range.end + 1);
|
|
2355
2355
|
} else {
|
|
2356
|
-
subSequence = subSequence.concat(
|
|
2357
|
-
sequence.slice(0, range.end + 1)
|
|
2358
|
-
);
|
|
2356
|
+
subSequence = subSequence.concat(sequence.slice(0, range.end + 1));
|
|
2359
2357
|
}
|
|
2360
2358
|
return subSequence;
|
|
2361
2359
|
} else {
|
|
@@ -2375,7 +2373,7 @@ function getShortestDistanceBetweenTwoPositions(position1, position2, sequenceLe
|
|
|
2375
2373
|
}
|
|
2376
2374
|
__name(getShortestDistanceBetweenTwoPositions, "getShortestDistanceBetweenTwoPositions");
|
|
2377
2375
|
function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, assignYOffsetToRange) {
|
|
2378
|
-
let yOffset =
|
|
2376
|
+
let yOffset = [];
|
|
2379
2377
|
const openYOffsetFound = YOffsetLevelsWithRanges.some(
|
|
2380
2378
|
function(rangesAlreadyAddedToYOffset, index) {
|
|
2381
2379
|
const rangeBlocked = rangesAlreadyAddedToYOffset.some(
|
|
@@ -2388,7 +2386,8 @@ function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, a
|
|
|
2388
2386
|
);
|
|
2389
2387
|
if (!rangeBlocked) {
|
|
2390
2388
|
yOffset = index;
|
|
2391
|
-
if (assignYOffsetToRange)
|
|
2389
|
+
if (assignYOffsetToRange)
|
|
2390
|
+
range.yOffset = index;
|
|
2392
2391
|
rangesAlreadyAddedToYOffset.push(range);
|
|
2393
2392
|
return true;
|
|
2394
2393
|
}
|
|
@@ -2397,7 +2396,8 @@ function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, a
|
|
|
2397
2396
|
);
|
|
2398
2397
|
if (!openYOffsetFound) {
|
|
2399
2398
|
yOffset = YOffsetLevelsWithRanges.length;
|
|
2400
|
-
if (assignYOffsetToRange)
|
|
2399
|
+
if (assignYOffsetToRange)
|
|
2400
|
+
range.yOffset = YOffsetLevelsWithRanges.length;
|
|
2401
2401
|
}
|
|
2402
2402
|
return yOffset;
|
|
2403
2403
|
}
|
|
@@ -2417,7 +2417,8 @@ function getYOffsetsForPotentiallyCircularRanges(ranges, assignYOffsetToRange) {
|
|
|
2417
2417
|
maxYOffset = yOffset;
|
|
2418
2418
|
}
|
|
2419
2419
|
range.yOffset = yOffset;
|
|
2420
|
-
if (!yOffsetLevels[yOffset])
|
|
2420
|
+
if (!yOffsetLevels[yOffset])
|
|
2421
|
+
yOffsetLevels[yOffset] = [];
|
|
2421
2422
|
yOffsetLevels[yOffset].push(range);
|
|
2422
2423
|
});
|
|
2423
2424
|
return { yOffsets, maxYOffset };
|
|
@@ -2425,20 +2426,21 @@ function getYOffsetsForPotentiallyCircularRanges(ranges, assignYOffsetToRange) {
|
|
|
2425
2426
|
__name(getYOffsetsForPotentiallyCircularRanges, "getYOffsetsForPotentiallyCircularRanges");
|
|
2426
2427
|
const invertRange = provideInclusiveOptions(invertRange$1);
|
|
2427
2428
|
function invertRange$1(rangeOrCaret, rangeMax) {
|
|
2428
|
-
if (
|
|
2429
|
+
if (rangeOrCaret.start > -1) {
|
|
2429
2430
|
const start = rangeOrCaret.end + 1;
|
|
2430
2431
|
const end = rangeOrCaret.start - 1;
|
|
2431
2432
|
return {
|
|
2432
2433
|
start: normalizePositionByRangeLength(start, rangeMax, false),
|
|
2433
2434
|
end: normalizePositionByRangeLength(end, rangeMax, false)
|
|
2434
2435
|
};
|
|
2435
|
-
} else
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2436
|
+
} else {
|
|
2437
|
+
if (rangeOrCaret > -1) {
|
|
2438
|
+
return {
|
|
2439
|
+
start: normalizePositionByRangeLength(rangeOrCaret, rangeMax, false),
|
|
2440
|
+
end: normalizePositionByRangeLength(rangeOrCaret - 1, rangeMax, false)
|
|
2441
|
+
};
|
|
2442
|
+
}
|
|
2440
2443
|
}
|
|
2441
|
-
return void 0;
|
|
2442
2444
|
}
|
|
2443
2445
|
__name(invertRange$1, "invertRange$1");
|
|
2444
2446
|
function isPositionCloserToRangeStartThanRangeEnd(position, range, maxLength) {
|
|
@@ -2506,10 +2508,9 @@ function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength)
|
|
|
2506
2508
|
"subRange must be fully contained by containerRange! Otherwise this function does not make sense"
|
|
2507
2509
|
);
|
|
2508
2510
|
}
|
|
2509
|
-
const newSubrange = {
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
};
|
|
2511
|
+
const newSubrange = {};
|
|
2512
|
+
newSubrange.start = subRange.start - containerRange.start;
|
|
2513
|
+
newSubrange.end = subRange.end - containerRange.start;
|
|
2513
2514
|
if (newSubrange.start < 0) {
|
|
2514
2515
|
newSubrange.start += sequenceLength;
|
|
2515
2516
|
}
|
|
@@ -2520,10 +2521,10 @@ function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength)
|
|
|
2520
2521
|
}
|
|
2521
2522
|
__name(zeroSubrangeByContainerRange, "zeroSubrangeByContainerRange");
|
|
2522
2523
|
function adjustRangeToRotation(rangeToBeAdjusted, rotateTo = 0, rangeLength) {
|
|
2523
|
-
const mod =
|
|
2524
|
+
const mod = rangeLength ? modulo : identity;
|
|
2524
2525
|
const newRange = assign({}, rangeToBeAdjusted, {
|
|
2525
|
-
start: mod(rangeToBeAdjusted.start - (rotateTo || 0)),
|
|
2526
|
-
end: mod(rangeToBeAdjusted.end - (rotateTo || 0))
|
|
2526
|
+
start: mod(rangeToBeAdjusted.start - (rotateTo || 0), rangeLength),
|
|
2527
|
+
end: mod(rangeToBeAdjusted.end - (rotateTo || 0), rangeLength)
|
|
2527
2528
|
});
|
|
2528
2529
|
return newRange;
|
|
2529
2530
|
}
|