{"version":3,"file":"index-CQDEER7j.js","sources":["../../../app/javascript/src/explore/scenes/TV/elements/Header/index.tsx","../../../app/javascript/src/explore/elements/AdminTools/elements/Links/index.tsx","../../../app/javascript/src/explore/elements/AdminTools/index.tsx","../../../app/javascript/src/explore/scenes/TV/elements/Admin/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Playlist/elements/Hero/index.tsx","../../../app/javascript/src/explore/scenes/TV/elements/VideoCard/elements/DetailsOverlay/elements/Badge/index.tsx","../../../app/javascript/src/explore/scenes/TV/elements/VideoCard/elements/DetailsOverlay/index.tsx","../../../app/javascript/src/explore/scenes/TV/elements/VideoCard/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Playlist/elements/Grid/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Playlist/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/NotifyMeModal/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Overlay/elements/Interim/elements/MuteButton/index.tsx","../../../app/javascript/src/explore/compositions/GetItBy/elements/NextDeliveryDates/elements/DatepickerNote/index.tsx","../../../app/javascript/src/explore/compositions/GetItBy/elements/NextDeliveryDates/index.jsx","../../../app/javascript/src/explore/compositions/GetItBy/index.jsx","../../../app/javascript/src/shoppe/elements/ProductDetail/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Product/elements/BuyNow/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Product/elements/Header/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Product/services/events/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Product/elements/ViewDetails/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Product/elements/SoldOut/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Product/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Overlay/elements/Interim/elements/SkipToNext/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Overlay/elements/Interim/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Overlay/elements/Outro/elements/UpNext/elements/Dial/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Overlay/elements/Outro/elements/UpNext/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Overlay/elements/Outro/elements/Replay/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Overlay/elements/Outro/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Title/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/elements/Overlay/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlayer/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlaylist/elements/ViewAll/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/elements/VideoPlaylist/index.tsx","../../../app/javascript/src/explore/scenes/TV/scenes/Show/index.tsx","../../../app/javascript/src/explore/scenes/TV/index.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useSelector } from 'react-redux';\nimport cls from 'classnames';\n\nimport { AuthButtons } from 'src/explore/elements/AuthButtons';\nimport { CartButton } from 'src/shoppe/elements/CartButton';\nimport { GlobalSearch } from 'src/explore/elements/GlobalSearch';\nimport { SvgUse } from 'src/shoppe/elements/SvgUse';\nimport { Routes } from 'src/explore/services/Routes';\nimport { NavMenu } from 'src/explore/elements/NavMenu';\nimport { NavToggle } from 'src/shoppe/elements/NavToggle';\nimport { IStore } from 'src/explore/types/store';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\nimport { useNavigationMenus } from 'src/explore/hooks/useNavigationMenus';\n\nimport styles from './index.module.sass';\n\nexport const Header = () => {\n  const { primaryMenu, secondaryMobileMenu } = useNavigationMenus();\n  const { isOutro } = useJWContext();\n\n  const [ search, setSearch ] = React.useState( '' );\n  const [ isMenuOpen, setIsMenuOpen ] = React.useState( false );\n  const [ isSearchExpanded, setIsSearchExpanded ] = React.useState( false );\n  const [ scrollPos, setScrollPos ] = React.useState( window.pageYOffset );\n\n  const account = useSelector(( state: IStore ) => state.data.account );\n\n  React.useEffect(() => {\n    const handleScroll = () => setScrollPos( window.pageYOffset );\n\n    window.addEventListener( 'scroll', handleScroll );\n\n    return () => window.removeEventListener( 'scroll', handleScroll );\n  }, []);\n\n  const handleNavigationClose = () => {\n    document.body.classList.remove( 'show-side-nav' );\n    setIsMenuOpen( false );\n  };\n\n  const handleNavToggle = () => {\n    document.body.classList.toggle( 'show-side-nav' );\n    setIsMenuOpen( !isMenuOpen );\n  };\n\n  return (\n    <>\n      <div\n        className={cls( styles.wrapper, 'position-sticky py-4 py-md-2 text-white w-100', {\n          [styles.bgBlack]: scrollPos > 10,\n        })}\n      >\n        <div className={cls( styles.container, 'd-flex align-items-center' )}>\n          <NavToggle\n            className={{ button: styles.menuButton, container: `${styles.menu} mr-2 mr-md-6` }}\n            isActive={isMenuOpen}\n            onClick={handleNavToggle}\n          />\n\n          <a href=\"/tv\" className=\"text-primary\" data-turbolinks={false}>\n            <SvgUse\n              ariaLabel=\"Goldbelly TV\"\n              className={cls( styles.goldbelly, 'd-block' )}\n              height={50}\n              name=\"goldbelly-tv\"\n              width={80}\n            />\n          </a>\n\n          <div\n            data-turbolinks={false}\n            className={cls(\n              styles.futura,\n              styles.fadeContainer,\n              { [styles.hide]: isOutro },\n              'font-weight-bold fs-3 fs-md-5 ml-auto mr-2 mr-md-5 mr-lg-7 px-2 px-md-9'\n            )}\n          >\n            <a href=\"/\" className={cls( styles.gold, 'text-decoration-none' )}>\n              Shop\n            </a>\n          </div>\n\n          <div\n            className={cls(\n              styles.searchContainer,\n              styles.fadeContainer,\n              { [styles.hide]: isOutro },\n              'align-self-stretch'\n            )}\n          >\n            <GlobalSearch\n              classNames={{\n                form: cls(\n                  styles.form,\n                  ( search || isSearchExpanded ) && styles.expanded,\n                  'position-absolute'\n                ),\n                input: cls( styles.input, 'border-0' ),\n                submit: styles.submit,\n              }}\n              onBlur={() => setIsSearchExpanded( false )}\n              onFocus={() => setIsSearchExpanded( true )}\n              onInputChange={( q ) => setSearch( q )}\n              placeholder=\"Search Foods\"\n            />\n\n            {isSearchExpanded && !search && (\n              <button\n                aria-hidden\n                aria-label=\"Close Search\"\n                className={`${styles.empty} position-absolute border-0 bg-transparent`}\n                type=\"button\"\n              />\n            )}\n          </div>\n\n          <div\n            className={cls(\n              styles.account,\n              styles.fadeContainer,\n              styles.futura,\n              { [styles.hide]: isOutro },\n              'd-none d-md-inline-block mx-md-7 mx-lg-9 text-center'\n            )}\n          >\n            {account.data ? (\n              <a\n                href={Routes.account.root()}\n                title=\"My Account\"\n                className={cls( styles.gold, 'font-weight-bold fs-4 text-decoration-none' )}\n              >\n                {`Hi ${account.data.first_name || 'Food Explorer'}`}\n              </a>\n            ) : (\n              !account.pristine && (\n                <AuthButtons\n                  className={cls( styles.fadeContainer, { [styles.hide]: isOutro }, 'text-white' )}\n                  buttonClassName={cls( styles.futura, 'fs-4 mx-1' )}\n                />\n              )\n            )}\n          </div>\n\n          <CartButton className={cls( styles.futura, 'font-weight bold fs-4 ml-2 ml-md-0-8' )} />\n        </div>\n      </div>\n\n      <NavMenu\n        includeDesktopStyle={false}\n        isOpen={isMenuOpen}\n        primary={primaryMenu}\n        secondary={secondaryMobileMenu}\n        onNavigation={handleNavigationClose}\n        onClose={handleNavigationClose}\n      />\n    </>\n  );\n};\n","import React from 'react';\n\nimport { IAdminToolsItem } from 'src/explore/types/shoppe';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n  links: IAdminToolsItem[];\n}\n\nexport const Links = ({ links }: Props ) => (\n  <>\n    {links.map(( group ) => (\n      <li className=\"pt-1\" key={group.name}>\n        <strong className=\"d-block py-1 pr-4 pl-3\">{group.name}</strong>\n        <ul>\n          {group.items.map(( item ) => (\n            <li key={item.name}>\n              <a\n                className={`${styles.link} d-block py-1 px-6 text-decoration-none`}\n                data-method={item.dataMethod}\n                href={item.link}\n                rel={item.rel}\n              >\n                {item.name}\n              </a>\n            </li>\n          ))}\n        </ul>\n      </li>\n    ))}\n  </>\n);\n","import React, { useRef, useState } from 'react';\nimport cls from 'classnames';\nimport { useSelector } from 'react-redux';\n\nimport { IAdminToolsItem } from 'src/explore/types/shoppe';\nimport { IStore } from 'src/explore/types/store';\n\nimport { useClickOutside } from 'src/explore/hooks/useClickOutside';\nimport { useRoutes } from 'src/explore/hooks/useRoutes';\n\nimport { Links } from './elements/Links';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n  buttonText?: string;\n  items?: IAdminToolsItem[];\n}\n\nexport const AdminTools = ({ buttonText, items }: Props ) => {\n  const admin = useSelector(( state: IStore ) => state.data.admin );\n\n  const [ open, setOpen ] = useState<boolean>( false );\n\n  const menuRef = useRef<HTMLDivElement>( null );\n\n  const routes = useRoutes();\n\n  useClickOutside( menuRef.current, () => {\n    setOpen( false );\n  });\n\n  if ( !admin.data ) {\n    return null;\n  }\n\n  return (\n    <div\n      className={`${styles.menu} position-absolute d-print-none fs-4 spec__admin-tools`}\n      ref={menuRef}\n    >\n      <button\n        className={`${styles.button} p-2 rounded shadow spec__admin-tools-trigger`}\n        type=\"button\"\n        onClick={() => setOpen(( isOpen ) => !isOpen )}\n      >\n        Open Tools\n        {buttonText && ` - ${buttonText}`}\n      </button>\n      <ul\n        className={cls( styles.links, 'pb-3 rounded shadow mt-1 bg-white', {\n          [styles.open]: open,\n        })}\n      >\n        {items && <Links links={items} />}\n\n        <Links\n          links={[\n            {\n              name: admin.data.name || 'Admin User',\n              items: [\n                {\n                  dataMethod: 'delete',\n                  name: 'Log Out',\n                  link: routes.admin.logOut(),\n                  rel: 'nofollow',\n                },\n              ],\n            },\n          ]}\n        />\n      </ul>\n    </div>\n  );\n};\n","import React from 'react';\n\nimport { IAdminToolsItem, ITVVideo, ITVVideoPlaylist } from 'src/explore/types/shoppe';\n\nimport { AdminTools as Menu } from 'src/explore/elements/AdminTools';\nimport { useRoutes } from 'src/explore/hooks/useRoutes';\n\ninterface Props {\n  video?: ITVVideo;\n  playlist?: ITVVideoPlaylist;\n}\n\nexport const Admin: React.FC<Props> = ({ video, playlist }) => {\n  const routes = useRoutes();\n\n  const items: IAdminToolsItem[] = [\n    {\n      name: 'Videos',\n      items: [{ name: 'Home', link: routes.admin.videos() }],\n    },\n  ];\n\n  if ( video ) {\n    items.push({\n      name: `${video?.title} (video)`,\n      items: [{ name: 'Video Page', link: routes.admin.videoEdit( video?.id ) }],\n    });\n  }\n\n  if ( playlist ) {\n    items.push({\n      name: `${playlist?.title} (playlist)`,\n      items: [\n        { name: 'Playlist Content', link: routes.admin.playlist( playlist?.id ) },\n        { name: 'Playlist Description', link: routes.admin.playlistEdit( playlist?.id ) },\n      ],\n    });\n  }\n\n  return <Menu items={items} />;\n};\n","import React from 'react';\nimport cls from 'classnames';\nimport { LazyImgix } from 'src/explore/elements/LazyImgix';\n\nimport styles from './index.module.sass';\n\ninterface HeroProps {\n  description: string;\n  heroImageUrl: string;\n  title: string;\n}\n\nexport const Hero = ({ description, heroImageUrl, title }: HeroProps ) => (\n  <header\n    className={cls( styles.height, 'position-relative bg-dark text-white spec__playlist-header' )}\n  >\n    <div className={cls( styles.media, 'h-100 position-absolute overflow-hidden' )}>\n      <LazyImgix\n        alt={title}\n        className={cls( styles.image, 'position-absolute' )}\n        imgixParams={{ ar: '1:0.28333' }}\n        sizes=\"100vw\"\n        src={heroImageUrl}\n      />\n    </div>\n\n    <div\n      className={`${styles.container} ${styles.height} d-flex flex-column justify-content-center`}\n    >\n      <div className=\"row\">\n        <div className=\"col-12 col-md-8 col-lg-5\">\n          <h1\n            className={`${styles.headline} mb-1 text-white fs-8 fs-md-10 fs-lg-12 text-uppercase`}\n          >\n            {title}\n          </h1>\n        </div>\n      </div>\n      <div className=\"row mt-1 mt-lg-2\">\n        <div className=\"col-12 col-md-8 col-lg-5 fs-4 fs-lg-5\">{description}</div>\n      </div>\n    </div>\n  </header>\n);\n","import * as React from 'react';\nimport cls from 'classnames';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n  className: string;\n  position: 'top-left' | 'bottom-right';\n}\n\nexport const Badge: React.FC<Props> = ({ className, children, position }) => (\n  <div\n    className={cls(\n      className,\n      styles.badge,\n      {\n        [styles.topLeft]: position === 'top-left',\n        [styles.bottomRight]: position === 'bottom-right',\n      },\n      'position-absolute'\n    )}\n  >\n    {children}\n  </div>\n);\n","import * as React from 'react';\n\nimport { Badge } from './elements/Badge';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n  duration?: string;\n  isNext?: boolean;\n  isPlaying?: boolean;\n}\n\nexport const DetailsOverlay = ({ isNext, isPlaying, duration }: Props ) => (\n  <>\n    {isPlaying && (\n      <Badge\n        className={`${styles.status} py-2 px-3 font-weight-bold fs-3 text-uppercase`}\n        position=\"top-left\"\n      >\n        Now Playing\n      </Badge>\n    )}\n\n    {isNext && (\n      <Badge\n        className={`${styles.status} py-2 px-3 font-weight-bold fs-3 text-uppercase`}\n        position=\"top-left\"\n      >\n        Up Next\n      </Badge>\n    )}\n\n    {duration && duration !== '0' && (\n      <Badge className=\"s-5 py-2 px-4\" position=\"bottom-right\">\n        {duration}\n      </Badge>\n    )}\n  </>\n);\n","import React from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { IEventSource } from 'src/shoppe/services/JWPlayer';\nimport { LazyImgix } from 'src/explore/elements/LazyImgix';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\n\nimport { DetailsOverlay } from './elements/DetailsOverlay';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n  duration: string;\n  linkTo: string;\n  isFocused?: boolean;\n  isNext?: boolean;\n  isPlaying?: boolean;\n  landscapeMediaId: string;\n  title: string;\n}\n\nexport const VideoCard = ({\n  duration,\n  landscapeMediaId,\n  linkTo,\n  isNext,\n  isPlaying,\n  title,\n}: Props ) => {\n  const { updateContext } = useJWContext();\n\n  return (\n    <Link\n      className={`${styles.link} text-decoration-none`}\n      to={linkTo}\n      title={title}\n      onClick={() => {\n        updateContext({ source: IEventSource.VIDEO_CARD });\n      }}\n    >\n      <div className=\"mb-3 mb-md-4 position-relative\">\n        <DetailsOverlay isPlaying={isPlaying} isNext={isNext} duration={duration} />\n\n        <LazyImgix\n          alt={title}\n          className=\"w-100 h-100 d-block\"\n          imgixParams={{ ar: '16:9' }}\n          sizes=\"(min-width: 992px) 30vw, (min-width: 768px) 30vw, 45vw\"\n          src={`https://cdn.jwplayer.com/thumbs/${landscapeMediaId}-640.jpg`}\n        />\n      </div>\n\n      <h4 className={`${styles.headline} fs-4 fs-lg-5 text-uppercase`}>{title}</h4>\n    </Link>\n  );\n};\n","import React from 'react';\n\nimport { ITVVideo, ITVVideoPlaylist } from 'src/explore/types/shoppe';\n\nimport { useRoutes } from 'src/explore/hooks/useRoutes';\nimport { VideoCard } from '../../../../elements/VideoCard';\n\ninterface GridProps {\n  playlist: ITVVideoPlaylist;\n}\n\nexport const Grid = ({ playlist: { slug, videos }}: GridProps ) => {\n  const routes = useRoutes();\n\n  return (\n    <ul className=\"row mt-n8 mt-md-0 mx-n1 spec__playlist-grid\">\n      {videos.map(( video: ITVVideo ) => (\n        <li className=\"col-6 col-md-4 px-1 mt-9 spec__grid-item\" key={video.title}>\n          <VideoCard\n            duration={video.duration}\n            landscapeMediaId={video.landscapeMediaId}\n            title={video.title}\n            linkTo={routes.tv.root({\n              playlist: slug,\n              video: video.slug,\n            })}\n          />\n        </li>\n      ))}\n    </ul>\n  );\n};\n","/* eslint-disable no-nested-ternary */\nimport React from 'react';\nimport { useParams } from 'react-router-dom';\nimport { Helmet } from 'react-helmet';\n\nimport { ErrorBox } from 'src/explore/elements/bs4/ErrorBox';\nimport { ITVVideoPlaylist } from 'src/explore/types/shoppe';\nimport { Spinner } from 'src/shoppe/elements/Spinner';\nimport { useApiObject } from 'src/explore/hooks/useApiObject';\n\nimport { Admin } from '../../elements/Admin';\nimport { Hero } from './elements/Hero';\nimport { Grid } from './elements/Grid';\n\nimport styles from './index.module.sass';\n\nexport const Playlist = () => {\n  const { playlistSlug } = useParams();\n  const { data, loading, error, pristine } = useApiObject<ITVVideoPlaylist>(\n    `/tv/playlists/${playlistSlug}`,\n    { camelCaseKeys: true }\n  );\n\n  return loading || pristine ? (\n    <div className=\"d-flex align-items-center justify-content-center min-vh-100\">\n      <Spinner className=\"spinner-border\" />\n    </div>\n  ) : error ? (\n    <div className=\"d-flex align-items-center justify-content-center min-vh-100\">\n      <ErrorBox errors={error.errors} />\n    </div>\n  ) : (\n    <>\n      <Helmet>\n        <title>{data.metaTitle}</title>\n      </Helmet>\n\n      <div className={`${styles.container} pb-9 mb-8 mb-md-9`}>\n        <Hero description={data.description} heroImageUrl={data.heroImageUrl} title={data.title} />\n\n        <div className={styles.grid}>\n          <Grid playlist={data} />\n        </div>\n      </div>\n      <Admin playlist={data} />\n    </>\n  );\n};\n","import * as React from 'react';\n\nimport { NotificationForm } from 'src/shoppe/elements/NotificationForm';\n\ninterface Props {\n  className: string;\n  isOpen: boolean;\n  productId?: number;\n  onClose: () => void;\n}\n\nexport const NotifyMeModal = ({ className, isOpen, productId, onClose }: Props ) => {\n  const [ id, setId ] = React.useState( productId );\n\n  // only update the product for this modal when it's closed so we don't accidentally\n  // change products on slow users during the outro\n  React.useEffect(() => {\n    if ( !isOpen && productId !== id ) {\n      setId( productId );\n    }\n  }, [ isOpen, productId ]);\n\n  return (\n    <NotificationForm\n      open={isOpen}\n      overlayClass={className}\n      productID={productId}\n      onClose={() => onClose()}\n    />\n  );\n};\n","import * as React from 'react';\nimport cls from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faVolume, faVolumeMute } from '@fortawesome/pro-regular-svg-icons';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\n\nimport styles from './index.module.sass';\n\nexport const MuteButton = () => {\n  const { getPlayer } = useJWContext();\n\n  const initialMute = getPlayer()?.getMute();\n  const [ muted, setMute ] = React.useState( initialMute );\n  const [ pulsate, setPulsate ] = React.useState( initialMute );\n\n  React.useEffect(() => {\n    const updateMute = ( e: { mute: boolean }) => {\n      if ( !e.mute ) {\n        setPulsate( false );\n      }\n      setMute( e.mute );\n    };\n\n    getPlayer()?.on( 'mute', updateMute );\n\n    return () => getPlayer()?.off( 'mute', updateMute );\n  }, []);\n\n  // after 15 seconds never pulsate\n  React.useEffect(() => {\n    const timeout = setTimeout(() => setPulsate( false ), 8000 );\n    return () => clearTimeout( timeout );\n  }, []);\n\n  const handleClick = () => getPlayer()?.setMute( !muted );\n\n  return (\n    <button\n      className={cls(\n        styles.button,\n        { [styles.pulsate]: pulsate },\n        'btn btn-block position-absolute d-flex justify-content-center align-items-center w-auto p-2 p-md-3 fs-3 fs-md-4'\n      )}\n      type=\"button\"\n      onClick={handleClick}\n    >\n      <FontAwesomeIcon className=\"fs-7 mr-2\" icon={muted ? faVolumeMute : faVolume} />\n      {muted ? 'Unmute' : 'Mute'}\n    </button>\n  );\n};\n","import * as React from 'react';\n\nimport styles from './index.module.sass';\n\nexport const DatepickerNote = () => (\n  <div className=\"bs4\">\n    <div className=\"pt-5 px-4 pb-4 border-bottom text-center\">\n      <h3 className=\"fs-6 text-uppercase\">Next Possible Delivery Dates*</h3>\n      <p className={`${styles.text} mb-0 fs-4`}>\n        This calendar is for reference only. Please select delivery date at check out.\n      </p>\n      <span className={`${styles.muted} fs-3`}>\n        *-Adding more products to your cart can sometimes change your delivery date options at\n        checkout\n      </span>\n    </div>\n  </div>\n);\n","import React, { useState } from 'react';\nimport { DayPickerRangeController } from 'react-dates';\nimport { faCalendarAlt, faCheckCircle } from '@fortawesome/pro-regular-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport moment from 'moment';\nimport 'react-dates/initialize';\nimport 'react-dates/lib/css/_datepicker.css';\n\nimport Breakpoints from 'src/explore/services/breakpoints';\nimport { Modal } from 'src/shoppe/elements/Modal';\n\nimport { DatepickerNote } from './elements/DatepickerNote';\n\nimport styles from './index.module.sass';\n\nexport const NextDeliveryDates = ({ dates, maxDays }) => {\n  const [ open, setOpen ] = useState( false );\n\n  return (\n    <>\n      <button\n        type=\"button\"\n        className=\"btn btn-outline-secondary px-7 spec__view_calendar\"\n        onClick={( e ) => {\n          e.preventDefault();\n          setOpen( true );\n        }}\n      >\n        <FontAwesomeIcon icon={faCalendarAlt} className=\"mr-2\" />\n        View More Dates\n      </button>\n\n      <Modal\n        containerClass=\"p-0 border-0\"\n        open={open}\n        onClick={() => {\n          setOpen( false );\n        }}\n        closeBtn\n      >\n        <DayPickerRangeController\n          calendarInfoPosition=\"top\"\n          hideKeyboardShortcutsPanel\n          isOutsideRange={( day ) => {\n            if ({}.hasOwnProperty.call( dates, day.format( 'YYYY-MM-DD' ))) {\n              return false;\n            }\n            return true;\n          }}\n          minDate={moment()}\n          maxDate={moment().add( maxDays, 'days' )}\n          numberOfMonths={Breakpoints.appliesTo( 'md' ) ? 3 : 1}\n          renderCalendarInfo={DatepickerNote}\n          renderDayContents={( day ) => (\n            <div className={`${styles.day} py-1`}>\n              <div className=\"font-weight-bold fs-3\">{day.format( 'D' )}</div>\n              {{}.hasOwnProperty.call( dates, day.format( 'YYYY-MM-DD' )) && (\n                <>\n                  {!dates[day.format( 'YYYY-MM-DD' )] ? (\n                    <strong className={`${styles.sold} d-block pt-1`}>\n                      Sold\n                      <br />\n                      Out\n                    </strong>\n                  ) : (\n                    <FontAwesomeIcon icon={faCheckCircle} className=\"mt-1 text-secondary fs-5\" />\n                  )}\n                </>\n              )}\n            </div>\n          )}\n        />\n      </Modal>\n    </>\n  );\n};\n","import React from 'react';\nimport cls from 'classnames';\n\nimport { useApiObject } from 'src/explore/hooks/useApiObject';\n\nimport { NextDeliveryDates } from './elements/NextDeliveryDates';\n\nconst DeliveryDate = ({ className = {}, estimated_delivery_on, month }) => {\n  const today = new Date();\n  const weekday = new Intl.DateTimeFormat([], { weekday: 'long' });\n\n  // https://stackoverflow.com/a/31732581\n  const deliveryDate = new Date( estimated_delivery_on.replace( /-/g, '/' ));\n  const dayDelivery = deliveryDate.getTime() / 86400000;\n  const dayCurrent = today.getTime() / 86400000;\n\n  return (\n    <strong className={cls( 'ff-futura-bold', className.date || 'text-secondary fs-6' )}>\n      {dayDelivery - dayCurrent > 4\n        ? `Get it ${month.format( deliveryDate )} ${deliveryDate.getDate()}`\n        : `Get it ${\n            dayDelivery - dayCurrent <= 1 ? 'tomorrow' : `this ${weekday.format( deliveryDate )}`\n          }`}\n    </strong>\n  );\n};\n\nconst Expedited = ({\n  acceptsRequests,\n  className = {},\n  maxDays,\n  month,\n  deliveryDates,\n  nextShippingOption,\n  withMoreDates,\n}) => {\n  const { deadline_at, estimated_delivery_on } = nextShippingOption;\n  const today = Date.now();\n  const deadlineDate = new Date( deadline_at ).getTime();\n  const secondsUntilDeadline = ( deadlineDate - today ) / 1000;\n\n  let deadline = false;\n  if ( secondsUntilDeadline > 0 && secondsUntilDeadline < 86400 ) {\n    if ( secondsUntilDeadline < 120 ) {\n      deadline = `${secondsUntilDeadline} seconds`;\n    } else if ( secondsUntilDeadline < 3600 ) {\n      deadline = `${Math.round( secondsUntilDeadline / 60 )} minutes`;\n    } else if ( secondsUntilDeadline < 7200 ) {\n      deadline = 'hour';\n    } else {\n      deadline = `${Math.round( secondsUntilDeadline / 3600 )} hours`;\n    }\n  }\n\n  const anyDeliveryDates = Object.keys( deliveryDates ).length > 1;\n\n  return (\n    <>\n      {acceptsRequests && withMoreDates ? (\n        <div\n          className={cls({\n            'border rounded p-4': anyDeliveryDates,\n          })}\n        >\n          <DeliveryDate\n            className={className}\n            estimated_delivery_on={estimated_delivery_on}\n            month={month}\n          />\n\n          {!!deadline && (\n            <span className=\"deadline spec__deadline\">{` if you order in the next ${deadline}${\n              !anyDeliveryDates ? '.' : ''\n            }`}</span>\n          )}\n\n          {!!anyDeliveryDates && (\n            <>\n              {' or check out other possible delivery dates here.'}\n\n              <div className=\"mt-4\">\n                <NextDeliveryDates dates={deliveryDates} maxDays={maxDays} />\n              </div>\n            </>\n          )}\n        </div>\n      ) : (\n        <DeliveryDate\n          className={className}\n          estimated_delivery_on={estimated_delivery_on}\n          month={month}\n        />\n      )}\n\n      {acceptsRequests && !withMoreDates && <p>Choose Delivery Date at Checkout</p>}\n    </>\n  );\n};\n\nconst Shipping = ({\n  acceptsRequests,\n  className = {},\n  maxDays,\n  nextShippingOption,\n  productId,\n  withMoreDates,\n}) => {\n  const { is_ground, to_ship_on } = nextShippingOption;\n  const shipDate = new Date( to_ship_on.replace( /-/g, '/' ));\n  const month = new Intl.DateTimeFormat([], { month: 'short' });\n\n  const deliveryDates = useApiObject( `/products/${productId}/next_delivery_dates` );\n\n  return (\n    <>\n      {is_ground ? (\n        <span>\n          {`Will ship on ${month.format(\n            shipDate\n          )} ${shipDate.getDate()} and arrive within 3-5 business days.`}\n        </span>\n      ) : (\n        <Expedited\n          acceptsRequests={acceptsRequests}\n          className={className}\n          maxDays={maxDays}\n          month={month}\n          deliveryDates={deliveryDates.data ? deliveryDates.data.dates : {}}\n          nextShippingOption={nextShippingOption}\n          withMoreDates={withMoreDates}\n        />\n      )}\n    </>\n  );\n};\n\nexport const GetItBy = ({\n  acceptsRequests,\n  className = {},\n  isAvailable,\n  maxDays,\n  productId,\n  withMoreDates = false,\n}) => {\n  const nextShippingOption = useApiObject( `products/${productId}/next_shipping_option` );\n\n  if ( !isAvailable || !nextShippingOption.data ) {\n    return null;\n  }\n\n  return (\n    <div className={cls( 'spec__delivery-options', className.container )}>\n      <Shipping\n        acceptsRequests={acceptsRequests}\n        className={className}\n        maxDays={maxDays}\n        nextShippingOption={nextShippingOption.data}\n        productId={productId}\n        withMoreDates={withMoreDates}\n      />\n    </div>\n  );\n};\n","import React from 'react';\nimport cls from 'classnames';\n\nimport styles from './index.module.sass';\n\ninterface ProductDetailProps {\n  children?: React.ReactNode;\n  className?: string;\n}\n\nexport const ProductDetail = ({ children, className }: ProductDetailProps ) => (\n  <div className={cls( styles.detail, className )}>{children}</div>\n);\n","import React from 'react';\nimport cls from 'classnames';\n\nimport styles from './index.module.sass';\n\ninterface BuyNowProps {\n  className?: string;\n  isSoldOut: boolean;\n  onClick: ( event: React.MouseEvent<HTMLButtonElement, MouseEvent> ) => void;\n}\n\nexport const BuyNow = ({ className, isSoldOut, onClick }: BuyNowProps ) => (\n  <button\n    className={cls( className, { [styles.soldout]: isSoldOut }, 'btn btn-block btn-secondary fs-4' )}\n    type=\"button\"\n    onClick={onClick}\n  >\n    {isSoldOut ? 'Notify Me' : 'Buy Now'}\n  </button>\n);\n","import React from 'react';\nimport cls from 'classnames';\n\nimport { DollarsAndCents } from 'src/explore/elements/DollarsAndCents';\nimport { LazyImgix } from 'src/explore/elements/LazyImgix';\nimport { IProduct } from 'src/explore/types/shoppe';\n\nimport styles from './index.module.sass';\n\ninterface HeaderProps {\n  className?: {\n    image?: string;\n    location?: string;\n    product?: string;\n    merchant?: string;\n    text?: string;\n  };\n  product: Pick<\n    IProduct,\n    'effectiveMainImageUrl' | 'effectiveName' | 'effectivePriceInCents' | 'merchant'\n  >;\n}\n\nexport const Header = ({ className = {}, product }: HeaderProps ) => {\n  const { effectiveMainImageUrl, effectiveName, effectivePriceInCents, merchant } = product;\n\n  return (\n    <>\n      <LazyImgix\n        alt={effectiveName}\n        className={className.image}\n        imgixParams={{ ar: '1:1' }}\n        sizes=\"80px\"\n        src={effectiveMainImageUrl}\n        height={80}\n        width={80}\n      />\n\n      <div className={className.text}>\n        <h1 className={cls( className.product, styles.name, 'text-white text-uppercase' )}>\n          {effectiveName}\n        </h1>\n        <div className={cls( 'mt-1', className.merchant )}>{`by ${merchant.name}`}</div>\n        <div className={cls( 'd-md-none mt-1 fs-4', className.location )}>{merchant.location}</div>\n        <div className=\"mt-1 fs-4\">\n          <DollarsAndCents\n            amountInCents={effectivePriceInCents}\n            className={{ cents: `${styles.super} position-relative fs-3` }}\n          />\n        </div>\n      </div>\n    </>\n  );\n};\n","import EventTracker, { IEvent } from 'src/shoppe/services/EventTracker';\nimport { IEventData } from 'src/shoppe/services/JWPlayer';\n\nexport enum IEventSource {\n  BUY_NOW = 'buy-now',\n  READ_MORE = 'read-more',\n  READ_LESS = 'read-less',\n  VIEW_PRODUCT = 'view-product',\n}\n\nconst click = ( source: IEventSource, element: any, data: Partial<IEventData> = {}) => {\n  EventTracker.createTracker( IEvent.CLICK )({\n    class: element?.className,\n    ref: 'gbtv',\n    source,\n    tag: element?.type,\n    text: element?.textContent,\n    ...data,\n  });\n};\n\nexport const track = {\n  click,\n};\n","import React from 'react';\nimport cls from 'classnames';\n\nimport { IProduct } from 'src/explore/types/shoppe';\nimport { useRoutes } from 'src/explore/hooks/useRoutes';\n\nimport styles from './index.module.sass';\n\ninterface ViewDetailsProps {\n  className: string;\n  product: Pick<IProduct, 'merchant' | 'permalink'>;\n  onClick: ( event: React.MouseEvent<HTMLAnchorElement, MouseEvent> ) => void;\n}\n\nexport const ViewDetails = ({ className, product, onClick }: ViewDetailsProps ) => {\n  const routes = useRoutes();\n\n  return (\n    <a\n      className={cls(\n        styles.button,\n        'btn btn-block justify-content-center align-items-center fs-4',\n        className\n      )}\n      href={routes.product( product.merchant.permalink, product.permalink, { ref: 'gbtv' })}\n      rel=\"noreferrer\"\n      target=\"_blank\"\n      onClick={onClick}\n    >\n      View Product\n    </a>\n  );\n};\n","import * as React from 'react';\n\nexport const SoldOut = ({\n  className,\n  soldOutReason,\n}: {\n  className: string;\n  soldOutReason?: string;\n}) => (\n  <div className={className}>\n    <div className=\"ff-futura-bold fs-5 mb-1\">\n      {soldOutReason && soldOutReason !== 'Sold Out' ? soldOutReason : 'Currently Sold Out'}\n    </div>\n    <div className=\"fs-4\">Sign up to get notified when it becomes available again</div>\n  </div>\n);\n","import React, { useEffect, useRef, useState } from 'react';\nimport cls from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faChevronUp } from '@fortawesome/pro-solid-svg-icons';\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 { Expand } from 'src/explore/elements/Expand';\nimport { GetItBy } from 'src/explore/compositions/GetItBy';\nimport { IEventData } from 'src/shoppe/services/JWPlayer';\nimport { ProductDetail } from 'src/shoppe/elements/ProductDetail';\nimport { IProduct } from 'src/explore/types/shoppe';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\n\nimport { BuyNow } from './elements/BuyNow';\nimport { Header } from './elements/Header';\nimport { track, IEventSource } from './services/events';\nimport { ViewDetails } from './elements/ViewDetails';\nimport { SoldOut } from './elements/SoldOut';\n\nimport styles from './index.module.sass';\n\ninterface ProductProps {\n  className?: string;\n  collapsed: boolean;\n  data: Pick<\n    IProduct,\n    | 'id'\n    | 'acceptsRequestedDeliveryDate'\n    | 'canAddToCart'\n    | 'defaultQuantity'\n    | 'effectiveMainImageUrl'\n    | 'effectiveName'\n    | 'effectivePriceInCents'\n    | 'hasMultipleSpeeds'\n    | 'merchant'\n    | 'moreDetailsHtml'\n    | 'numberOfShippingDays'\n    | 'permalink'\n    | 'soldOutReason'\n  >;\n  eventData?: IEventData;\n  setCollapsed: ( collapsed: boolean ) => void;\n  videoId: number;\n  onNotify: () => void;\n}\n\nexport const Product = ({\n  className,\n  collapsed,\n  data,\n  eventData,\n  setCollapsed,\n  videoId,\n  onNotify,\n}: ProductProps ) => {\n  const { isOutro } = useJWContext();\n\n  const expandableHeaderRef = useRef( null );\n  const cardRef = useRef( null );\n  const primaryHeaderRef = useRef( null );\n  const productRef = useRef( null );\n\n  const [ animating, setAnimating ] = useState<boolean>( false );\n  const [ collapsedDetailsHeight, setCollapsedDetailsHeight ] = useState<number>( 0 );\n  const [ detailsMaxHeight, setDetailsMaxHeight ] = useState<number>( null );\n\n  const dispatch = useDispatch();\n\n  const handleClickReveal = ( event: React.MouseEvent<HTMLButtonElement, MouseEvent> ) => {\n    if ( !collapsed ) {\n      if ( animating ) return;\n      track.click( IEventSource.READ_LESS, event.target, eventData );\n      setAnimating( true );\n      setCollapsed( true );\n\n      setTimeout(() => {\n        setAnimating( false );\n      }, 200 );\n    } else {\n      track.click( IEventSource.READ_MORE, event.target, eventData );\n      setCollapsed( false );\n    }\n  };\n\n  const handleAddToCart = ( event: React.MouseEvent<HTMLButtonElement, MouseEvent> ) => {\n    event.preventDefault();\n    event.stopPropagation();\n\n    track.click( IEventSource.BUY_NOW, event.target, eventData );\n\n    dispatch(\n      cartCartItemsActionCreators.create({\n        cart_item: {\n          product_id: data.id,\n          quantity: data.defaultQuantity,\n        },\n        ref: 'gbtv',\n        source: isOutro ? 'outro' : 'product-card',\n        video_id: videoId,\n      })\n    );\n    dispatch( cartActionCreators.open());\n  };\n\n  useEffect(() => {\n    const calcDetailsHeights = () => {\n      if ( window.innerWidth < 568 || window.innerWidth >= 1200 ) {\n        setCollapsedDetailsHeight( 0 );\n      } else {\n        setCollapsedDetailsHeight( expandableHeaderRef.current?.offsetHeight || 80 );\n      }\n\n      if (\n        window.innerWidth >= 1200 &&\n        productRef.current &&\n        cardRef.current &&\n        primaryHeaderRef.current\n      ) {\n        const maxProximityToTop = 85;\n        const videoHeight = window.innerWidth * 0.5625;\n        const productStyle = window.getComputedStyle( productRef.current );\n        const cardStyle = window.getComputedStyle( cardRef.current );\n        const detailsMargin = 32;\n\n        if ( !Number.isNaN( parseInt( productStyle.bottom, 10 ))) {\n          const collapsedCardHeight =\n            primaryHeaderRef.current.offsetHeight +\n            parseInt( cardStyle.paddingTop, 10 ) +\n            parseInt( cardStyle.paddingBottom, 10 );\n          const availableSpace =\n            videoHeight -\n            parseInt( productStyle.bottom, 10 ) -\n            collapsedCardHeight -\n            maxProximityToTop -\n            detailsMargin;\n          setDetailsMaxHeight( availableSpace );\n        }\n      } else {\n        setDetailsMaxHeight( null );\n      }\n    };\n    calcDetailsHeights();\n\n    window.addEventListener( 'resize', calcDetailsHeights );\n    return () => {\n      window.removeEventListener( 'resize', calcDetailsHeights );\n    };\n  }, [ cardRef, expandableHeaderRef, productRef ]);\n\n  return (\n    <div className={cls( className, 'spec__video-product' )} ref={productRef}>\n      <h2\n        className={cls(\n          { 'd-md-block': isOutro },\n          `${styles.headline} d-none fs-10 mb-5 text-left text-uppercase text-white`\n        )}\n      >\n        Goldbelly It Now\n      </h2>\n\n      <aside\n        className={cls(\n          'position-relative d-flex rounded text-white',\n          isOutro ? 'bg-transparent border-0 p-0' : 'p-4 p-lg-5',\n          styles.card,\n          {\n            [styles.collapsed]: !isOutro && collapsed,\n          }\n        )}\n        ref={cardRef}\n      >\n        <div\n          className={cls( styles.primaryHeader, 'flex-wrap w-100', {\n            [styles.outro]: isOutro,\n          })}\n          ref={primaryHeaderRef}\n        >\n          <Header\n            className={{\n              image: isOutro && `${styles.image} d-none d-md-block`,\n              location: !isOutro && 'd-none',\n              merchant: isOutro && 'd-none d-md-block',\n              product: isOutro ? 'fs-4 fs-md-5' : 'fs-3 fs-md-4',\n              text: isOutro ? 'col-7 col-md pl-0 pl-md-2 pr-3 pr-md-0' : 'col pl-2 pr-4',\n            }}\n            product={data}\n          />\n\n          <div\n            className={cls( 'd-flex flex-wrap mt-md-3 mt-lg-4', {\n              'w-100 mt-3': !isOutro,\n              'col-5 col-md-12 pl-1 pl-md-0 pr-0': isOutro,\n            })}\n          >\n            <div className={cls( 'pl-0', isOutro ? 'col-12 col-md mb-1 mb-md-0 pr-0' : 'col pr-1' )}>\n              <BuyNow\n                isSoldOut={!data.canAddToCart}\n                className={styles.button}\n                onClick={data.canAddToCart ? handleAddToCart : onNotify}\n              />\n            </div>\n            <div\n              className={cls(\n                'pr-0',\n                isOutro ? 'd-none d-md-block col-12 col-md pl-0 pl-md-1' : 'col pl-1'\n              )}\n            >\n              <button\n                className={cls(\n                  styles.button,\n                  styles.more,\n                  'btn btn-block d-flex justify-content-center align-items-center fs-4',\n                  {\n                    'd-md-none': isOutro,\n                  }\n                )}\n                type=\"button\"\n                onClick={handleClickReveal}\n              >\n                {`Read ${collapsed ? ' More' : ' Less'}`}\n              </button>\n              <ViewDetails\n                className={cls( styles.button, 'd-none mt-0', {\n                  'd-md-flex': isOutro,\n                })}\n                product={data}\n                onClick={( e ) => track.click( IEventSource.VIEW_PRODUCT, e.target, eventData )}\n              />\n            </div>\n          </div>\n        </div>\n\n        <Expand\n          className={isOutro ? 'd-none' : 'col-12 flex-shrink-1 p-0'}\n          initialHeight={collapsedDetailsHeight}\n          isOpen={animating || isOutro || !collapsed}\n        >\n          <div\n            className={cls( styles.details, 'overflow-auto', {\n              [styles.open]: !collapsed,\n            })}\n            style={detailsMaxHeight && { maxHeight: `${detailsMaxHeight}px` }}\n          >\n            <div className={styles.expandableHeader} ref={expandableHeaderRef}>\n              <Header\n                className={{\n                  product: 'fs-4',\n                  location: 'd-none',\n                  text: 'col pl-2 pr-4',\n                }}\n                product={data}\n              />\n            </div>\n\n            <div className={`${styles.reveal} ${styles.expandableDetails}`}>\n              {data.canAddToCart ? (\n                <GetItBy\n                  className={{\n                    container: `${styles.expandableDeliveryDate} border-bottom mb-4 pb-1 text-center`,\n                    date: 'text-white fs-5',\n                  }}\n                  acceptsRequests={data.acceptsRequestedDeliveryDate}\n                  isAvailable={data.canAddToCart}\n                  maxDays={data.numberOfShippingDays}\n                  productId={data.id}\n                />\n              ) : (\n                <SoldOut\n                  className={`${styles.expandableDeliveryDate} border-bottom mb-4 pb-4 pb-md-8 text-center`}\n                  soldOutReason={data.soldOutReason}\n                />\n              )}\n\n              {data.moreDetailsHtml && (\n                <ProductDetail className={`${styles.moreDetails} mt-4`}>\n                  <div dangerouslySetInnerHTML={{ __html: data.moreDetailsHtml }} />\n                </ProductDetail>\n              )}\n\n              <ViewDetails\n                className={`${styles.button} d-flex mt-4`}\n                product={data}\n                onClick={( e ) => track.click( IEventSource.VIEW_PRODUCT, e.target, eventData )}\n              />\n            </div>\n          </div>\n        </Expand>\n\n        <div\n          className={cls( styles.tabletSidebar, 'pl-4', {\n            'd-none': isOutro,\n          })}\n        >\n          <BuyNow\n            isSoldOut={!data.canAddToCart}\n            className={styles.button}\n            onClick={data.canAddToCart ? handleAddToCart : onNotify}\n          />\n\n          <button\n            className={cls(\n              styles.button,\n              styles.more,\n              'btn btn-block d-flex justify-content-center align-items-center fs-4'\n            )}\n            type=\"button\"\n            onClick={handleClickReveal}\n          >\n            Read\n            {collapsed ? ' More' : ' Less'}\n          </button>\n\n          <Expand initialHeight={0} isOpen={animating || !collapsed}>\n            {data.canAddToCart ? (\n              <GetItBy\n                className={{\n                  container: `${styles.reveal} mt-8 text-center`,\n                  date: 'text-white fs-5',\n                }}\n                acceptsRequests={data.acceptsRequestedDeliveryDate}\n                isAvailable={data.canAddToCart}\n                maxDays={data.numberOfShippingDays}\n                productId={data.id}\n              />\n            ) : (\n              <SoldOut\n                className={`${styles.reveal} mt-8 text-center`}\n                soldOutReason={data.soldOutReason}\n              />\n            )}\n          </Expand>\n        </div>\n\n        <button\n          className={cls(\n            styles.accordion,\n            'position-absolute p-4 border-0 bg-transparent text-white',\n            { 'd-none': isOutro }\n          )}\n          type=\"button\"\n          onClick={handleClickReveal}\n        >\n          <FontAwesomeIcon className={`${styles.chevron} position-relative`} icon={faChevronUp} />\n        </button>\n      </aside>\n    </div>\n  );\n};\n","import React from 'react';\nimport cls from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faArrowRight } from '@fortawesome/pro-regular-svg-icons';\n\nimport { ITVVideo } from 'src/explore/types/shoppe';\nimport { LazyImgix } from 'src/explore/elements/LazyImgix';\n\nimport styles from './index.module.sass';\n\ninterface SkipToNextProps {\n  className?: string;\n  hideOnDesktop: boolean;\n  video: ITVVideo;\n  onClick: () => void;\n}\n\nexport const SkipToNext = ({ className, hideOnDesktop, video, onClick }: SkipToNextProps ) => {\n  const handleKeyDown = ( e: React.KeyboardEvent<HTMLButtonElement> ) => {\n    if ( e.key === 'Enter' || e.key === ' ' ) {\n      onClick();\n    }\n  };\n\n  return (\n    <button\n      className={cls(\n        className,\n        styles.skip,\n        'spec__skip-to-next-video bg-transparent border-0 font-weight-bold position-absolute p-0 text-left text-uppercase text-white',\n        {\n          [styles.hideDesktop]: hideOnDesktop,\n        }\n      )}\n      type=\"button\"\n      onClick={onClick}\n      onKeyDown={handleKeyDown}\n    >\n      <div className=\"d-flex justify-content-between mb-2\">\n        <LazyImgix\n          alt={video.title}\n          imgixParams={{ ar: '1:0.5625' }}\n          sizes=\"10vw\"\n          src={`https://cdn.jwplayer.com/thumbs/${video.landscapeMediaId}-320.jpg`}\n          width={160}\n        />\n        <FontAwesomeIcon className={`${styles.arrow} fs-10`} icon={faArrowRight} />\n      </div>\n\n      <div>Up Next:</div>\n      <div>{video.title}</div>\n    </button>\n  );\n};\n","import React from 'react';\nimport cls from 'classnames';\n\nimport { IEventData } from 'src/shoppe/services/JWPlayer';\nimport { ITVVideo, IProduct } from 'src/explore/types/shoppe';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\n\nimport { MuteButton } from './elements/MuteButton';\nimport { Product } from '../../../Product';\nimport { SkipToNext } from './elements/SkipToNext';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n  eventData?: IEventData;\n  nextVideo?: ITVVideo;\n  product?: Pick<\n    IProduct,\n    | 'id'\n    | 'acceptsRequestedDeliveryDate'\n    | 'canAddToCart'\n    | 'defaultQuantity'\n    | 'effectiveMainImageUrl'\n    | 'effectiveName'\n    | 'effectivePriceInCents'\n    | 'hasMultipleSpeeds'\n    | 'merchant'\n    | 'numberOfShippingDays'\n    | 'permalink'\n    | 'soldOutReason'\n  >;\n  productCollapsed: boolean;\n  setProductCollapsed: ( collapsed: boolean ) => void;\n  videoId: number;\n  onClickNext: () => void;\n  onNotify: () => void;\n}\n\nexport const Interim = ({\n  eventData,\n  nextVideo,\n  product,\n  productCollapsed,\n  setProductCollapsed,\n  videoId,\n  onClickNext,\n  onNotify,\n}: Props ) => {\n  const { isOutro } = useJWContext();\n\n  return (\n    <>\n      <div className={cls( 'spec__video-interim', styles.interim, { [styles.hide]: isOutro })}>\n        <MuteButton />\n\n        {nextVideo && (\n          <SkipToNext\n            className=\"d-none d-lg-block\"\n            hideOnDesktop={!productCollapsed}\n            video={nextVideo}\n            onClick={onClickNext}\n          />\n        )}\n      </div>\n\n      {product && (\n        <Product\n          className={cls(\n            styles.product,\n            isOutro ? 'd-none' : 'd-none d-xl-block',\n            'position-absolute '\n          )}\n          collapsed={productCollapsed}\n          data={product}\n          eventData={eventData}\n          setCollapsed={setProductCollapsed}\n          videoId={videoId}\n          onNotify={onNotify}\n        />\n      )}\n    </>\n  );\n};\n","import React, { useEffect, useRef } from 'react';\n\nimport styles from './index.module.sass';\n\ninterface DialProps {\n  autoplayCountdown: number;\n  autoplayDelay: number;\n}\n\nexport const Dial = ({ autoplayCountdown, autoplayDelay }: DialProps ) => {\n  const circleRef = useRef<SVGCircleElement>( null );\n\n  useEffect(() => {\n    const circle = circleRef.current;\n\n    if ( circle ) {\n      // @ts-ignore\n      const radius = parseInt( getComputedStyle( circle ).r, 10 );\n      const circumference = radius * 2 * Math.PI;\n\n      circle.style.strokeDasharray = `${circumference}`;\n      circle.style.strokeDashoffset = `${circumference}`;\n\n      // animate\n      const percentComplete = Math.min(\n        ( autoplayDelay - autoplayCountdown ) * ( 1 / ( autoplayDelay - 1 )),\n        1\n      );\n      const offset = circumference - percentComplete * circumference;\n      circle.style.strokeDashoffset = String( Math.min( offset, circumference ));\n    }\n  }, [ autoplayCountdown, autoplayDelay ]);\n\n  return (\n    <svg className={`${styles.dial} position-absolute`}>\n      <circle className={styles.circle} fill=\"transparent\" ref={circleRef} stroke=\"white\" />\n    </svg>\n  );\n};\n","import React from 'react';\n\nimport { ITVVideo } from 'src/explore/types/shoppe';\n\nimport { Dial } from './elements/Dial';\n\nimport styles from './index.module.sass';\n\ninterface UpNextProps {\n  autoplayCountdown: number;\n  autoplayDelay: number;\n  video: ITVVideo;\n  onClick: () => void;\n}\n\nexport const UpNext = ({ autoplayCountdown, autoplayDelay, onClick }: UpNextProps ) => {\n  const handleKeyDown = ( e: React.KeyboardEvent<HTMLButtonElement> ) => {\n    if ( e.key === 'Enter' || e.key === ' ' ) {\n      onClick();\n    }\n  };\n\n  return (\n    <button\n      className={`${styles.next} align-items-center border-0 bg-transparent d-flex p-0 text-left text-uppercase text-white ml-auto`}\n      type=\"button\"\n      onClick={onClick}\n      onKeyDown={handleKeyDown}\n    >\n      <div className={`${styles.title} col fs-3 fs-lg-5 pl-0 text-white`}>\n        <div className=\"d-none d-md-block\">Next Video Will Start In</div>\n        <div className=\"d-md-none\">Up Next</div>\n      </div>\n\n      <div\n        className={`${styles.countdown} position-relative d-flex justify-content-center align-items-center rounded-circle m-auto font-weight-bold fs-3 fs-lg-5`}\n      >\n        <Dial autoplayCountdown={autoplayCountdown} autoplayDelay={autoplayDelay} />\n        <span className=\"position-absolute\">{autoplayCountdown}</span>\n      </div>\n    </button>\n  );\n};\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faUndo } from '@fortawesome/pro-solid-svg-icons';\n\nimport { IEventSource } from 'src/shoppe/services/JWPlayer';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\n\nimport styles from './index.module.sass';\n\nexport const Replay = () => {\n  const { getPlayer, updateContext } = useJWContext();\n\n  const handleClick = () => {\n    updateContext({ source: IEventSource.REPLAY });\n    getPlayer()?.seek( 0 );\n  };\n\n  return (\n    <button\n      aria-label=\"Replay\"\n      className={`${styles.button} d-flex align-items-center p-0 border-0 bg-transparent text-white`}\n      tabIndex={0}\n      type=\"button\"\n      onClick={handleClick}\n    >\n      <div className={`${styles.text} mr-3 fs-3 fs-lg-5 text-uppercase pl-0`}>Replay</div>\n      <FontAwesomeIcon className=\"fs-5 fs-lg-8\" icon={faUndo} />\n    </button>\n  );\n};\n","import React from 'react';\nimport cls from 'classnames';\n\nimport { IEventData } from 'src/shoppe/services/JWPlayer';\nimport { ITVVideo, IProduct } from 'src/explore/types/shoppe';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\n\nimport { Product } from '../../../Product';\nimport { UpNext } from './elements/UpNext';\nimport { Replay } from './elements/Replay';\n\nimport styles from './index.module.sass';\n\ninterface OutroProps {\n  eventData?: IEventData;\n  nextVideo?: ITVVideo;\n  product?: Pick<\n    IProduct,\n    | 'id'\n    | 'acceptsRequestedDeliveryDate'\n    | 'canAddToCart'\n    | 'defaultQuantity'\n    | 'effectiveMainImageUrl'\n    | 'effectiveName'\n    | 'effectivePriceInCents'\n    | 'hasMultipleSpeeds'\n    | 'merchant'\n    | 'numberOfShippingDays'\n    | 'permalink'\n    | 'soldOutReason'\n  >;\n  productCollapsed: boolean;\n  setProductCollapsed: ( collapsed: boolean ) => void;\n  videoId: number;\n  onClickNext: () => void;\n  onNotify: () => void;\n}\n\nexport const Outro = ({\n  eventData,\n  nextVideo,\n  product,\n  productCollapsed,\n  setProductCollapsed,\n  videoId,\n  onClickNext,\n  onNotify,\n}: OutroProps ) => {\n  const { outroCountdown, outroLength, isOutro } = useJWContext();\n\n  return (\n    <div\n      className={cls(\n        styles.outro,\n        { [styles.visible]: isOutro },\n        'spec__video-outro position-absolute d-flex flex-column'\n      )}\n    >\n      <div className=\"d-flex align-items-center w-100\">\n        <div className=\"col-5 pl-0\">\n          <Replay />\n        </div>\n\n        {nextVideo && (\n          <>\n            <div className=\"col text-center\">\n              <div className={`${styles.divider} m-auto d-none d-md-block`} />\n            </div>\n\n            <div className=\"col-6 pr-0\">\n              <UpNext\n                autoplayCountdown={outroCountdown}\n                autoplayDelay={outroLength}\n                video={nextVideo}\n                onClick={onClickNext}\n              />\n            </div>\n          </>\n        )}\n      </div>\n\n      {product && (\n        <Product\n          className=\"my-auto\"\n          collapsed={productCollapsed}\n          data={product}\n          eventData={eventData}\n          setCollapsed={setProductCollapsed}\n          videoId={videoId}\n          onNotify={onNotify}\n        />\n      )}\n    </div>\n  );\n};\n","import React from 'react';\nimport cls from 'classnames';\n\nimport styles from './index.module.sass';\n\ninterface TitleProps {\n  className?: string;\n  icon?: React.ReactElement;\n  title?: string;\n  subtitle?: string;\n}\n\nexport const Title = ({ className, icon, title, subtitle }: TitleProps ) => (\n  <h1 className={cls( styles.title, 'spec__video-title fs-4 fs-lg-8 text-white', className )}>\n    {title && (\n      <div className=\"align-items-center d-flex mb-1 mb-lg-2\">\n        <span className=\"fs-3 fs-lg-5\">\n          {icon}\n          {title}\n        </span>\n      </div>\n    )}\n    {subtitle && <div className=\"text-uppercase\">{subtitle}</div>}\n  </h1>\n);\n","import React from 'react';\n\nimport { IEventSource, IEventData } from 'src/shoppe/services/JWPlayer';\nimport { ITVVideo, IProduct } from 'src/explore/types/shoppe';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\n\nimport { Interim } from './elements/Interim';\nimport { Outro } from './elements/Outro';\nimport { Title } from '../Title';\n\ninterface OverlayProps {\n  eventData?: IEventData;\n  nextVideo?: ITVVideo;\n  product?: Pick<\n    IProduct,\n    | 'id'\n    | 'acceptsRequestedDeliveryDate'\n    | 'canAddToCart'\n    | 'defaultQuantity'\n    | 'effectiveMainImageUrl'\n    | 'effectiveName'\n    | 'effectivePriceInCents'\n    | 'hasMultipleSpeeds'\n    | 'merchant'\n    | 'numberOfShippingDays'\n    | 'permalink'\n    | 'soldOutReason'\n  >;\n  productCollapsed: boolean;\n  setProductCollapsed: ( collapsed: boolean ) => void;\n  subtitle?: string;\n  title?: string;\n  titleIcon?: React.ReactElement;\n  videoId: number;\n  onClickNext: () => void;\n  onNotify: () => void;\n}\n\nexport const Overlay = ({\n  eventData,\n  nextVideo,\n  product,\n  productCollapsed,\n  setProductCollapsed,\n  title,\n  titleIcon,\n  subtitle,\n  videoId,\n  onClickNext,\n  onNotify,\n}: OverlayProps ) => {\n  const { updateContext } = useJWContext();\n\n  const handleNext = () => {\n    updateContext({ source: IEventSource.NEXT_CARD });\n    onClickNext();\n  };\n\n  return (\n    <>\n      {title && (\n        <Title className=\"d-none d-md-block\" icon={titleIcon} title={title} subtitle={subtitle} />\n      )}\n\n      <Interim\n        eventData={eventData}\n        nextVideo={nextVideo}\n        product={product}\n        productCollapsed={productCollapsed}\n        setProductCollapsed={setProductCollapsed}\n        videoId={videoId}\n        onClickNext={nextVideo && handleNext}\n        onNotify={onNotify}\n      />\n\n      <Outro\n        eventData={eventData}\n        nextVideo={nextVideo}\n        product={product}\n        productCollapsed={productCollapsed}\n        setProductCollapsed={setProductCollapsed}\n        videoId={videoId}\n        onClickNext={nextVideo && handleNext}\n        onNotify={onNotify}\n      />\n    </>\n  );\n};\n","import React, { useState } from 'react';\nimport { Provider } from 'react-redux';\nimport cls from 'classnames';\n\nimport { init as initStore, store as initializedStore } from 'src/explore/store';\n\nimport BreakpointsService from 'src/explore/services/breakpoints';\nimport { JWCustomElem } from 'src/shoppe/elements/JWCustomElem';\nimport { JWPlayer } from 'src/shoppe/elements/JWPlayer';\nimport { ITVVideo, IProduct, ITVVideoPlaylist } from 'src/explore/types/shoppe';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\n\nimport { NotifyMeModal } from './elements/NotifyMeModal';\nimport { Overlay } from './elements/Overlay';\nimport { Product } from './elements/Product';\nimport { Title } from './elements/Title';\n\nimport styles from './index.module.sass';\n\nconst getStore = () => ( window.isMobileApp ? initStore() : initializedStore );\n\ninterface JWPlayerProps {\n  className?: string;\n  nextVideo?: ITVVideo;\n  playlist?: ITVVideoPlaylist;\n  product?: Pick<\n    IProduct,\n    | 'id'\n    | 'acceptsRequestedDeliveryDate'\n    | 'canAddToCart'\n    | 'defaultQuantity'\n    | 'effectiveMainImageUrl'\n    | 'effectiveName'\n    | 'effectivePriceInCents'\n    | 'hasMultipleSpeeds'\n    | 'merchant'\n    | 'numberOfShippingDays'\n    | 'permalink'\n    | 'soldOutReason'\n  >;\n  title: string;\n  titleIcon?: React.ReactElement;\n  video: ITVVideo;\n  onNext: () => void;\n}\n\nexport const VideoPlayer = ({\n  className,\n  nextVideo,\n  playlist,\n  product,\n  title,\n  titleIcon,\n  video,\n  onNext,\n}: JWPlayerProps ) => {\n  const { isOutro, playerId, getPlayer } = useJWContext();\n\n  const [ outroCountdown, setOutroCountdown ] = useState<number>( null );\n  const [ played, setPlayed ] = useState<boolean>( false );\n  const [ productCollapsed, setProductCollapsed ] = useState<boolean>( true );\n  const [ showProduct, setShowProduct ] = useState<boolean>( false );\n  const [ showNotify, setShowNotify ] = useState<boolean>( false );\n\n  const eventData = React.useMemo(\n    () => ({\n      playlistId: playlist?.id,\n      productId: video?.productId,\n      merchantId: video?.merchantId,\n      videoId: video?.id,\n      ref: 'gbtv',\n    }),\n    [ playlist, video ]\n  );\n\n  const handleAutoStart = () => {\n    setTimeout(() => setPlayed( true ), 500 );\n  };\n\n  const handleNext = React.useCallback(() => {\n    setPlayed( false );\n    onNext();\n    setShowProduct( false );\n    setOutroCountdown( null );\n  }, [ onNext ]);\n\n  const handlePlay = () => {\n    setTimeout(() => setPlayed( true ), 500 );\n  };\n\n  const handleTime = ( e: { currentTime: number; duration: number }) => {\n    const { productCardShowInSeconds = 30 } = video;\n    setShowProduct( productCardShowInSeconds !== null && e.currentTime >= productCardShowInSeconds );\n\n    const remainingSeconds = e.duration - e.currentTime;\n    setOutroCountdown( Math.round( remainingSeconds ));\n  };\n\n  React.useEffect(() => {\n    if ( isOutro ) {\n      const isFullscreen = getPlayer()?.getFullscreen();\n      const isMobile = BreakpointsService.lessThan( 'sm' );\n\n      if ( isFullscreen && isMobile ) {\n        getPlayer()?.setFullscreen( false );\n\n        // set setFullscreen pauses the video on IOS\n        // wait some time for fullscreen exit to finish then replay the video\n        setTimeout(() => getPlayer()?.play(), 500 );\n      }\n    }\n  }, [ isOutro ]);\n\n  return (\n    <div\n      className={cls( 'jw-tv-player', className, {\n        [styles.hideControls]: !played && getPlayer()?.getConfig().autostart,\n        [styles.outro]: isOutro,\n        'jw-show-product': showProduct,\n      })}\n    >\n      {title && (\n        <div className=\"col d-md-none px-4 pb-4 py-sm-4\">\n          <Title icon={titleIcon} title={title} subtitle={video.title} />\n        </div>\n      )}\n\n      <JWPlayer\n        isAutoPlay\n        customProps={{ displaytitle: false }}\n        eventData={eventData}\n        playerId={playerId}\n        playlist={`https://cdn.jwplayer.com/v2/media/${video.landscapeMediaId}`}\n        outroCountdown={outroCountdown}\n        outroLength={video.outroSeconds}\n        onAutoStart={handleAutoStart}\n        onNext={nextVideo && handleNext}\n        onPlay={handlePlay}\n        onTime={handleTime}\n      >\n        <JWCustomElem id=\"overlay-root\">\n          <Provider store={getStore()}>\n            <Overlay\n              eventData={eventData}\n              nextVideo={nextVideo}\n              product={product}\n              productCollapsed={productCollapsed}\n              setProductCollapsed={setProductCollapsed}\n              subtitle={video.title}\n              title={title}\n              titleIcon={titleIcon}\n              videoId={video.id}\n              onClickNext={nextVideo && handleNext}\n              onNotify={() => setShowNotify( true )}\n            />\n          </Provider>\n        </JWCustomElem>\n      </JWPlayer>\n\n      {product && !isOutro && (\n        <div className=\"col d-xl-none p-4\">\n          <Product\n            collapsed={productCollapsed}\n            data={product}\n            eventData={eventData}\n            setCollapsed={setProductCollapsed}\n            videoId={video.id}\n            onNotify={() => setShowNotify( true )}\n          />\n        </div>\n      )}\n\n      <NotifyMeModal\n        className=\"d-block d-md-flex\"\n        isOpen={showNotify}\n        productId={product?.id}\n        onClose={() => setShowNotify( false )}\n      />\n    </div>\n  );\n};\n","import React from 'react';\nimport cls from 'classnames';\nimport { Link } from 'react-router-dom';\n\nimport { useRoutes } from 'src/explore/hooks/useRoutes';\n\nimport styles from './index.module.sass';\n\ninterface ViewAllProps {\n  className?: string;\n  slug: string;\n}\n\nexport const ViewAll = ({ className, slug }: ViewAllProps ) => {\n  const routes = useRoutes();\n\n  return (\n    <Link\n      to={routes.tv.playlist( slug )}\n      className={cls( styles.button, 'btn px-8 font-weight-bold', className )}\n    >\n      View All\n    </Link>\n  );\n};\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faChevronLeft, faChevronRight } from '@fortawesome/pro-solid-svg-icons';\nimport { Carousel } from '@goldbely/explore-component-library';\nimport cls from 'classnames';\n\nimport { ITVVideoPlaylist } from 'src/explore/types/shoppe';\nimport { useRoutes } from 'src/explore/hooks/useRoutes';\nimport { useApiObject } from 'src/explore/hooks/useApiObject';\n\nimport { VideoCard } from '../../../../elements/VideoCard';\nimport { ViewAll } from './elements/ViewAll';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n  className?: string;\n  activeVideoSlug?: string;\n  slug: string;\n  title: string;\n}\n\nexport const VideoPlaylist = ({ className, activeVideoSlug, slug, title }: Props ) => {\n  const routes = useRoutes();\n\n  const { data: playlist } = useApiObject<ITVVideoPlaylist>( `/tv/playlists/${slug}`, {\n    camelCaseKeys: true,\n  });\n\n  if ( !playlist ) return null;\n\n  const { videos } = playlist;\n\n  const activeIndex = videos.findIndex(( v ) => v.slug === activeVideoSlug );\n  const isLast = activeIndex === videos.length - 1;\n  const nextIndex = activeIndex !== -1 && ( isLast ? 0 : activeIndex + 1 );\n\n  return (\n    <div className={cls( className, 'spec__video-playlist' )}>\n      <div\n        className={`${styles.container} d-md-flex justify-content-between align-items-center pb-3 pb-md-4`}\n      >\n        <h2 className=\"fs-4 fs-lg-8 text-uppercase text-white\">{title}</h2>\n        <ViewAll className=\"d-none d-md-block\" slug={slug} />\n      </div>\n\n      <Carousel\n        classNames={{\n          container: styles.container,\n          step: `${styles.stepContainer} align-items-center bg-transparent flex p-0 shadow-none text-white`,\n        }}\n        icons={{\n          stepLeft: (\n            <FontAwesomeIcon className={styles.step} icon={faChevronLeft} height={16} width={25} />\n          ),\n          stepRight: (\n            <FontAwesomeIcon className={styles.step} icon={faChevronRight} height={16} width={25} />\n          ),\n        }}\n        jumpToEdgeChild\n        resetOnFinish\n        scrollTo={{ item: activeIndex }}\n      >\n        {playlist.videos.map(( vid, index ) => (\n          <div\n            key={vid.slug}\n            className={cls( styles.video, 'flex-shrink-0 spec__carousel-item', {\n              'mr-2': index !== playlist.videos.length - 1,\n            })}\n          >\n            <VideoCard\n              duration={\n                vid.duration &&\n                vid.duration !== '0' &&\n                vid.duration.replace( /(\\d+):?(\\d*)?/, ( _, hour, minute ) => {\n                  let minuteFormatted = !minute ? '00' : minute;\n                  if ( minuteFormatted.length < 2 ) {\n                    minuteFormatted += '0';\n                  }\n                  return `${String( Number( hour ))}:${minuteFormatted}`;\n                })\n              }\n              landscapeMediaId={vid.landscapeMediaId}\n              linkTo={routes.tv.root({ playlist: playlist.slug, video: vid.slug })}\n              isNext={index === nextIndex}\n              isPlaying={index === activeIndex}\n              title={vid.title}\n            />\n          </div>\n        ))}\n      </Carousel>\n\n      <div className=\"container-xl d-md-none mt-4\">\n        <div className=\"row\">\n          <div className=\"col text-center\">\n            <ViewAll className=\"d-inline-block mx-auto w-100\" slug={slug} />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import query from 'query-string';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { Helmet } from 'react-helmet';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faTvRetro } from '@fortawesome/pro-regular-svg-icons';\n\nimport { ITVVideo, IProduct, ITVVideoPlaylist } from 'src/explore/types/shoppe';\nimport { Spinner } from 'src/shoppe/elements/Spinner';\nimport { useApiObject } from 'src/explore/hooks/useApiObject';\nimport { useRoutes } from 'src/explore/hooks/useRoutes';\n\nimport { Admin } from '../../elements/Admin';\nimport { VideoPlayer } from './elements/VideoPlayer';\nimport { VideoPlaylist } from './elements/VideoPlaylist';\n\nimport styles from './index.module.sass';\n\nexport const Show = () => {\n  const location = useLocation();\n  const navigate = useNavigate();\n  const routes = useRoutes();\n  const [ video, setVideo ] = useState<ITVVideo>();\n\n  // select one playlist and video from query params\n  const q = query.parse( location.search );\n  const playlistSlug = typeof q.playlist === 'object' ? q.playlist[0] : q.playlist;\n  const videoSlug = typeof q.video === 'object' ? q.video[0] : q.video;\n\n  // data fetchers\n  const { data: playlists } = useApiObject<ITVVideoPlaylist[]>( '/tv/playlists', {\n    camelCaseKeys: true,\n    params: {\n      slug: playlistSlug || null,\n    },\n  });\n  const { data: videoData } = useApiObject<ITVVideo>( `/tv/videos/${videoSlug}`, {\n    camelCaseKeys: true,\n  });\n  const { data: nextVideo, loading: nextVideoLoading } = useApiObject<ITVVideo>( '/tv/next_video', {\n    camelCaseKeys: true,\n    params: {\n      playlist: playlistSlug || null,\n      video: videoSlug || null,\n    },\n  });\n  const { data: product, loading: productLoading } = useApiObject<IProduct>(\n    `/products/${video?.productId}`,\n    {\n      delay: !video,\n      camelCaseKeys: true,\n      clearOnError: true,\n    }\n  );\n\n  const playlist = playlists && playlistSlug && playlists[0];\n\n  // sync video state on change\n  useEffect(() => {\n    setVideo(( v ) => ( v?.id !== videoData?.id ? videoData : v ));\n  }, [ videoData?.id ]);\n\n  // update video and navigate on next\n  const handleNext = useCallback(() => {\n    setVideo( nextVideo );\n\n    const routeParams: { [key: string]: string } = {\n      video: nextVideo?.slug,\n    };\n    if ( playlistSlug ) {\n      routeParams.playlist = playlistSlug;\n    }\n    navigate( routes.tv.root( routeParams ));\n  }, [ nextVideo, playlistSlug, routes ]);\n\n  return !video || ( !playlist && !!playlistSlug ) ? (\n    <div className=\"d-flex align-items-center justify-content-center min-vh-100\">\n      <Spinner className=\"spinner-border\" />\n    </div>\n  ) : (\n    <>\n      <Helmet>\n        <title>{video.metaTitle}</title>\n      </Helmet>\n\n      <div className={`${styles.content} min-vh-100 text-white pb-9 mb-7`} data-turbolinks=\"false\">\n        <VideoPlayer\n          className=\"spec__video mb-8\"\n          nextVideo={!nextVideoLoading && nextVideo}\n          playlist={playlist}\n          product={!productLoading && product}\n          title={playlistSlug ? playlist.title : 'Taste-O-Vision'}\n          titleIcon={!playlistSlug && <FontAwesomeIcon icon={faTvRetro} className=\"mr-2\" />}\n          video={video}\n          onNext={handleNext}\n        />\n\n        {playlists?.map(( pl, index ) => (\n          <React.Fragment key={pl.slug}>\n            <VideoPlaylist\n              className={styles.playlist}\n              activeVideoSlug={playlist && index === 0 && video?.slug}\n              slug={pl.slug}\n              title={pl.title}\n            />\n            <div className={`${styles.divider} my-9`} />\n          </React.Fragment>\n        ))}\n      </div>\n      <Admin video={videoData} playlist={playlist} />\n    </>\n  );\n};\n","import React from 'react';\nimport { BrowserRouter, Routes, Route } from 'react-router-dom';\n\nimport { PageViewTracker } from 'src/explore/elements/PageViewTracker';\nimport { ScrollToTop } from 'src/explore/elements/ScrollToTop';\nimport { SiteFooter } from 'src/explore/compositions/SiteFooter';\nimport { JWProvider } from 'src/shoppe/hooks/useJWContext';\n\nimport { Header } from './elements/Header';\nimport { Playlist } from './scenes/Playlist';\nimport { Show } from './scenes/Show';\n\nimport styles from './index.module.sass';\n\nconst TV = () => (\n  <>\n    <JWProvider playerId=\"tv-player\">\n      <Header />\n\n      <BrowserRouter>\n        <PageViewTracker />\n        <ScrollToTop />\n        <Routes>\n          <Route path=\"/tv\" element={<Show />} />\n          <Route path=\"/tv/:playlistSlug\" element={<Playlist />} />\n        </Routes>\n      </BrowserRouter>\n\n      <SiteFooter\n        classNames={{\n          wrapper: `${styles.footer} hide-in-app border-top-0 pt-4 pt-lg-9`,\n          container: 'justify-content-between',\n          column: 'pr-lg-4',\n          columnItem: styles.columnItem,\n          columnRight: `${styles.columnRight} mx-xl-9`,\n          columnTitle: `${styles.columnTitle} font-weight-bold fs-5 pb-4 text-white text-uppercase`,\n          copyright: 'text-white',\n          social: `${styles.social} bg-white`,\n        }}\n      />\n    </JWProvider>\n  </>\n);\n\nexport default TV;\n"],"names":["Header","primaryMenu","secondaryMobileMenu","useNavigationMenus","isOutro","useJWContext","search","setSearch","React.useState","isMenuOpen","setIsMenuOpen","isSearchExpanded","setIsSearchExpanded","scrollPos","setScrollPos","account","useSelector","state","React.useEffect","handleScroll","handleNavigationClose","handleNavToggle","React.createElement","React.Fragment","cls","styles","NavToggle","SvgUse","GlobalSearch","q","Routes","AuthButtons","CartButton","NavMenu","Links","links","React","group","item","AdminTools","buttonText","items","admin","open","setOpen","useState","menuRef","useRef","routes","useRoutes","useClickOutside","isOpen","Admin","video","playlist","Menu","Hero","description","heroImageUrl","title","LazyImgix","Badge","className","children","position","DetailsOverlay","isNext","isPlaying","duration","VideoCard","landscapeMediaId","linkTo","updateContext","Link","IEventSource","Grid","slug","videos","Playlist","playlistSlug","useParams","data","loading","error","pristine","useApiObject","Spinner","ErrorBox","Helmet","NotifyMeModal","productId","onClose","id","setId","NotificationForm","MuteButton","getPlayer","initialMute","_a","muted","setMute","pulsate","setPulsate","updateMute","e","timeout","handleClick","FontAwesomeIcon","faVolumeMute","faVolume","DatepickerNote","NextDeliveryDates","dates","maxDays","faCalendarAlt","Modal","DayPickerRangeController","day","moment","Breakpoints","faCheckCircle","DeliveryDate","estimated_delivery_on","month","today","weekday","deliveryDate","dayDelivery","dayCurrent","Expedited","acceptsRequests","deliveryDates","nextShippingOption","withMoreDates","deadline_at","secondsUntilDeadline","deadline","anyDeliveryDates","Shipping","is_ground","to_ship_on","shipDate","GetItBy","isAvailable","ProductDetail","BuyNow","isSoldOut","onClick","product","effectiveMainImageUrl","effectiveName","effectivePriceInCents","merchant","DollarsAndCents","click","source","element","EventTracker","IEvent","track","ViewDetails","SoldOut","soldOutReason","Product","collapsed","eventData","setCollapsed","videoId","onNotify","expandableHeaderRef","cardRef","primaryHeaderRef","productRef","animating","setAnimating","collapsedDetailsHeight","setCollapsedDetailsHeight","detailsMaxHeight","setDetailsMaxHeight","dispatch","useDispatch","handleClickReveal","event","handleAddToCart","cartCartItemsActionCreators.create","cartActionCreators.open","useEffect","calcDetailsHeights","videoHeight","productStyle","cardStyle","detailsMargin","collapsedCardHeight","availableSpace","Expand","faChevronUp","SkipToNext","hideOnDesktop","handleKeyDown","faArrowRight","Interim","nextVideo","productCollapsed","setProductCollapsed","onClickNext","Dial","autoplayCountdown","autoplayDelay","circleRef","circle","circumference","percentComplete","offset","UpNext","Replay","faUndo","Outro","outroCountdown","outroLength","Title","icon","subtitle","Overlay","titleIcon","handleNext","getStore","initStore","initializedStore","VideoPlayer","onNext","playerId","setOutroCountdown","played","setPlayed","showProduct","setShowProduct","showNotify","setShowNotify","handleAutoStart","handlePlay","handleTime","productCardShowInSeconds","remainingSeconds","isFullscreen","isMobile","BreakpointsService","_b","JWPlayer","JWCustomElem","Provider","ViewAll","VideoPlaylist","activeVideoSlug","activeIndex","v","isLast","nextIndex","Carousel","faChevronLeft","faChevronRight","vid","index","_","hour","minute","minuteFormatted","Show","location","useLocation","navigate","useNavigate","setVideo","query","videoSlug","playlists","videoData","nextVideoLoading","productLoading","useCallback","routeParams","faTvRetro","pl","TV","JWProvider","BrowserRouter","PageViewTracker","ScrollToTop","Route","SiteFooter"],"mappings":"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"}