Skip to content

createProjection

Category
Export Size
137 B
Package
@reause/math
Last Changed
5 days ago
Related

Reactive numeric projection from one domain to another.

Demo

Usage

tsx
import { 
createProjection
} from '@reause/math'
import {
useState
} from 'react'
const
useProjector
=
createProjection
([0, 10], [0, 100])
const [
input
,
setInput
] =
useState
(0)
const
projected
=
useProjector
(
input
) // 0
setInput
(5) // projected === 50 on the next render
setInput
(10) // projected === 100 on the next render

Type Declarations

ts
export type ProjectorFunction<F, T> = (input: F, from: readonly [
    F,
    F
], to: readonly [
    T,
    T
]) => T

export type UseProjection<F, T> = (input: F) => T

export function createProjection(fromDomain: readonly [
    number,
    number
], toDomain: readonly [
    number,
    number
], projector?: ProjectorFunction<number, number>): UseProjection<number, number>

export function useProjection(input: number, fromDomain: readonly [
    number,
    number
], toDomain: readonly [
    number,
    number
], projector?: ProjectorFunction<number, number>): number

export function createGenericProjection<F = number, T = number>(fromDomain: readonly [
    F,
    F
], toDomain: readonly [
    T,
    T
], projector: ProjectorFunction<F, T>): UseProjection<F, T>

Source

Source · Demo

Contributors

hairyf

Changelog

v0.1.0 on
ffc0b - feat(math): add createGenericProjection + createProjection (#16, #17)

Released under the MIT License. v0.1.8