{"version":3,"sources":["webpack://_N_E/./components/hooks/use-prevent-body-scroll.ts","webpack://_N_E/./components/image-gallery/navigator.tsx","webpack://_N_E/./components/image-gallery/index.tsx","webpack://_N_E/./components/new/image-viewer/index.tsx","webpack://_N_E/./new/auto/series/components/module-title.tsx","webpack://_N_E/./new/auto/series/components/same-brand/card.tsx","webpack://_N_E/./components/image-gallery/index.module.scss","webpack://_N_E/./components/new/image-viewer/index.module.scss","webpack://_N_E/./new/agent/common/common.module.scss","webpack://_N_E/./new/auto/series/components/module-title.module.scss"],"names":["visible","useEffect","prevOverflow","document","body","style","overflow","React","ref","type","disabled","onClick","className","classNames","styles","ImageGallery","list","galleryDisplayCount","headType","onChange","onSwitch","onGalleryClick","onGallerySwitch","current","setCurrent","imageList","map","item","url","isCurrentVideo","headSwiper","setHeadSwiper","prev","next","headDisabledState","setHeadDisabledState","gallerySwiper","setGallerySwiper","galleryDisabledState","setGalleryDisabledState","length","useHoverDelay","index","slideTo","setCurrentLater","cancelSetCurrent","immediateSetCurrent","speed","watchOverflow","preventClicks","observeParents","observer","resizeObserver","simulateTouch","loop","onSwiper","onSlideChange","swiper","activeIndex","isBeginning","isEnd","width","height","layout","src","errorImg","undefined","logoLoadingRect","cusDefaultImg","objectFit","slidePrev","slideNext","slidesPerGroup","slidesPerView","spaceBetween","onMouseEnter","onMouseOut","smallLogoLoading","SwiperNavigation","size","event","stopPropagation","ImageViewer","setVisible","initialIndex","quickClose","lazy","customPlacement","displaySequence","children","onShow","imageProps","galleryImageProps","displayList","desc","responsive","useResponsive","imageRect","mainRatio","galleryRatio","xl","main","Math","round","gallery","lg","setCurrentImmediate","initialized","setInitialized","usePreventBodyScroll","setSwiper","disabledState","setDisabledState","verticalCustomPlacement","includes","getContainer","onMouseOver","onMouseLeave","rightContent","prefix","titleColor","useMemo","content","wrapper","seriesLink","seriesId","href","target","coverUrl","name","noPrice","priceLimits","clkTeaParams","seriesLinkWrapper","data-log-click","autoPixelRatio","alt","hoverTransition","carLoading","title","module","exports"],"mappings":"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","file":"static/chunks/2606-40ab5be39d7300661078.js","sourcesContent":["import { useEffect } from 'react'\n\n// 弹出层禁止body滚动\nconst usePreventBodyScroll = (visible?: boolean) => {\n useEffect(() => {\n if (!visible) {\n return\n }\n const prevOverflow = document.body.style.overflow\n\n document.body.style.overflow = 'hidden'\n\n return () => {\n document.body.style.overflow = prevOverflow\n }\n }, [visible])\n}\n\nexport default usePreventBodyScroll\n","import classNames from 'classnames'\nimport * as React from 'react'\nimport styles from './index.module.scss'\ninterface INavigatorProps {\n type: 'next' | 'previous'\n disabled?: boolean\n onClick?(): void\n}\nconst Navigator = React.forwardRef(\n ({ type, disabled, onClick }, ref) => {\n return (\n {\n if (disabled) return\n onClick?.()\n }}\n />\n )\n }\n)\n\nexport default Navigator\n","import * as React from 'react'\nimport styles from './index.module.scss'\nimport { Image, logoLoadingRect, smallLogoLoading } from 'Components/view-image'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport SwiperClass from 'swiper/types/swiper-class'\nimport classNames from 'classnames'\nimport useHoverDelay from 'Components/hooks/use-hover-delay'\nimport Navigator from './navigator'\ninterface IImageGalleryItem {\n url: string\n type?: 'video' | 'picture'\n}\ninterface IImageGalleryProps {\n className?: string\n list: string[] | IImageGalleryItem[]\n headType?: 'imageOnly' | 'carousel'\n galleryDisplayCount?: number\n onClick?(index: number): void\n onSwitch?(direction: string): void\n onChange?(index: number): void\n onGalleryClick?(index: number): void\n onGallerySwitch?(direction: string): void\n}\n\nexport default function ImageGallery({\n className,\n list,\n galleryDisplayCount = 6,\n headType = 'imageOnly',\n onClick,\n onChange,\n onSwitch,\n onGalleryClick,\n onGallerySwitch,\n}: IImageGalleryProps) {\n const [current, setCurrent] = React.useState(0)\n const imageList = React.useMemo(\n () => list.map((item) => (typeof item === 'string' ? item : item.url)),\n [list]\n )\n const isVideo = (item: string | IImageGalleryItem) => {\n if (typeof item === 'object') {\n return item.type === 'video'\n }\n return false\n }\n const isCurrentVideo = React.useMemo(\n () => isVideo(list[current]),\n [list, current]\n )\n\n // 头部大图轮播\n const [headSwiper, setHeadSwiper] = React.useState()\n const [headDisabledState, setHeadDisabledState] = React.useState({\n prev: false,\n next: false,\n })\n const handleHeadSlideChange = (swiper: SwiperClass) => {\n setCurrent(swiper.activeIndex)\n setHeadDisabledState({ prev: swiper.isBeginning, next: swiper.isEnd })\n onChange?.(swiper.activeIndex)\n }\n // 画廊小图轮播\n const [gallerySwiper, setGallerySwiper] = React.useState()\n const [galleryDisabledState, setGalleryDisabledState] = React.useState({\n prev: false,\n next: false,\n })\n const handleGallerySlideChange = (swiper: SwiperClass) => {\n setGalleryDisabledState({ prev: swiper.isBeginning, next: swiper.isEnd })\n }\n // 配置变化,重置切换按钮状态\n React.useEffect(() => {\n setHeadDisabledState({ prev: true, next: list.length <= 1 })\n setGalleryDisabledState({\n prev: true,\n next: list.length <= galleryDisplayCount,\n })\n }, [galleryDisplayCount, list])\n // 小图hover选择\n const [setCurrentLater, cancelSetCurrent, immediateSetCurrent] =\n useHoverDelay(\n React.useCallback(\n (index: number) => {\n setCurrent(index)\n headSwiper?.slideTo(index, 0)\n },\n [headSwiper]\n )\n )\n React.useEffect(() => {\n onChange?.(current)\n }, [current])\n return (\n
\n
\n \n {imageList.map((url, index) => (\n onClick?.(index)}\n >\n onClick?.(current)}\n />\n \n ))}\n \n {list.length > 1 && (\n
\n {`${current + 1} / ${list.length}`}\n
\n )}\n {headType === 'carousel' && list.length > 1 && (\n <>\n {\n headSwiper?.slidePrev()\n onSwitch?.('left')\n }}\n />\n {\n headSwiper?.slideNext()\n onSwitch?.('right')\n }}\n />\n \n )}\n
\n {list.length > 1 && galleryDisplayCount > 0 && (\n
\n \n {imageList.map((url, index) => (\n setCurrentLater(index)}\n onMouseOut={cancelSetCurrent}\n onClick={() => {\n immediateSetCurrent(index)\n onGalleryClick?.(index)\n }}\n >\n \n \n ))}\n \n {list.length > galleryDisplayCount && (\n <>\n {\n gallerySwiper?.slidePrev()\n onGallerySwitch?.('left')\n }}\n />\n {\n gallerySwiper?.slideNext()\n onGallerySwitch?.('right')\n }}\n />\n \n )}\n
\n )}\n
\n )\n}\n","import * as React from 'react'\nimport classNames from 'classnames'\nimport styles from './index.module.scss'\nimport Portal from 'Components/portal'\nimport { Image, logoLoadingRect, ImageProps } from 'Components/view-image'\nimport { useResponsive } from 'Components/hooks/use-responsive'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport SwiperClass from 'swiper/types/swiper-class'\nimport usePreventBodyScroll from 'Components/hooks/use-prevent-body-scroll'\nimport useHoverDelay from 'Components/hooks/use-hover-delay'\n\nexport interface IImageViewerProps {\n visible: boolean\n setVisible(visible: boolean): void\n lazy?: boolean\n quickClose?: boolean\n list?: string[] | { url: string; desc?: string }[]\n initialIndex?: number\n galleryDisplayCount?: number\n customPlacement?: 'left' | 'right' | 'top' | 'bottom'\n displaySequence?: boolean\n children?: React.ReactNode | ((index: number) => React.ReactNode)\n onShow?(): void\n onSwitch?(type: 'previous' | 'next'): void\n onGalleryClick?(index: number): void\n imageProps?: Partial\n galleryImageProps?: Partial\n}\ninterface ISwiperNavigationProps {\n type: 'next' | 'previous'\n disabled?: boolean\n size?: 'small' | 'large'\n onClick?(): void\n}\nconst SwiperNavigation = React.forwardRef(\n ({ type, disabled, size = 'small', onClick }, ref) => {\n const handleClick = (event: React.MouseEvent) => {\n event.stopPropagation()\n if (disabled) return\n onClick?.()\n }\n return (\n \n )\n }\n)\nexport default function ImageViewer({\n visible,\n setVisible,\n list = [],\n initialIndex = 0,\n quickClose = true,\n lazy = true,\n galleryDisplayCount = 15,\n customPlacement = 'right',\n displaySequence = true,\n children,\n onShow,\n onSwitch,\n onGalleryClick,\n imageProps = {},\n galleryImageProps = {},\n}: IImageViewerProps) {\n const displayList = React.useMemo(\n () =>\n list.map((item) => {\n if (typeof item === 'string') return item\n return item.url\n }),\n [list]\n )\n const [current, setCurrent] = React.useState(initialIndex)\n const desc = React.useMemo(() => {\n const item = list[current]\n if (!item || typeof item === 'string') return null\n return item.desc\n }, [list, current])\n // 不同分辨率图片宽高\n const responsive = useResponsive()\n const imageRect = React.useMemo(() => {\n const mainRatio = 460 / 690\n const galleryRatio = 50 / 76\n if (responsive.xl) {\n return {\n main: { width: 925, height: Math.round(925 * mainRatio) },\n gallery: { width: 98, height: Math.round(98 * galleryRatio) },\n }\n }\n if (responsive.lg) {\n return {\n main: { width: 925, height: Math.round(925 * mainRatio) },\n gallery: { width: 92, height: Math.round(92 * galleryRatio) },\n }\n }\n return {\n main: { width: 690, height: 460 },\n gallery: { width: 76, height: 50 },\n }\n }, [responsive])\n const [setCurrentLater, cancelSetCurrent, setCurrentImmediate] =\n useHoverDelay(\n React.useCallback((index: number) => {\n setCurrent(index)\n }, [])\n )\n\n // 是否延迟渲染\n const [initialized, setInitialized] = React.useState(!lazy)\n React.useEffect(() => {\n if (!visible) return\n setInitialized(true)\n setCurrent(initialIndex)\n onShow?.()\n }, [visible])\n\n // 显示时隐藏body滚动条\n usePreventBodyScroll(visible)\n const [swiper, setSwiper] = React.useState()\n const [disabledState, setDisabledState] = React.useState({\n prev: false,\n next: false,\n })\n const handleSlideChange = (swiper: SwiperClass) => {\n setDisabledState({ prev: swiper.isBeginning, next: swiper.isEnd })\n }\n React.useEffect(() => {\n setDisabledState({ prev: true, next: list.length <= galleryDisplayCount })\n }, [galleryDisplayCount, list])\n const handleMaskClick = () => {\n if (!quickClose) return\n setVisible(false)\n }\n const verticalCustomPlacement = ['top', 'bottom'].includes(customPlacement)\n if (!initialized) return null\n return (\n document.body}>\n \n \n event.stopPropagation()}\n >\n \n {displaySequence && (\n
\n {desc && {desc}}\n {`${current + 1} / ${list.length}`}\n
\n )}\n {list.length > 1 && (\n <>\n {\n setCurrent(current - 1)\n onSwitch?.('previous')\n }}\n />\n {\n setCurrent(current + 1)\n onSwitch?.('next')\n }}\n />\n \n )}\n \n {children && (\n event.stopPropagation()}\n >\n {typeof children === 'function' ? children(current) : children}\n \n )}\n \n {galleryDisplayCount !== 0 && (\n event.stopPropagation()}\n style={{\n width:\n galleryDisplayCount * imageRect.gallery.width +\n (galleryDisplayCount - 1) * 2,\n }}\n >\n \n {displayList.map((url, index) => (\n setCurrentLater(index)}\n onMouseLeave={cancelSetCurrent}\n onClick={() => {\n setCurrentImmediate(index)\n onGalleryClick?.(index)\n }}\n >\n \n \n ))}\n {list.length > galleryDisplayCount && (\n <>\n swiper?.slidePrev()}\n />\n swiper?.slideNext()}\n />\n \n )}\n \n \n )}\n \n
\n )\n}\n","import React, { ReactChild, ReactElement, ReactNode, useMemo } from 'react'\nimport { Wrapper } from 'lib/noop-wrapper'\nimport classNames from 'classnames'\nimport style from './module-title.module.scss'\n\ninterface IProps {\n rightContent?: ReactNode\n prefix?: ReactChild\n titleColor?: string\n className?: string\n}\n\nconst ModuleTitle: React.FC = ({\n rightContent,\n prefix,\n titleColor,\n children,\n className,\n}) => {\n const wrapper = useMemo(() => {\n if (!rightContent) {\n return (content) => (\n \n {content}\n \n \n )\n }\n return (content) => (\n \n
\n \n {prefix}\n {content}\n \n
{rightContent}
\n
\n \n
\n )\n }, [rightContent])\n\n return wrapper(children) as ReactElement\n}\n\nexport default ModuleTitle\n","import React from 'react'\nimport { carLoading, Image } from 'Components/view-image'\nimport { Wrapper } from 'lib/noop-wrapper'\nimport Link from 'next/link'\nimport classNames from 'classnames'\n\ninterface ISeriesLinkParams {\n seriesId?: number\n}\n\nexport function seriesLink({ seriesId }: ISeriesLinkParams): Wrapper {\n return (content) =>\n seriesId ? (\n \n {content}\n \n ) : (\n content\n )\n}\n\ninterface IProps {\n coverUrl?: string\n name?: string\n noPrice?: boolean\n priceLimits?: string\n seriesId?: number\n clkTeaParams?: string\n}\n\nconst Card: React.FC = ({\n coverUrl = '',\n name,\n noPrice,\n priceLimits,\n seriesId,\n clkTeaParams,\n}) => {\n const seriesLinkWrapper = seriesLink({ seriesId })\n return (\n \n \n
\n {seriesLinkWrapper(\n \n )}\n
\n
\n \n {seriesLinkWrapper(name)}\n

\n \n {noPrice ? '暂无报价' : seriesLinkWrapper(priceLimits)}\n

\n
\n \n \n
\n )\n}\n\nexport default Card\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"image-wrapper\":\"image-gallery_image-wrapper__1886M\",\"head-swiper\":\"image-gallery_head-swiper__1XP6n\",\"image-sequence\":\"image-gallery_image-sequence__2H9dd\",\"gallery\":\"image-gallery_gallery__1X4hF\",\"gallery-swiper\":\"image-gallery_gallery-swiper__2lPmi\",\"gallery-slide\":\"image-gallery_gallery-slide__2lgRx\",\"active\":\"image-gallery_active__3_XaG\",\"gallery-image\":\"image-gallery_gallery-image__T-PfM\",\"swiper-arrow\":\"image-gallery_swiper-arrow__Oa4Og\",\"disabled\":\"image-gallery_disabled__3qGGA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"image-viewer_root__11LfV\",\"is-visible\":\"image-viewer_is-visible__2c9St\",\"wrapper\":\"image-viewer_wrapper__34L3-\",\"custom-left\":\"image-viewer_custom-left__3pElS\",\"main\":\"image-viewer_main__l0G0Z\",\"custom\":\"image-viewer_custom__muH0l\",\"custom-right\":\"image-viewer_custom-right__33dv9\",\"custom-top\":\"image-viewer_custom-top__Obnho\",\"custom-bottom\":\"image-viewer_custom-bottom__3y724\",\"swiper-navigation\":\"image-viewer_swiper-navigation__3kJSA\",\"sequence\":\"image-viewer_sequence__31r-_\",\"gallery\":\"image-viewer_gallery__2isSX\",\"gallery-image\":\"image-viewer_gallery-image__27syX\",\"active\":\"image-viewer_active__1SV8_\",\"disabled\":\"image-viewer_disabled__3scV7\",\"small\":\"image-viewer_small__2QOql\",\"large\":\"image-viewer_large__3Sh2f\",\"previous\":\"image-viewer_previous__tHdf4\",\"next\":\"image-viewer_next__MBko4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"page\":\"common_page__2ysUR\",\"tag\":\"common_tag__2MJ6b\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title-wrapper\":\"module-title_title-wrapper__BqiNI\",\"module-title\":\"module-title_module-title__20flN\"};"],"sourceRoot":""}