import { Hypermedia, HypermediaAction } from 'first-npm-package-nicule/core';

export function disableFields(...fieldNames: Array<string>): (hypermediaAction: HypermediaAction, hypermedia: Hypermedia) => HypermediaAction {
    return ({ fields, ...rest }: HypermediaAction) => {
        fields = fields.map(({ name, isDisabled, ...restField }) => {
            if (fieldNames.includes(name)) {
                isDisabled = true;
            }

            return {
                name, isDisabled,
                ...restField
            };
        });

        return { ...rest, fields };
    };
}
