@tldraw/indices
Welcome to indices by tldraw. This library provides functions for features that rely on fractional indexing. It is based on the observable Implementing Fractional Indexing by @DavidG.
Fractional indexing is a method for creating indices between other indices without running into precision errors. This is useful when items are modeled as object maps rather than as arrays.
For example, imagine a stack of 5 cards:
const cards = {
A: 0,
B: 1,
C: 2,
D: 3,
E: 4,
}
In a naive implementation of indexing, moving card E to the "bottom" of the stack would mean changing every item in the map.
const cards = {
A: 1,
B: 2,
C: 3,
D: 4,
E: 0,
}
each with an index between 0 and 51. In a naive implementation of indices, moving the top card (index 51) to the bottom of the deck would mean changing its index to 0, changing the previous bottom card's index to 1, and so forth incrementing every other card's index by one.
Installation
npm i @tldraw/indices
yarn add @tldraw/indices
Usage
getIndexBetween
Get an index between two other indices.
getIndexAbove
Get an index above a given index.
getIndexBelow
Get an index below a given index.
getIndicesBetween
Get a number of indices between two indices.
getIndicesAbove
Get a number of indices above a given index.
getIndicesBelow
Get a number of indices below a given index.
getIndices
Get an array of indices with a given length.
sortByIndex
Sort an array of objects by their index property.
License
The source code in this repository (as well as our 2.0+ distributions and releases) are currently licensed under Apache-2.0. These licenses are subject to change in our upcoming 2.0 release. If you are planning to use tldraw in a commercial product, please reach out at hello@tldraw.com.