{"version":3,"file":"index-ngRqDT4n.js","sources":["../../../app/assets/images/search/no-results.svg","../../../app/javascript/src/explore/elements/NoFilteredResults/elements/ClearFiltersButton/index.tsx","../../../app/javascript/src/explore/elements/NoFilteredResults/elements/Message/index.tsx","../../../app/javascript/src/explore/elements/NoFilteredResults/index.tsx","../../../app/javascript/src/explore/elements/RankingFactorOverlay/index.tsx","../../../app/javascript/src/explore/compositions/FilteredProductSearch/index.tsx"],"sourcesContent":["export default \"__VITE_ASSET__iWQFAFXP__\"","import React from 'react';\n\nimport styles from './index.module.sass';\n\ninterface ClearFiltersButtonProps {\n  onClick: () => void;\n}\n\nexport const ClearFiltersButton = ({ onClick }: ClearFiltersButtonProps ) => (\n  <button\n    type=\"button\"\n    className={`d-none ${styles.button} btn btn-secondary mt-2 px-9`}\n    onClick={onClick}\n  >\n    Clear Filters\n  </button>\n);\n","import React from 'react';\n\nexport const Message = () => (\n  <>\n    <h2 className=\"mb-1 fs-5 fs-md-9\">\n      <em>\n        <span className=\"d-md-block mr-1\">Aww, Fudge.</span>\n        <span>No results!</span>\n      </em>\n    </h2>\n\n    <p>\n      Perhaps there&rsquo;s something else that can satisfy your craving? Just change your filters.\n    </p>\n  </>\n);\n","import React from 'react';\n\nimport noResults from 'images/search/no-results.svg';\n\nimport { ClearFiltersButton } from './elements/ClearFiltersButton';\nimport { Message } from './elements/Message';\n\nimport styles from './index.module.sass';\n\ninterface NoFilteredResultsProps {\n  onClick: () => void;\n}\n\nexport const NoFilteredResults = ({ onClick }: NoFilteredResultsProps ) => (\n  <div className=\"row\">\n    <div className=\"col-12 col-md-9 col-lg-7 col-xl-6 mt-4 mt-md-6 mb-6\">\n      <figure className=\"float-md-left mb-3 mr-md-4 ml-md-7 text-center\">\n        <img className={styles.image} src={noResults} alt=\"No Results\" />\n      </figure>\n\n      <div className=\"text-center text-md-left\">\n        <Message />\n\n        <ClearFiltersButton onClick={onClick} />\n      </div>\n    </div>\n  </div>\n);\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { startCase } from 'lodash-es';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faArrowDown, faArrowUp } from '@fortawesome/pro-regular-svg-icons';\n\nimport s from './index.module.sass';\n\ninterface IProps {\n  rankingFactor: { [key: string]: number | null };\n  displayRankingFactorOverlay: boolean;\n  onToggleRankingFactorOverlay: () => void;\n}\n\nconst RankingFactorOverlay: FC<IProps> = ({\n  rankingFactor,\n  displayRankingFactorOverlay,\n  onToggleRankingFactorOverlay,\n}) => {\n  const ref = useRef<HTMLDivElement>( null );\n  const { nps, rankDifference, ...rest } = rankingFactor;\n  const margin = rest?.margin;\n  const [ overlayHeight, setOverlayHeight ] = useState( 0 );\n\n  useEffect(() => {\n    const resizeOverlay = () => {\n      const rect = ref.current?.getBoundingClientRect();\n\n      setOverlayHeight((( rect?.width || 0 ) * 5 ) / 4 );\n    };\n\n    resizeOverlay();\n    window.addEventListener( 'resize', () => resizeOverlay());\n\n    return () => {\n      window.removeEventListener( 'resize', () => resizeOverlay());\n    };\n  }, []);\n\n  useEffect(() => {\n    if ( displayRankingFactorOverlay ) {\n      const rect = ref.current?.getBoundingClientRect();\n      setOverlayHeight((( rect?.width || 0 ) * 5 ) / 4 );\n    } else {\n      setOverlayHeight( 72 );\n    }\n  }, [ displayRankingFactorOverlay ]);\n\n  const RankingFactorBadge: FC<{ label: string; value: string }> = ({ label, value }) => (\n    <div\n      className={classNames(\n        'border-0 fs-3 bg-white px-2 d-flex align-items-center',\n        s.rankingFactorBadge\n      )}\n    >\n      {label}: {value}\n    </div>\n  );\n\n  return (\n    <div\n      ref={ref}\n      style={{ height: overlayHeight }}\n      className={classNames(\n        s.overlay,\n        'position-absolute p-2 w-100',\n        displayRankingFactorOverlay ? 'bg-dark' : 'bg-transparent'\n      )}\n    >\n      <div className=\"d-flex align-items-start justify-content-between w-100\">\n        <div className={classNames( s.positionChange, 'd-inline-flex py-1 px-2 mb-1' )}>\n          {rankDifference === 0 || !rankDifference ? (\n            <button\n              type=\"button\"\n              className={classNames( 'border-0 bg-white px-2 py-0', s.overlayTrigger )}\n              onClick={onToggleRankingFactorOverlay}\n            >\n              --\n            </button>\n          ) : (\n            <button\n              type=\"button\"\n              className={classNames(\n                'd-flex px-2 py-0 border-0 bg-white',\n                rankDifference > 0 ? 'text-success' : 'text-danger',\n                s.overlayTrigger\n              )}\n              onClick={onToggleRankingFactorOverlay}\n            >\n              <FontAwesomeIcon\n                icon={rankDifference > 0 ? faArrowUp : faArrowDown}\n                className=\"pr-2\"\n              />\n              {Math.abs( rankDifference )}\n            </button>\n          )}\n        </div>\n        <div className=\"d-flex flex-column align-items-end w-100 mb-2\">\n          {nps && <RankingFactorBadge label=\"NPS\" value={String( nps )} />}\n          {margin && <RankingFactorBadge label=\"Margin\" value={String( margin )} />}\n        </div>\n      </div>\n      {displayRankingFactorOverlay &&\n        ( Object.keys( rest ).length > 0 ? (\n          Object.entries( rest ).map(([ key, value ]) => (\n            <div\n              key={key}\n              className={classNames(\n                'd-flex justify-content-between align-items-center',\n                value === null ? 'text-muted' : 'text-white'\n              )}\n            >\n              <div>{startCase( key )}</div>\n\n              <pre\n                className={classNames( 'text-right font-weight-bold', {\n                  'text-danger': value < 0,\n                  'text-white': value > 0,\n                  'text-muted': value === null || value === 0,\n                })}\n              >\n                {/* FIXME: for some reason ranking factors are coming back as strings from BE */}\n                {value === null ? '--' : parseFloat( `${value}` ).toFixed( 2 )}\n              </pre>\n            </div>\n          ))\n        ) : (\n          <div className=\"text-white\">RankingFactor data not available</div>\n        ))}\n    </div>\n  );\n};\n\nexport default RankingFactorOverlay;\n","/*\n * TODO: this is a temporary composition until we do more refactoring on\n *       FilteredSearch.\n */\nimport React, { ReactNode, useState } from 'react';\nimport camelcaseKeys from 'camelcase-keys';\nimport { fromPairs, uniq } from 'lodash-es';\n\nimport { Deserializer } from 'src/explore/services/api';\nimport {\n  FilteredSearch,\n  IAPIFilters,\n  ISearchParams,\n} from 'src/explore/compositions/FilteredSearch';\nimport { NoFilteredResults } from 'src/explore/elements/NoFilteredResults';\nimport ProductGrid from 'src/explore/compositions/ProductGrid';\nimport ProductSkeletons from 'src/explore/elements/ProductSkeletons';\nimport RankingFactorOverlay from 'src/explore/elements/RankingFactorOverlay';\nimport { IProduct, IPromotion, ITrackingParams } from 'src/explore/types/shoppe';\nimport { ISearchFilter } from 'src/explore/compositions/FilteredSearch/compositions/SearchFilter/types'; // FIXME: import\nimport type { ISource } from 'src/explore/compositions/FilteredSearch/compositions/SearchFilter'; // FIXME: import\nimport withLazyLoadSkeleton from 'src/explore/hocs/withLazyLoadSkeleton';\n\nimport { SearchTracking } from 'src/explore/services/SearchTracking';\n\nconst LazyGrid = withLazyLoadSkeleton( ProductGrid, ProductSkeletons );\n\ninterface Props {\n  adjustQueryParams?: ( queryParams: ISearchParams ) => ISearchParams;\n  apiVersion?: 'v2' | 'v3';\n  availableFilters?: ISearchFilter[];\n  availableSorting?: Array<string | null>;\n  cacheable?: boolean;\n  children?: ReactNode;\n  clickRef?: string | null;\n  conditions?: IAPIFilters;\n  defaultSortOrder?: string;\n  experimentName?: string;\n  hideLove?: boolean;\n  hideMerchant?: boolean;\n  parseCollectionData?: ( collection: IProduct[], page: number ) => Array<IProduct | IPromotion>;\n  size?: 'small';\n  source?: ISource;\n  title?: string;\n  videoMaxPerPage?: number;\n  videoPositions?: Array<number>;\n  withTvCards?: boolean;\n  onRenderHeader?: ({ content, filters }: { content: IProduct[]; filters: IAPIFilters }) => void;\n}\n\nconst FilteredProductSearch = ({\n  adjustQueryParams,\n  apiVersion = 'v2',\n  availableFilters,\n  availableSorting,\n  cacheable,\n  children,\n  clickRef,\n  conditions,\n  defaultSortOrder,\n  experimentName,\n  hideLove,\n  hideMerchant,\n  parseCollectionData,\n  size,\n  source,\n  title,\n  onRenderHeader,\n}: Props ) => {\n  const [ displayRankingFactorOverlay, setDisplayRankingFactorOverlay ] = useState( false );\n  const [ countShown, setCountShown ] = useState<{\n    products: number;\n  }>({ products: 0 });\n\n  const handleSyncTrackingDataToPage = ( data: ITrackingParams, page: IProduct[]) =>\n    SearchTracking.syncProductAndVideoDataToPage( data, page );\n\n  const handleQueryParamsAdjustment = ( queryParams: ISearchParams ) => {\n    const adjustment = queryParams;\n    const currentCountShown = queryParams.page === 1 ? 0 : countShown.products;\n\n    adjustment.product_offset = currentCountShown;\n    adjustment.video_offset = 0;\n    adjustment.max_num_videos = 0;\n\n    if ( adjustQueryParams ) {\n      return adjustQueryParams( adjustment );\n    }\n\n    return adjustment;\n  };\n\n  const handleParseCollectionData: (\n    collection: IProduct[],\n    currentPage: number\n  ) => Array<IProduct | IPromotion> = ( collection, currentPage ) => {\n    if ( currentPage === 1 ) {\n      setCountShown({\n        products: collection.length,\n      });\n    } else {\n      setCountShown(( currentCount ) => ({\n        products: currentCount.products + collection.length,\n      }));\n    }\n\n    if ( parseCollectionData ) {\n      return parseCollectionData( collection, currentPage );\n    }\n\n    return collection;\n  };\n\n  return (\n    <FilteredSearch<IProduct>\n      adjustQueryParams={handleQueryParamsAdjustment}\n      apiPath=\"search\"\n      apiPathOverride={apiVersion === 'v3' ? '/api/v3/' : ''}\n      apiResponseParser={Deserializer.deserialize}\n      availableFilters={availableFilters}\n      availableSorting={availableSorting}\n      cacheable={cacheable}\n      conditions={conditions}\n      defaultSortOrder={defaultSortOrder}\n      experimentName={experimentName}\n      loadMore=\"Show More Products\"\n      pageSize={40} // 20, 14, 10 rows on small, large, XL size respectively\n      parseCollectionData={handleParseCollectionData}\n      source={source}\n      syncTrackingDataToPage={handleSyncTrackingDataToPage}\n      syncUrl\n      title={title}\n      onRenderContent={({ data, filterCount, loading, meta, onResetFilters }) => {\n        const rankingFactorTemplate = meta?.ranking_factors\n          ? camelcaseKeys(\n              fromPairs(\n                uniq(\n                  Object.values( meta.ranking_factors )\n                    .map(( x ) => Object.keys( x ))\n                    .flat( 2 )\n                    .sort(( a, b ) => a.localeCompare( b ))\n                ).map(( x ) => [ x, null ])\n              )\n            )\n          : {};\n\n        return (\n          <LazyGrid\n            across={4}\n            clickRef={clickRef}\n            hideLove={hideLove}\n            hideMerchant={hideMerchant}\n            pristine={loading}\n            products={data}\n            searchId={meta?.search_id}\n            size={size}\n            onBellowProductContentRender={( product: IProduct ) => {\n              if ( !meta.ranking_factors ) return null;\n              const rankingFactor = {\n                ...rankingFactorTemplate,\n                ...camelcaseKeys( meta.ranking_factors[product.id] || {}, { deep: true }),\n                nps: product.merchant.nps,\n              };\n\n              return (\n                <RankingFactorOverlay\n                  displayRankingFactorOverlay={displayRankingFactorOverlay}\n                  rankingFactor={rankingFactor}\n                  onToggleRankingFactorOverlay={() => setDisplayRankingFactorOverlay(( x ) => !x )}\n                />\n              );\n            }}\n          >\n            {filterCount > 0 ? <NoFilteredResults onClick={onResetFilters} /> : null}\n          </LazyGrid>\n        );\n      }}\n      onRenderHeader={onRenderHeader}\n    >\n      {children}\n    </FilteredSearch>\n  );\n};\n\nexport type { IAPIFilters, ISearchFilter };\nexport { FilteredProductSearch };\n"],"names":["noResults","ClearFiltersButton","onClick","React","styles","Message","NoFilteredResults","RankingFactorOverlay","rankingFactor","displayRankingFactorOverlay","onToggleRankingFactorOverlay","ref","useRef","nps","rankDifference","rest","margin","overlayHeight","setOverlayHeight","useState","useEffect","resizeOverlay","rect","_a","RankingFactorBadge","label","value","classNames","s","FontAwesomeIcon","faArrowUp","faArrowDown","key","startCase","LazyGrid","withLazyLoadSkeleton","ProductGrid","ProductSkeletons","FilteredProductSearch","adjustQueryParams","apiVersion","availableFilters","availableSorting","cacheable","children","clickRef","conditions","defaultSortOrder","experimentName","hideLove","hideMerchant","parseCollectionData","size","source","title","onRenderHeader","setDisplayRankingFactorOverlay","countShown","setCountShown","handleSyncTrackingDataToPage","data","page","SearchTracking","handleQueryParamsAdjustment","queryParams","adjustment","currentCountShown","handleParseCollectionData","collection","currentPage","currentCount","FilteredSearch","Deserializer","filterCount","loading","meta","onResetFilters","rankingFactorTemplate","camelcaseKeys","fromPairs","uniq","x","a","b","product"],"mappings":"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"}