{"version":3,"sources":["webpack:///./src/components/quick-view/module.js","webpack:///./node_modules/react-dom/client.js","webpack:///./src/blueprint/theme/icons2/heart.svg","webpack:///./src/components/quick-view/quick-view-modal.jsx","webpack:///./src/blueprint/theme/icons2/arrow-right.svg","webpack:///./src/components/dialog/dialog-modal.module.scss","webpack:///./src/components/carousels/arrows.jsx","webpack:///./src/components/carousels/basic/basic.jsx","webpack:///./src/components/carousels/view-item-carousel-zoom/view-item-video.module.scss","webpack:///./src/components/carousels/view-item-carousel-zoom/view-item-video.jsx","webpack:///./src/legacy/static/components/modals/image-gallery-modal/image-gallery-modal.jsx","webpack:///./src/components/carousels/view-item-carousel-zoom/view-item-image.jsx","webpack:///./src/components/carousels/view-item-carousel-zoom/view-item-carousel-zoom.jsx","webpack:///./src/legacy/static/utils/environment.js","webpack:///./src/blueprint/theme/icons2/heart-fill.svg","webpack:///./src/components/dialog/dialog-modal.tsx","webpack:///./src/blueprint/theme/icons2/arrow-left.svg"],"names":["warnIfDevBuild","El","Array","from","document","querySelectorAll","ReactDOM","createRoot","render","_jsx","ProviderWithGlobalStore","children","QuickView","e","logger","mountQuickView","m","exports","hydrateRoot","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_ref","styles","props","_objectWithoutProperties","_excluded","React","createElement","viewBox","xmlns","clipRule","d","fillRule","dispatch","items","open","isLoggedIn","item","loading","existsInWishList","toLocalizedUrl","useUrlLocalizer","t","useTranslator","MODAL_STATE","OPEN","itemId","imageFormats","shortDescription","url","handleModalDismiss","closeQuickView","disableNext","findIndex","x","disablePrev","_jsxs","DialogModal","className","mediaQuery","minWidth","onDismiss","onKeyDown","keyCode","handlePreviousClick","prevItem","uiActions","openQuickViewAction","openedFrom","handleNextClick","nextItem","style","top","right","zIndex","Button","theme","round","onClick","CloseIcon","ViewItemCarouselZoom","images","pageType","fixedHeight","carouselStyle","width","LocalLoader","variant","itemActions","HeartFillIcon","HeartIcon","href","GtmService","trackAction","bottom","left","propTypes","connect","state","_state$ui$quickView$i","ui","quickView","member","wishListItemIds","includes","NextArrow","_props$arrowClassName","arrowClassName","_objectSpread","display","ArrowRightIcon","PreviousArrow","_props$arrowClassName2","ArrowLeftIcon","BasicCarousel","Component","next","slider","slickNext","previous","slickPrev","goTo","imageIndex","skipAnimation","slickGoTo","_this$props","_this$props$pageType","settings","actionButtons","defaults","dots","dotsClass","nextArrow","prevArrow","infinite","speed","slidesToShow","slidesToScroll","lazyLoad","isNextJs","Slider","ref","c","ViewItemVideo","autoPlay","playsInline","controls","loop","muted","image","isInView","normal","video","videoRef","useRef","useEffect","current","play","pause","poster","type","src","defaultProps","ImageGalleryModal","initialSlideIndex","closeModalCallback","isVideoEnabled","carouselRef","closeButtonRef","isMobileDevice","useSelector","environment","_useState2","_slicedToArray","useState","activeSlideIndex","setActiveSlideIndex","handleCloseModalClick","event","stopPropagation","stopClickEventsFromImage","navigate","useCallback","preventDefault","focus","window","addEventListener","removeEventListener","initialSlide","adaptiveHeight","fade","useCss","useTransform","responsive","breakpoint","BREAKPOINT_SIZES","BREAKPOINTS","MD","min","arrows","afterChange","index","Dialog","defaultOpen","onOpenChange","DialogPortal","forceMount","DialogOverlay","classNames","dialogModalStyles","overlay","map","alt","title","size","ViewItemImage","constructor","super","imageContainer","createRef","zoomImage","bounds","hover","zoomImageLargeEnough","handleMouseHover","hoverState","setState","prevState","handleMouseMove","_this$getBounds","getBounds","containerWidth","containerHeight","zoomImageWidth","zoomImageHeight","widthDiff","heightDiff","widthRatio","nativeEvent","offsetX","heightRatio","offsetY","translateXValue","translateYValue","transform","zoomImageElement","_imageContainerElemen","getBoundingClientRect","height","_zoomImageElement$get","enableZoom","handleZoomClick","defaultAltText","_this$state","smallFit","mediumFit","largeFit","altText","MediaQuery","srcSet","sizes","maxWidth","SM","max","onMouseMove","onMouseLeave","showZoomModal","basicCarousel","id","rest","onMouseUp","customPaging","imageThumbnail","multiThumbnail","onMouseOver","accessibility","isDev","process","moduleName","console","log","onModuleLoaded","callback","isModuleLoaded","body","getAttribute","MutationObserver","mutationsList","filter","attributeName","observe","attributes","error","mobileOnlyProps","desktopOnlyProps","allDeviceProps","XS","desktop","_ref$dismissOnOverlay","dismissOnOverlayClick","mobile","_ref$mobileFullscreen","mobileFullscreen","overlayClassNames","mediaQueryProps","mobileAlert","DialogContent","content"],"mappings":"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","file":"script/chunks/chunk.quick-view.2e7da80c07.js","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom/client';\n\nimport { ProviderWithGlobalStore } from 'tradera/state/configure-store';\nimport { warnIfDevBuild } from 'utils/environment';\nimport { logger } from 'packages/logger';\nimport QuickView from './quick-view-modal';\nimport './quick-view-modal.scss';\n\nwarnIfDevBuild('quick-view');\n\nconst mountQuickView = (El) => {\n if (El) {\n try {\n const root = ReactDOM.createRoot(El);\n root.render(\n \n \n \n );\n } catch (e) {\n logger(e);\n }\n }\n};\nexport default () => {\n const El = Array.from(document.querySelectorAll('#quick-view'));\n if (El) {\n mountQuickView(El[0]);\n }\n};\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M8 2.5C7.1 1.2 5.4.8 4 1.1 2.1 1.5.5 3 .5 5.6c0 2.7 2 6 7.2 9.3.2.1.4.1.5 0 5.3-3.3 7.2-6.6 7.2-9.3 0-2.6-1.6-4.2-3.5-4.5-1.3-.3-3 .1-3.9 1.4zm-3.8-.4c-1.4.3-2.7 1.4-2.7 3.5s1.6 5.1 6.5 8.3c4.9-3.2 6.5-6.2 6.5-8.3S13.2 2.3 11.8 2s-2.9.3-3.4 1.6c0 .3-.2.4-.4.4s-.4-.1-.5-.3c-.4-1.3-1.9-1.9-3.3-1.6z\",\n fillRule: \"evenodd\"\n})));","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { useUrlLocalizer, useTranslator } from 'tradera/lang/translate';\nimport { GtmService } from 'tradera/services/google-tagmanager-service';\nimport ViewItemCarouselZoom from 'tradera/components/carousels/view-item-carousel-zoom/view-item-carousel-zoom';\nimport { LocalLoader } from 'tradera/components/loader/loader';\nimport HeartIcon from '@tradera/blueprint/theme/icons2/heart.svg?jsx';\nimport HeartFillIcon from '@tradera/blueprint/theme/icons2/heart-fill.svg?jsx';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\n\nimport { closeQuickView } from 'tradera/state/ui/reducer';\nimport uiActions from 'tradera/state/ui/actions';\nimport * as itemActions from 'tradera/state/items/actions';\n\nimport DialogModal from 'tradera/components/dialog/dialog-modal';\nimport { Button } from '../atoms/button/button';\nimport { MODAL_STATE } from 'tradera/constants/ui';\n\nconst QuickView = ({\n dispatch,\n items,\n open,\n isLoggedIn,\n item,\n loading,\n existsInWishList\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const { t } = useTranslator();\n\n if (open !== MODAL_STATE.OPEN) {\n return null;\n }\n\n const { itemId, imageFormats, shortDescription, url } = item;\n\n const handleModalDismiss = () => {\n dispatch(closeQuickView());\n };\n\n const handleWishlistClick = () => {\n if (!isLoggedIn) {\n handleModalDismiss();\n }\n dispatch(itemActions.wishlist(item.itemId));\n };\n\n const handlePreviousClick = () => {\n const prevItem = items[items.findIndex((x) => x.itemId === itemId) - 1];\n dispatch(\n uiActions.openQuickViewAction({\n item: prevItem,\n openedFrom: 'Quick View'\n })\n );\n };\n\n const handleNextClick = () => {\n const nextItem = items[items.findIndex((x) => x.itemId === itemId) + 1];\n dispatch(\n uiActions.openQuickViewAction({\n item: nextItem,\n openedFrom: 'Quick View'\n })\n );\n };\n\n const disableNext =\n (items || []).length < 2 ||\n items.findIndex((x) => x.itemId === itemId) === items.length - 1;\n const disablePrev =\n (items || []).length < 2 ||\n items.findIndex((x) => x.itemId === itemId) < 1;\n\n return (\n \n {\n if (e.keyCode === 39 && !disableNext) {\n handleNextClick();\n } else if (e.keyCode === 37 && !disablePrev) {\n handlePreviousClick();\n }\n }}>\n \n handleModalDismiss()}>\n \n \n \n
\n {!imageFormats ? (\n
\n \n
\n ) : (\n \n )}\n
\n
\n
\n

\n {shortDescription}\n

\n
\n
\n
\n
\n handleWishlistClick()}>\n {existsInWishList ? (\n \n ) : (\n \n )}\n {existsInWishList\n ? t('mytQuickView_savedInWishlist')\n : t('mytQuickView_saveInWishlist')}\n \n {\n GtmService.trackAction(\n 'Quick View',\n 'Navigation',\n 'View full listing'\n );\n }}>\n {t('mytQuickView_viewFullListing')}\n \n
\n
\n \n {loading && (\n \n \n \n )}\n \n );\n};\n\nQuickView.propTypes = {\n item: PropTypes.object,\n open: PropTypes.string,\n items: PropTypes.array,\n dispatch: PropTypes.func,\n loading: PropTypes.bool,\n existsInWishList: PropTypes.bool\n};\n\nconst mapStateToProps = (state) => ({\n items: state.ui.quickView.items,\n open: state.ui.quickView.open,\n isLoggedIn: state.member.isLoggedIn,\n item: state.ui.quickView.item,\n loading: state.ui.quickView.loading,\n existsInWishList: state.items.wishListItemIds.includes(\n state.ui.quickView.item?.itemId\n )\n});\n\nexport default connect(mapStateToProps)(QuickView);\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M9.1 7.9L4.1 3l1.5-1.4 6.3 6.3-6.3 6.5L4.1 13z\",\n fillRule: \"evenodd\"\n})));","// extracted by mini-css-extract-plugin\nexport default {\"overlay\":\"overlay--nQbvM\",\"content\":\"content--UF1Qx\",\"mobile-alert\":\"mobile-alert--srBzR\",\"mobileAlert\":\"mobile-alert--srBzR\",\"mobile-fullscreen\":\"mobile-fullscreen--c9mrB\",\"mobileFullscreen\":\"mobile-fullscreen--c9mrB\"};","import React from 'react';\nimport ArrowLeftIcon from '@tradera/blueprint/theme/icons2/arrow-left.svg?jsx';\nimport ArrowRightIcon from '@tradera/blueprint/theme/icons2/arrow-right.svg?jsx';\n\nexport const NextArrow = (props) => {\n const { className, arrowClassName = '', style, onClick } = props;\n return (\n \n \n
\n
\n );\n};\nexport const PreviousArrow = (props) => {\n const { className, arrowClassName = '', style, onClick } = props;\n return (\n \n \n
\n
\n );\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Slider from 'react-slick';\nimport { isNextJs } from 'tradera/utils/nextjs';\nimport { NextArrow, PreviousArrow } from '../arrows';\n\n/**\n * BasicCarousel\n * Usage:\n * loopThroughSlides()} />\n */\nclass BasicCarousel extends React.Component {\n next() {\n if (this.slider) {\n this.slider.slickNext();\n }\n }\n\n previous() {\n if (this.slider) {\n this.slider.slickPrev();\n }\n }\n\n goTo(imageIndex) {\n if (this.slider) {\n const skipAnimation = true;\n this.slider.slickGoTo(imageIndex, skipAnimation);\n }\n }\n\n render() {\n const {\n render,\n pageType = '',\n settings,\n className,\n arrowClassName,\n children,\n actionButtons\n } = this.props;\n const defaults = {\n dots: true,\n dotsClass: 'slick-dots slick-thumb mb-1 mb-md-2',\n nextArrow: (\n \n ),\n prevArrow: (\n \n ),\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n slidesToScroll: 1,\n lazyLoad: !isNextJs, // Enables SSR\n ...settings\n };\n\n return (\n \n (this.slider = c)} {...defaults}>\n {render ? render() : children}\n \n {actionButtons}\n \n );\n }\n}\n\nBasicCarousel.propTypes = {\n className: PropTypes.string,\n settings: PropTypes.object,\n render: PropTypes.func,\n pageType: PropTypes.string\n};\n\nexport default BasicCarousel;\n","// extracted by mini-css-extract-plugin\nexport default {\"view-item-video\":\"view-item-video--NcgPT\",\"viewItemVideo\":\"view-item-video--NcgPT\"};","import React, { useEffect, useRef } from 'react';\nimport styles from './view-item-video.module.scss';\n\nexport const ViewItemVideo = ({\n className,\n autoPlay,\n playsInline,\n controls,\n loop,\n muted,\n image,\n isInView\n}) => {\n const { normal, video } = image;\n\n const videoRef = useRef(null);\n\n useEffect(() => {\n const video = videoRef.current;\n if (isInView) {\n video.play();\n } else {\n video.pause();\n }\n }, [isInView]);\n\n return (\n \n \n \n );\n};\n\nViewItemVideo.defaultProps = {\n className: '',\n autoPlay: true,\n playsInline: true,\n muted: true,\n loop: true,\n controls: false\n};\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { Dialog, DialogPortal, DialogOverlay } from '@radix-ui/react-dialog';\nimport BasicCarousel from 'tradera/components/carousels/basic/basic';\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera/constants/breakpoints';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport { ViewItemVideo } from 'tradera/components/carousels/view-item-carousel-zoom/view-item-video';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport dialogModalStyles from 'tradera/components/dialog/dialog-modal.module.scss';\nimport classNames from 'classnames';\n\nconst ImageGalleryModal = (props) => {\n const { images, initialSlideIndex, closeModalCallback, isVideoEnabled } =\n props;\n\n const { t } = useTranslator();\n const carouselRef = useRef(null);\n const closeButtonRef = useRef(null);\n\n const environment = useSelector((state) => state.environment);\n\n const { isMobileDevice } = environment;\n\n const [activeSlideIndex, setActiveSlideIndex] = useState(initialSlideIndex);\n\n const handleCloseModalClick = (event) => {\n event.stopPropagation();\n closeModalCallback();\n };\n\n const stopClickEventPropagationFromCarousel = (event) =>\n event.stopPropagation();\n\n const stopClickEventsFromImage = (event) => event.stopPropagation();\n\n const navigate = useCallback((e) => {\n if (e.keyCode === 37) {\n // left\n carouselRef.current.previous();\n e.preventDefault();\n } else if (e.keyCode === 39) {\n // right\n carouselRef.current.next();\n e.preventDefault();\n }\n }, []);\n\n useEffect(() => {\n closeButtonRef.current.focus();\n window.addEventListener('keydown', navigate);\n return () => {\n window.removeEventListener('keydown', navigate);\n };\n }, [navigate]);\n\n const settings = {\n initialSlide: initialSlideIndex,\n adaptiveHeight: true,\n lazyLoad: 'progressive',\n fade: !isMobileDevice,\n useCss: false,\n useTransform: false,\n responsive: [\n {\n breakpoint: BREAKPOINT_SIZES[BREAKPOINTS.MD].min,\n settings: {\n arrows: false\n }\n }\n ],\n afterChange: (index) => {\n setActiveSlideIndex(index);\n }\n };\n\n return (\n {\n if (!open) {\n closeModalCallback();\n }\n }}>\n \n \n \n \n images.map((image, index) => (\n \n \n {isVideoEnabled && image.video ? (\n \n ) : (\n \n )}\n \n \n ))\n }\n />\n \n \n \n \n \n \n \n );\n};\n\nImageGalleryModal.propTypes = {\n images: PropTypes.array.isRequired,\n initialSlideIndex: PropTypes.number\n};\nImageGalleryModal.defaultProps = {\n initialSlideIndex: 0\n};\n\nexport { ImageGalleryModal };\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport MediaQuery from 'react-responsive';\nimport { BREAKPOINTS, BREAKPOINT_SIZES } from 'tradera/constants/breakpoints';\n\nclass ViewItemImage extends Component {\n constructor(props) {\n super(props);\n\n this.imageContainer = React.createRef();\n this.zoomImage = React.createRef();\n\n this.bounds = null;\n\n this.state = {\n hover: false,\n zoomImageLargeEnough: true\n };\n }\n\n static defaultProps = {\n enableZoom: false\n };\n\n handleMouseHover(hoverState) {\n this.setState((prevState) => ({\n ...prevState,\n hover: hoverState\n }));\n }\n\n handleMouseMove(e) {\n // this check is here because the mobile version does not have a zoomImageElement in the DOM.\n if (this.zoomImage.current === null) {\n return;\n }\n const {\n containerWidth,\n containerHeight,\n zoomImageWidth,\n zoomImageHeight,\n widthDiff,\n heightDiff\n } = this.getBounds();\n\n const zoomImageLargeEnough = widthDiff > 0 || heightDiff > 0;\n this.setState({\n zoomImageLargeEnough\n });\n\n if (!zoomImageLargeEnough) {\n return;\n }\n\n const widthRatio = e.nativeEvent.offsetX / containerWidth;\n const heightRatio = e.nativeEvent.offsetY / containerHeight;\n\n const translateXValue =\n widthDiff > 0\n ? widthRatio * widthDiff\n : zoomImageWidth / 2 - containerWidth / 2;\n const translateYValue =\n heightDiff > 0\n ? heightRatio * heightDiff\n : zoomImageHeight / 2 - containerHeight / 2;\n\n const zoomImageElement = this.zoomImage.current;\n // eslint-disable-next-line better-mutation/no-mutation\n zoomImageElement.style.transform = `translate(${-translateXValue}px,\n ${-translateYValue}px)`;\n\n this.handleMouseHover(true);\n }\n\n getBounds() {\n if (this.bounds) {\n return this.bounds;\n }\n\n const zoomImageElement = this.zoomImage.current;\n const imageContainerElement = this.imageContainer.current;\n\n const { width: containerWidth, height: containerHeight } =\n imageContainerElement.getBoundingClientRect();\n const { width: zoomImageWidth, height: zoomImageHeight } =\n zoomImageElement.getBoundingClientRect();\n\n const widthDiff = zoomImageWidth - containerWidth;\n const heightDiff = zoomImageHeight - containerHeight;\n\n if (zoomImageWidth <= 0 || zoomImageHeight <= 0) {\n return {};\n }\n this.bounds = {\n containerWidth,\n containerHeight,\n zoomImageWidth,\n zoomImageHeight,\n widthDiff,\n heightDiff\n };\n\n return this.bounds;\n }\n\n render() {\n const { image, enableZoom, handleZoomClick, defaultAltText } =\n this.props;\n const { hover, zoomImageLargeEnough } = this.state;\n const { alt, normal, smallFit, mediumFit, largeFit } = image;\n const altText = alt || defaultAltText;\n return (\n \n \n \n \n \n \n \n \n {\n this.handleMouseMove(e);\n }}\n onMouseLeave={() => this.handleMouseHover(false)}\n />\n \n );\n }\n}\n\nViewItemImage.propTypes = {\n defaultAltText: PropTypes.string,\n image: PropTypes.shape({\n alt: PropTypes.string,\n normal: PropTypes.string.isRequired,\n medium: PropTypes.string.isRequired\n }).isRequired,\n enableZoom: PropTypes.bool,\n handleZoomClick: PropTypes.func\n};\n\nexport default ViewItemImage;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { BREAKPOINTS, BREAKPOINT_SIZES } from 'tradera/constants/breakpoints';\nimport BasicCarousel from '../basic/basic';\nimport { ImageGalleryModal } from 'tradera/legacy/static/components/modals/image-gallery-modal/image-gallery-modal';\nimport ViewItemImage from './view-item-image';\nimport { ViewItemVideo } from './view-item-video';\n\nclass ViewItemCarouselZoom extends React.Component {\n static propTypes = {\n carouselStyle: PropTypes.object,\n className: PropTypes.string,\n enableZoom: PropTypes.bool,\n defaultAltText: PropTypes.string,\n fixedHeight: PropTypes.bool,\n id: PropTypes.string,\n images: PropTypes.array.isRequired,\n pageType: PropTypes.string,\n actionButtons: PropTypes.object,\n isVideoEnabled: PropTypes.bool\n };\n\n static defaultProps = {\n carouselStyle: {},\n className: '',\n id: '',\n enableZoom: false,\n fixedHeight: true\n };\n\n state = {\n showZoomModal: false,\n activeSlideIndex: 0\n };\n\n constructor(props) {\n super(props);\n this.basicCarousel = React.createRef();\n }\n\n render() {\n const {\n carouselStyle,\n className,\n defaultAltText,\n enableZoom,\n fixedHeight,\n id,\n images,\n actionButtons,\n isVideoEnabled,\n ...rest\n } = this.props;\n const { showZoomModal, activeSlideIndex } = this.state;\n\n const onMouseUp = () => {\n if (enableZoom) {\n this.setState({\n showZoomModal: true\n });\n }\n };\n\n const settings = {\n customPaging: (imageIndex) => {\n const imageThumbnail = images[imageIndex].video\n ? images[imageIndex].normal\n : images[imageIndex].multiThumbnail;\n return (\n \n this.basicCarousel.current.goTo(imageIndex)\n }>\n \n
\n
\n );\n },\n afterChange: (index) => {\n this.setState({ activeSlideIndex: index });\n },\n initialSlide: activeSlideIndex,\n accessibility: false,\n responsive: [\n {\n breakpoint: BREAKPOINT_SIZES[BREAKPOINTS.MD].min,\n settings: {\n customPaging: function (i) {\n return ;\n }\n }\n }\n ]\n };\n\n return (\n
\n \n {images.map((image, index) => {\n if (isVideoEnabled && image.video) {\n return (\n {\n if (enableZoom) {\n this.setState({\n showZoomModal: true\n });\n }\n }}>\n \n
\n );\n } else {\n return (\n {\n if (enableZoom) {\n this.setState({\n showZoomModal: true\n });\n }\n }}\n />\n );\n }\n })}\n
\n {enableZoom && showZoomModal && (\n {\n this.setState({ showZoomModal: false });\n }}\n images={images}\n isVideoEnabled={isVideoEnabled}\n />\n )}\n \n );\n }\n}\n\nexport default ViewItemCarouselZoom;\n","export const isDev = () =>\n process && process.env && process.env.NODE_ENV !== 'production';\n\nexport const warnIfDevBuild = (moduleName) => {\n if (isDev()) {\n console.log(\n `%c Warning: This is a Dev build of ${moduleName}`,\n 'background:red; color:white; font-size:18px;'\n );\n }\n};\n\n/**\n * helper function that is called after the header has been loaded. useful when you want to have the redux loaded before you start\n * to dispatch actions.\n * @param {func} callback\n */\nexport const onModuleLoaded = (callback) => {\n const isModuleLoaded = () =>\n window.document.body.getAttribute('data-module-loaded') === 'true';\n\n try {\n if (isModuleLoaded()) {\n callback();\n }\n const observer = new MutationObserver((mutationsList) => {\n const element = mutationsList.filter(\n (item) => item.attributeName === 'data-module-loaded'\n );\n if (element !== null && isModuleLoaded()) {\n callback();\n }\n });\n observer.observe(window.document.body, { attributes: true });\n // eslint-disable-next-line no-empty\n } catch (error) {}\n};\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M15.5 5.6c0-2.6-1.6-4.2-3.5-4.5-1.5-.3-3.1.2-4 1.4C7.1 1.2 5.4.8 4 1.1 2.1 1.5.5 3 .5 5.6c0 2.7 2 6 7.2 9.3.2.1.4.1.5 0 5.3-3.3 7.3-6.6 7.3-9.3z\",\n fillRule: \"evenodd\"\n})));","/**\n * Using an accessible dialog or \"modal\" window. From Radix UI\n * https://www.radix-ui.com/docs/primitives/components/dialog\n */\nimport React from 'react';\nimport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogContent\n} from '@radix-ui/react-dialog';\nimport MediaQuery from 'react-responsive';\n\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera/constants/breakpoints';\nimport styles from './dialog-modal.module.scss';\nimport classNames from 'classnames';\n\nconst mobileOnlyProps = { maxWidth: BREAKPOINT_SIZES[BREAKPOINTS.SM].max };\nconst desktopOnlyProps = { minWidth: BREAKPOINT_SIZES[BREAKPOINTS.MD].min };\nconst allDeviceProps = { minWidth: BREAKPOINT_SIZES[BREAKPOINTS.XS].min };\n\nexport type DialogModalProps = {\n children: React.ReactNode;\n className?: string;\n desktop?: boolean;\n dismissOnOverlayClick?: boolean;\n mediaQuery?: {\n minWidth?: number;\n maxWidth?: number;\n };\n mobile?: boolean;\n mobileFullscreen?: boolean;\n onDismiss?: () => void;\n style?: React.CSSProperties;\n overlayClassNames?: string;\n};\n\nconst DialogModal = ({\n children,\n className,\n desktop,\n dismissOnOverlayClick = true,\n mediaQuery,\n mobile,\n mobileFullscreen = true,\n onDismiss,\n style,\n overlayClassNames\n}: DialogModalProps) => {\n const getDefaultMediaProps = () => {\n if (mobile && desktop) {\n return allDeviceProps;\n }\n if (mobile) {\n return mobileOnlyProps;\n }\n if (desktop) {\n return desktopOnlyProps;\n }\n return allDeviceProps;\n };\n\n let mediaQueryProps;\n if (!mediaQuery) {\n mediaQueryProps = getDefaultMediaProps();\n } else {\n mediaQueryProps = mediaQuery;\n }\n\n return (\n \n {\n if (!open && onDismiss) {\n onDismiss();\n }\n }}>\n \n {}}>\n event.stopPropagation()}>\n {children}\n \n \n \n \n \n );\n};\n\nexport default DialogModal;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M7 8.1l4.9 5-1.4 1.4-6.4-6.4 6.4-6.3 1.4 1.4z\",\n fillRule: \"evenodd\"\n})));"],"sourceRoot":""}