Skip to content

Conversion Utilities

string / optionalString

Map expression values to strings.

This can be used to avoid the default behavior when setting element attributes regarding booleans, null and undefined.

import { string, optionalString } from "rvx/convert";

<div some-value={true} />; // <div some-value="" />
<div some-value={false} />; // <div />
<div some-value={null} />; // <div />

<div some-value={string(true)} />; // <div some-value="true" />
<div some-value={string(false)} />; // <div some-value="false" />
<div some-value={string(null)} />; // <div some-value="null" />

<div some-value={optionalString(true)} />; // <div some-value="true" />
<div some-value={optionalString(false)} />; // <div some-value="false" />
<div some-value={optionalString(null)} />; // <div />
import { string, optionalString } from "./rvx.convert.js";

e("div").set("some-value", true); // <div some-value="" />
e("div").set("some-value", false); // <div />
e("div").set("some-value", null); // <div />

e("div").set("some-value", string(true)); // <div some-value="true" />
e("div").set("some-value", string(false)); // <div some-value="false" />
e("div").set("some-value", string(null)); // <div some-value="null" />

e("div").set("some-value", optionalString(true)); // <div some-value="true" />
e("div").set("some-value", optionalString(false)); // <div some-value="false" />
e("div").set("some-value", optionalString(null)); // <div />

trim

Create a derived signal for trimming user input.

  • The source signal contains the trimmed value.
  • The input signal contains the un-trimmed value.
  • Updates are processed until the current lifecycle is disposed.
import { trim } from "rvx/convert";

<TextInput value={someSignal.pipe(trim)} />
import { trim } from "./rvx.convert.js";

TextInput({ value: someSignal.pipe(trim) })

debounce

Create a derived signal for debouncing user input updates.

  • If the source signal is updated, scheduled updates from the input are aborted.
  • If the input signal is updated, a source update is scheduled with the specified delay and any previously scheduled update is aborted.
  • Updates are processed until the current lifecycle is disposed.
import { debounce } from "rvx/convert";

<TextInput value={someSignal.pipe(debounce, 300)} />
import { debounce } from "./rvx.convert.js";

TextInput({ value: someSignal.pipe(debounce, 300) })