koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
1 lines • 2.3 kB
Source Map (JSON)
{"version":3,"file":"useCarouselRotation.cjs","sources":["../../../../src/lib/Carousel/useCarouselRotation.ts"],"sourcesContent":["import {useCallback, useState} from 'react';\n\nconst getVisibleCellIndex = (index: number, length: number) => {\n return index % length >= 0 ? index % length : length + (index % length);\n};\n\nexport type Props = {\n defaultVisible: number;\n cellsAmount: number;\n onRotate: (index: number) => void;\n};\n\nexport const useCarouselRotation = ({defaultVisible, cellsAmount, onRotate}: Props) => {\n const [rotations, setRotations] = useState(defaultVisible);\n const visibleCellIndex = getVisibleCellIndex(rotations, cellsAmount);\n\n const rotateRight = useCallback(() => {\n const nextRotation = rotations + 1;\n setRotations(nextRotation);\n onRotate(getVisibleCellIndex(nextRotation, cellsAmount));\n }, [rotations, onRotate, cellsAmount]);\n\n const rotateLeft = useCallback(() => {\n const nextRotation = rotations - 1;\n setRotations(nextRotation);\n onRotate(getVisibleCellIndex(nextRotation, cellsAmount));\n }, [rotations, onRotate, cellsAmount]);\n\n const handleRotate = useCallback(() => {\n setRotations(rotations + 1);\n }, [rotations, setRotations]);\n\n return {visibleCellIndex, rotateRight, rotateLeft, rotations, handleRotate};\n};\n"],"names":["getVisibleCellIndex","index","length","useCarouselRotation","defaultVisible","cellsAmount","onRotate","rotations","setRotations","useState","visibleCellIndex","rotateRight","useCallback","nextRotation","rotateLeft","handleRotate"],"mappings":"sHAEMA,EAAsB,CAACC,EAAeC,IACjCD,EAAQC,GAAU,EAAID,EAAQC,EAASA,EAAUD,EAAQC,EASvDC,EAAsB,CAAC,CAAC,eAAAC,EAAgB,YAAAC,EAAa,SAAAC,KAAqB,CACnF,KAAM,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAASL,CAAc,EACnDM,EAAmBV,EAAoBO,EAAWF,CAAW,EAE7DM,EAAcC,EAAAA,YAAY,IAAM,CAClC,MAAMC,EAAeN,EAAY,EACjCC,EAAaK,CAAY,EAChBP,EAAAN,EAAoBa,EAAcR,CAAW,CAAC,CACxD,EAAA,CAACE,EAAWD,EAAUD,CAAW,CAAC,EAE/BS,EAAaF,EAAAA,YAAY,IAAM,CACjC,MAAMC,EAAeN,EAAY,EACjCC,EAAaK,CAAY,EAChBP,EAAAN,EAAoBa,EAAcR,CAAW,CAAC,CACxD,EAAA,CAACE,EAAWD,EAAUD,CAAW,CAAC,EAE/BU,EAAeH,EAAAA,YAAY,IAAM,CACnCJ,EAAaD,EAAY,CAAC,CAAA,EAC3B,CAACA,EAAWC,CAAY,CAAC,EAE5B,MAAO,CAAC,iBAAAE,EAAkB,YAAAC,EAAa,WAAAG,EAAY,UAAAP,EAAW,aAAAQ,CAAY,CAC9E"}