import { Flex, Input, HStack, FormControl, FormLabel, Text, Button, } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; import { isEqual } from 'lodash'; import { NUMPY_RAND_MAX, NUMPY_RAND_MIN } from '../../app/constants'; import { useAppDispatch, useAppSelector } from '../../app/hooks'; import { RootState } from '../../app/store'; import SDNumberInput from '../../components/SDNumberInput'; import SDSwitch from '../../components/SDSwitch'; import { randomizeSeed, SDState, setIterations, setSeed, setSeedWeights, setShouldGenerateVariations, setShouldRandomizeSeed, setVariantAmount, } from './sdSlice'; import { validateSeedWeights } from './util/seedWeightPairs'; const sdSelector = createSelector( (state: RootState) => state.sd, (sd: SDState) => { return { variantAmount: sd.variantAmount, seedWeights: sd.seedWeights, shouldGenerateVariations: sd.shouldGenerateVariations, shouldRandomizeSeed: sd.shouldRandomizeSeed, seed: sd.seed, iterations: sd.iterations, }; }, { memoizeOptions: { resultEqualityCheck: isEqual, }, } ); const SeedVariationOptions = () => { const { shouldGenerateVariations, variantAmount, seedWeights, shouldRandomizeSeed, seed, iterations, } = useAppSelector(sdSelector); const dispatch = useAppDispatch(); return ( dispatch(setIterations(Number(v)))} value={iterations} /> dispatch(setShouldRandomizeSeed(e.target.checked)) } /> dispatch(setSeed(Number(v)))} value={seed} /> dispatch(setShouldGenerateVariations(e.target.checked)) } /> dispatch(setVariantAmount(Number(v)))} /> Seed Weights dispatch(setSeedWeights(e.target.value)) } /> ); }; export default SeedVariationOptions;