Leon4gr45's picture
Include updated package-lock.json (part 12)
391a73c verified
|
Raw
History Blame Contribute Delete
5.57 kB
<p align="center">
<img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px">
</p>
# @react-pdf/fns
> Lightweight utility functions for react-pdf
A collection of functional programming utilities used internally by react-pdf. Zero dependencies, tree-shakeable, and fully typed.
## Installation
```bash
yarn add @react-pdf/fns
```
## Table of Contents
- [adjust](#adjust)
- [asyncCompose](#asynccompose)
- [capitalize](#capitalize)
- [castArray](#castarray)
- [compose](#compose)
- [dropLast](#droplast)
- [evolve](#evolve)
- [get](#get)
- [isNil](#isnil)
- [last](#last)
- [mapValues](#mapvalues)
- [matchPercent](#matchpercent)
- [omit](#omit)
- [parseFloat](#parsefloat)
- [pick](#pick)
- [repeat](#repeat)
- [reverse](#reverse)
- [upperFirst](#upperfirst)
- [without](#without)
## Functions
### adjust
Applies a function to the value at the given index of an array.
```js
import { adjust } from '@react-pdf/fns';
adjust(1, (x) => x * 2, [1, 2, 3]); // => [1, 4, 3]
adjust(-1, (x) => x + 10, [1, 2, 3]); // => [1, 2, 13]
```
---
### asyncCompose
Performs right-to-left function composition with async functions support. `asyncCompose(f, g, h)(x)` is equivalent to `await f(await g(await h(x)))`.
```js
import { asyncCompose } from '@react-pdf/fns';
const addAsync = async (x) => x + 1;
const double = (x) => x * 2;
const fn = asyncCompose(double, addAsync);
await fn(5); // => 12
```
---
### capitalize
Capitalizes the first letter of each word in a string.
```js
import { capitalize } from '@react-pdf/fns';
capitalize('hello world'); // => 'Hello World'
capitalize('foo bar baz'); // => 'Foo Bar Baz'
```
---
### castArray
Wraps a value in an array if it isn't one already.
```js
import { castArray } from '@react-pdf/fns';
castArray('foo'); // => ['foo']
castArray(['foo']); // => ['foo']
castArray(123); // => [123]
```
---
### compose
Performs right-to-left function composition. `compose(f, g, h)(x)` is equivalent to `f(g(h(x)))`.
```js
import { compose } from '@react-pdf/fns';
const add1 = (x) => x + 1;
const double = (x) => x * 2;
const fn = compose(double, add1);
fn(5); // => 12
```
---
### dropLast
Drops the last element from an array or string.
```js
import { dropLast } from '@react-pdf/fns';
dropLast([1, 2, 3]); // => [1, 2]
dropLast('hello'); // => 'hell'
```
---
### evolve
Applies transformations to an object's values based on a transformation map.
```js
import { evolve } from '@react-pdf/fns';
evolve(
{ count: (n) => n + 1, name: (s) => s.toUpperCase() },
{ name: 'item', count: 5 },
);
// => { name: 'ITEM', count: 6 }
```
---
### get
Retrieves a value at a given path from an object with a default fallback.
```js
import { get } from '@react-pdf/fns';
get({ a: { b: 1 } }, ['a', 'b'], 0); // => 1
get({ a: { b: 1 } }, ['a', 'c'], 0); // => 0
get({ a: { b: 1 } }, 'a', {}); // => { b: 1 }
```
---
### isNil
Checks if a value is `null` or `undefined`.
```js
import { isNil } from '@react-pdf/fns';
isNil(null); // => true
isNil(undefined); // => true
isNil(0); // => false
isNil(''); // => false
```
---
### last
Returns the last element of an array or last character of a string.
```js
import { last } from '@react-pdf/fns';
last([1, 2, 3]); // => 3
last('abc'); // => 'c'
last([]); // => undefined
```
---
### mapValues
Maps over the values of an object, applying a function to each value.
```js
import { mapValues } from '@react-pdf/fns';
mapValues({ a: 1, b: 2 }, (v) => v * 2); // => { a: 2, b: 4 }
mapValues({ x: 'foo', y: 'bar' }, (v, k) => `${k}:${v}`);
// => { x: 'x:foo', y: 'y:bar' }
```
---
### matchPercent
Parses a percentage string and returns both the numeric value and decimal percent.
```js
import { matchPercent } from '@react-pdf/fns';
matchPercent('50%'); // => { value: 50, percent: 0.5 }
matchPercent('-25%'); // => { value: -25, percent: -0.25 }
matchPercent('abc'); // => null
```
---
### omit
Creates a new object excluding specified keys.
```js
import { omit } from '@react-pdf/fns';
omit('b', { a: 1, b: 2, c: 3 }); // => { a: 1, c: 3 }
omit(['a', 'c'], { a: 1, b: 2, c: 3 }); // => { b: 2 }
```
---
### parseFloat
Parses a string to a float. Non-string values pass through unchanged.
```js
import { parseFloat } from '@react-pdf/fns';
parseFloat('3.14'); // => 3.14
parseFloat('10px'); // => 10
parseFloat(42); // => 42
parseFloat(null); // => null
```
---
### pick
Creates a new object with only the specified keys.
```js
import { pick } from '@react-pdf/fns';
pick(['a', 'c'], { a: 1, b: 2, c: 3 }); // => { a: 1, c: 3 }
pick(['x'], { a: 1, b: 2 }); // => {}
```
---
### repeat
Creates an array with an element repeated a specified number of times.
```js
import { repeat } from '@react-pdf/fns';
repeat('a', 3); // => ['a', 'a', 'a']
repeat(0, 4); // => [0, 0, 0, 0]
```
---
### reverse
Returns a new array with elements in reverse order (does not mutate original).
```js
import { reverse } from '@react-pdf/fns';
reverse([1, 2, 3]); // => [3, 2, 1]
reverse(['a', 'b', 'c']); // => ['c', 'b', 'a']
```
---
### upperFirst
Converts the first character of a string to uppercase.
```js
import { upperFirst } from '@react-pdf/fns';
upperFirst('hello'); // => 'Hello'
upperFirst('hELLO'); // => 'HELLO'
```
---
### without
Returns a new array excluding the specified values.
```js
import { without } from '@react-pdf/fns';
without([2, 4], [1, 2, 3, 4, 5]); // => [1, 3, 5]
without(['b'], ['a', 'b', 'c']); // => ['a', 'c']
```
## License
MIT