mirror of
https://github.com/vector-im/hydrogen-web.git
synced 2024-12-23 11:35:04 +01:00
move sortedIndex out of observable as other code will want to use it too
This commit is contained in:
parent
95bef00054
commit
6940e14b18
@ -1,5 +1,5 @@
|
||||
import BaseObservableList from "./BaseObservableList.js";
|
||||
|
||||
import sortedIndex from "../../utils/sortedIndex";
|
||||
|
||||
/*
|
||||
|
||||
@ -25,35 +25,6 @@ so key -> Map<key,value> -> value -> node -> *parentNode -> rootNode
|
||||
with a node containing {value, leftCount, rightCount, leftNode, rightNode, parentNode}
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @license
|
||||
* Based off baseSortedIndex function in Lodash <https://lodash.com/>
|
||||
* Copyright JS Foundation and other contributors <https://js.foundation/>
|
||||
* Released under MIT license <https://lodash.com/license>
|
||||
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
||||
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||||
*/
|
||||
function sortedIndex(array, value, comparator) {
|
||||
let low = 0;
|
||||
let high = array.length;
|
||||
|
||||
while (low < high) {
|
||||
let mid = (low + high) >>> 1;
|
||||
let cmpResult = comparator(value, array[mid]);
|
||||
|
||||
if (cmpResult > 0) {
|
||||
low = mid + 1;
|
||||
} else if (cmpResult < 0) {
|
||||
high = mid;
|
||||
} else {
|
||||
low = high = mid;
|
||||
}
|
||||
}
|
||||
return high;
|
||||
}
|
||||
|
||||
|
||||
// does not assume whether or not the values are reference
|
||||
// types modified outside of the collection (and affecting sort order) or not
|
||||
|
||||
|
26
src/utils/sortedIndex.js
Normal file
26
src/utils/sortedIndex.js
Normal file
@ -0,0 +1,26 @@
|
||||
/**
|
||||
* @license
|
||||
* Based off baseSortedIndex function in Lodash <https://lodash.com/>
|
||||
* Copyright JS Foundation and other contributors <https://js.foundation/>
|
||||
* Released under MIT license <https://lodash.com/license>
|
||||
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
||||
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||||
*/
|
||||
export default function sortedIndex(array, value, comparator) {
|
||||
let low = 0;
|
||||
let high = array.length;
|
||||
|
||||
while (low < high) {
|
||||
let mid = (low + high) >>> 1;
|
||||
let cmpResult = comparator(value, array[mid]);
|
||||
|
||||
if (cmpResult > 0) {
|
||||
low = mid + 1;
|
||||
} else if (cmpResult < 0) {
|
||||
high = mid;
|
||||
} else {
|
||||
low = high = mid;
|
||||
}
|
||||
}
|
||||
return high;
|
||||
}
|
Loading…
Reference in New Issue
Block a user