{"version":3,"sources":["webpack:///./src/Frontend/app/components/product-review-slider/product-review-item/product-review-item.tsx","webpack:///./src/Frontend/app/components/product-review-slider/product-review-slider.tsx","webpack:///./src/Frontend/app/views/product-review-slider/product-review-slider-view.tsx","webpack:///./node_modules/classnames/index.js","webpack:///./src/Frontend/app/components/icons/icon.tsx","webpack:///./src/Frontend/app/components/anchor/anchor.tsx","webpack:///./src/Frontend/app/components/content-section/content-section.tsx","webpack:///./src/Frontend/app/utils/breakpoint-utils.ts","webpack:///./node_modules/react-animate-height/lib/AnimateHeight.js","webpack:///./src/Frontend/app/components/swiper/swiper-button.tsx","webpack:///./src/Frontend/app/components/show-more/show-more.tsx","webpack:///./src/Frontend/app/components/swiper/slider-swiper.tsx"],"names":["item","labels","baseClass","reviewSectionRef","className","source","dangerouslySetInnerHTML","__html","rating","ratingIconList","range","ratingRange","i","isCurrentIconInactive","iconClasses","push","iconId","key","getVisualRatingIcons","ratingLabel","minHeight","showMoreMinHeight","btnLabelShowLess","showLess","btnLabelShowMore","showMore","ref","review","productReviews","headline","swiperSettings","slidesToShow","swipeToSlide","lazyLoad","initialSlide","responsive","breakpoint","cat","settings","wolf","length","map","index","render","this","props","contextModel","hasOwn","hasOwnProperty","classNames","classes","arguments","arg","argType","Array","isArray","inner","apply","call","join","module","exports","default","spriteUrl","viewBox","preserveAspectRatio","onClick","xmlnsXlink","xlinkHref","id","type","anchorId","hasNoMarginTop","hasNoMarginBottom","componentClasses","children","breakpoints","rat","rabbit","dog","lion","horse","rhino","elephant","mediaQueries","Object","keys","reduce","queryStrings","currentMediaQueries","handleMediaMatch","isMatching","forEach","mediaQuery","matchMedia","matches","addListener","event","defineProperty","value","_typeof","Symbol","iterator","obj","constructor","prototype","_extends","assign","target","_createClass","defineProperties","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","_propTypes2","_classnames2","__esModule","_defineProperty","ANIMATION_STATE_CLASSES","animating","animatingUp","animatingDown","animatingToHeightZero","animatingToHeightAuto","animatingToHeightSpecific","static","staticHeightZero","staticHeightAuto","staticHeightSpecific","PROPS_TO_OMIT","omit","_len","_key","res","objectKeys","indexOf","cancelAnimationFrames","requestAnimationFrameIDs","cancelAnimationFrame","isNumber","n","isNaN","parseFloat","isFinite","isPercentage","height","search","substr","runCallback","callback","params","AnimateHeight","_React$Component","instance","TypeError","_classCallCheck","_this","self","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","animationFrameIDs","overflow","animationStateClasses","getStaticStateClasses","state","shouldUseTransitions","subClass","superClass","create","setPrototypeOf","_inherits","contentElement","style","hideContent","prevProps","prevState","_this2","_props","delay","duration","onAnimationEnd","onAnimationStart","_cx","showContent","contentHeight","offsetHeight","totalDuration","newHeight","timeoutState","isCurrentHeightAuto","timeoutAnimationStateClasses","setState","clearTimeout","timeoutID","animationClassesTimeoutID","requestAnimationFrame","setTimeout","display","_cx2","_cx3","_this3","_props2","animateOpacity","applyInlineTransitions","contentClassName","easing","_state","componentStyle","transition","WebkitTransition","contentStyle","opacity","ariaHidden","createElement","undefined","concat","el","Component","propTypes","bool","object","any","isRequired","string","number","propName","componentName","func","defaultProps","direction","tabIndex","showMoreHasOverflow","showMoreIsOpen","componentDidMount","window","addEventListener","handleResize","bind","componentWillUnmount","removeEventListener","disableOnBreakpoint","disableOverflow","hasOverflow","childrenWrapper","clientHeight","toggleMore","containerClasses","setAnimateToMinHeight","btnText","node","buttonClasses","buttonClassName","nextArrow","prevArrow","draggable","infinite","speed"],"mappings":"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","file":"25.3f0131bc3f289b3fdbaa.js","sourcesContent":["import * as React from \"react\";\r\nimport Icon from \"~/components/icons/icon\";\r\nimport classNames from \"classnames\";\r\nimport ShowMore from \"~/components/show-more/show-more\";\r\n\r\nexport interface ProductReviewItemProps {\r\n item: {\r\n review?: string;\r\n source?: string;\r\n rating?: number;\r\n ratingRange?: number;\r\n ratingLabel?: string;\r\n };\r\n labels: {\r\n showMore: string;\r\n showLess: string;\r\n };\r\n}\r\n\r\nconst ProductReviewItem: React.FC<ProductReviewItemProps> = ({ item, labels }) => {\r\n const baseClass = \"product-review-item\";\r\n const reviewSectionRef = React.useRef<HTMLDivElement>(null);\r\n\r\n const getVisualRatingIcons = () => {\r\n if (!item.rating) {\r\n return;\r\n }\r\n\r\n const ratingIconList = [];\r\n const range = item.ratingRange || 6;\r\n\r\n for (let i = 0; i < range; i++) {\r\n const isCurrentIconInactive = i >= item.rating;\r\n\r\n const iconClasses = classNames(`${baseClass}__rating-icon`, {\r\n [`${baseClass}__rating-icon--is-inactive`]: isCurrentIconInactive\r\n });\r\n\r\n ratingIconList.push(<Icon iconId=\"24_star\" className={iconClasses} key={i} />);\r\n }\r\n\r\n return ratingIconList;\r\n };\r\n\r\n const showMoreMinHeight = 300;\r\n const ratingSectionHeight = 74;\r\n\r\n const showMoreMinHeightWithoutRatingSection = showMoreMinHeight + ratingSectionHeight;\r\n\r\n return (\r\n <div className={baseClass}>\r\n <div className={`${baseClass}__content`}>\r\n {item.source && (\r\n <div\r\n className={`${baseClass}__source`}\r\n dangerouslySetInnerHTML={{ __html: item.source }}\r\n />\r\n )}\r\n <div className={`${baseClass}__rating-section`}>\r\n {!!item.rating && (\r\n <>\r\n <div className={`${baseClass}__rating`}>{getVisualRatingIcons()}</div>\r\n {item.ratingLabel && (\r\n <div className={`${baseClass}__rating-label`}>{item.ratingLabel}</div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n <ShowMore\r\n minHeight={!item.rating ? showMoreMinHeightWithoutRatingSection : showMoreMinHeight}\r\n className={`${baseClass}__expand-btn`}\r\n btnLabelShowLess={labels.showLess}\r\n btnLabelShowMore={labels.showMore}\r\n >\r\n <div\r\n ref={reviewSectionRef}\r\n className={`${baseClass}__review-section`}\r\n dangerouslySetInnerHTML={{ __html: item.review ?? \"\" }}\r\n />\r\n </ShowMore>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ProductReviewItem;\r\n","import * as React from \"react\";\r\nimport ProductReviewItem, {\r\n ProductReviewItemProps\r\n} from \"~/components/product-review-slider/product-review-item/product-review-item\";\r\nimport SliderSwiper from \"~/components/swiper/slider-swiper\";\r\nimport { breakpoints } from \"~/utils/breakpoint-utils\";\r\nimport { Settings } from \"react-slick\";\r\nimport ContentSection from \"../content-section/content-section\";\r\n\r\nexport interface ProductReviewSliderProps {\r\n headline: string;\r\n showMore: string;\r\n showLess: string;\r\n productReviews: ProductReviewItemProps[\"item\"][];\r\n}\r\n\r\nconst ProductReviewSlider: React.FC<ProductReviewSliderProps> = ({\r\n productReviews,\r\n showMore,\r\n showLess,\r\n headline\r\n}) => {\r\n const baseClass = \"product-review-slider\";\r\n const swiperSettings: Settings = {\r\n slidesToShow: 3,\r\n swipeToSlide: true,\r\n lazyLoad: \"ondemand\",\r\n initialSlide: 0,\r\n responsive: [\r\n {\r\n breakpoint: breakpoints.cat,\r\n settings: {\r\n slidesToShow: 1\r\n }\r\n },\r\n {\r\n breakpoint: breakpoints.wolf,\r\n settings: {\r\n slidesToShow: 2\r\n }\r\n }\r\n ]\r\n };\r\n\r\n const labels = {\r\n showMore,\r\n showLess\r\n };\r\n\r\n return (\r\n <ContentSection className={baseClass}>\r\n <h2 className=\"text-align-center h1-style\">{headline}</h2>\r\n <div className={`${baseClass}__inner`}>\r\n {productReviews.length > 0 && (\r\n <SliderSwiper settings={swiperSettings} className=\"slider-swiper--hasPaddingBottom\">\r\n {productReviews.map((item, index) => (\r\n <ProductReviewItem key={index} item={item} labels={labels} />\r\n ))}\r\n </SliderSwiper>\r\n )}\r\n </div>\r\n </ContentSection>\r\n );\r\n};\r\n\r\nexport default ProductReviewSlider;\r\n","import * as React from \"react\";\r\nimport ProductReviewSlider, {\r\n ProductReviewSliderProps\r\n} from \"~/components/product-review-slider/product-review-slider\";\r\n\r\nexport interface ProductReviewSliderViewProps {\r\n contextModel: ProductReviewSliderProps;\r\n}\r\n\r\nclass ProductReviewSliderView extends React.PureComponent<ProductReviewSliderViewProps> {\r\n public render() {\r\n return <ProductReviewSlider {...this.props.contextModel} />;\r\n }\r\n}\r\n\r\nexport default ProductReviewSliderView;\r\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\nexport type TIconNames =\r\n | \"24_expand\"\r\n | \"24_play\"\r\n | \"24_star\"\r\n | \"24_trash\"\r\n | \"32_add-user\"\r\n | \"32_basket\"\r\n | \"32_checkmark-circle\"\r\n | \"32_checkmark\"\r\n | \"32_error\"\r\n | \"32_information\"\r\n | \"32_katalog\"\r\n | \"32_search\"\r\n | \"32_truck-in-motion\"\r\n | \"32_user\"\r\n | \"32_warning\"\r\n | \"icon_16_arrow-down\"\r\n | \"icon_16_arrow-left\"\r\n | \"icon_16_arrow-right-bold\"\r\n | \"icon_16_arrow-right\"\r\n | \"icon_16_arrow-up\"\r\n | \"icon_28_close\"\r\n | \"icon_32_thumbs-up\"\r\n | \"icon_80x41_quotation-mark-gyldendal-dk\"\r\n | \"icon_80x48_quotation-mark\"\r\n | \"icon_checkbox-black\"\r\n | \"icon_checkmark-black\"\r\n | \"icon_download\"\r\n | \"icon_herringbone-narrow\"\r\n | \"icon_herringbone-wide\"\r\n | \"icon_placeholder-email\"\r\n | \"icon_placeholder-lock\"\r\n | \"icon_placeholder-phone-small\"\r\n | \"icon_placeholder-vip-white\"\r\n | \"icon_placeholder_basket\"\r\n | \"icon_placeholder_checkmark\"\r\n | \"icon_placeholder_eye-closed\"\r\n | \"icon_placeholder_eye\"\r\n | \"icon_placeholder_facebook\"\r\n | \"icon_placeholder_filtering\"\r\n | \"icon_placeholder_hamburger\"\r\n | \"icon_placeholder_instagram\"\r\n | \"icon_placeholder_phone\"\r\n | \"icon_placeholder_user\"\r\n | \"icon_read\"\r\n | \"icon_listen\";\r\n\r\nexport interface IIconProps {\r\n iconId: TIconNames;\r\n spriteUrl?: string;\r\n viewBox?: string;\r\n className?: string;\r\n onClick?: () => void;\r\n}\r\n\r\nconst Icon: React.FC<IIconProps> = props => {\r\n const spriteUrl = props.spriteUrl || \"\";\r\n const viewBox = props.viewBox || \"0 0 32 32\";\r\n\r\n return (\r\n <svg\r\n viewBox={viewBox}\r\n className={classNames(props.className, \"icon\", `icon-${props.iconId}`)}\r\n preserveAspectRatio=\"xMidYMid\"\r\n onClick={() => props.onClick && props.onClick()}\r\n >\r\n <use xmlnsXlink=\"http://www.w3.org/1999/xlink\" xlinkHref={`${spriteUrl}#${props.iconId}`} />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default Icon;\r\n","import * as React from \"react\";\r\n\r\nexport interface AnchorProps {\r\n id?: string;\r\n}\r\n\r\nconst Anchor = ({ id }: AnchorProps) => {\r\n return <div className=\"anchor\" id={id} />;\r\n};\r\n\r\nexport default Anchor;\r\n","import classNames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport Anchor from \"../anchor/anchor\";\r\n\r\nexport interface ContentSectionProps {\r\n className?: string;\r\n type?: \"default\" | \"full\";\r\n anchorId?: string;\r\n hasNoMarginTop?: boolean;\r\n hasNoMarginBottom?: boolean;\r\n}\r\n\r\nconst ContentSection: React.FC<ContentSectionProps> = ({\r\n className,\r\n type = \"default\",\r\n anchorId,\r\n hasNoMarginTop,\r\n hasNoMarginBottom,\r\n ...props\r\n}) => {\r\n const baseClass = \"content-section\";\r\n const componentClasses = classNames(baseClass, className, {\r\n [`${baseClass}--full`]: type === \"full\",\r\n \"anchor-wrapper\": !!anchorId,\r\n \"content-no-margin-top\": hasNoMarginTop,\r\n \"content-no-margin-bottom\": hasNoMarginBottom\r\n });\r\n return (\r\n <section className={componentClasses}>\r\n {anchorId && <Anchor id={anchorId} />}\r\n {props.children}\r\n </section>\r\n );\r\n};\r\n\r\nexport default ContentSection;\r\n","interface IBreakpoints {\r\n [key: string]: number;\r\n}\r\n\r\ninterface IMediaQueryStrings {\r\n [key: string]: string;\r\n}\r\n\r\nexport type IMatchingQueries = { [key in Breakpoints]?: boolean };\r\n\r\nexport type Breakpoints =\r\n | \"ratMin\"\r\n | \"ratMax\"\r\n | \"rabbitMin\"\r\n | \"rabbitMax\"\r\n | \"catMin\"\r\n | \"catMax\"\r\n | \"dogMin\"\r\n | \"dogMax\"\r\n | \"wolfMin\"\r\n | \"wolfMax\"\r\n | \"lionMin\"\r\n | \"horseMin\"\r\n | \"horseMax\"\r\n | \"rhinoMin\"\r\n | \"rhinoMax\"\r\n | \"elephantMin\"\r\n | \"elephantMax\";\r\n\r\nexport const breakpoints: IBreakpoints = {\r\n rat: 360,\r\n rabbit: 480,\r\n cat: 640,\r\n dog: 768,\r\n wolf: 1024,\r\n lion: 1100,\r\n horse: 1400,\r\n rhino: 1520,\r\n elephant: 1670\r\n};\r\n\r\nconst mediaQueries: IMediaQueryStrings = Object.keys(breakpoints).reduce(\r\n (queryStrings: IMediaQueryStrings, key) => {\r\n queryStrings[`${key}Min`] = `(min-width: ${breakpoints[key]}px)`;\r\n queryStrings[`${key}Max`] = `(max-width: ${breakpoints[key] - 1}px)`;\r\n return queryStrings;\r\n },\r\n {}\r\n);\r\n\r\nconst setupMediaQueryListeners = () => {\r\n Object.keys(mediaQueries).forEach((key: string) => {\r\n const mediaQuery = matchMedia(mediaQueries[key]);\r\n\r\n handleMediaMatch(mediaQuery.matches, key as Breakpoints); // Initial values\r\n mediaQuery.addListener(event => handleMediaMatch(event.matches, key as Breakpoints));\r\n });\r\n};\r\n\r\nconst currentMediaQueries: IMatchingQueries = {};\r\nconst handleMediaMatch = (isMatching: boolean, key: Breakpoints) => (currentMediaQueries[key] = isMatching);\r\n\r\nif (!__SERVER__) {\r\n setupMediaQueryListeners();\r\n}\r\n\r\nexport { currentMediaQueries };\r\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || 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; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ANIMATION_STATE_CLASSES = {\n animating: 'rah-animating',\n animatingUp: 'rah-animating--up',\n animatingDown: 'rah-animating--down',\n animatingToHeightZero: 'rah-animating--to-height-zero',\n animatingToHeightAuto: 'rah-animating--to-height-auto',\n animatingToHeightSpecific: 'rah-animating--to-height-specific',\n static: 'rah-static',\n staticHeightZero: 'rah-static--height-zero',\n staticHeightAuto: 'rah-static--height-auto',\n staticHeightSpecific: 'rah-static--height-specific'\n};\n\nvar PROPS_TO_OMIT = ['animateOpacity', 'animationStateClasses', 'applyInlineTransitions', 'children', 'contentClassName', 'delay', 'duration', 'easing', 'height', 'onAnimationEnd', 'onAnimationStart'];\n\nfunction omit(obj) {\n for (var _len = arguments.length, keys = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n keys[_key - 1] = arguments[_key];\n }\n\n if (!keys.length) {\n return obj;\n }\n\n var res = {};\n var objectKeys = Object.keys(obj);\n\n for (var i = 0; i < objectKeys.length; i++) {\n var key = objectKeys[i];\n\n if (keys.indexOf(key) === -1) {\n res[key] = obj[key];\n }\n }\n\n return res;\n}\n\n// Start animation helper using nested requestAnimationFrames\nfunction startAnimationHelper(callback) {\n var requestAnimationFrameIDs = [];\n\n requestAnimationFrameIDs[0] = requestAnimationFrame(function () {\n requestAnimationFrameIDs[1] = requestAnimationFrame(function () {\n callback();\n });\n });\n\n return requestAnimationFrameIDs;\n}\n\nfunction cancelAnimationFrames(requestAnimationFrameIDs) {\n requestAnimationFrameIDs.forEach(function (id) {\n return cancelAnimationFrame(id);\n });\n}\n\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nfunction isPercentage(height) {\n // Percentage height\n return typeof height === 'string' && height.search('%') === height.length - 1 && isNumber(height.substr(0, height.length - 1));\n}\n\nfunction runCallback(callback, params) {\n if (callback && typeof callback === 'function') {\n callback(params);\n }\n}\n\nvar AnimateHeight = function (_React$Component) {\n _inherits(AnimateHeight, _React$Component);\n\n function AnimateHeight(props) {\n _classCallCheck(this, AnimateHeight);\n\n var _this = _possibleConstructorReturn(this, (AnimateHeight.__proto__ || Object.getPrototypeOf(AnimateHeight)).call(this, props));\n\n _this.animationFrameIDs = [];\n\n var height = 'auto';\n var overflow = 'visible';\n\n if (isNumber(props.height)) {\n // If value is string \"0\" make sure we convert it to number 0\n height = props.height < 0 || props.height === '0' ? 0 : props.height;\n overflow = 'hidden';\n } else if (isPercentage(props.height)) {\n // If value is string \"0%\" make sure we convert it to number 0\n height = props.height === '0%' ? 0 : props.height;\n overflow = 'hidden';\n }\n\n _this.animationStateClasses = _extends({}, ANIMATION_STATE_CLASSES, props.animationStateClasses);\n\n var animationStateClasses = _this.getStaticStateClasses(height);\n\n _this.state = {\n animationStateClasses: animationStateClasses,\n height: height,\n overflow: overflow,\n shouldUseTransitions: false\n };\n return _this;\n }\n\n _createClass(AnimateHeight, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var height = this.state.height;\n\n // Hide content if height is 0 (to prevent tabbing into it)\n // Check for contentElement is added cause this would fail in tests (react-test-renderer)\n // Read more here: https://github.com/Stanko/react-animate-height/issues/17\n\n if (this.contentElement && this.contentElement.style) {\n this.hideContent(height);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var _this2 = this;\n\n var _props = this.props,\n delay = _props.delay,\n duration = _props.duration,\n height = _props.height,\n onAnimationEnd = _props.onAnimationEnd,\n onAnimationStart = _props.onAnimationStart;\n\n // Check if 'height' prop has changed\n\n if (this.contentElement && height !== prevProps.height) {\n var _cx;\n\n // Remove display: none from the content div\n // if it was hidden to prevent tabbing into it\n this.showContent(prevState.height);\n\n // Cache content height\n this.contentElement.style.overflow = 'hidden';\n var contentHeight = this.contentElement.offsetHeight;\n this.contentElement.style.overflow = '';\n\n // set total animation time\n var totalDuration = duration + delay;\n\n var newHeight = null;\n var timeoutState = {\n height: null, // it will be always set to either 'auto' or specific number\n overflow: 'hidden'\n };\n var isCurrentHeightAuto = prevState.height === 'auto';\n\n if (isNumber(height)) {\n // If value is string \"0\" make sure we convert it to number 0\n newHeight = height < 0 || height === '0' ? 0 : height;\n timeoutState.height = newHeight;\n } else if (isPercentage(height)) {\n // If value is string \"0%\" make sure we convert it to number 0\n newHeight = height === '0%' ? 0 : height;\n timeoutState.height = newHeight;\n } else {\n // If not, animate to content height\n // and then reset to auto\n newHeight = contentHeight; // TODO solve contentHeight = 0\n timeoutState.height = 'auto';\n timeoutState.overflow = null;\n }\n\n if (isCurrentHeightAuto) {\n // This is the height to be animated to\n timeoutState.height = newHeight;\n\n // If previous height was 'auto'\n // set starting height explicitly to be able to use transition\n newHeight = contentHeight;\n }\n\n // Animation classes\n var animationStateClasses = (0, _classnames2.default)((_cx = {}, _defineProperty(_cx, this.animationStateClasses.animating, true), _defineProperty(_cx, this.animationStateClasses.animatingUp, prevProps.height === 'auto' || height < prevProps.height), _defineProperty(_cx, this.animationStateClasses.animatingDown, height === 'auto' || height > prevProps.height), _defineProperty(_cx, this.animationStateClasses.animatingToHeightZero, timeoutState.height === 0), _defineProperty(_cx, this.animationStateClasses.animatingToHeightAuto, timeoutState.height === 'auto'), _defineProperty(_cx, this.animationStateClasses.animatingToHeightSpecific, timeoutState.height > 0), _cx));\n\n // Animation classes to be put after animation is complete\n var timeoutAnimationStateClasses = this.getStaticStateClasses(timeoutState.height);\n\n // Set starting height and animating classes\n // We are safe to call set state as it will not trigger infinite loop\n // because of the \"height !== prevProps.height\" check\n this.setState({ // eslint-disable-line react/no-did-update-set-state\n animationStateClasses: animationStateClasses,\n height: newHeight,\n overflow: 'hidden',\n // When animating from 'auto' we first need to set fixed height\n // that change should be animated\n shouldUseTransitions: !isCurrentHeightAuto\n });\n\n // Clear timeouts\n clearTimeout(this.timeoutID);\n clearTimeout(this.animationClassesTimeoutID);\n\n if (isCurrentHeightAuto) {\n // When animating from 'auto' we use a short timeout to start animation\n // after setting fixed height above\n timeoutState.shouldUseTransitions = true;\n\n cancelAnimationFrames(this.animationFrameIDs);\n this.animationFrameIDs = startAnimationHelper(function () {\n _this2.setState(timeoutState);\n\n // ANIMATION STARTS, run a callback if it exists\n runCallback(onAnimationStart, { newHeight: timeoutState.height });\n });\n\n // Set static classes and remove transitions when animation ends\n this.animationClassesTimeoutID = setTimeout(function () {\n _this2.setState({\n animationStateClasses: timeoutAnimationStateClasses,\n shouldUseTransitions: false\n });\n\n // ANIMATION ENDS\n // Hide content if height is 0 (to prevent tabbing into it)\n _this2.hideContent(timeoutState.height);\n // Run a callback if it exists\n runCallback(onAnimationEnd, { newHeight: timeoutState.height });\n }, totalDuration);\n } else {\n // ANIMATION STARTS, run a callback if it exists\n runCallback(onAnimationStart, { newHeight: newHeight });\n\n // Set end height, classes and remove transitions when animation is complete\n this.timeoutID = setTimeout(function () {\n timeoutState.animationStateClasses = timeoutAnimationStateClasses;\n timeoutState.shouldUseTransitions = false;\n\n _this2.setState(timeoutState);\n\n // ANIMATION ENDS\n // If height is auto, don't hide the content\n // (case when element is empty, therefore height is 0)\n if (height !== 'auto') {\n // Hide content if height is 0 (to prevent tabbing into it)\n _this2.hideContent(newHeight); // TODO solve newHeight = 0\n }\n // Run a callback if it exists\n runCallback(onAnimationEnd, { newHeight: newHeight });\n }, totalDuration);\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n cancelAnimationFrames(this.animationFrameIDs);\n\n clearTimeout(this.timeoutID);\n clearTimeout(this.animationClassesTimeoutID);\n\n this.timeoutID = null;\n this.animationClassesTimeoutID = null;\n this.animationStateClasses = null;\n }\n }, {\n key: 'showContent',\n value: function showContent(height) {\n if (height === 0) {\n this.contentElement.style.display = '';\n }\n }\n }, {\n key: 'hideContent',\n value: function hideContent(newHeight) {\n if (newHeight === 0) {\n this.contentElement.style.display = 'none';\n }\n }\n }, {\n key: 'getStaticStateClasses',\n value: function getStaticStateClasses(height) {\n var _cx2;\n\n return (0, _classnames2.default)((_cx2 = {}, _defineProperty(_cx2, this.animationStateClasses.static, true), _defineProperty(_cx2, this.animationStateClasses.staticHeightZero, height === 0), _defineProperty(_cx2, this.animationStateClasses.staticHeightSpecific, height > 0), _defineProperty(_cx2, this.animationStateClasses.staticHeightAuto, height === 'auto'), _cx2));\n }\n }, {\n key: 'render',\n value: function render() {\n var _cx3,\n _this3 = this;\n\n var _props2 = this.props,\n animateOpacity = _props2.animateOpacity,\n applyInlineTransitions = _props2.applyInlineTransitions,\n children = _props2.children,\n className = _props2.className,\n contentClassName = _props2.contentClassName,\n delay = _props2.delay,\n duration = _props2.duration,\n easing = _props2.easing,\n id = _props2.id,\n style = _props2.style;\n var _state = this.state,\n height = _state.height,\n overflow = _state.overflow,\n animationStateClasses = _state.animationStateClasses,\n shouldUseTransitions = _state.shouldUseTransitions;\n\n\n var componentStyle = _extends({}, style, {\n height: height,\n overflow: overflow || style.overflow\n });\n\n if (shouldUseTransitions && applyInlineTransitions) {\n componentStyle.transition = 'height ' + duration + 'ms ' + easing + ' ' + delay + 'ms';\n\n // Include transition passed through styles\n if (style.transition) {\n componentStyle.transition = style.transition + ', ' + componentStyle.transition;\n }\n\n // Add webkit vendor prefix still used by opera, blackberry...\n componentStyle.WebkitTransition = componentStyle.transition;\n }\n\n var contentStyle = {};\n\n if (animateOpacity) {\n contentStyle.transition = 'opacity ' + duration + 'ms ' + easing + ' ' + delay + 'ms';\n // Add webkit vendor prefix still used by opera, blackberry...\n contentStyle.WebkitTransition = contentStyle.transition;\n\n if (height === 0) {\n contentStyle.opacity = 0;\n }\n }\n\n var componentClasses = (0, _classnames2.default)((_cx3 = {}, _defineProperty(_cx3, animationStateClasses, true), _defineProperty(_cx3, className, className), _cx3));\n\n // Check if user passed aria-hidden prop\n var hasAriaHiddenProp = typeof this.props['aria-hidden'] !== 'undefined';\n var ariaHidden = hasAriaHiddenProp ? this.props['aria-hidden'] : height === 0;\n\n return _react2.default.createElement(\n 'div',\n _extends({}, omit.apply(undefined, [this.props].concat(PROPS_TO_OMIT)), {\n 'aria-hidden': ariaHidden,\n className: componentClasses,\n id: id,\n style: componentStyle\n }),\n _react2.default.createElement(\n 'div',\n {\n className: contentClassName,\n style: contentStyle,\n ref: function ref(el) {\n return _this3.contentElement = el;\n }\n },\n children\n )\n );\n }\n }]);\n\n return AnimateHeight;\n}(_react2.default.Component);\n\nvar heightPropType = function heightPropType(props, propName, componentName) {\n var value = props[propName];\n\n if (typeof value === 'number' && value >= 0 || isPercentage(value) || value === 'auto') {\n return null;\n }\n\n return new TypeError('value \"' + value + '\" of type \"' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '\" is invalid type for ' + propName + ' in ' + componentName + '. ' + 'It needs to be a positive number, string \"auto\" or percentage string (e.g. \"15%\").');\n};\n\nAnimateHeight.propTypes = {\n 'aria-hidden': _propTypes2.default.bool,\n animateOpacity: _propTypes2.default.bool,\n animationStateClasses: _propTypes2.default.object,\n applyInlineTransitions: _propTypes2.default.bool,\n children: _propTypes2.default.any.isRequired,\n className: _propTypes2.default.string,\n contentClassName: _propTypes2.default.string,\n delay: _propTypes2.default.number,\n duration: _propTypes2.default.number,\n easing: _propTypes2.default.string,\n height: heightPropType,\n id: _propTypes2.default.string,\n onAnimationEnd: _propTypes2.default.func,\n onAnimationStart: _propTypes2.default.func,\n style: _propTypes2.default.object\n};\n\nAnimateHeight.defaultProps = {\n animateOpacity: false,\n animationStateClasses: ANIMATION_STATE_CLASSES,\n applyInlineTransitions: true,\n duration: 250,\n delay: 0,\n easing: 'ease',\n style: {}\n};\n\nexports.default = AnimateHeight;","import * as React from \"react\";\r\nimport Icon, { TIconNames } from \"~/components/icons/icon\";\r\nimport classNames from \"classnames\";\r\n\r\ninterface ISwiperButtonProps {\r\n className?: string;\r\n direction: \"LEFT\" | \"RIGHT\";\r\n onClick?: () => void;\r\n}\r\n\r\nconst SwiperButton: React.SFC<ISwiperButtonProps> = ({ className, direction, onClick }) => {\r\n const baseClass = \"swiper-button\";\r\n const classes = classNames(baseClass, className, {\r\n [`${baseClass}--right`]: direction === \"RIGHT\",\r\n [`${baseClass}--left`]: direction === \"LEFT\"\r\n });\r\n const iconId: TIconNames = direction === \"RIGHT\" ? \"icon_16_arrow-right\" : \"icon_16_arrow-left\";\r\n\r\n return (\r\n <button tabIndex={0} className={classes} onClick={onClick}>\r\n <Icon className=\"swiper-button__icon\" iconId={iconId} />\r\n </button>\r\n );\r\n};\r\n\r\nexport default SwiperButton;\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport AnimateHeight from \"react-animate-height\";\r\nimport { currentMediaQueries, Breakpoints } from \"~/utils/breakpoint-utils\";\r\n\r\nexport interface IShowMoreProps {\r\n minHeight: number;\r\n btnLabelShowMore?: string;\r\n btnLabelShowLess?: string;\r\n className?: string;\r\n disableOnBreakpoint?: Breakpoints;\r\n}\r\ninterface IShowMoreState {\r\n showMoreHasOverflow: boolean;\r\n showMoreIsOpen: boolean;\r\n}\r\n\r\nclass ShowMore extends React.Component<IShowMoreProps, IShowMoreState> {\r\n private childrenWrapper: HTMLDivElement | null;\r\n\r\n public state = {\r\n showMoreHasOverflow: true,\r\n showMoreIsOpen: false\r\n };\r\n\r\n public componentDidMount() {\r\n window.addEventListener(\"resize\", this.handleResize.bind(this));\r\n this.handleResize();\r\n }\r\n\r\n public componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.handleResize.bind(this));\r\n }\r\n\r\n public handleResize() {\r\n const { disableOnBreakpoint, minHeight } = this.props;\r\n const disableOverflow = disableOnBreakpoint && currentMediaQueries[disableOnBreakpoint];\r\n const hasOverflow = this.childrenWrapper && this.childrenWrapper.clientHeight > minHeight;\r\n\r\n if (!disableOverflow && hasOverflow) {\r\n this.setState({ showMoreHasOverflow: true });\r\n } else {\r\n this.setState({ showMoreHasOverflow: false });\r\n }\r\n }\r\n\r\n private toggleMore() {\r\n this.setState({ showMoreIsOpen: !this.state.showMoreIsOpen });\r\n }\r\n\r\n public render() {\r\n const { className, minHeight, btnLabelShowLess, btnLabelShowMore, children } = this.props;\r\n const baseClass = \"show-more\";\r\n const containerClasses = classNames(className, baseClass, {\r\n [`${baseClass}--hasOverflow`]: this.state.showMoreHasOverflow,\r\n [`${baseClass}--isClosed`]: this.state.showMoreHasOverflow && !this.state.showMoreIsOpen\r\n });\r\n const setAnimateToMinHeight = this.state.showMoreHasOverflow && !this.state.showMoreIsOpen;\r\n const btnText = this.state.showMoreIsOpen ? btnLabelShowLess : btnLabelShowMore;\r\n\r\n return (\r\n <div className={containerClasses}>\r\n <AnimateHeight height={setAnimateToMinHeight ? minHeight : \"auto\"} duration={300}>\r\n <div ref={node => (this.childrenWrapper = node)}>{children}</div>\r\n </AnimateHeight>\r\n\r\n <button className=\"show-more-button\" onClick={() => this.toggleMore()}>\r\n {btnText}\r\n </button>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default ShowMore;\r\n","import * as React from \"react\";\r\nimport Slider, { Settings } from \"react-slick\";\r\nimport SwiperButton from \"~/components/swiper/swiper-button\";\r\nimport classNames from \"classnames\";\r\n\r\ninterface ISliderSwiperProps {\r\n settings: Settings;\r\n className?: string;\r\n buttonClassName?: string;\r\n}\r\n\r\nconst SliderSwiper: React.FC<ISliderSwiperProps> = props => {\r\n const buttonBaseClass = \"custom-slick-arrow\";\r\n const buttonClasses = classNames(buttonBaseClass, props.buttonClassName);\r\n\r\n return (\r\n <div className=\"slider-swiper slider-swiper--hasPaddingBottom\">\r\n <Slider\r\n nextArrow={<SwiperButton className={buttonClasses} direction=\"RIGHT\" />}\r\n prevArrow={<SwiperButton className={buttonClasses} direction=\"LEFT\" />}\r\n draggable\r\n infinite={false}\r\n speed={300}\r\n {...props.settings}\r\n >\r\n {props.children}\r\n </Slider>\r\n </div>\r\n );\r\n};\r\n\r\nexport default SliderSwiper;\r\n"],"sourceRoot":""}