Pack a subset of ProjectSelectorCustomDataShape into a plain record ready to assign to
ProjectSelectorProject.customData. Keys with a wrong-typed value (or undefined) are omitted
so groupings see them as "missing" rather than as a bogus empty string / NaN.
Consumers with additional custom groupings can spread the returned record with their own keys:
constcustomData = { ...makeProjectSelectorCustomData({ language, type, typeName, lastUsedAt }), versificationId, // consumer-defined key for a custom `versification` grouping };
Pack a subset of ProjectSelectorCustomDataShape into a plain record ready to assign to
ProjectSelectorProject.customData. Keys with a wrong-typed value (orundefined) are omitted so groupings see them as "missing" rather than as a bogus empty string / NaN.Consumers with additional custom groupings can spread the returned record with their own keys: