UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

110 lines (103 loc) 2.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); const useCoreOptions = ({ state, dispatch, props, bodyRef }) => { // 获取是否为视频格式 const getIsVideo = (0, _react.useCallback)(url => { const fileExtension = url.replace(/.*\./, '').toLowerCase(); return ['mp4', 'm2v', 'mkv', 'ogm', 'webm'].includes(fileExtension); }, []); const setTransform = (0, _react.useCallback)(type => { let scale = state.transform.scale * 100; let rotateZ = state.transform.rotateZ; switch (type) { case 'zoomIn': scale += 25; break; case 'zoomOut': scale < 30 ? scale : scale -= 25; break; case 'rotateLeft': rotateZ -= 90; break; case 'rotateRight': rotateZ += 90; break; default: break; } dispatch({ type: 'changeTransform', transform: { rotateZ, scale: scale / 100 } }); }, [state.transform]); // 切换轮播前的回调 const beforeChange = (0, _react.useCallback)((from, currentIndex) => { dispatch({ type: 'changeCurrent', current: { currentIndex } }); }, []); // 切换轮播后的回调 const afterChange = (0, _react.useCallback)(currentIndex => { dispatch({ type: 'changeCurrent', current: { currentIndex } }); }, []); // 转到指定的轮播图, 直接跳转, 不展示动画 const slickGoTo = (0, _react.useCallback)(currentIndex => { bodyRef.current.goTo(currentIndex, true); }, []); // 转到下一张轮播图 const slickNext = (0, _react.useCallback)(() => { bodyRef.current.next(); }, []); // 转到上一张轮播图 const slickPrev = (0, _react.useCallback)(() => { bodyRef.current.prev(); }, []); // 初始化图片索引 (0, _react.useEffect)(() => { slickGoTo(props.initialIndex); dispatch({ type: 'changeCurrent', current: { currentIndex: props.initialIndex } }); }, [slickGoTo]); const CoreMethods = { getIsVideo, setTransform, beforeChange, afterChange }; const RefMethods = { getState: () => state, slickGoTo, slickNext, slickPrev }; return { CoreMethods, RefMethods }; }; var _default = useCoreOptions; exports.default = _default;