UNPKG

linkmore-design

Version:

๐ŸŒˆ ๐Ÿš€lm็ป„ไปถๅบ“ใ€‚๐Ÿš€

137 lines (135 loc) โ€ข 6.74 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _lightgallery = _interopRequireDefault(require("lightgallery")); var _autoplay = _interopRequireDefault(require("lightgallery/plugins/autoplay")); var _fullscreen = _interopRequireDefault(require("lightgallery/plugins/fullscreen")); var _rotate = _interopRequireDefault(require("lightgallery/plugins/rotate")); var _thumbnail = _interopRequireDefault(require("lightgallery/plugins/thumbnail")); var _video = _interopRequireDefault(require("lightgallery/plugins/video")); var _zoom = _interopRequireDefault(require("lightgallery/plugins/zoom")); var _lodash = require("lodash"); var _react = _interopRequireWildcard(require("react")); // import 'lightgallery/css/lightgallery.css' // import 'lightgallery/css/lg-zoom.css' // import 'lightgallery/css/lg-thumbnail.css' // import 'lightgallery/css/lg-fullscreen.css' // import 'lightgallery/css/lg-video.css' // import 'lightgallery/css/lg-autoplay.css' // import 'lightgallery/css/lg-rotate.css' const videoImg = `data:image/png;base64,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`; const getIsVideo = url => { const fileExtension = url.replace(/.*\./, '').toLowerCase(); return ['mp4', 'm2v', 'mkv', 'ogm', 'webm'].includes(fileExtension); }; const imgTransformFun = urlList => { return urlList?.map(item => { if (typeof item === 'string') { const isVideo = getIsVideo(item); return isVideo ? { video: { source: [{ src: item, type: 'video/mp4' }], attributes: { preload: false, controls: true } }, thumb: videoImg, subHtml: '', downloadUrl: item } : { src: item, subHtml: '', thumb: item, responsive: item }; } else { const isVideo = getIsVideo(item?.url || ''); return isVideo ? { video: { source: [{ src: item?.url, type: 'video/mp4' }], attributes: { preload: false, controls: true } }, thumb: item?.thumb || videoImg, subHtml: item?.subHtml || '', downloadUrl: item?.url } : { src: item?.url, subHtml: item?.subHtml || '', thumb: item?.thumb || item?.url, responsive: item?.responsive || item?.url }; } }); }; const LmImageViewer = ({ ...resetProps }, ref) => { const { visible = false, urlList = [], initialIndex = 0, close } = resetProps; const defaultRef = (0, _react.useRef)(null); const dynamicGalleryRef = (0, _react.useRef)(null); const [list, setList] = (0, _react.useState)([]); const initialIndexRef = (0, _react.useRef)(0); (0, _react.useEffect)(() => { if (!(0, _lodash.isEqual)(urlList, list)) { setList(urlList); } }, [urlList]); (0, _react.useEffect)(() => { initialIndexRef.current = initialIndex; }, [initialIndex]); const closeViewModal = () => { close?.(); }; (0, _react.useEffect)(() => { if (list?.length) { dynamicGalleryRef.current?.destroyGallery(); dynamicGalleryRef.current = (0, _lightgallery.default)(defaultRef.current, { dynamic: true, plugins: [_zoom.default, _thumbnail.default, _fullscreen.default, _video.default, _autoplay.default, _rotate.default], /** TODO: ็‰ˆๆƒ้—ฎ้ข˜๏ผŸๅŽๆœŸๅค„็† */ // licenseKey: 'your_license_key', dynamicEl: imgTransformFun(list), speed: 500 }); defaultRef.current?.addEventListener('lgAfterClose', closeViewModal); if (visible) { dynamicGalleryRef.current?.openGallery(initialIndexRef.current); } } return () => { defaultRef.current?.removeEventListener('lgAfterClose', closeViewModal); }; }, [list]); (0, _react.useEffect)(() => { if (visible) { dynamicGalleryRef.current?.openGallery(initialIndexRef.current); } }, [visible]); return /*#__PURE__*/_react.default.createElement("div", { ref: defaultRef, style: { display: 'none' } }); }; var _default = /*#__PURE__*/(0, _react.forwardRef)(LmImageViewer); exports.default = _default;