@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.