{"version":3,"file":"index-B_FGhHpT.js","sources":["../../../app/javascript/src/explore/elements/ProductCard/elements/Card/index.tsx","../../../app/javascript/src/explore/elements/ProductCard/templates/Carousel/index.tsx","../../../app/javascript/src/explore/elements/ProductCard/templates/Default/index.tsx","../../../app/javascript/src/explore/compositions/ProductGrid/services/CardFactory/index.jsx"],"sourcesContent":["import React from 'react';\nimport { ProductCard } from '@goldbely/explore-component-library';\nimport camelCaseKeys from 'camelcase-keys';\nimport { useDispatch } from 'react-redux';\n\nimport * as cartActionCreators from 'src/explore/compositions/Cart/actions';\nimport * as cartCartItemsActionCreators from 'src/explore/data/cart/cart_items/actions';\nimport useFavorite from 'src/explore/hooks/useFavorite';\nimport { useShopConfig } from 'src/explore/hooks/useShopConfig';\nimport { IProduct } from 'src/explore/types/shoppe';\n\ninterface CardProps {\n  analytics?: Record<string, string>;\n  className?: {\n    badge?: string;\n    container?: string;\n    details?: string;\n    name?: string;\n  };\n  hideLove?: boolean;\n  hideMerchant?: boolean;\n  isWhitelabel?: boolean;\n  linkParameters?: {\n    [key: string]: string;\n  };\n  product: IProduct;\n  recommId?: string;\n  showLocation?: boolean;\n  showRating?: boolean;\n  size?: 'small';\n  target?: string;\n}\n\nexport const Card = ({\n  analytics,\n  className = {},\n  hideLove,\n  hideMerchant,\n  isWhitelabel,\n  linkParameters,\n  product,\n  recommId,\n  showLocation,\n  showRating,\n  size,\n  target,\n}: CardProps ) => {\n  const config = camelCaseKeys( useShopConfig(), { deep: true });\n  const dispatch = useDispatch();\n  const [ isFavorite, toggleFavorite ] = useFavorite( product.id, recommId );\n\n  const handleAddToCart = (\n    event: React.FormEvent | React.KeyboardEvent<any> | React.MouseEvent | null\n  ) => {\n    event.preventDefault();\n    event.stopPropagation();\n\n    dispatch(\n      cartCartItemsActionCreators.create({\n        ...linkParameters,\n        cart_item: {\n          product_id: product.id,\n          quantity: product.defaultQuantity,\n        },\n      })\n    );\n    dispatch( cartActionCreators.open());\n  };\n\n  return (\n    <ProductCard\n      analytics={analytics}\n      className={className}\n      hideLove={hideLove}\n      hideMerchant={hideMerchant}\n      isFavorite={isFavorite}\n      isWhitelabel={isWhitelabel}\n      linkParameters={linkParameters}\n      product={product as any} // TODO: cleanup IProduct\n      showLocation={showLocation}\n      showRating={showRating}\n      size={size}\n      soldOutLabel={config.ui?.soldOutLabel}\n      target={target}\n      onAddToCart={handleAddToCart}\n      onClickFavorite={isWhitelabel ? null : toggleFavorite}\n    />\n  );\n};\n","import React from 'react';\n\nimport { IProduct } from 'src/explore/types/shoppe';\n\nimport { Card } from '../../elements/Card';\n\nimport styles from './index.module.sass';\n\ninterface CarouselProps {\n  analytics?: Record<string, string>;\n  hideLove?: boolean;\n  hideMerchant?: boolean;\n  isWhitelabel?: boolean;\n  linkParameters?: {\n    [key: string]: string;\n  };\n  product: IProduct;\n  recommId?: string;\n}\n\nexport const Carousel = ({\n  analytics,\n  hideLove,\n  hideMerchant,\n  isWhitelabel,\n  linkParameters,\n  product,\n  recommId,\n}: CarouselProps ) => (\n  <li className={`${styles.product} flex-shrink-0 p-1 px-md-2 spec__product`}>\n    <Card\n      analytics={analytics}\n      hideLove={hideLove}\n      hideMerchant={hideMerchant}\n      isWhitelabel={isWhitelabel}\n      linkParameters={linkParameters}\n      product={product}\n      recommId={recommId}\n      size=\"small\"\n    />\n  </li>\n);\n","import React, { ReactNode } from 'react';\nimport cls from 'classnames';\n\nimport { IProduct } from 'src/explore/types/shoppe';\n\nimport { Card } from '../../elements/Card';\n\nimport styles from './index.module.sass';\n\ninterface DefaultProps {\n  across?: number;\n  hideLove?: boolean;\n  hideMerchant?: boolean;\n  isWhitelabel: boolean;\n  linkParameters?: {\n    [key: string]: string;\n  };\n  product: IProduct;\n  recommId?: string;\n  size?: 'small';\n  onBellowContentRender?: ( product: IProduct ) => ReactNode;\n  onClassName?: ( product: IProduct ) => string;\n}\n\nexport const Default = ({\n  across,\n  hideLove,\n  hideMerchant,\n  isWhitelabel,\n  linkParameters,\n  product,\n  recommId,\n  size,\n  onBellowContentRender,\n  onClassName,\n}: DefaultProps ) => (\n  <li\n    className={cls( 'flex-shrink-0 pt-1 px-1 pb-9 px-md-2 spec__product', styles.product, {\n      [styles[`product--${across}-across`]]: !!across,\n    })}\n  >\n    <div className=\"position-relative\">\n      <Card\n        className={{\n          container: onClassName && onClassName( product ),\n        }}\n        hideLove={hideLove}\n        hideMerchant={hideMerchant}\n        isWhitelabel={isWhitelabel}\n        linkParameters={linkParameters}\n        product={product}\n        recommId={recommId}\n        showLocation\n        showRating\n        size={size}\n      />\n\n      {onBellowContentRender && onBellowContentRender( product )}\n    </div>\n  </li>\n);\n","import { Carousel, Default } from 'src/explore/elements/ProductCard';\n\nexport class CardFactory {\n  create = ( type ) => {\n    switch ( type ) {\n      case 'carousel':\n        return Carousel;\n      default:\n        return Default;\n    }\n  };\n}\n"],"names":["Card","analytics","className","hideLove","hideMerchant","isWhitelabel","linkParameters","product","recommId","showLocation","showRating","size","target","config","camelCaseKeys","useShopConfig","dispatch","useDispatch","isFavorite","toggleFavorite","useFavorite","handleAddToCart","event","cartCartItemsActionCreators.create","cartActionCreators.open","React","ProductCard","_a","Carousel","styles","Default","across","onBellowContentRender","onClassName","cls","CardFactory","__publicField","type"],"mappings":"ijBAiCO,MAAMA,EAAO,CAAC,CACnB,UAAAC,EACA,UAAAC,EAAY,CAAC,EACb,SAAAC,EACA,aAAAC,EACA,aAAAC,EACA,eAAAC,EACA,QAAAC,EACA,SAAAC,EACA,aAAAC,EACA,WAAAC,EACA,KAAAC,EACA,OAAAC,CACF,IAAkB,OAChB,MAAMC,EAASC,EAAeC,IAAiB,CAAE,KAAM,GAAM,EACvDC,EAAWC,EAAY,EACvB,CAAEC,EAAYC,CAAe,EAAIC,EAAab,EAAQ,GAAIC,CAAS,EAEnEa,EACJC,GACG,CACHA,EAAM,eAAe,EACrBA,EAAM,gBAAgB,EAEtBN,EACEO,EAAmC,CACjC,GAAGjB,EACH,UAAW,CACT,WAAYC,EAAQ,GACpB,SAAUA,EAAQ,eAAA,CAErB,CAAA,CACH,EACUS,EAAAQ,GAAyB,CACrC,EAGE,OAAAC,EAAA,cAACC,EAAA,CACC,UAAAzB,EACA,UAAAC,EACA,SAAAC,EACA,aAAAC,EACA,WAAAc,EACA,aAAAb,EACA,eAAAC,EACA,QAAAC,EACA,aAAAE,EACA,WAAAC,EACA,KAAAC,EACA,cAAcgB,EAAAd,EAAO,KAAP,YAAAc,EAAW,aACzB,OAAAf,EACA,YAAaS,EACb,gBAAiBhB,EAAe,KAAOc,CAAA,CACzC,CAEJ,qCCpEaS,EAAW,CAAC,CACvB,UAAA3B,EACA,SAAAE,EACA,aAAAC,EACA,aAAAC,EACA,eAAAC,EACA,QAAAC,EACA,SAAAC,CACF,oBACG,KAAG,CAAA,UAAW,GAAGqB,EAAO,OAAO,0CAC9B,EAAAJ,EAAA,cAACzB,EAAA,CACC,UAAAC,EACA,SAAAE,EACA,aAAAC,EACA,aAAAC,EACA,eAAAC,EACA,QAAAC,EACA,SAAAC,EACA,KAAK,OAAA,CACP,CACF,sFChBWsB,EAAU,CAAC,CACtB,OAAAC,EACA,SAAA5B,EACA,aAAAC,EACA,aAAAC,EACA,eAAAC,EACA,QAAAC,EACA,SAAAC,EACA,KAAAG,EACA,sBAAAqB,EACA,YAAAC,CACF,IACER,EAAA,cAAC,KAAA,CACC,UAAWS,EAAK,qDAAsDL,EAAO,QAAS,CACpF,CAACA,EAAO,YAAYE,CAAM,SAAS,CAAC,EAAG,CAAC,CAACA,CAC1C,CAAA,CAAA,EAEDN,EAAA,cAAC,MAAI,CAAA,UAAU,mBACb,EAAAA,EAAA,cAACzB,EAAA,CACC,UAAW,CACT,UAAWiC,GAAeA,EAAa1B,CAAQ,CACjD,EACA,SAAAJ,EACA,aAAAC,EACA,aAAAC,EACA,eAAAC,EACA,QAAAC,EACA,SAAAC,EACA,aAAY,GACZ,WAAU,GACV,KAAAG,CAAA,CAAA,EAGDqB,GAAyBA,EAAuBzB,CAAQ,CAC3D,CACF,ECzDK,MAAM4B,CAAY,CAAlB,cACLC,EAAA,cAAWC,GAAU,CACnB,OAASA,EAAO,CACd,IAAK,WACI,OAAAT,EACT,QACS,OAAAE,CAAA,CAEb,GACF"}