alinea
Version:
[](https://npmjs.org/package/alinea) [](https://packagephobia.com/result?p=alinea)
51 lines (49 loc) • 1.26 kB
JavaScript
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
};