@teselagen/range-utils 0.3.6 → 0.3.8

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.
Files changed (89) hide show
  1. package/README.md +94 -0
  2. package/flipContainedRange.d.ts +1 -1
  3. package/index.js +233 -85
  4. package/index.mjs +233 -85
  5. package/index.umd.js +233 -85
  6. package/package.json +1 -2
  7. package/src/adjustRangeToDeletionOfAnotherRange.test.js +166 -105
  8. package/src/adjustRangeToInsert.js +29 -26
  9. package/src/adjustRangeToInsert.test.js +197 -109
  10. package/src/adjustRangeToRotation.js +4 -5
  11. package/src/adjustRangeToRotation.test.js +203 -119
  12. package/src/checkIfNonCircularRangesOverlap.js +18 -15
  13. package/src/checkIfNonCircularRangesOverlap.test.js +67 -42
  14. package/src/checkIfPotentiallyCircularRangesOverlap.js +22 -12
  15. package/src/checkIfPotentiallyCircularRangesOverlap.test.js +115 -70
  16. package/src/collapseOverlapsGeneratedFromRangeComparisonIfPossible.js +72 -41
  17. package/src/collapseOverlapsGeneratedFromRangeComparisonIfPossible.test.js +183 -84
  18. package/src/convertRangeIndices.js +24 -20
  19. package/src/convertRangeIndices.test.js +40 -21
  20. package/src/convertRangeTo0Based.js +7 -4
  21. package/src/convertRangeTo1Based.js +8 -4
  22. package/src/doesRangeSpanEntireSequence.js +4 -4
  23. package/src/doesRangeSpanOrigin.js +3 -3
  24. package/src/expandOrContractCircularRangeToPosition.js +45 -38
  25. package/src/expandOrContractNonCircularRangeToPosition.js +24 -21
  26. package/src/expandOrContractRangeByLength.js +16 -11
  27. package/src/expandOrContractRangeByLength.test.js +109 -71
  28. package/src/expandOrContractRangeToPosition.js +17 -9
  29. package/src/flipContainedRange.js +133 -72
  30. package/src/flipContainedRange.test.js +143 -117
  31. package/src/generateRandomRange.js +17 -15
  32. package/src/generateRandomRange.test.js +21 -21
  33. package/src/getAnnotationRangeType.js +25 -21
  34. package/src/getAnnotationRangeType.test.js +56 -57
  35. package/src/getEachPositionInRangeAsArray.js +13 -13
  36. package/src/getEachPositionInRangeAsArray.test.js +12 -8
  37. package/src/getLengthOfOverlappingRegionsBetweenTwoRanges.js +16 -8
  38. package/src/getLengthOfOverlappingRegionsBetweenTwoRanges.test.js +32 -24
  39. package/src/getMiddleOfRange.js +1 -1
  40. package/src/getMiddleOfRange.test.js +5 -13
  41. package/src/getOverlapOfNonCircularRanges.js +30 -30
  42. package/src/getOverlapsOfPotentiallyCircularRanges.js +5 -5
  43. package/src/getOverlapsOfPotentiallyCircularRanges.test.js +3 -23
  44. package/src/getPositionFromAngle.js +12 -7
  45. package/src/getRangeAngles.js +1 -1
  46. package/src/getRangeAngles.test.js +10 -11
  47. package/src/getRangeLength.test.js +5 -5
  48. package/src/getRangesBetweenTwoRanges.js +31 -22
  49. package/src/getSequenceWithinRange.js +13 -13
  50. package/src/getSequenceWithinRange.test.js +43 -45
  51. package/src/getShortestDistanceBetweenTwoPositions.js +10 -6
  52. package/src/getShortestDistanceBetweenTwoPositions.test.js +11 -13
  53. package/src/getYOffsetForPotentiallyCircularRange.js +33 -21
  54. package/src/getYOffsetsForPotentiallyCircularRanges.js +26 -19
  55. package/src/getYOffsetsForPotentiallyCircularRanges.test.js +42 -29
  56. package/src/getZeroedRangeOverlaps.js +30 -15
  57. package/src/getZeroedRangeOverlaps.test.js +75 -36
  58. package/src/index.js +51 -51
  59. package/src/index.test.js +6 -8
  60. package/src/invertRange.test.js +103 -93
  61. package/src/isPositionCloserToRangeStartThanRangeEnd.js +18 -6
  62. package/src/isPositionCloserToRangeStartThanRangeEnd.test.js +36 -16
  63. package/src/isPositionWithinRange.js +4 -4
  64. package/src/isRangeOrPositionWithinRange.js +18 -12
  65. package/src/isRangeOrPositionWithinRange.test.js +6 -6
  66. package/src/isRangeWithinRange.js +2 -3
  67. package/src/loopEachPositionInRange.js +3 -3
  68. package/src/modulatePositionByRange.js +8 -8
  69. package/src/modulatePositionByRange.test.js +10 -11
  70. package/src/modulateRangeBySequenceLength.js +7 -7
  71. package/src/modulateRangeBySequenceLength.test.js +39 -16
  72. package/src/normalizePositionByRangeLength.js +22 -18
  73. package/src/normalizePositionByRangeLength.test.js +23 -23
  74. package/src/normalizePositionByRangeLength1Based.js +7 -4
  75. package/src/normalizePositionByRangeLength1Based.test.js +9 -9
  76. package/src/normalizeRange.js +7 -7
  77. package/src/normalizeRange.test.js +9 -9
  78. package/src/provideInclusiveOptions.js +36 -23
  79. package/src/reversePositionInRange.js +16 -12
  80. package/src/splitRangeIntoTwoPartsIfItIsCircular.js +31 -28
  81. package/src/splitRangeIntoTwoPartsIfItIsCircular.test.js +22 -11
  82. package/src/translateRange.js +18 -8
  83. package/src/translateRange.test.js +18 -19
  84. package/src/trimNonCicularRangeByAnotherNonCircularRange.js +45 -42
  85. package/src/trimNumberToFitWithin0ToAnotherNumber.js +13 -10
  86. package/src/trimRangeByAnotherRange.js +20 -19
  87. package/src/trimRangeByAnotherRange.test.js +6 -6
  88. package/src/zeroSubrangeByContainerRange.js +29 -19
  89. package/src/zeroSubrangeByContainerRange.test.js +57 -47
package/index.umd.js CHANGED
@@ -6049,8 +6049,8 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6049
6049
  maxRangeLength
6050
6050
  );
6051
6051
  let overlaps = [];
6052
- normalizedRangeA.forEach(function(nonCircularRangeA, iA) {
6053
- normalizedRangeB.forEach(function(nonCircularRangeB, iB) {
6052
+ normalizedRangeA.forEach(function(nonCircularRangeA) {
6053
+ normalizedRangeB.forEach(function(nonCircularRangeB) {
6054
6054
  const overlap = getOverlapOfNonCircularRanges(
6055
6055
  nonCircularRangeA,
6056
6056
  nonCircularRangeB
@@ -6062,7 +6062,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6062
6062
  });
6063
6063
  if (joinIfPossible && normalizedRangeA.length === 2 && normalizedRangeB.length === 2 && maxRangeLength) {
6064
6064
  const joinedOverlap = {};
6065
- overlaps = lodashExports.flatMap(overlaps, (o, i) => {
6065
+ overlaps = lodashExports.flatMap(overlaps, (o) => {
6066
6066
  if (o.start === 0) {
6067
6067
  joinedOverlap.end = o.end;
6068
6068
  return [];
@@ -6160,12 +6160,14 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6160
6160
  });
6161
6161
  splitRangesToBeTrimmed[index] = nonCircularRangeToBeTrimmed;
6162
6162
  });
6163
- const outputSplitRanges = splitRangesToBeTrimmed.filter(function(trimmedRange) {
6164
- if (trimmedRange) {
6165
- return true;
6163
+ const outputSplitRanges = splitRangesToBeTrimmed.filter(
6164
+ function(trimmedRange) {
6165
+ if (trimmedRange) {
6166
+ return true;
6167
+ }
6168
+ return false;
6166
6169
  }
6167
- return false;
6168
- });
6170
+ );
6169
6171
  let outputTrimmedRange;
6170
6172
  if (outputSplitRanges.length < 0)
6171
6173
  ;
@@ -6264,11 +6266,19 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6264
6266
  }
6265
6267
  __name(checkIfNonCircularRangesOverlap, "checkIfNonCircularRangesOverlap");
6266
6268
  function checkIfPotentiallyCircularRangesOverlap(range, comparisonRange) {
6267
- return splitRangeIntoTwoPartsIfItIsCircular(range, Infinity).some(function(splitRange) {
6268
- return splitRangeIntoTwoPartsIfItIsCircular(comparisonRange, Infinity).some(function(splitComparisonRange) {
6269
- return checkIfNonCircularRangesOverlap(splitRange, splitComparisonRange);
6270
- });
6271
- });
6269
+ return splitRangeIntoTwoPartsIfItIsCircular(range, Infinity).some(
6270
+ function(splitRange) {
6271
+ return splitRangeIntoTwoPartsIfItIsCircular(
6272
+ comparisonRange,
6273
+ Infinity
6274
+ ).some(function(splitComparisonRange) {
6275
+ return checkIfNonCircularRangesOverlap(
6276
+ splitRange,
6277
+ splitComparisonRange
6278
+ );
6279
+ });
6280
+ }
6281
+ );
6272
6282
  }
6273
6283
  __name(checkIfPotentiallyCircularRangesOverlap, "checkIfPotentiallyCircularRangesOverlap");
6274
6284
  function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequenceLength, optionalOriginalRange) {
@@ -6277,15 +6287,19 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6277
6287
  return overlaps;
6278
6288
  } else if (overlaps.length === 2) {
6279
6289
  if (overlaps[0].start === 0 && overlaps[1].end + 1 === sequenceLength && !originalRangeLinear) {
6280
- return [{
6281
- start: overlaps[1].start,
6282
- end: overlaps[0].end
6283
- }];
6290
+ return [
6291
+ {
6292
+ start: overlaps[1].start,
6293
+ end: overlaps[0].end
6294
+ }
6295
+ ];
6284
6296
  } else if (overlaps[1].start === 0 && overlaps[0].end + 1 === sequenceLength && !originalRangeLinear) {
6285
- return [{
6286
- start: overlaps[0].start,
6287
- end: overlaps[1].end
6288
- }];
6297
+ return [
6298
+ {
6299
+ start: overlaps[0].start,
6300
+ end: overlaps[1].end
6301
+ }
6302
+ ];
6289
6303
  } else {
6290
6304
  return overlaps;
6291
6305
  }
@@ -6293,17 +6307,29 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6293
6307
  const firstOverlap = overlaps[0];
6294
6308
  const secondOverlap = overlaps[1];
6295
6309
  const thirdOverlap = overlaps[2];
6296
- let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([firstOverlap, secondOverlap], sequenceLength, optionalOriginalRange);
6310
+ let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
6311
+ [firstOverlap, secondOverlap],
6312
+ sequenceLength,
6313
+ optionalOriginalRange
6314
+ );
6297
6315
  if (collapsedOverlaps.length === 1) {
6298
6316
  collapsedOverlaps.push(thirdOverlap);
6299
6317
  return collapsedOverlaps;
6300
6318
  } else {
6301
- collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([firstOverlap, thirdOverlap], sequenceLength, optionalOriginalRange);
6319
+ collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
6320
+ [firstOverlap, thirdOverlap],
6321
+ sequenceLength,
6322
+ optionalOriginalRange
6323
+ );
6302
6324
  if (collapsedOverlaps.length === 1) {
6303
6325
  collapsedOverlaps.push(secondOverlap);
6304
6326
  return collapsedOverlaps;
6305
6327
  } else {
6306
- collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible([secondOverlap, thirdOverlap], sequenceLength, optionalOriginalRange);
6328
+ collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
6329
+ [secondOverlap, thirdOverlap],
6330
+ sequenceLength,
6331
+ optionalOriginalRange
6332
+ );
6307
6333
  if (collapsedOverlaps.length === 1) {
6308
6334
  collapsedOverlaps.push(firstOverlap);
6309
6335
  return collapsedOverlaps;
@@ -6325,11 +6351,18 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6325
6351
  }
6326
6352
  __name(convertRangeIndices, "convertRangeIndices");
6327
6353
  function convertRangeTo0Based(range) {
6328
- return convertRangeIndices(range, { inclusive1BasedStart: true, inclusive1BasedEnd: true });
6354
+ return convertRangeIndices(range, {
6355
+ inclusive1BasedStart: true,
6356
+ inclusive1BasedEnd: true
6357
+ });
6329
6358
  }
6330
6359
  __name(convertRangeTo0Based, "convertRangeTo0Based");
6331
6360
  function convertRangeTo1Based(range) {
6332
- return convertRangeIndices(range, {}, { inclusive1BasedStart: true, inclusive1BasedEnd: true });
6361
+ return convertRangeIndices(
6362
+ range,
6363
+ {},
6364
+ { inclusive1BasedStart: true, inclusive1BasedEnd: true }
6365
+ );
6333
6366
  }
6334
6367
  __name(convertRangeTo1Based, "convertRangeTo1Based");
6335
6368
  function provideInclusiveOptions(funToWrap) {
@@ -6444,7 +6477,11 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6444
6477
  let endMoved = true;
6445
6478
  if (range.end >= position) {
6446
6479
  if (position + maxLength - range.start > range.end - position) {
6447
- newRange.end = normalizePositionByRangeLength(position - 1, maxLength, false);
6480
+ newRange.end = normalizePositionByRangeLength(
6481
+ position - 1,
6482
+ maxLength,
6483
+ false
6484
+ );
6448
6485
  } else {
6449
6486
  newRange.start = position;
6450
6487
  endMoved = false;
@@ -6517,19 +6554,32 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6517
6554
  if (range.start > range.end) {
6518
6555
  return expandOrContractCircularRangeToPosition(range, position, maxLength);
6519
6556
  } else {
6520
- return expandOrContractNonCircularRangeToPosition(range, position);
6557
+ return expandOrContractNonCircularRangeToPosition(
6558
+ range,
6559
+ position
6560
+ );
6521
6561
  }
6522
6562
  }
6523
6563
  __name(expandOrContractRangeToPosition, "expandOrContractRangeToPosition");
6524
6564
  function translateRange(rangeToBeAdjusted, translateBy, rangeLength) {
6525
6565
  return lodashExports.assign({}, rangeToBeAdjusted, {
6526
- start: normalizePositionByRangeLength(rangeToBeAdjusted.start + translateBy, rangeLength),
6527
- end: normalizePositionByRangeLength(rangeToBeAdjusted.end + translateBy, rangeLength)
6566
+ start: normalizePositionByRangeLength(
6567
+ rangeToBeAdjusted.start + translateBy,
6568
+ rangeLength
6569
+ ),
6570
+ end: normalizePositionByRangeLength(
6571
+ rangeToBeAdjusted.end + translateBy,
6572
+ rangeLength
6573
+ )
6528
6574
  });
6529
6575
  }
6530
6576
  __name(translateRange, "translateRange");
6531
- function flipRelativeRange(innerRange, outerRange, sequenceLength, options) {
6532
- const isFullyContained = isRangeWithinRange(innerRange, outerRange, sequenceLength);
6577
+ function flipRelativeRange(innerRange, outerRange, sequenceLength) {
6578
+ const isFullyContained = isRangeWithinRange(
6579
+ innerRange,
6580
+ outerRange,
6581
+ sequenceLength
6582
+ );
6533
6583
  if (isFullyContained) {
6534
6584
  return flipFullyContainedRange(innerRange, outerRange, sequenceLength);
6535
6585
  } else {
@@ -6537,42 +6587,92 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6537
6587
  }
6538
6588
  }
6539
6589
  __name(flipRelativeRange, "flipRelativeRange");
6540
- function flipNonFullyContainedRange(innerRange, outerRange, sequenceLength, options) {
6541
- const outerFullyContained = isRangeWithinRange(outerRange, innerRange, sequenceLength);
6590
+ function flipNonFullyContainedRange(innerRange, outerRange, sequenceLength) {
6591
+ const outerFullyContained = isRangeWithinRange(
6592
+ outerRange,
6593
+ innerRange,
6594
+ sequenceLength
6595
+ );
6542
6596
  let flippedInnerRange;
6543
6597
  if (outerFullyContained) {
6544
- const expandBy1 = getRangeLength({
6545
- start: innerRange.start,
6546
- end: outerRange.start
6547
- }, sequenceLength) - 1;
6548
- flippedInnerRange = expandOrContractRangeByLength(outerRange, expandBy1, false, sequenceLength);
6549
- const expandBy2 = getRangeLength({
6550
- end: innerRange.end,
6551
- start: outerRange.end
6552
- }, sequenceLength) - 1;
6553
- flippedInnerRange = expandOrContractRangeByLength(flippedInnerRange, expandBy2, true, sequenceLength);
6598
+ const expandBy1 = getRangeLength(
6599
+ {
6600
+ start: innerRange.start,
6601
+ end: outerRange.start
6602
+ },
6603
+ sequenceLength
6604
+ ) - 1;
6605
+ flippedInnerRange = expandOrContractRangeByLength(
6606
+ outerRange,
6607
+ expandBy1,
6608
+ false,
6609
+ sequenceLength
6610
+ );
6611
+ const expandBy2 = getRangeLength(
6612
+ {
6613
+ end: innerRange.end,
6614
+ start: outerRange.end
6615
+ },
6616
+ sequenceLength
6617
+ ) - 1;
6618
+ flippedInnerRange = expandOrContractRangeByLength(
6619
+ flippedInnerRange,
6620
+ expandBy2,
6621
+ true,
6622
+ sequenceLength
6623
+ );
6554
6624
  } else {
6555
- const overlaps = getOverlapsOfPotentiallyCircularRanges(innerRange, outerRange, sequenceLength);
6625
+ const overlaps = getOverlapsOfPotentiallyCircularRanges(
6626
+ innerRange,
6627
+ outerRange,
6628
+ sequenceLength
6629
+ );
6556
6630
  if (overlaps.length >= 1) {
6557
- let overlapExtendsForward;
6558
6631
  const firstOverlap = overlaps[0];
6559
- overlapExtendsForward = firstOverlap.start !== outerRange.start;
6560
- const flippedTruncatedInner = flipFullyContainedRange(firstOverlap, outerRange, sequenceLength);
6632
+ const overlapExtendsForward = firstOverlap.start !== outerRange.start;
6633
+ const flippedTruncatedInner = flipFullyContainedRange(
6634
+ firstOverlap,
6635
+ outerRange,
6636
+ sequenceLength
6637
+ );
6561
6638
  const lengthToExtend = getRangeLength(innerRange, sequenceLength) - getRangeLength(flippedTruncatedInner, sequenceLength);
6562
- flippedInnerRange = expandOrContractRangeByLength(flippedTruncatedInner, lengthToExtend, overlapExtendsForward, sequenceLength);
6639
+ flippedInnerRange = expandOrContractRangeByLength(
6640
+ flippedTruncatedInner,
6641
+ lengthToExtend,
6642
+ overlapExtendsForward,
6643
+ sequenceLength
6644
+ );
6563
6645
  } else {
6564
- throw new Error("This case (relative ranges that do not overlap) is unsupported! ");
6646
+ throw new Error(
6647
+ "This case (relative ranges that do not overlap) is unsupported! "
6648
+ );
6565
6649
  }
6566
6650
  }
6567
6651
  return flippedInnerRange;
6568
6652
  }
6569
6653
  __name(flipNonFullyContainedRange, "flipNonFullyContainedRange");
6570
- function flipFullyContainedRange(innerRange, outerRange, sequenceLength, options) {
6654
+ function flipFullyContainedRange(innerRange, outerRange, sequenceLength) {
6571
6655
  const translateBy = -outerRange.start;
6572
- const translatedOuterRange = translateRange(outerRange, translateBy, sequenceLength);
6573
- const translatedInnerRange = translateRange(innerRange, translateBy, sequenceLength);
6574
- const translatedFlippedInnerRange = flipNonOriginSpanningContainedRange(translatedInnerRange, translatedOuterRange, sequenceLength);
6575
- const flippedInnerRange = translateRange(translatedFlippedInnerRange, -translateBy, sequenceLength);
6656
+ const translatedOuterRange = translateRange(
6657
+ outerRange,
6658
+ translateBy,
6659
+ sequenceLength
6660
+ );
6661
+ const translatedInnerRange = translateRange(
6662
+ innerRange,
6663
+ translateBy,
6664
+ sequenceLength
6665
+ );
6666
+ const translatedFlippedInnerRange = flipNonOriginSpanningContainedRange(
6667
+ translatedInnerRange,
6668
+ translatedOuterRange,
6669
+ sequenceLength
6670
+ );
6671
+ const flippedInnerRange = translateRange(
6672
+ translatedFlippedInnerRange,
6673
+ -translateBy,
6674
+ sequenceLength
6675
+ );
6576
6676
  return flippedInnerRange;
6577
6677
  }
6578
6678
  __name(flipFullyContainedRange, "flipFullyContainedRange");
@@ -6590,7 +6690,10 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6590
6690
  const start = getRandomInt(minStart, maxEnd);
6591
6691
  let end;
6592
6692
  if (maxLength) {
6593
- end = normalizePositionByRangeLength(getRandomInt(start, start + maxLength), maxEnd);
6693
+ end = normalizePositionByRangeLength(
6694
+ getRandomInt(start, start + maxLength),
6695
+ maxEnd
6696
+ );
6594
6697
  } else {
6595
6698
  end = getRandomInt(minStart, maxEnd);
6596
6699
  }
@@ -6642,7 +6745,11 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6642
6745
  }
6643
6746
  __name(getEachPositionInRangeAsArray, "getEachPositionInRangeAsArray");
6644
6747
  function getLengthOfOverlappingRegionsBetweenTwoRanges(rangeA, rangeB, maxLength) {
6645
- const overlaps = getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxLength);
6748
+ const overlaps = getOverlapsOfPotentiallyCircularRanges(
6749
+ rangeA,
6750
+ rangeB,
6751
+ maxLength
6752
+ );
6646
6753
  return overlaps.reduce(function(counter, overlap) {
6647
6754
  return counter + getRangeLength(overlap, maxLength);
6648
6755
  }, 0);
@@ -6695,13 +6802,16 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6695
6802
  if (!(range1.start > -1 && range1.end > -1 && range2.start > -1 && range2.end > -1)) {
6696
6803
  return newRanges;
6697
6804
  }
6698
- return [{
6699
- start: range1.start,
6700
- end: range2.end
6701
- }, {
6702
- start: range2.start,
6703
- end: range1.end
6704
- }];
6805
+ return [
6806
+ {
6807
+ start: range1.start,
6808
+ end: range2.end
6809
+ },
6810
+ {
6811
+ start: range2.start,
6812
+ end: range1.end
6813
+ }
6814
+ ];
6705
6815
  }
6706
6816
  __name(getRangesBetweenTwoRanges, "getRangesBetweenTwoRanges");
6707
6817
  function getSequenceWithinRange(range, sequence) {
@@ -6733,18 +6843,26 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6733
6843
  __name(getShortestDistanceBetweenTwoPositions, "getShortestDistanceBetweenTwoPositions");
6734
6844
  function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, assignYOffsetToRange) {
6735
6845
  let yOffset = [];
6736
- const openYOffsetFound = YOffsetLevelsWithRanges.some(function(rangesAlreadyAddedToYOffset, index) {
6737
- const rangeBlocked = rangesAlreadyAddedToYOffset.some(function(comparisonRange) {
6738
- return checkIfPotentiallyCircularRangesOverlap(range, comparisonRange);
6739
- });
6740
- if (!rangeBlocked) {
6741
- yOffset = index;
6742
- if (assignYOffsetToRange)
6743
- range.yOffset = index;
6744
- rangesAlreadyAddedToYOffset.push(range);
6745
- return true;
6846
+ const openYOffsetFound = YOffsetLevelsWithRanges.some(
6847
+ function(rangesAlreadyAddedToYOffset, index) {
6848
+ const rangeBlocked = rangesAlreadyAddedToYOffset.some(
6849
+ function(comparisonRange) {
6850
+ return checkIfPotentiallyCircularRangesOverlap(
6851
+ range,
6852
+ comparisonRange
6853
+ );
6854
+ }
6855
+ );
6856
+ if (!rangeBlocked) {
6857
+ yOffset = index;
6858
+ if (assignYOffsetToRange)
6859
+ range.yOffset = index;
6860
+ rangesAlreadyAddedToYOffset.push(range);
6861
+ return true;
6862
+ }
6863
+ return false;
6746
6864
  }
6747
- });
6865
+ );
6748
6866
  if (!openYOffsetFound) {
6749
6867
  yOffset = YOffsetLevelsWithRanges.length;
6750
6868
  if (assignYOffsetToRange)
@@ -6758,7 +6876,11 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6758
6876
  let maxYOffset = 0;
6759
6877
  const yOffsetLevels = [];
6760
6878
  ranges.forEach(function(range) {
6761
- const yOffset = getYOffsetForPotentiallyCircularRange(range, yOffsetLevels, assignYOffsetToRange);
6879
+ const yOffset = getYOffsetForPotentiallyCircularRange(
6880
+ range,
6881
+ yOffsetLevels,
6882
+ assignYOffsetToRange
6883
+ );
6762
6884
  yOffsets.push(yOffset);
6763
6885
  if (yOffset > maxYOffset) {
6764
6886
  maxYOffset = yOffset;
@@ -6791,8 +6913,16 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6791
6913
  }
6792
6914
  __name(invertRange$1, "invertRange$1");
6793
6915
  function isPositionCloserToRangeStartThanRangeEnd(position, range, maxLength) {
6794
- const distanceFromStart = getShortestDistanceBetweenTwoPositions(range.start, position, maxLength);
6795
- const distanceFromEnd = getShortestDistanceBetweenTwoPositions(range.end, position, maxLength);
6916
+ const distanceFromStart = getShortestDistanceBetweenTwoPositions(
6917
+ range.start,
6918
+ position,
6919
+ maxLength
6920
+ );
6921
+ const distanceFromEnd = getShortestDistanceBetweenTwoPositions(
6922
+ range.end,
6923
+ position,
6924
+ maxLength
6925
+ );
6796
6926
  return distanceFromStart <= distanceFromEnd;
6797
6927
  }
6798
6928
  __name(isPositionCloserToRangeStartThanRangeEnd, "isPositionCloserToRangeStartThanRangeEnd");
@@ -6837,9 +6967,15 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6837
6967
  }
6838
6968
  __name(trimNumberToFitWithin0ToAnotherNumber, "trimNumberToFitWithin0ToAnotherNumber");
6839
6969
  function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength) {
6840
- const trimmedSubRange = trimRangeByAnotherRange(subRange, containerRange, sequenceLength);
6970
+ const trimmedSubRange = trimRangeByAnotherRange(
6971
+ subRange,
6972
+ containerRange,
6973
+ sequenceLength
6974
+ );
6841
6975
  if (trimmedSubRange) {
6842
- throw new Error("subRange must be fully contained by containerRange! Otherwise this function does not make sense");
6976
+ throw new Error(
6977
+ "subRange must be fully contained by containerRange! Otherwise this function does not make sense"
6978
+ );
6843
6979
  }
6844
6980
  const newSubrange = {};
6845
6981
  newSubrange.start = subRange.start - containerRange.start;
@@ -6867,12 +7003,24 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
6867
7003
  }
6868
7004
  __name(modulo, "modulo");
6869
7005
  function getZeroedRangeOverlaps(annotation, selection, sequenceLength) {
6870
- const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(getOverlapsOfPotentiallyCircularRanges(annotation, selection, sequenceLength), sequenceLength, annotation);
7006
+ const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
7007
+ getOverlapsOfPotentiallyCircularRanges(
7008
+ annotation,
7009
+ selection,
7010
+ sequenceLength
7011
+ ),
7012
+ sequenceLength,
7013
+ annotation
7014
+ );
6871
7015
  const zeroedOverlaps = overlaps.map((overlap) => {
6872
- return zeroSubrangeByContainerRange(overlap, {
6873
- start: selection.start,
6874
- end: normalizePositionByRangeLength(selection.start - 1, sequenceLength)
6875
- }, sequenceLength);
7016
+ return zeroSubrangeByContainerRange(
7017
+ overlap,
7018
+ {
7019
+ start: selection.start,
7020
+ end: normalizePositionByRangeLength(selection.start - 1, sequenceLength)
7021
+ },
7022
+ sequenceLength
7023
+ );
6876
7024
  });
6877
7025
  return zeroedOverlaps;
6878
7026
  }
package/package.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "name": "@teselagen/range-utils",
3
- "version": "0.3.6",
4
- "type": "commonjs",
3
+ "version": "0.3.8",
5
4
  "dependencies": {
6
5
  "lodash": "^4.17.21"
7
6
  },