{"version":3,"sources":["webpack:///./presentation/components/common/CallToAction.tsx","webpack:///./domain/constants/callToAction.ts","webpack:///./application/actions/reactive-knowledge/useShowToast.ts","webpack:///./infrastructure/basket/createBasket.ts","webpack:///./infrastructure/basket/addToBasket.ts","webpack:///./application/actions/cta/useAddProductToBasket.ts","webpack:///./application/actions/cta/usePostActionNavigate.ts","webpack:///./presentation/hocs/callToActionHandlers/handleAddToBasketClick.ts","webpack:///./presentation/hocs/callToActionHandlers/handleConfigureClick.ts","webpack:///./application/actions/cta/sendProductClicked.ts","webpack:///./application/actions/cta/sendProductOnAddToBasket.ts","webpack:///./application/actions/cta/sendPromotion.ts","webpack:///./presentation/hocs/callToAction.tsx","webpack:///./presentation/hocs/callToActionHandlers/handleAnalytics.ts","webpack:///./presentation/hocs/callToActionHandlers/utils.ts","webpack:///./presentation/hocs/callToActionHandlers/handleSetVisibilityClick.ts","webpack:///./presentation/hocs/callToActionHandlers/handlePlayVideoClick.ts","webpack:///../node_modules/@uds/slider/dist/es/index.js"],"names":["PureCallToAction","kind","label","addingStatus","handleClick","behavior","props","status","Status","PENDING","SUCCESS","FAILURE","DEFAULT","getStatus","goto","undefined","isExternal","url","useIsExternalRoute","newTab","rel","openNewWindowProps","target","buttonProps","omit","onClick","href","isExternalRoute","glyph","name","alt","displayName","callToAction","Behavior","useShowToast","add","useAdd","intl","useIntl","message","type","KnowledgeType","SMIRK","formatMessage","id","createBasket","async","driver","makeDriver","response","method","Method","POST","headers","brandId","basketId","body","setCookie","makeAddToBasket","items","localeCode","getLanguageCookie","cookie","getCookie","cookieDecoded","decode","e","getBaskedId","data","useAddProductToBasket","postActionNavigate","handleAnalytics","useBrandId","showToast","refetchBasket","useRefreshBasketCount","useMutation","onError","ERK","onSuccess","usePostActionNavigate","postAction","history","useHistory","isInternal","isInternalUrl","orderUrl","useOrderProcessUrl","window","useWindow","navigateUrl","push","location","statusMap","idle","loading","success","error","sendProductClicked","productId","list","getProductData","locale","skuId","then","product","price","productSelectors","getPrice","includeTax","ecommerce","sendProductOnAddToBasket","currency","term","category","categoryName","dispatchFBEvent","content_ids","content_name","value","quantity","content_type","defaultPrice","dispatchGA4Event","sendPromotion","promotion","ec","ecomm","promoNameToPromoId","VideoModal","lazy","Component","ribbonId","setAddingStatus","useState","isVideoModalOpen","setIsVideoModalOpen","externalRoutes","useExternalRoutes","useCurrency","ribbon","useRibbon","createRibbonName","ctaType","analytics","pricingTier","useHandleAnalytics","handleAddToBasketClick","mutateAsync","addToBasket","useEffect","timeoutRef","setTimeout","clearTimeout","defaultSkuId","paymentInterval","useHandleAddToBasketClick","handleConfigureClick","tier","formatPricingTier","query","URLSearchParams","append","q","toString","useHandleConfigureClick","handleSetVisibilityClick","setVisibility","useVisibilitySetsAction","visibilitySet","useHandleSetVisibilityClick","ctaId","linkAttribution","actionType","toggleVideoModal","isOpen","ADD_TO_BASKET","CONFIGURE","PLAY_VIDEO","handlePlayVideoClick","SET_VISIBILITY","NAVIGATION","fallback","videoId","provider","closeModal","reactPropsRegex","index","fn","cache","arg","memoize","prop","test","charCodeAt","restOp","obj","keysToExclude","Object","keys","filter","includes","reduce","acc","curr","assign","warnIfInvalid","componentName","styled$1","tag","options","render","ref","as","component","class","className","rest","filteredProps","indexOf","key","_len","arguments","length","classNames","Array","_key","Boolean","join","cx","vars","style","variable","result","unit","__linaria","Result","innerRef","extends","getFlexBasis","itemsInViewport","hasScroll","peak","gu2","isMinLg","calculateFlexBasis","ListWrapper","List","_ref","viewportLimit","Item","_ref2","_ref3","customScrollSnap","_ref4","_ref5","_ref6","_ref7","DEFAULT_VIEWPORT_LIMIT_LIST","PureSlider","forwardRef","children","onScroll","visibleItems","array1","array2","slice","mergeArrays","childrenList","map","child","i","Slider"],"mappings":"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","file":"pex-static/34/4.2b0f888e614cbd89a0cd.chunk.js","sourcesContent":["import React from 'react';\nimport { Status, Size } from '@uds/button';\nimport { CTA } from 'core/ribbons/cta';\nimport { Product } from '@uds/product';\nimport { Glyph, IconName } from '@uds/glyphs';\nimport callToAction from 'presentation/hocs/callToAction';\nimport { omit } from 'presentation/utils/generalUtils';\nimport { ReactRouterButton } from '@uds/react-router-adapter';\nimport { useIsExternalRoute } from 'domain/selectors/common';\n\ninterface OuterProps extends CTA {\n product?: Product;\n block?: boolean;\n size?: Size;\n ribbonId: string;\n index: number;\n glyph?: IconName;\n}\n\ninterface InnerProps extends OuterProps {\n addingStatus?: Status;\n handleClick: (props: any) => () => void;\n}\n\nconst getStatus = (addingStatus: string | undefined) => {\n switch (addingStatus) {\n case 'PENDING':\n return Status.PENDING;\n case 'SUCCESS':\n return Status.SUCCESS;\n case 'FAILURE':\n return Status.FAILURE;\n default:\n return Status.DEFAULT;\n }\n};\n\nconst PureCallToAction = ({ kind, label, addingStatus, handleClick, behavior, ...props }: InnerProps) => {\n const status = getStatus(addingStatus);\n const goto = 'goto' in behavior ? behavior.goto : undefined;\n const [isExternal, url] = useIsExternalRoute(goto);\n const newTab = 'newTab' in behavior ? behavior.newTab : null;\n const rel = 'rel' in behavior ? behavior.rel : undefined;\n\n const openNewWindowProps =\n newTab === 'true'\n ? {\n rel: rel,\n target: '_blank',\n }\n : {};\n\n const buttonProps = omit(\n [\n 'actions',\n 'buttonId',\n 'ribbonId',\n 'index',\n 'handlePlayVideoClick',\n 'handleSetVisibilityClick',\n 'handleConfigureClick',\n 'handleAddToBasketClick',\n 'handleNavigateClick',\n 'handleAnalytics',\n 'ribbonList',\n 'glyph',\n ],\n props,\n );\n\n return (\n }\n >\n {label}\n \n );\n};\n\nPureCallToAction.displayName = 'CallToAction';\n\nexport default callToAction(PureCallToAction);\n","export enum Behavior {\n NAVIGATION = 'navigation',\n ADD_TO_BASKET = 'addToBasket',\n CONFIGURE = 'configure',\n SET_VISIBILITY = 'changeActiveVisibilitySet',\n PLAY_VIDEO = 'playVideo',\n}\n\nexport default null;\n","import { useAdd, KnowledgeType } from '@uds/reactive-knowledge';\nimport { useIntl } from 'react-intl';\n\nexport type ShowToast = (messageId: string, type?: KnowledgeType) => void;\n\nexport default function useShowToast(): ShowToast {\n const add = useAdd();\n const intl = useIntl();\n return (message: string, type: KnowledgeType = KnowledgeType.SMIRK) => {\n add({\n type,\n message: intl.formatMessage({ id: message }),\n });\n };\n}\n","import { Http, Method } from '@ux/drivers';\nimport { setCookie } from '@uds/cookies';\nimport { CreateBasket } from 'core/basket';\nimport makeDriver from 'infrastructure/drivers/json';\n\nconst createBasket: CreateBasket = async (brandId: string) => {\n const driver: Http = makeDriver();\n\n const response = await driver({\n url: '/api/basket/api/v2/baskets',\n method: Method.POST,\n headers: {\n 'X-Tenant': brandId,\n },\n });\n\n const basketId = (await response.body.id) ?? null;\n if (basketId != null) {\n setCookie('basket', basketId);\n }\n\n return basketId;\n};\n\nexport default createBasket;\n","import decode from 'jwt-decode';\nimport { Http, Method } from '@ux/drivers';\nimport { getCookie } from '@uds/cookies';\nimport { AddToBasket } from 'core/basket';\nimport makeDriver from 'infrastructure/drivers/json';\nimport { getLanguageCookie } from 'domain/selectors/common';\n\nimport createBasket from './createBasket';\n\ntype CookieDecoded =\n | {\n basketId: string;\n }\n | {\n [key: string]: never;\n };\n\nconst makeAddToBasket = (brandId: string): AddToBasket => {\n const driver: Http = makeDriver();\n\n const getBaskedId = () => {\n const cookie = getCookie('basket');\n let basketId;\n\n try {\n const cookieDecoded: CookieDecoded = cookie != null ? decode(cookie) : {};\n if (cookieDecoded.basketId != null) {\n basketId = cookieDecoded.basketId;\n return basketId;\n }\n return createBasket(brandId);\n } catch (e: unknown) {\n basketId = cookie;\n return basketId;\n }\n };\n\n return async ({ items }) => {\n const localeCode = getLanguageCookie();\n const basketId = await getBaskedId();\n\n return driver({\n url: `/api/basket/api/v2/baskets/${basketId}/items?localeCode=${localeCode}`,\n method: Method.POST,\n data: { items },\n headers: {\n 'X-Tenant': brandId,\n },\n });\n };\n};\n\nexport default makeAddToBasket;\n","import { useMutation } from 'react-query';\nimport { useBrandId } from '@ux/whitelabel';\nimport { useRefreshBasketCount } from '@uds/bookends';\nimport { KnowledgeType } from '@uds/reactive-knowledge';\nimport makeAddToBasket from 'infrastructure/basket/addToBasket';\nimport { AddProductToBasketArgs } from 'core/basket';\n\nimport useShowToast from '../reactive-knowledge/useShowToast';\n\ninterface AddProductToBasketProps {\n handleAnalytics: () => void;\n postActionNavigate: () => void;\n}\n\nconst useAddProductToBasket = ({ postActionNavigate, handleAnalytics }: AddProductToBasketProps) => {\n const brandId = useBrandId();\n const showToast = useShowToast();\n const refetchBasket = useRefreshBasketCount();\n const addToBasket = (items: Array) => {\n handleAnalytics();\n return makeAddToBasket(brandId)({ items });\n };\n\n return useMutation(addToBasket, {\n onError: () => {\n showToast('usf.addToBasket.failure', KnowledgeType.ERK);\n },\n onSuccess: () => {\n refetchBasket();\n showToast('usf.addToBasket.success');\n postActionNavigate();\n },\n });\n};\n\nexport default useAddProductToBasket;\n","import { useHistory } from 'react-router';\nimport { useWindow } from '@uds/hooks';\nimport { isInternalUrl } from 'domain/url';\nimport { useOrderProcessUrl } from 'domain/selectors/common';\n\nconst usePostActionNavigate = (postAction?: { type: string; url?: string }) => {\n const type = postAction?.type;\n const url = postAction?.url;\n const history = useHistory();\n const isInternal = isInternalUrl(url);\n const orderUrl = useOrderProcessUrl();\n const window = useWindow();\n const navigateUrl = type === 'CHECKOUT' ? orderUrl : url;\n\n return () => {\n if (navigateUrl == null) {\n return;\n }\n if (isInternal) {\n history.push(navigateUrl);\n } else {\n window.location.href = navigateUrl;\n }\n };\n};\n\nexport default usePostActionNavigate;\n","import { Dispatch, useEffect } from 'react';\nimport { QueryStatus } from 'react-query';\nimport { Status } from '@uds/button';\nimport { Product } from '@uds/product';\nimport { AddProductToBasketArgs } from 'core/basket';\nimport { AddToBasketCta, BehaviorType } from 'core/ribbons/cta';\nimport useAddProductToBasket from 'application/actions/cta/useAddProductToBasket';\nimport usePostActionNavigate from 'application/actions/cta/usePostActionNavigate';\n\nconst statusMap: Record = {\n idle: Status.DEFAULT,\n loading: Status.PENDING,\n success: Status.SUCCESS,\n error: Status.FAILURE,\n};\n\ninterface HandleAddToBasketClick {\n product?: Product;\n behavior?: BehaviorType;\n setAddingStatus: Dispatch;\n handleAnalytics: () => void;\n postAction?: {\n type: string;\n url?: string;\n };\n}\n\nexport default ({ product, setAddingStatus, handleAnalytics, postAction }: HandleAddToBasketClick) => {\n const postActionNavigate = usePostActionNavigate(postAction);\n const { mutateAsync: addToBasket, status } = useAddProductToBasket({\n postActionNavigate,\n handleAnalytics,\n });\n\n useEffect(() => {\n let timeoutRef: ReturnType;\n setAddingStatus(statusMap[status]);\n\n if (status === 'error' || status === 'success') {\n timeoutRef = setTimeout(() => {\n setAddingStatus(Status.DEFAULT);\n }, 1000);\n }\n\n return () => {\n clearTimeout(timeoutRef);\n };\n }, [status, setAddingStatus]);\n\n return ({ behavior }: { behavior?: AddToBasketCta }) => {\n const items: Array = [];\n items.push({\n skuId: product?.defaultSkuId ?? behavior?.productId,\n quantity: 1,\n term: behavior?.pricingTier?.term,\n paymentInterval: behavior?.pricingTier?.paymentInterval,\n });\n\n addToBasket(items);\n };\n};\n","import { useWindow } from '@uds/hooks';\nimport { ConfigureProductCta } from 'core/ribbons/cta';\n\nimport { formatPricingTier } from './utils';\n\ninterface Props {\n behavior?: ConfigureProductCta;\n}\n\nexport default () => {\n const window = useWindow();\n\n return ({ behavior }: Props) => {\n const tier = formatPricingTier(behavior?.pricingTier);\n const productId = behavior?.productId;\n const query = new URLSearchParams();\n\n if (productId != null) {\n query.append('productId', productId);\n }\n\n if (tier != null) {\n query.append('pricingTier', tier);\n }\n\n const q = query.toString();\n window.location.href = `/configure?${q}`;\n };\n};\n","import { ecommerce } from '@uds/tagmg';\nimport { selectors as productSelectors } from '@uds/product';\nimport { GetProductData } from 'core/cta';\nimport { getLanguageCookie } from 'domain/selectors/common';\n\nconst sendProductClicked = ({\n productId,\n list,\n getProductData,\n}: {\n list: string;\n productId?: string | null;\n getProductData: GetProductData;\n}) => {\n const locale = getLanguageCookie();\n\n if (!productId) {\n return;\n }\n return getProductData({\n skuId: productId,\n locale,\n }).then((product) => {\n const id = product?.id;\n const name = product?.name;\n let price = 0;\n // in case we ever get a malformed product, getPrice would throw an error\n try {\n price = productSelectors.getPrice({\n product,\n includeTax: false,\n });\n } catch (e) {\n return;\n }\n\n ecommerce([\n [\n 'addProduct',\n {\n id: `${id}`,\n name,\n price,\n },\n ],\n ['setAction', 'click', { list }],\n ]);\n });\n};\n\nexport default sendProductClicked;\n","import { dispatchFBEvent, ecommerce } from '@uds/tagmg';\nimport { selectors as productSelectors } from '@uds/product';\nimport { GetProductData } from 'core/cta';\nimport { getLanguageCookie } from 'domain/selectors/common';\nimport { dispatchGA4Event } from 'infrastructure/ga4';\n\nconst sendProductOnAddToBasket = ({\n productId,\n list,\n getProductData,\n currency,\n brandId,\n term,\n}: {\n list: string;\n productId?: string | null;\n getProductData: GetProductData;\n currency: string;\n brandId: string;\n term?: number | null;\n}) => {\n const locale = getLanguageCookie();\n if (!productId) {\n return;\n }\n return getProductData({\n skuId: productId,\n locale,\n }).then((product) => {\n let price = 0;\n // in case we ever get a malformed product, getPrice would throw an error\n try {\n price = productSelectors.getPrice({\n product,\n includeTax: true,\n });\n } catch (e) {\n return;\n }\n if (product == null) return;\n const id = product.id;\n const name = product.name;\n const category = product.categoryName;\n dispatchFBEvent('AddToCart', {\n // eslint-disable-next-line camelcase\n content_ids: [id],\n // eslint-disable-next-line camelcase\n content_name: name,\n value: price,\n quantity: 1,\n // eslint-disable-next-line camelcase\n content_type: category,\n currency: currency,\n });\n ecommerce([\n [\n 'addProduct',\n {\n id: `${id}`,\n name,\n price,\n },\n ],\n [\n 'setAction',\n 'add',\n {\n list,\n },\n ],\n ]);\n // Send GA4 ecommerce data\n const items = [{\n 'item_name': product.name,\n 'item_id': product.id,\n 'item_group_id': product.id,\n 'item_brand': brandId,\n 'item_category': product.categoryName,\n 'item_variant': `${product.name} ${term ?? product.defaultPrice?.term}`,\n 'currency': currency,\n 'price': price,\n 'quantity': 1,\n }];\n dispatchGA4Event('add_to_cart', { items });\n });\n};\n\nexport default sendProductOnAddToBasket;\n","import { Ecommerce, ecommerce } from '@uds/tagmg';\nimport { promoNameToPromoId } from 'domain/logic/promotion';\n\nconst sendPromotion = ({ promotion, ec }: { promotion?: string; ec?: Ecommerce }) => {\n // for test purposes, we allow an overwrite\n const ecomm = ec || ecommerce;\n if (!promotion) {\n return;\n }\n\n const promoId = promoNameToPromoId(promotion);\n ecomm([\n [\n 'addPromo',\n {\n id: promoId,\n name: promotion,\n },\n ],\n ['setAction', 'promo_click'],\n ]);\n};\n\nexport default sendPromotion;\n","import { useState, Suspense, lazy, ElementType } from 'react';\nimport { Status } from '@uds/button';\nimport { Product } from '@uds/product';\nimport { BehaviorType } from 'core/ribbons/cta';\nimport { Behavior } from 'domain/constants/callToAction';\nimport { useExternalRoutes } from 'domain/selectors/common';\n\nimport {\n useHandleAddToBasketClick,\n useHandleConfigureClick,\n handlePlayVideoClick,\n useHandleAnalytics,\n useHandleSetVisibilityClick,\n} from './callToActionHandlers';\n\nconst VideoModal = lazy(() => import('presentation/components/modal/Video'));\n\ninterface Props {\n id?: string;\n ribbonId?: string;\n product?: Product;\n behavior?: BehaviorType;\n [key: string]: any;\n}\n\nexport default function (Component: ElementType) {\n return function CallToActionWrapper({ id, ribbonId, behavior, product, ...props }: Props) {\n const [addingStatus, setAddingStatus] = useState(Status.DEFAULT);\n const [isVideoModalOpen, setIsVideoModalOpen] = useState(false);\n const externalRoutes = useExternalRoutes();\n const handleAnalytics = useHandleAnalytics({ ribbonId });\n const handleAddToBasketClick = useHandleAddToBasketClick({\n product,\n setAddingStatus,\n handleAnalytics: () => handleAnalytics({ behavior }),\n postAction: behavior != null && 'postAction' in behavior ? behavior.postAction : undefined,\n });\n const handleConfigureClick = useHandleConfigureClick();\n const handleSetVisibilityClick = useHandleSetVisibilityClick();\n // add an analytics prefixed `id` to the cta if required\n const ctaId = behavior?.analytics?.linkAttribution == null ? id : `usf-cta-${behavior.analytics.linkAttribution}`;\n const actionType = behavior?.type;\n const toggleVideoModal = () => {\n return setIsVideoModalOpen((isOpen) => !isOpen);\n };\n\n const handleClick = (() => {\n if (actionType === Behavior.ADD_TO_BASKET) {\n return () => handleAddToBasketClick({ behavior });\n }\n if (actionType === Behavior.CONFIGURE) {\n return () => handleConfigureClick({ behavior });\n }\n if (actionType === Behavior.PLAY_VIDEO) {\n return () => handlePlayVideoClick({ toggleVideoModal });\n }\n if (actionType === Behavior.SET_VISIBILITY) {\n return () => handleSetVisibilityClick({ behavior });\n }\n if (actionType === Behavior.NAVIGATION) {\n return () => handleAnalytics({ behavior });\n }\n\n return () => null;\n })();\n\n if (actionType === Behavior.PLAY_VIDEO) {\n return (\n <>\n \n {isVideoModalOpen && (\n \n )}\n \n \n >\n );\n }\n\n return (\n \n );\n };\n}\n","import { useCurrency } from '@ux/currency';\nimport { useBrandId } from '@ux/whitelabel';\nimport { Analytics } from 'core/ribbons/cta';\nimport { Behavior } from 'domain/constants/callToAction';\nimport { sendProductClicked, sendProductOnAddToBasket, sendPromotion } from 'application/actions/cta';\nimport { getProductData } from 'infrastructure/cta';\nimport { createRibbonName } from 'domain/transformers/ribbons';\nimport { useRibbon } from 'domain/selectors/ribbons';\n\ninterface Props {\n ribbonId?: string;\n behavior?: {\n type: Behavior;\n analytics?: Analytics;\n productId?: string | null;\n pricingTier?: {\n term?: number | null;\n };\n };\n}\n\nexport default ({ ribbonId }: Props) => {\n const currency = useCurrency();\n const brandId = useBrandId();\n const ribbon = useRibbon(ribbonId);\n const list = createRibbonName(ribbon?.type, ribbon?.props?.name);\n\n return ({ behavior }: Props) => {\n const ctaType = behavior?.type;\n const type = behavior?.analytics?.type;\n const term = behavior?.pricingTier?.term;\n\n if (type === 'PRODUCT') {\n const productId = behavior?.analytics?.productId;\n sendProductClicked({\n productId,\n list,\n getProductData,\n });\n } else if (type === 'PROMOTION') {\n const promotion = behavior?.analytics?.promotion;\n sendPromotion({ promotion });\n } else if (ctaType === 'addToBasket') {\n const productId = behavior?.productId;\n sendProductOnAddToBasket({ productId, list, getProductData, currency, brandId, term });\n }\n };\n};\n","export const formatPricingTier = (tier: { paymentInterval?: number; term?: number } | undefined) => {\n if (tier == null) {\n return;\n }\n if (tier.paymentInterval == null || tier.term == null) {\n return;\n }\n return `${tier.paymentInterval}:${tier.term}`;\n};\n","import { VisibilitySetCta } from 'core/ribbons/cta';\nimport { useVisibilitySetsAction } from 'presentation/context/VisibilitySets';\n\nexport default () => {\n const setVisibility = useVisibilitySetsAction();\n\n return ({ behavior }: { behavior?: VisibilitySetCta }) => {\n if (setVisibility != null) {\n setVisibility(behavior?.visibilitySet);\n }\n };\n};\n","export default ({ toggleVideoModal }: { toggleVideoModal: () => void }) => {\n toggleVideoModal();\n};\n","import * as React from 'react';\nimport React__default from 'react';\nimport { cssTheme } from '@uds/theme-utils';\nimport './slider.stylesheet_10gvz2t.css';\nimport { jsx } from 'react/jsx-runtime';\n\nfunction memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */ && prop.charCodeAt(1) === 110\n /* n */ && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */);\n\nfunction cx() {\n for (var _len = arguments.length, classNames = new Array(_len), _key = 0; _key < _len; _key++) {\n classNames[_key] = arguments[_key];\n }\n return classNames.filter(Boolean).join(' ');\n}\n\n/**\n * This file contains an runtime version of `styled` component. Responsibilities of the component are:\n * - returns ReactElement based on HTML tag used with `styled` or custom React Component\n * - injects classNames for the returned component\n * - injects CSS variables used to define dynamic styles based on props\n */\n\n// Workaround for rest operator\nconst restOp = (obj, keysToExclude) => Object.keys(obj).filter(prop => !keysToExclude.includes(prop)).reduce((acc, curr) => Object.assign(acc, {\n [curr]: obj[curr]\n}), {}); // rest operator workaround\n\nconst warnIfInvalid = (value, componentName) => {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof value === 'string' ||\n // eslint-disable-next-line no-self-compare\n typeof value === 'number' && isFinite(value)) {\n return;\n }\n const stringified = typeof value === 'object' ? JSON.stringify(value) : String(value); // eslint-disable-next-line no-console\n\n console.warn(`An interpolation evaluated to '${stringified}' in the component '${componentName}', which is probably a mistake. You should explicitly cast or transform the value to a string.`);\n }\n}; // If styled wraps custom component, that component should have className property\n\nfunction styled(tag) {\n return options => {\n if (process.env.NODE_ENV !== 'production') {\n if (Array.isArray(options)) {\n // We received a strings array since it's used as a tag\n throw new Error('Using the \"styled\" tag in runtime is not supported. Make sure you have set up the Babel plugin correctly. See https://github.com/callstack/linaria#setup');\n }\n }\n const render = (props, ref) => {\n const {\n as: component = tag,\n class: className\n } = props;\n const rest = restOp(props, ['as', 'class']);\n let filteredProps; // Check if it's an HTML tag and not a custom element\n\n if (typeof component === 'string' && component.indexOf('-') === -1) {\n filteredProps = {}; // eslint-disable-next-line guard-for-in\n\n for (const key in rest) {\n if (key === 'as' || index(key)) {\n // Don't pass through invalid attributes to HTML elements\n filteredProps[key] = rest[key];\n }\n }\n } else {\n filteredProps = rest;\n }\n filteredProps.ref = ref;\n filteredProps.className = cx(filteredProps.className || className, options.class);\n const {\n vars\n } = options;\n if (vars) {\n const style = {}; // eslint-disable-next-line guard-for-in\n\n for (const name in vars) {\n const variable = vars[name];\n const result = variable[0];\n const unit = variable[1] || '';\n const value = typeof result === 'function' ? result(props) : result;\n warnIfInvalid(value, options.name);\n style[`--${name}`] = `${value}${unit}`;\n }\n filteredProps.style = Object.assign(style, filteredProps.style);\n }\n if (tag.__linaria && tag !== component) {\n // If the underlying tag is a styled component, forward the `as` prop\n // Otherwise the styles from the underlying component will be ignored\n filteredProps.as = component;\n return /*#__PURE__*/React.createElement(tag, filteredProps);\n }\n return /*#__PURE__*/React.createElement(component, filteredProps);\n };\n const Result = React.forwardRef ? /*#__PURE__*/React.forwardRef(render) :\n // React.forwardRef won't available on older React versions and in Preact\n // Fallback to a innerRef prop in that case\n props => {\n const rest = restOp(props, ['innerRef']);\n return render(rest, props.innerRef);\n };\n Result.displayName = options.name; // These properties will be read by the babel plugin for interpolation\n\n Result.__linaria = {\n className: options.class,\n extends: tag\n };\n return Result;\n };\n}\nvar styled$1 = process.env.NODE_ENV !== 'production' ? new Proxy(styled, {\n get(o, prop) {\n return o(prop);\n }\n}) : styled;\n\n/**\n * Merge values from two arrays considering the array2 values when intersects with\n * array1 values.\n * eg: mergeArrays([1,2,8,9], [3,4]) => [3,4,8,9]\n *\n * @param array1 The first array\n * @param array2 The second array considered to ovewrite the first array values\n */\nconst mergeArrays = (array1, array2) => [...array2, ...array1.slice(array2.length)];\nconst calculateFlexBasis = (itemsInViewport, hasScroll, length, isMinLg) => {\n // simple, show 1 at a time\n if (itemsInViewport === 1) {\n return '100%';\n }\n\n // We don't need to scroll\n if (!hasScroll) {\n // do we only have 2 cards and are on desktop? use a 4-column basis\n if (length === 2 && isMinLg) {\n return `${4 / 12 * 100}%`;\n }\n // otherwise fill the container with equal width items\n return `${100 / length}%`;\n }\n\n // we have items off screen, so give them width based on how many\n // should be in the viewport at once\n return `${100 / itemsInViewport}%`;\n};\n\nfunction getFlexBasis(itemsInViewport, length) {\n const hasScroll = length > itemsInViewport;\n const peak = hasScroll ? cssTheme.gu2 : '0px';\n return `calc(${calculateFlexBasis(itemsInViewport, hasScroll, length, false)} - ${peak})`;\n}\nconst ListWrapper = /*#__PURE__*/styled$1(\"div\")({\n name: \"ListWrapper\",\n class: \"l3zfrg8\"\n});\nconst List = /*#__PURE__*/styled$1(\"ul\")({\n name: \"List\",\n class: \"l84e6t9\",\n vars: {\n \"l84e6t9-1\": [_ref => {\n let {\n viewportLimit,\n length\n } = _ref;\n const itemsInViewport = viewportLimit[2];\n const hasScroll = length > itemsInViewport;\n return hasScroll ? '' : 'center';\n }]\n }\n});\nconst Item = /*#__PURE__*/styled$1(\"li\")({\n name: \"Item\",\n class: \"ih0c4wv\",\n vars: {\n \"ih0c4wv-2\": [_ref2 => {\n let {\n viewportLimit,\n length\n } = _ref2;\n return getFlexBasis(viewportLimit[0], length);\n }],\n \"ih0c4wv-3\": [_ref3 => {\n let {\n customScrollSnap\n } = _ref3;\n return customScrollSnap;\n }],\n \"ih0c4wv-5\": [_ref4 => {\n let {\n viewportLimit,\n length\n } = _ref4;\n return getFlexBasis(viewportLimit[1], length);\n }],\n \"ih0c4wv-7\": [_ref5 => {\n let {\n viewportLimit,\n length\n } = _ref5;\n return getFlexBasis(viewportLimit[2], length);\n }],\n \"ih0c4wv-9\": [_ref6 => {\n let {\n viewportLimit,\n length\n } = _ref6;\n return getFlexBasis(viewportLimit[3], length);\n }],\n \"ih0c4wv-11\": [_ref7 => {\n let {\n viewportLimit,\n length\n } = _ref7;\n return getFlexBasis(viewportLimit[4], length);\n }]\n }\n});\n\n/**\n * This is the default limit of elements per viewport.\n * [1,2,3,3,4] => [xs, sm, md, lg, xl]\n */\nconst DEFAULT_VIEWPORT_LIMIT_LIST = [1, 2, 3, 3, 4];\n/**\n * A slider component to scroll elements horizontally with the ability\n * to set custom limit of elements per viewport.\n */\nconst PureSlider = /*#__PURE__*/React__default.forwardRef((_ref, ref) => {\n let {\n children,\n onScroll,\n visibleItems,\n customScrollSnap = 'center'\n } = _ref;\n /**\n * This is the limit of elements per viewport\n * [1,2,3,3,4] => [xs, sm, md, lg, xl]\n * The limits will be merged by custom input through visibleItems.\n */\n const viewportLimit = mergeArrays(DEFAULT_VIEWPORT_LIMIT_LIST, visibleItems);\n const childrenList = children != null ? children : [];\n return /*#__PURE__*/jsx(ListWrapper, {\n children: /*#__PURE__*/jsx(List, {\n ref: ref,\n onScroll: onScroll,\n viewportLimit: viewportLimit,\n length: childrenList.length,\n children: childrenList.map((child, i) => /*#__PURE__*/jsx(Item\n // 👇 should be improved\n // eslint-disable-next-line react/no-array-index-key\n , {\n viewportLimit: viewportLimit,\n length: childrenList.length,\n customScrollSnap: customScrollSnap,\n children: child\n }, i))\n })\n });\n});\nPureSlider.displayName = 'Slider';\nvar Slider = PureSlider;\n\nexport { Slider as default };\n"],"sourceRoot":""}