@carto/react-core
Version:
CARTO for React - Core
36 lines (30 loc) • 790 B
JavaScript
export const Flags = Object.freeze({
REMOTE_WIDGETS: '2023-remote-widgets'
});
// Default flags
let featureFlags = [Flags.REMOTE_WIDGETS];
export function setFlags(flags) {
const isValidFlag = (f) => typeof f === 'string' && f;
if (Array.isArray(flags) && flags.every(isValidFlag)) {
featureFlags = flags;
} else if (
!Array.isArray(flags) &&
typeof flags === 'object' &&
Object.keys(flags).every(isValidFlag)
) {
featureFlags = [];
for (const [flag, value] of Object.entries(flags)) {
if (value) {
featureFlags.push(flag);
}
}
} else {
throw new Error(`Invalid feature flags: ${flags}`);
}
}
export function clearFlags() {
featureFlags = [];
}
export function hasFlag(flag) {
return featureFlags.includes(flag);
}