#pragma once #include #include #include #include #include #include #include namespace renderive::web { template requires std::is_enum_v std::string gallery_enum_id(Enum value) { std::string result(magic_enum::enum_name(value)); std::ranges::transform(result, result.begin(), [](unsigned char character) { return static_cast(std::tolower(character)); }); return result; } template requires std::is_enum_v std::optional gallery_enum_cast(std::string_view identifier) { for (const Enum value : magic_enum::enum_values()) { if (gallery_enum_id(value) == identifier) return value; } return std::nullopt; } } // namespace renderive::web