{"version":3,"file":"js/6340-8cc0982e9fade9a889b4.chunk.js","mappings":"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","sources":["webpack://artfully-walls/./app/javascript/arts/actions/works.js","webpack://artfully-walls/./app/javascript/arts/components/category/category_description.js","webpack://artfully-walls/./app/javascript/arts/components/works/index.js","webpack://artfully-walls/./app/javascript/arts/components/category/category_style.js","webpack://artfully-walls/./app/javascript/arts/components/category/header.js","webpack://artfully-walls/./app/javascript/arts/components/category/index.js","webpack://artfully-walls/./app/javascript/arts/components/fine_art_prints/index.js","webpack://artfully-walls/./app/javascript/arts/components/category/styles.module.scss?215b"],"sourcesContent":["import Constants from 'arts/config/constants';\nimport { loadWorksPageApi, fetchArtFiltersApi } from 'arts/config/api';\nimport { buildFetchWorksPage } from 'arts/config/works_loader_actions';\n\nconst artFiltersFetched = (filters) => ({\n  type: Constants.ArtFilters.FETCH_SUCCESS,\n  filters\n});\n\nexport const fetchWorksPage = buildFetchWorksPage(Constants.Works, loadWorksPageApi, 'works');\n\nexport const fetchArtFilters = () => (dispatch) => {\n  fetchArtFiltersApi().then(\n    (data) => dispatch(artFiltersFetched(data))\n  ).catch(() => {});\n};\n","import React, { useState, useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport ReactMarkdown from 'react-markdown';\nimport { loadPageDescriptionApi } from 'arts/config/api';\nimport * as AppClasses from '../Application/styles.module.scss';\nimport * as Classes from './styles.module.scss';\n\nconst CategoryDescription = ({ description, skipShowMore, loadadble }) => {\n  const [showMore, setShowMore] = useState(!!skipShowMore);\n  const [renderDescription, setRenderDescription] = useState(description);\n\n  useEffect(() => {\n    setRenderDescription(description);\n  }, [description]);\n\n  useEffect(() => {\n    if (loadadble) {\n      loadPageDescriptionApi().then(res => setRenderDescription(res.description)).catch(() => {});\n    }\n  }, [loadadble, description, window.location.href]);\n\n  const button = useMemo(() => {\n    if (skipShowMore) return null;\n    if (showMore) {\n      return (\n        <button type=\"button\" className={ Classes.showMore } onClick={ () => setShowMore(false) }>Show Less...</button>\n      );\n    }\n    return (\n      <button type=\"button\" className={ Classes.showMore } onClick={ () => setShowMore(true) }>\n        Learn More...\n      </button>\n    );\n  }, [showMore, skipShowMore]);\n\n  if (!renderDescription) return null;\n\n  return (\n    <div className={ AppClasses.innerContainer20 }>\n      <div className={ classnames(Classes.description, { [Classes.showLess]: !showMore }) }>\n        <ReactMarkdown>\n          { renderDescription }\n        </ReactMarkdown>\n        { button }\n      </div>\n    </div>\n  );\n};\n\nCategoryDescription.propTypes = {\n  description: PropTypes.string,\n  skipShowMore: PropTypes.bool,\n  loadadble: PropTypes.bool\n};\n\nexport default CategoryDescription;\n","import { connect } from 'react-redux';\nimport {\n  fetchWorksPage, fetchArtFilters\n} from 'arts/actions/works';\nimport Works from './works';\n\nconst mapStateToProps = (\n  {\n    works: {\n      collection, error, loading, page, totalPages, loadedAt\n    },\n    artFilters: { filters }\n  }\n) => ({\n  works: collection,\n  error,\n  loading,\n  page,\n  totalPages,\n  artFilters: filters,\n  loadedAt,\n  gtmSection: 'art prints'\n});\n\nexport default connect(mapStateToProps, {\n  fetchWorksPage,\n  fetchArtFilters\n})(Works);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Works from '../works';\nimport Header from './header';\nimport CategoryDescription from './category_description';\n\nconst CategoryStyle = ({\n  headerTitle,\n  desktopImageHref,\n  mobileImageHref,\n  color,\n  description,\n  loadableDescription,\n  ...rest\n}) => {\n  const hasTitle = !!headerTitle;\n  const theHeader = hasTitle ? (\n    <Header\n      title={ headerTitle }\n      desktopImageHref={ desktopImageHref }\n      mobileImageHref={ mobileImageHref }\n      color={ color }\n      kind=\"prints\"\n    />\n  ) : null;\n\n  return (\n    <>\n      { theHeader }\n      <Works { ...rest } />\n      <CategoryDescription description={ description } loadadble={ loadableDescription } />\n    </>\n  );\n};\n\nCategoryStyle.propTypes = {\n  headerTitle: PropTypes.string,\n  desktopImageHref: PropTypes.string,\n  mobileImageHref: PropTypes.string,\n  description: PropTypes.string,\n  color: PropTypes.string,\n  loadableDescription: PropTypes.bool\n};\n\nexport default CategoryStyle;\n","import React from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport * as AppClasses from '../Application/styles.module.scss';\nimport * as Classes from './styles.module.scss';\n\nexport const CategoryPrints = () => (\n  <h2>\n    A hand-picked collection of fine art prints\n    <br />\n    Unique framing options\n    <br />\n    Pre-designed gallery walls\n  </h2>\n);\n\nCategoryPrints.propTypes = {\n  title: PropTypes.string\n};\n\nconst CategoryHeader = ({\n  title,\n  desktopImageHref,\n  mobileImageHref,\n  color\n}) => {\n  const styleD = { backgroundImage: `url(${ desktopImageHref })` };\n  const styleM = { backgroundImage: `url(${ mobileImageHref })` };\n  const bgStyle = {\n    backgroundColor: `#${ color || 'fff' }`\n  };\n\n  const dImage = desktopImageHref ? (\n    <div className={ Classes.imgD } style={ styleD } />\n  ) : null;\n\n  const mImage = mobileImageHref ? (\n    <div className={ Classes.imgM } style={ styleM } />\n  ) : (\n    <div className={ Classes.imgMHolder } />\n  );\n\n  return (\n    <div className={ AppClasses.innerContainer20 }>\n      <div className={ Classes.header } style={ bgStyle }>\n        { mImage }\n        <div className={ classnames(AppClasses.headerText, Classes.headerText) }>\n          <h1>{ title }</h1>\n          <CategoryPrints />\n        </div>\n        { dImage }\n      </div>\n    </div>\n  );\n};\n\nCategoryHeader.propTypes = {\n  title: PropTypes.string.isRequired,\n  desktopImageHref: PropTypes.string.isRequired,\n  mobileImageHref: PropTypes.string.isRequired,\n  color: PropTypes.string\n};\n\nexport default CategoryHeader;\n","import { connect } from 'react-redux';\nimport CategoryStyle from './category_style';\nimport { WITH_CATEGORY_ID } from '../works/works';\n\nconst ART_PRINTS = ' Art Prints';\n\nexport const dyanamicMapToProps = (filterKey) => (\n  {\n    artFilters: { filters }\n  },\n  {\n    location: { pathname }\n  }\n) => {\n  const entries = pathname.split(/\\//);\n  const currentId = entries[3];\n  const index = (filters || []).findIndex(v => v.key === filterKey);\n\n  if (index < 0) {\n    return {};\n  }\n\n  const headers = filters[index].options.filter((v) => v.header).map(v => v.header);\n  const header = headers.find(h => h.slug === currentId);\n  if (header) {\n    if (entries.length === 5 && filterKey === 'with_style_id') {\n      // /art-prints/style/impressionist/botanicals\n      const cIndex = (filters || []).findIndex(v => v.key === 'with_category_id');\n      const cHeaders = filters[cIndex].options.filter((v) => v.header).map(v => v.header);\n      const cHeader = cHeaders.find(h => h.slug === entries[4]);\n      if (cHeader) {\n        const { headerTitle: cHeaderTitle } = cHeader;\n        if (cHeaderTitle) {\n          const injectTitle = cHeaderTitle.replace(ART_PRINTS, '');\n          const { headerTitle, ...restOfHeader } = header;\n          const newTitle = `${ headerTitle.replace(ART_PRINTS, '') } ${ injectTitle }${ ART_PRINTS }`;\n          return {\n            ...restOfHeader,\n            headerTitle: newTitle\n          };\n        }\n      }\n    }\n    // /art-prints/style/impressionist\n    return header;\n  }\n\n  let cName = null;\n  const mainCategory = filters[index].options.find(\n    v => v.slug === currentId || v.id === currentId\n  );\n\n  let loadableDescription = false;\n\n  if (mainCategory) {\n    cName = mainCategory.name;\n    if (filterKey !== 'with_price') {\n      cName = `${ cName } Prints`;\n    }\n    loadableDescription = mainCategory.loadableDescription;\n  }\n\n  const { defaultHeader } = filters[index];\n  if (defaultHeader) {\n    return {\n      ...defaultHeader,\n      headerTitle: cName,\n      loadableDescription\n    };\n  }\n\n  const otherHeader = filters.find(f => f.key === WITH_CATEGORY_ID)\n    .options.find(v => v.allPrints).header;\n\n  if (filterKey === 'by_color') {\n    if (entries.length === 3 && filters[index].mapping[entries[2]]) {\n      cName = `${ entries[2].toUpperCase() } Art Prints`;\n    } else {\n      cName = ART_PRINTS;\n    }\n  }\n\n  if (otherHeader) {\n    return {\n      ...otherHeader,\n      headerTitle: cName\n    };\n  }\n\n  return {};\n};\n\nexport const mapHiddenCategory = (key) => ({ artFilters: { filters } }) => {\n  if (!(filters || []).length) { return {}; }\n  const defaultHeader = filters\n    .find(f => f.key === WITH_CATEGORY_ID).options.find(v => v[key]).header;\n  return defaultHeader;\n};\n\nconst mapStateToProps = (state, props) => dyanamicMapToProps(WITH_CATEGORY_ID)(state, props);\n\nexport default connect(mapStateToProps, {})(CategoryStyle);\n","import { connect } from 'react-redux';\nimport CategoryStyle from '../category/category_style';\nimport { mapHiddenCategory } from '../category';\n\nexport const mapStateToProps = (state) => mapHiddenCategory('allPrints')(state);\n\nexport default connect(mapStateToProps, {})(CategoryStyle);\n","// extracted by mini-css-extract-plugin\nvar _1 = \"GnTxdLjaEAveUAPAK3Vg\";\nvar _2 = \"fHvf_erHDz6DUBG_TlfU\";\nvar _3 = \"SHYWF0Nt0E1U9D9FgA7L\";\nvar _4 = \"ZH_xP52rJyit3BsoOKMV\";\nvar _5 = \"hwtBvA5Gzgvnx6eDE27P\";\nvar _6 = \"Uctz7l38jJxS11gPk0E4\";\nvar _7 = \"wiVGqipIp7M28JdA_07g\";\nvar _8 = \"tGyt_x2fGxoqlBqCw7g1\";\nexport { _1 as \"description\", _2 as \"header\", _3 as \"headerText\", _4 as \"imgD\", _5 as \"imgM\", _6 as \"imgMHolder\", _7 as \"showLess\", _8 as \"showMore\" }\n"],"names":["fetchWorksPage","buildFetchWorksPage","Constants","Works","loadWorksPageApi","fetchArtFilters","dispatch","fetchArtFiltersApi","then","data","filters","type","ArtFilters","FETCH_SUCCESS","catch","CategoryDescription","description","skipShowMore","loadadble","showMore","setShowMore","useState","renderDescription","setRenderDescription","useEffect","loadPageDescriptionApi","res","window","location","href","button","useMemo","React","className","Classes","onClick","AppClasses","classnames","ReactMarkdown","connect","mapStateToProps","works","collection","error","loading","page","totalPages","loadedAt","artFilters","gtmSection","CategoryStyle","headerTitle","desktopImageHref","mobileImageHref","color","loadableDescription","rest","theHeader","Header","title","kind","CategoryPrints","CategoryHeader","styleD","backgroundImage","styleM","bgStyle","backgroundColor","dImage","style","mImage","ART_PRINTS","dyanamicMapToProps","filterKey","pathname","entries","split","currentId","index","findIndex","v","key","header","options","filter","map","find","h","slug","length","cHeader","cHeaderTitle","injectTitle","replace","restOfHeader","cName","mainCategory","id","name","defaultHeader","otherHeader","f","WITH_CATEGORY_ID","allPrints","mapping","toUpperCase","mapHiddenCategory","state","props","_1","_2","_3","_4","_5","_6","_7","_8"],"sourceRoot":""}