{"version":3,"file":"index.cjs","names":["reducer","allAdapterIdentifiers","ConfigureAdapter","flagsReducer","statusReducer","createFlagsReducer","allAdapterIdentifiers","DEFAULT_FLAG_PROP_KEY","DEFAULT_FLAGS_PROP_KEY","SharedToggleFeature"],"sources":["../src/constants.ts","../src/ducks/flags.ts","../src/use-feature-toggle.ts","../src/branch-on-feature-toggle.tsx","../src/use-update-flags.ts","../src/ducks/status.ts","../src/use-update-status.ts","../src/configure.tsx","../src/ducks/index.ts","../src/enhancer.ts","../src/use-flag-variations.ts","../src/inject-feature-toggle.tsx","../src/inject-feature-toggles.tsx","../src/toggle-feature.tsx","../src/use-adapter-status.ts","../src/use-all-feature-toggles.ts","../src/use-feature-toggles.ts","../src/use-flag-variation.ts","../src/index.ts"],"sourcesContent":["export const STATE_SLICE = '@flopflip';\n","import { isNil } from '@flopflip/react';\nimport type {\n  TAdapterIdentifiers,\n  TFlagName,\n  TFlagsChange,\n  TFlagsContext,\n  TFlagVariation,\n} from '@flopflip/types';\nimport { createSlice, type PayloadAction } from '@reduxjs/toolkit';\n\nimport { STATE_SLICE } from '../constants';\nimport type { TState } from '../types';\n\nconst initialState: TFlagsContext = { memory: {} };\n\nconst flagsSlice = createSlice({\n  name: 'flags',\n  initialState,\n  reducers: {\n    updateFlags: {\n      reducer(\n        state,\n        action: PayloadAction<\n          TFlagsChange & { adapterIdentifiers: TAdapterIdentifiers[] }\n        >,\n      ) {\n        if (action.payload.id) {\n          state[action.payload.id] = {\n            ...state[action.payload.id],\n            ...action.payload.flags,\n          };\n          return;\n        }\n\n        for (const adapterId of action.payload.adapterIdentifiers) {\n          state[adapterId] = {\n            ...state[adapterId],\n            ...action.payload.flags,\n          };\n        }\n      },\n      prepare(\n        flagsChange: TFlagsChange,\n        adapterIdentifiers: TAdapterIdentifiers[],\n      ) {\n        return {\n          payload: { ...flagsChange, adapterIdentifiers },\n        };\n      },\n    },\n  },\n});\n\nexport const { updateFlags } = flagsSlice.actions;\nexport const reducer = flagsSlice.reducer;\n\nexport const createReducer = (preloadedState: TFlagsContext = initialState) => {\n  // oxlint-disable-next-line default-param-last -- false positive\n  return (state = preloadedState, action: ReturnType<typeof updateFlags>) =>\n    reducer(state, action);\n};\n\nexport const selectFlags = () => (state: TState) =>\n  state[STATE_SLICE].flags ?? {};\n\nexport const selectFlag =\n  (flagName: TFlagName, adapterIdentifiers: TAdapterIdentifiers[]) =>\n  (state: TState): TFlagVariation => {\n    const allFlags = selectFlags()(state);\n    let foundFlagVariation: TFlagVariation = false;\n\n    for (const adapterId of adapterIdentifiers) {\n      const flagValue = allFlags[adapterId]?.[flagName];\n      if (!isNil(flagValue)) {\n        foundFlagVariation = flagValue;\n      }\n    }\n\n    return foundFlagVariation;\n  };\n","import { getIsFeatureEnabled, useAdapterContext } from '@flopflip/react';\nimport type { TFlagName, TFlagVariation } from '@flopflip/types';\nimport { useDebugValue } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { selectFlags } from './ducks/flags';\n\nfunction useFeatureToggle(\n  flagName: TFlagName,\n  flagVariation: TFlagVariation = true,\n) {\n  const adapterContext = useAdapterContext();\n  const allFlags = useSelector(selectFlags());\n\n  const isFeatureEnabled: boolean = getIsFeatureEnabled(\n    allFlags,\n    adapterContext.adapterEffectIdentifiers,\n    flagName,\n    flagVariation,\n  );\n\n  useDebugValue({\n    flagName,\n    flagVariation,\n    isEnabled: isFeatureEnabled,\n  });\n\n  return isFeatureEnabled;\n}\n\nexport { useFeatureToggle };\n","import type { TFlagName, TFlagVariation } from '@flopflip/types';\nimport React from 'react';\n\nimport { useFeatureToggle } from './use-feature-toggle';\n\ntype TBranchOnFeatureToggleOptions = {\n  flag: TFlagName;\n  variation?: TFlagVariation;\n};\nfunction branchOnFeatureToggle<OwnProps extends Record<string, unknown>>(\n  { flag: flagName, variation: flagVariation }: TBranchOnFeatureToggleOptions,\n  UntoggledComponent?: React.ComponentType,\n) {\n  return (ToggledComponent: React.ComponentType<OwnProps>) => {\n    function WrappedToggledComponent(ownProps: OwnProps) {\n      const isFeatureEnabled = useFeatureToggle(flagName, flagVariation);\n\n      if (isFeatureEnabled) {\n        return <ToggledComponent {...ownProps} />;\n      }\n      if (UntoggledComponent) {\n        return <UntoggledComponent {...ownProps} />;\n      }\n      return null;\n    }\n\n    return WrappedToggledComponent;\n  };\n}\n\nexport { branchOnFeatureToggle };\n","import type {\n  TAdapterEventHandlers,\n  TAdapterIdentifiers,\n  TFlagsChange,\n} from '@flopflip/types';\nimport { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { updateFlags } from './ducks/flags';\n\ntype TUseUpdateFlagsOptions = {\n  adapterIdentifiers: TAdapterIdentifiers[];\n};\nconst useUpdateFlags = ({\n  adapterIdentifiers,\n}: TUseUpdateFlagsOptions): TAdapterEventHandlers['onFlagsStateChange'] => {\n  const dispatch = useDispatch();\n\n  return useCallback(\n    (flagsChange: TFlagsChange) =>\n      dispatch(updateFlags(flagsChange, adapterIdentifiers)),\n    [dispatch, adapterIdentifiers],\n  );\n};\n\nexport { useUpdateFlags };\n","import { selectAdapterConfigurationStatus } from '@flopflip/react';\nimport type {\n  TAdapterIdentifiers,\n  TAdapterStatusChange,\n  TAdaptersStatus,\n} from '@flopflip/types';\nimport { createSlice, type PayloadAction } from '@reduxjs/toolkit';\n\nimport { STATE_SLICE } from '../constants';\nimport type { TState } from '../types';\n\nconst initialState: TAdaptersStatus = {};\n\nconst statusSlice = createSlice({\n  name: 'status',\n  initialState,\n  reducers: {\n    updateStatus: {\n      reducer(\n        state,\n        action: PayloadAction<\n          TAdapterStatusChange & { adapterIdentifiers: TAdapterIdentifiers[] }\n        >,\n      ) {\n        if (action.payload.id) {\n          state[action.payload.id] = {\n            ...state[action.payload.id],\n            ...action.payload.status,\n          };\n          return;\n        }\n\n        for (const adapterInterfaceIdentifier of action.payload\n          .adapterIdentifiers) {\n          state[adapterInterfaceIdentifier] = {\n            ...state[adapterInterfaceIdentifier],\n            ...action.payload.status,\n          };\n        }\n      },\n      prepare(\n        statusChange: TAdapterStatusChange,\n        adapterIdentifiers: TAdapterIdentifiers[],\n      ) {\n        return {\n          payload: { ...statusChange, adapterIdentifiers },\n        };\n      },\n    },\n  },\n});\n\nexport const { updateStatus } = statusSlice.actions;\nexport const reducer = statusSlice.reducer;\n\n// Selectors\ntype TSelectStatusArgs = {\n  adapterIdentifiers?: TAdapterIdentifiers[];\n};\n\nexport const selectStatus =\n  ({ adapterIdentifiers }: TSelectStatusArgs = {}) =>\n  (state: TState) => {\n    const { status } = state[STATE_SLICE];\n    return selectAdapterConfigurationStatus(status, adapterIdentifiers);\n  };\n","import {\n  adapterIdentifiers as allAdapterIdentifiers,\n  type TAdapterEventHandlers,\n  type TAdapterStatusChange,\n} from '@flopflip/types';\nimport { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { updateStatus } from './ducks/status';\n\nconst useUpdateStatus = (): TAdapterEventHandlers['onStatusStateChange'] => {\n  const dispatch = useDispatch();\n\n  return useCallback(\n    (statusChange: TAdapterStatusChange) =>\n      dispatch(updateStatus(statusChange, Object.keys(allAdapterIdentifiers))),\n    [dispatch],\n  );\n};\n\nexport { useUpdateStatus };\n","import { ConfigureAdapter, useAdapterSubscription } from '@flopflip/react';\nimport type {\n  TAdapter,\n  TConfigureAdapterChildren,\n  TConfigureAdapterProps,\n  TFlags,\n} from '@flopflip/types';\n// oxlint-disable-next-line no-unused-vars -- false positive\nimport React from 'react';\n\nimport { useUpdateFlags } from './use-update-flags';\nimport { useUpdateStatus } from './use-update-status';\n\ntype TBaseProps = {\n  readonly children?: TConfigureAdapterChildren;\n  readonly shouldDeferAdapterConfiguration?: boolean;\n  readonly defaultFlags?: TFlags;\n};\ntype TProps<AdapterInstance extends TAdapter> = TBaseProps &\n  TConfigureAdapterProps<AdapterInstance>;\n\nfunction Configure<AdapterInstance extends TAdapter>({\n  adapter,\n  adapterArgs,\n  children,\n  defaultFlags = {},\n  shouldDeferAdapterConfiguration = false,\n}: TProps<AdapterInstance>) {\n  const adapterIdentifiers = [adapter.id];\n  const handleUpdateFlags = useUpdateFlags({ adapterIdentifiers });\n  const handleUpdateStatus = useUpdateStatus();\n\n  useAdapterSubscription(adapter);\n\n  return (\n    <ConfigureAdapter\n      adapter={adapter}\n      adapterArgs={adapterArgs}\n      defaultFlags={defaultFlags}\n      shouldDeferAdapterConfiguration={shouldDeferAdapterConfiguration}\n      onFlagsStateChange={handleUpdateFlags}\n      onStatusStateChange={handleUpdateStatus}\n    >\n      {children}\n    </ConfigureAdapter>\n  );\n}\n\nConfigure.displayName = 'ConfigureFlopflip';\n\nexport { Configure };\n","import type { TFlagsContext } from '@flopflip/types';\nimport { combineReducers } from '@reduxjs/toolkit';\n\nimport {\n  createReducer as createFlagsReducer,\n  reducer as flagsReducer,\n} from './flags';\nimport { reducer as statusReducer } from './status';\n\nexport { selectFlag, selectFlags, updateFlags } from './flags';\nexport { updateStatus } from './status';\n\nexport const flopflipReducer = combineReducers({\n  flags: flagsReducer,\n  status: statusReducer,\n});\nexport const createFlopflipReducer = (\n  preloadedState: TFlagsContext = { memory: {} },\n) =>\n  combineReducers({\n    flags: createFlagsReducer(preloadedState),\n    status: statusReducer,\n  });\n","import {\n  adapterIdentifiers as allAdapterIdentifiers,\n  type TAdapter,\n  type TAdapterArgs,\n  type TAdapterInterface,\n  type TAdapterStatusChange,\n  type TFlagsChange,\n} from '@flopflip/types';\nimport { createAction } from '@reduxjs/toolkit';\nimport type { Reducer, Store, StoreEnhancerStoreCreator } from 'redux';\n\nimport { updateFlags, updateStatus } from './ducks';\nimport type { TState } from './types';\n\n// Create typed actions\nconst configureAdapter = createAction<{\n  adapter: TAdapter;\n  adapterArgs: TAdapterArgs;\n}>('flopflip/configureAdapter');\n\nfunction createFlopFlipEnhancer(\n  adapter: TAdapter,\n  adapterArgs: TAdapterArgs,\n): <StoreState extends TState>(\n  next: StoreEnhancerStoreCreator<StoreState>,\n) => (reducer: Reducer<StoreState>, preloadedState?: StoreState) => Store {\n  return (next) =>\n    (...args) => {\n      const store: Store = next(...args);\n\n      // Dispatch configuration action\n      store.dispatch(configureAdapter({ adapter, adapterArgs }));\n\n      // Configure adapter with bound action creators\n      (adapter as TAdapterInterface<TAdapterArgs>).configure(adapterArgs, {\n        onFlagsStateChange: (flagsChange: TFlagsChange) => {\n          store.dispatch(updateFlags(flagsChange, [adapter.id]));\n        },\n        onStatusStateChange: (statusChange: TAdapterStatusChange) => {\n          store.dispatch(\n            updateStatus(statusChange, Object.keys(allAdapterIdentifiers)),\n          );\n        },\n      });\n\n      return store;\n    };\n}\n\nexport { createFlopFlipEnhancer };\n","import { getFlagVariation, useAdapterContext } from '@flopflip/react';\nimport type { TFlagName, TFlagVariation } from '@flopflip/types';\nimport { useSelector } from 'react-redux';\n\nimport { selectFlags } from './ducks/flags';\n\nfunction useFlagVariations(\n  flagNames: (TFlagName | undefined)[],\n): TFlagVariation[] {\n  const adapterContext = useAdapterContext();\n  const allFlags = useSelector(selectFlags());\n  const flagVariations: TFlagVariation[] = flagNames.map((requestedVariation) =>\n    getFlagVariation(\n      allFlags,\n      adapterContext.adapterEffectIdentifiers,\n      requestedVariation,\n    ),\n  );\n\n  return flagVariations;\n}\n\nexport { useFlagVariations };\n","import {\n  DEFAULT_FLAG_PROP_KEY,\n  setDisplayName,\n  wrapDisplayName,\n} from '@flopflip/react';\nimport type { TFlagName, TFlagVariation } from '@flopflip/types';\nimport React from 'react';\n\nimport { useFlagVariations } from './use-flag-variations';\n\ntype InjectedProps = Record<string, TFlagVariation>;\n\nconst injectFeatureToggle =\n  <OwnProps extends Record<string, unknown>>(\n    flagName: TFlagName,\n    propKey: string = DEFAULT_FLAG_PROP_KEY,\n  ) =>\n  (\n    Component: React.ComponentType<any>,\n  ): React.ComponentType<OwnProps & InjectedProps> => {\n    function WrappedComponent(ownProps: OwnProps) {\n      const [flagVariation] = useFlagVariations([flagName]);\n      const props = {\n        ...ownProps,\n        [propKey]: flagVariation,\n      };\n\n      return <Component {...props} />;\n    }\n\n    setDisplayName(wrapDisplayName(WrappedComponent, 'injectFeatureToggle'));\n\n    return WrappedComponent;\n  };\n\nexport { injectFeatureToggle };\n","import {\n  DEFAULT_FLAGS_PROP_KEY,\n  setDisplayName,\n  wrapDisplayName,\n} from '@flopflip/react';\nimport type { TFlagName, TFlags } from '@flopflip/types';\nimport React from 'react';\n\nimport { useFlagVariations } from './use-flag-variations';\n\ntype InjectedProps = Record<string, TFlags>;\n\nconst injectFeatureToggles =\n  <OwnProps extends Record<string, unknown>>(\n    flagNames: TFlagName[],\n    propKey: string = DEFAULT_FLAGS_PROP_KEY,\n  ) =>\n  (\n    Component: React.ComponentType,\n  ): React.ComponentType<OwnProps & InjectedProps> => {\n    function WrappedComponent(ownProps: OwnProps) {\n      const flagVariations = useFlagVariations(flagNames);\n      const flags = Object.fromEntries(\n        flagNames.map((flagName, indexOfFlagName) => [\n          flagName,\n          flagVariations[indexOfFlagName],\n        ]),\n      );\n      const props = {\n        ...ownProps,\n        [propKey]: flags,\n      };\n\n      return <Component {...props} />;\n    }\n\n    setDisplayName(wrapDisplayName(WrappedComponent, 'injectFeatureToggles'));\n\n    return WrappedComponent;\n  };\n\nexport { injectFeatureToggles };\n","import {\n  ToggleFeature as SharedToggleFeature,\n  type TToggleFeatureProps,\n} from '@flopflip/react';\nimport type { TFlagName, TFlagVariation } from '@flopflip/types';\n// oxlint-disable-next-line no-unused-vars -- false positive\nimport React from 'react';\n\nimport { useFeatureToggle } from './use-feature-toggle';\n\ntype TProps = {\n  flag: TFlagName;\n  variation?: TFlagVariation;\n} & Omit<TToggleFeatureProps, 'isFeatureEnabled'>;\n\nfunction ToggleFeature<OwnProps extends TProps>({\n  flag,\n  variation,\n  ...remainingProps\n}: OwnProps) {\n  const isFeatureEnabled = useFeatureToggle(flag, variation);\n\n  return (\n    <SharedToggleFeature\n      flag={flag}\n      variation={variation}\n      {...remainingProps}\n      isFeatureEnabled={isFeatureEnabled}\n    />\n  );\n}\n\nToggleFeature.displayName = 'ToggleFeature';\n\nexport { ToggleFeature };\n","import type { TAdapterIdentifiers } from '@flopflip/types';\nimport { useDebugValue } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { selectStatus } from './ducks/status';\n\ntype TUseAdapterStatusArgs = { adapterIdentifiers?: TAdapterIdentifiers[] };\nfunction useAdapterStatus({ adapterIdentifiers }: TUseAdapterStatusArgs = {}) {\n  const adapterStatus = useSelector(selectStatus({ adapterIdentifiers }));\n\n  useDebugValue({ adapterStatus });\n\n  return adapterStatus;\n}\n\nexport { useAdapterStatus };\n","import { useAdapterContext } from '@flopflip/react';\nimport type { TFlags } from '@flopflip/types';\nimport { useSelector } from 'react-redux';\n\nimport { selectFlags } from './ducks/flags';\n\nfunction useAllFeatureToggles(): TFlags {\n  const adapterContext = useAdapterContext();\n  const allFlags = useSelector(selectFlags());\n  const reversedAdapterEffectIdentifiers = [\n    ...adapterContext.adapterEffectIdentifiers,\n  ].toReversed();\n\n  return reversedAdapterEffectIdentifiers.reduce<TFlags>(\n    (_allFlags, adapterIdentifier) => ({\n      ..._allFlags,\n      ...allFlags[adapterIdentifier],\n    }),\n    {},\n  );\n}\n\nexport { useAllFeatureToggles };\n","import { getIsFeatureEnabled, useAdapterContext } from '@flopflip/react';\nimport type { TFlagName, TFlags, TFlagVariation } from '@flopflip/types';\nimport { useSelector } from 'react-redux';\n\nimport { selectFlags } from './ducks/flags';\n\nfunction useFeatureToggles(flags: TFlags) {\n  const allFlags = useSelector(selectFlags());\n  const adapterContext = useAdapterContext();\n\n  const requestedFlags: boolean[] = Object.entries(flags).reduce<boolean[]>(\n    (previousFlags, [flagName, flagVariation]: [TFlagName, TFlagVariation]) => {\n      const isFeatureEnabled: boolean = getIsFeatureEnabled(\n        allFlags,\n        adapterContext.adapterEffectIdentifiers,\n        flagName,\n        flagVariation,\n      );\n\n      previousFlags.push(isFeatureEnabled);\n\n      return previousFlags;\n    },\n    [],\n  );\n\n  return requestedFlags;\n}\n\nexport { useFeatureToggles };\n","import type { TFlagName, TFlagVariation } from '@flopflip/types';\n\nimport { useFlagVariations } from './use-flag-variations';\n\nfunction useFlagVariation(flagName?: TFlagName): TFlagVariation {\n  const [flagVariation] = useFlagVariations([flagName]);\n\n  return flagVariation;\n}\n\nexport { useFlagVariation };\n","const version = '__@FLOPFLIP/VERSION_OF_RELEASE__';\n\nexport { branchOnFeatureToggle } from './branch-on-feature-toggle';\nexport { Configure as ConfigureFlopFlip } from './configure';\nexport { STATE_SLICE as FLOPFLIP_STATE_SLICE } from './constants';\nexport {\n  createFlopflipReducer,\n  flopflipReducer,\n  selectFlag as selectFeatureFlag,\n  selectFlags as selectFeatureFlags,\n} from './ducks';\nexport { createFlopFlipEnhancer } from './enhancer';\nexport { injectFeatureToggle } from './inject-feature-toggle';\nexport { injectFeatureToggles } from './inject-feature-toggles';\nexport { ReconfigureAdapter as ReconfigureFlopFlip } from './reconfigure';\nexport { ToggleFeature } from './toggle-feature';\nexport { useAdapterReconfiguration } from './use-adapter-reconfiguration';\nexport { useAdapterStatus } from './use-adapter-status';\nexport { useAllFeatureToggles } from './use-all-feature-toggles';\nexport { useFeatureToggle } from './use-feature-toggle';\nexport { useFeatureToggles } from './use-feature-toggles';\nexport { useFlagVariation } from './use-flag-variation';\nexport { useFlagVariations } from './use-flag-variations';\n\nexport { version };\n"],"mappings":"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"}