in public/dexie.js [3484:3513]
function nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp, dir) {
var length = Math.min(key.length, lowerNeedle.length);
var llp = -1;
for (var i = 0; i < length; ++i) {
var lwrKeyChar = lowerKey[i];
if (lwrKeyChar !== lowerNeedle[i]) {
if (cmp(key[i], upperNeedle[i]) < 0)
return (
key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1)
);
if (cmp(key[i], lowerNeedle[i]) < 0)
return (
key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1)
);
if (llp >= 0)
return (
key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1)
);
return null;
}
if (cmp(key[i], lwrKeyChar) < 0) llp = i;
}
if (length < lowerNeedle.length && dir === "next")
return key + upperNeedle.substr(key.length);
if (length < key.length && dir === "prev")
return key.substr(0, upperNeedle.length);
return llp < 0
? null
: key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1);
}