UNPKG

alinea

Version:

[![npm](https://img.shields.io/npm/v/alinea.svg)](https://npmjs.org/package/alinea) [![install size](https://packagephobia.com/badge?p=alinea)](https://packagephobia.com/result?p=alinea)

51 lines (49 loc) 1.26 kB
import { useAtomValue } from "../../chunks/chunk-WF77DMLN.js"; import "../../chunks/chunk-OBOPLPUQ.js"; import "../../chunks/chunk-U5RRZUYZ.js"; // src/dashboard/editor/UseField.tsx import { useFormContext } from "../atoms/FormAtoms.js"; function useField(field) { const atoms = useFormContext(); const actual = typeof field === "string" ? atoms.fieldByKey(field) : field; const fieldKey = useFieldKey(actual); const value = useFieldValue(actual); const mutator = useFieldMutator(actual); const options = useFieldOptions(actual); return { fieldKey, label: options.label, options, value, mutator }; } function useFieldKey(field) { const atoms = useFormContext(); const key = atoms.keyOf(field); return key; } function useFieldOptions(field) { const atoms = useFormContext(); const atom = atoms.atomsOf(field); return useAtomValue(atom.options); } function useFieldValue(field) { const atoms = useFormContext(); const atom = atoms.atomsOf(field); return useAtomValue(atom.value); } function useFieldMutator(field) { const atoms = useFormContext(); const atom = atoms.atomsOf(field); return atom.mutator; } export { useField, useFieldKey, useFieldMutator, useFieldOptions, useFieldValue };