UNPKG

alinea

Version:
32 lines (30 loc) 995 B
import "../../chunks/chunk-NZLE2WMY.js"; // src/field/list/ListField.ts import { createId } from "alinea/core/Id"; import { Schema } from "alinea/core/Schema"; import { ListField } from "alinea/core/field/ListField"; import { ListRow } from "alinea/core/shape/ListShape"; import { generateNKeysBetween } from "alinea/core/util/FractionalIndexing"; import { viewKeys } from "alinea/dashboard/editor/ViewKeys"; function list(label, options) { return new ListField(options.schema, Schema.shapes(options.schema), { options: { label, ...options, get initialValue() { const initialValue = options.initialValue; if (!Array.isArray(initialValue)) return []; const keys = generateNKeysBetween(null, null, initialValue.length); return initialValue.map((row, index) => ({ [ListRow.id]: createId(), [ListRow.index]: keys[index], ...row })); } }, view: viewKeys.ListInput }); } export { list };