{"version":3,"file":"js/4060-2a56a451e636fc0ac182.chunk.js","mappings":"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","sources":["webpack://artfully-walls/./app/javascript/arts/actions/favorites.js","webpack://artfully-walls/./app/javascript/arts/actions/relatedWorks.js","webpack://artfully-walls/./app/javascript/arts/actions/work.js","webpack://artfully-walls/./app/javascript/arts/components/AddToCart/add_button.js","webpack://artfully-walls/./app/javascript/arts/components/AddToCart/add_with_totals.js","webpack://artfully-walls/./app/javascript/arts/components/shoppable_look_assignment/index.js","webpack://artfully-walls/./app/javascript/arts/components/AddToCart/add_to_cart.js","webpack://artfully-walls/./app/javascript/arts/components/AddToCart/smart_add_to_cart.js","webpack://artfully-walls/./app/javascript/arts/components/ArtistWorks/artist_details.js","webpack://artfully-walls/./app/javascript/arts/components/Collapsible/transition.js","webpack://artfully-walls/./app/javascript/arts/components/Collapsible/styles.module.scss?1648","webpack://artfully-walls/./app/javascript/arts/components/Collapsible/index.js","webpack://artfully-walls/./app/javascript/arts/components/Delimiter/index.js","webpack://artfully-walls/./app/javascript/arts/components/Delimiter/styles.module.scss?af18","webpack://artfully-walls/./app/javascript/arts/components/PapersMenu/mount.js","webpack://artfully-walls/./app/javascript/arts/components/PapersMenu/mat_color.js","webpack://artfully-walls/./app/javascript/arts/components/PapersMenu/mounts.js","webpack://artfully-walls/./app/javascript/arts/components/PapersMenu/warning.js","webpack://artfully-walls/./app/javascript/arts/components/Radio/index.js","webpack://artfully-walls/./app/javascript/arts/components/Radio/styles.module.scss?0458","webpack://artfully-walls/./app/javascript/arts/components/Social/pin_it.js","webpack://artfully-walls/./app/javascript/arts/components/Social/styles.module.scss?b676","webpack://artfully-walls/./app/javascript/arts/components/Viewer/entry.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/eye.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/paper_view.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/preview_modal.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/scale_icon.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/utils.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/zoom.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/zoomin_icon.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/zoom_in.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/zoom_modal.js","webpack://artfully-walls/./app/javascript/arts/components/Work/bread_crumbs.js","webpack://artfully-walls/./app/javascript/arts/actions/artist.js","webpack://artfully-walls/./app/javascript/arts/components/more_artist_works/more_artist_works.js","webpack://artfully-walls/./app/javascript/arts/components/more_artist_works/index.js","webpack://artfully-walls/./app/javascript/arts/components/similar_items/index.js","webpack://artfully-walls/./app/javascript/arts/components/similar_items/styles.module.scss?21cc","webpack://artfully-walls/./app/javascript/arts/components/may_also_like/may_also_like.js","webpack://artfully-walls/./app/javascript/arts/components/may_also_like/styles.module.scss?a64d","webpack://artfully-walls/./app/javascript/arts/components/may_also_like/index.js","webpack://artfully-walls/./app/javascript/arts/components/recently_view/recently_view.js","webpack://artfully-walls/./app/javascript/arts/components/recently_view/index.js","webpack://artfully-walls/./app/javascript/arts/components/Work/more_details.js","webpack://artfully-walls/./app/javascript/arts/actions/selection.js","webpack://artfully-walls/./app/javascript/arts/components/PapersMenu/frame.js","webpack://artfully-walls/./app/javascript/arts/components/PapersMenu/select_plexi_glass.js","webpack://artfully-walls/./app/javascript/arts/components/PapersMenu/paper.js","webpack://artfully-walls/./app/javascript/arts/components/PapersMenu/header.js","webpack://artfully-walls/./app/javascript/arts/components/PapersMenu/papers_menu.js","webpack://artfully-walls/./app/javascript/arts/components/PapersMenu/index.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/thumbnails.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/box.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/image_preview.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/image_preview_switcher.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/scale_modal.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/show_to_scale.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/viewer.js","webpack://artfully-walls/./app/javascript/arts/components/Viewer/index.js","webpack://artfully-walls/./app/javascript/arts/components/WorkSummary/index.js","webpack://artfully-walls/./app/javascript/arts/components/AddToCart/index.js","webpack://artfully-walls/./app/javascript/arts/components/selection_details/entry.js","webpack://artfully-walls/./app/javascript/arts/components/selection_details/styles.module.scss?2284","webpack://artfully-walls/./app/javascript/arts/components/selection_details/selection_details.js","webpack://artfully-walls/./app/javascript/arts/components/selection_details/index.js","webpack://artfully-walls/./app/javascript/arts/components/additional_info/additional_info.js","webpack://artfully-walls/./app/javascript/arts/components/additional_info/index.js","webpack://artfully-walls/./app/javascript/arts/components/extra_info/extra_info.js","webpack://artfully-walls/./app/javascript/arts/components/extra_info/index.js","webpack://artfully-walls/./app/javascript/arts/components/Work/about_the_art.js","webpack://artfully-walls/./app/javascript/arts/components/Work/work.js","webpack://artfully-walls/./app/javascript/arts/components/Work/index.js","webpack://artfully-walls/./app/javascript/arts/components/bread_crumbs/styles.module.scss?1008","webpack://artfully-walls/./app/javascript/arts/components/bread_crumbs/index.js","webpack://artfully-walls/./app/javascript/arts/components/expandable/expandable.js","webpack://artfully-walls/./app/javascript/arts/components/expandable/styles.module.scss?1483","webpack://artfully-walls/./app/javascript/arts/components/expandable/index.js","webpack://artfully-walls/./app/javascript/arts/actions/expand.js","webpack://artfully-walls/./app/javascript/arts/components/favorite/heart_e.js","webpack://artfully-walls/./app/javascript/arts/components/favorite/heart_f.js","webpack://artfully-walls/./app/javascript/arts/components/favorite/styles.module.scss?53eb","webpack://artfully-walls/./app/javascript/arts/components/favorite/favorite.js","webpack://artfully-walls/./app/javascript/arts/selectors/favorite.js","webpack://artfully-walls/./app/javascript/arts/components/favorite/index.js","webpack://artfully-walls/./app/javascript/arts/components/small_items_carousel/styles.module.scss?bd98","webpack://artfully-walls/./app/javascript/arts/components/small_items_carousel/index.js","webpack://artfully-walls/./app/javascript/arts/actions/wall_store_items.js","webpack://artfully-walls/./app/javascript/arts/components/store_item/store_item.js","webpack://artfully-walls/./app/javascript/arts/components/store_item/styles.module.scss?c165","webpack://artfully-walls/./app/javascript/arts/components/store_item/index.js","webpack://artfully-walls/./app/javascript/arts/actions/work_store_items.js","webpack://artfully-walls/./app/javascript/arts/components/visual_search/use_window_size.js","webpack://artfully-walls/./app/javascript/arts/components/AddToCart/styles.module.scss?b550","webpack://artfully-walls/./app/javascript/arts/components/ArtistWorks/styles.module.scss?2bed","webpack://artfully-walls/./app/javascript/arts/components/PapersMenu/styles.module.scss?49a2","webpack://artfully-walls/./app/javascript/arts/components/Viewer/styles.module.scss?1f94","webpack://artfully-walls/./app/javascript/arts/components/Work/styles.module.scss?d526","webpack://artfully-walls/./app/javascript/arts/components/WorkSummary/styles.module.scss?70d8","webpack://artfully-walls/./app/javascript/arts/components/works/styles.module.scss?84aa"],"sourcesContent":["import Constants from 'arts/config/constants';\nimport {\n  addFavoriteApi,\n  removeFavoriteApi,\n  loadFavoritesApi\n} from 'arts/config/api';\n\nexport const add = (id, type) => (dispatch) => addFavoriteApi(id, type)\n  .then(\n    (favorite) => dispatch({ type: Constants.Favorites.ADD, favorite })\n  ).catch(() => {});\n\nexport const remove = (id, type) => (dispatch) => removeFavoriteApi(id, type)\n  .then(\n    () => dispatch({ type: Constants.Favorites.REMOVE, favorite: { id, type } })\n  ).catch(() => {});\n\nexport const load = () => (dispatch, getState) => {\n  if (!window.currentUser) {\n    return;\n  }\n  setTimeout(() => {\n    const { favorites: { loaded, loading } } = getState();\n    if (!loaded && !loading) {\n      dispatch({ type: Constants.Favorites.LOAD });\n      loadFavoritesApi().then((favorites) => dispatch({\n        type: Constants.Favorites.LOADED,\n        favorites\n      })).catch(() => {});\n    }\n  }, 0);\n};\n","import Constants from 'arts/config/constants';\nimport { loadAdditionalWorks, loadRecentWorks } from 'arts/config/api';\n\n// YOU MAY ALSO LIKE\nconst loadAlsoLikeStart = () => ({\n  type: Constants.RelatedWorks.LOAD_ALSO_LIKE_START\n});\n\nconst loadAlsoLikeSuccess = (data) => ({\n  type: Constants.RelatedWorks.LOAD_ALSO_LIKE_SUCCESS,\n  data\n});\n\nconst loadAlsoLikeFailure = (error) => ({\n  type: Constants.RelatedWorks.LOAD_ALSO_LIKE_FAILURE,\n  error\n});\n\nexport const loadAlsoLike = (sourceId) => (dispatch) => {\n  dispatch(loadAlsoLikeStart());\n  loadAdditionalWorks(sourceId).then(\n    (data) => dispatch(loadAlsoLikeSuccess(data)),\n    (error) => dispatch(loadAlsoLikeFailure(error))\n  );\n};\n\n// RECENTLY VIEW\nconst loadRecentlyViewStart = () => ({\n  type: Constants.RelatedWorks.LOAD_RECENTLY_VIEW_START\n});\n\nconst loadRecentlyViewSuccess = (data) => ({\n  type: Constants.RelatedWorks.LOAD_RECENTLY_VIEW_SUCCESS,\n  data\n});\n\nconst loadRecentlyViewFailure = (error) => ({\n  type: Constants.RelatedWorks.LOAD_RECENTLY_VIEW_FAILURE,\n  error\n});\n\nexport const loadRecentlyView = (ids) => (dispatch) => {\n  dispatch(loadRecentlyViewStart());\n  loadRecentWorks(ids).then(\n    (data) => dispatch(loadRecentlyViewSuccess(data)),\n    (error) => dispatch(loadRecentlyViewFailure(error))\n  );\n};\n\nexport const setRecentWorkIds = (ids) => ({\n  type: Constants.RelatedWorks.SET_RECENTLY_VIEWED,\n  ids\n});\n","import Constants from 'arts/config/constants';\nimport { loadWork } from 'arts/config/api';\nimport { setRecentWorkIds } from './relatedWorks';\n\nconst fetchWorkStart = (id, detail) => ({\n  type: Constants.Work.FETCH,\n  id,\n  detail\n});\n\nconst fetchWorkSuccess = (data) => ({\n  type: Constants.Work.FETCH_SUCCESS,\n  data\n});\n\nconst fetchWorkFailure = (error) => ({\n  type: Constants.Work.FETCH_FAILURE,\n  error\n});\n\nexport const fetchWork = (id, detail = {}) => (dispatch) => {\n  dispatch(fetchWorkStart(id, detail));\n\n  loadWork(id).then(\n    (data) => {\n      const { recentWorkIds, ...rest } = data;\n      dispatch(fetchWorkSuccess(rest));\n      if (recentWorkIds && recentWorkIds.length) {\n        dispatch(setRecentWorkIds(recentWorkIds));\n      }\n    },\n    (error) => dispatch(fetchWorkFailure(error))\n  );\n};\n","import React from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport * as Classes from './styles.module.scss';\n\nconst AddButton = ({\n  doAddToCart,\n  adding,\n  added\n}) => {\n  const onAddToCart = () => {\n    if (adding) { return; }\n    doAddToCart();\n  };\n\n  let text = <span>add to cart</span>;\n\n  if (!added && adding) {\n    text = (\n      <div className={ Classes.bl }>\n        <div className={ Classes.b1 } />\n        <div className={ Classes.b2 } />\n        <div className={ Classes.b3 } />\n      </div>\n    );\n  } else if (added) {\n    text = (\n      <span>added</span>\n    );\n  }\n\n  return (\n    <button\n      type=\"button\"\n      className={ classnames(Classes.button, { [Classes.adding]: adding || added }) }\n      onClick={ onAddToCart }\n    >\n      { text }\n    </button>\n  );\n};\n\nAddButton.propTypes = {\n  doAddToCart: PropTypes.func.isRequired,\n  adding: PropTypes.bool.isRequired,\n  added: PropTypes.bool.isRequired\n};\n\nexport default AddButton;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { MODAL_SELECTOR } from 'arts/config/constants';\nimport AddButton from './add_button';\nimport Modal from '../Modal';\n\nimport * as AppClasses from '../Application/styles.module.scss';\nimport * as CheckoutStyles from '../checkout/styles.module.scss';\nimport * as Classes from './styles.module.scss';\n\nconst AddWithTotals = ({\n  hasSelection,\n  price,\n  currency,\n  frameId,\n  workId,\n  paperId,\n  originalArtId,\n  addArtToCart,\n  addOriginalArtToCart,\n  adding,\n  added,\n  nonGlare,\n  allowQnty\n}) => {\n  const [qnty, setQnty] = useState(1);\n  const [showWarning, setShowWarning] = useState(false);\n  const [showEmpty, setShowEmpty] = useState(false);\n\n  const limitQnty = (value, force = true) => {\n    if (!value && !force) { return value; }\n    if (value < 1) { return 1; }\n    if (value > window.maxQnty) { return window.maxQnty; }\n    return value;\n  };\n\n  const add = () => setQnty(prev => limitQnty((prev || 0) + 1, true));\n  const remove = () => setQnty(prev => limitQnty((prev || 2) - 1, true));\n  const hideWarning = () => setShowWarning(false);\n  const hideEmpty = () => setShowEmpty(false);\n\n  const onQntyChanged = (event) => setQnty(limitQnty(parseInt(event.target.value, 10)));\n\n  const doAddToCart = () => {\n    if (originalArtId) {\n      addOriginalArtToCart({ originalArtId });\n      return;\n    }\n    if (!qnty) {\n      setShowEmpty(true);\n      return;\n    }\n    if (qnty > 1) {\n      setShowWarning(true);\n      return;\n    }\n    addArtToCart({\n      frameId, paperId, workId, qnty, nonGlare\n    });\n  };\n\n  const hideWarningAndAddToCart = () => {\n    hideWarning();\n    addArtToCart({\n      frameId, paperId, workId, qnty, nonGlare\n    });\n  };\n\n  return (\n    <>\n      {\n        showWarning ? (\n          <Modal\n            selector={ MODAL_SELECTOR }\n            onCancel={ hideWarningAndAddToCart }\n            className={ classnames(AppClasses.thanksForAction, Classes.warning) }\n          >\n            <p>\n              Please note that you are adding multiple\n              <br />\n              versions of this item to your cart.\n            </p>\n            <div className={ Classes.buttonHolder }>\n              <button\n                type=\"button\"\n                className={ CheckoutStyles.applyButton }\n                onClick={ hideWarningAndAddToCart }\n              >\n                OK\n              </button>\n            </div>\n          </Modal>\n        ) : null\n      }\n      {\n        showEmpty ? (\n          <Modal\n            selector={ MODAL_SELECTOR }\n            onCancel={ hideEmpty }\n            className={ classnames(AppClasses.thanksForAction, Classes.warning) }\n          >\n            <p>\n              Please select the number of items to add to your cart.\n            </p>\n            <div className={ Classes.buttonHolder }>\n              <button\n                type=\"button\"\n                className={ CheckoutStyles.applyButton }\n                onClick={ hideEmpty }\n              >\n                OK\n              </button>\n            </div>\n          </Modal>\n\n        ) : null\n      }\n      <div className={ Classes.total }>\n        {\n          hasSelection && currency ? (\n            <>\n              Total:&nbsp;\n              { currency }\n              { Math.abs(price * (qnty || 1)).toFixed(2) }\n            </>\n          ) : ''\n        }\n      </div>\n      <div className={ Classes.buttonContainer }>\n        {\n          allowQnty ? (\n            <div className={ classnames(Classes.qnty, { [Classes.adding]: adding }) }>\n              <button className={ Classes.qntyButton } type=\"button\" onClick={ remove }>\n                -\n              </button>\n              <input\n                className={ Classes.qntyInput }\n                type=\"text\"\n                value={ qnty || '' }\n                onChange={ onQntyChanged }\n              />\n              <button className={ Classes.qntyButton } type=\"button\" onClick={ add }>\n                +\n              </button>\n            </div>\n          ) : null\n        }\n        <AddButton\n          doAddToCart={ doAddToCart }\n          adding={ adding || !hasSelection || !currency }\n          added={ added }\n        />\n      </div>\n    </>\n  );\n};\n\nAddWithTotals.propTypes = {\n  price: PropTypes.number,\n  currency: PropTypes.string,\n  frameId: PropTypes.number,\n  workId: PropTypes.number,\n  paperId: PropTypes.number,\n  originalArtId: PropTypes.number,\n  addArtToCart: PropTypes.func.isRequired,\n  addOriginalArtToCart: PropTypes.func.isRequired,\n  adding: PropTypes.bool.isRequired,\n  added: PropTypes.bool.isRequired,\n  allowQnty: PropTypes.bool.isRequired,\n  nonGlare: PropTypes.bool,\n  hasSelection: PropTypes.bool\n};\n\nexport default AddWithTotals;\n","import React, { Suspense  } from 'react';\n\nconst ShoppableLookAssignment = React.lazy(() => import('./shoppable_look_assignment'));\n\nexport default (props) => (\n  <Suspense fallback={ <div>Loading...</div> }>\n    <ShoppableLookAssignment { ...props } />\n  </Suspense>\n);\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, { useEffect } from 'react';\nimport T from 'prop-types';\nimport classnames from 'classnames';\nimport * as Classes from './styles.module.scss';\nimport { WorkStoreItem } from '../store_item';\nimport AddWithTotals from './add_with_totals';\nimport ShoppableLookAssignment from '../shoppable_look_assignment';\n\nexport const currentPriceAndNonGlare = ({ frame, nonGlare }, priceKey) => ({\n  [priceKey]: frame ? parseFloat((nonGlare ? frame.nonGlarePrice : frame.price), 10) : null,\n  nonGlare: nonGlare || false\n});\n\nexport const AffirmPromo = ({ price, currency, onWall }) => {\n  if (window.minAffirmAmount) {\n    useEffect(() => {\n      if (window.affirm && window.affirm.ui && window.affirm.ui.ready) {\n        window.affirm.ui.ready(() => {\n          window.affirm.ui.refresh();\n        });\n      }\n    }, [price, currency]);\n  }\n\n  if (!currency || !window.minAffirmAmount || price < window.minAffirmAmount) {\n    return null;\n  }\n\n  return (\n    <div className={ classnames(Classes.affirmPromo, { [Classes.onWall]: onWall }) }>\n      <p className=\"affirm-as-low-as\" data-page-type=\"payment\" data-amount={ price * 100 } />\n    </div>\n  );\n};\n\nAffirmPromo.propTypes = {\n  price: T.number.isRequired,\n  onWall: T.bool,\n  currency: T.string\n};\n\nconst AddToCart = ({\n  price, inStock, selection, frameId, workId,\n  paperId, originalArtId, addRemoveFromStore, storeItemId,\n  addArtToCart, addOriginalArtToCart,\n  currency, adding, added,\n  allowQnty, nonGlare\n}) => {\n  let status = (\n    <AddWithTotals\n      hasSelection={ !!selection }\n      price={ price }\n      currency={ currency }\n      frameId={ frameId }\n      workId={ workId }\n      paperId={ paperId }\n      originalArtId={ originalArtId }\n      addArtToCart={ addArtToCart }\n      addOriginalArtToCart={ addOriginalArtToCart }\n      adding={ adding }\n      added={ added }\n      allowQnty={ allowQnty }\n      nonGlare={ nonGlare }\n    />\n  );\n  if (inStock === false) {\n    status = (\n      <div className={ Classes.soldOut }>\n        Sold Out\n      </div>\n    );\n  }\n  return (\n    <>\n      <div className={ Classes.barHolder }>\n        <div className={ Classes.bar }>\n          { status }\n        </div>\n      </div>\n      { selection && inStock ? <AffirmPromo price={ price } currency={ currency } /> : null }\n      {\n        addRemoveFromStore ? (\n          <div className={ Classes.storeItem }>\n            <WorkStoreItem\n              storeItemId={ storeItemId }\n              workId={ workId }\n              frameId={ frameId }\n              paperId={ paperId }\n            />\n          </div>\n        ) : null\n      }\n      { window.hasELinks ? (\n        <ShoppableLookAssignment\n          workId={ workId }\n          frameId={ frameId }\n          originalArtId={ originalArtId }\n          paperId={ paperId }\n        />\n      ) : null }\n    </>\n  );\n};\n\nAddToCart.propTypes = {\n  price: T.number,\n  currency: T.string,\n  inStock: T.bool,\n  selection: T.bool,\n  frameId: T.number,\n  workId: T.number,\n  paperId: T.number,\n  originalArtId: T.number,\n  addRemoveFromStore: T.bool,\n  storeItemId: T.number,\n  addArtToCart: T.func.isRequired,\n  addOriginalArtToCart: T.func.isRequired,\n  adding: T.bool.isRequired,\n  added: T.bool.isRequired,\n  allowQnty: T.bool.isRequired,\n  nonGlare: T.bool\n};\n\nexport default AddToCart;\n","import { connect } from 'react-redux';\nimport { addArtToCart, addOriginalArtToCart } from 'arts/actions/cart_items';\nimport AddToCart from './add_to_cart';\n\nconst mapStateToProps = ({ cartItems: { adding, added } }) => ({ added, adding });\n\nexport default connect(mapStateToProps, {\n  addArtToCart, addOriginalArtToCart\n})(AddToCart);\n","import React from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport * as Classes from './styles.module.scss';\n\nexport const renderText = (title, text, hasImages = false, renderEmpty = false) => {\n  if (!text && !renderEmpty) { return null; }\n  return (\n    <div className={ Classes.section }>\n      {\n        title || renderEmpty ? (\n          <div className={ Classes.title }>\n            { title }\n            &nbsp;\n          </div>\n        ) : null\n      }\n      <div className={ classnames(Classes.content, { [Classes.withImages]: hasImages }) }>\n        { text }\n      </div>\n    </div>\n  );\n};\n\nconst renderArray = (title, texts) => {\n  if (!texts || !texts.length) { return null; }\n  return (\n    <div className={ Classes.section }>\n      <div className={ Classes.title }>{ title }</div>\n      <div className={ Classes.content }>{ texts.join('\\n') }</div>\n    </div>\n  );\n};\n\n/* eslint-disable jsx-a11y/anchor-is-valid */\nconst ArtistDetails = ({\n  background, exhibitions, statement, styles\n}) => (\n  <div className={ Classes.author }>\n    <a name=\"profile\" key=\"a\" />\n    <div className={ Classes.details }>\n      <div className={ Classes.column }>\n        { renderText('Background', background) }\n        { renderText('Statement', statement) }\n        {\n          styles && styles.length ? (\n            <div className={ classnames(Classes.styles, Classes.content) }>\n              Art Style Emphasis:&nbsp;\n              {\n                styles.map(({ name, path }, index) => (\n                  <span key={ index }>\n                    <Link key={ index } to={ path }>{ name }</Link>\n                    { index < styles.length - 1 ? (<>,&nbsp;</>) : null }\n                  </span>\n                ))\n              }\n            </div>\n          ) : null\n        }\n      </div>\n      <div className={ Classes.column }>\n        { renderArray('Selected Exhibitions', exhibitions) }\n      </div>\n    </div>\n  </div>\n);\n/* eslint-enable jsx-a11y/anchor-is-valid */\n\nArtistDetails.propTypes = {\n  background: PropTypes.string,\n  exhibitions: PropTypes.arrayOf(PropTypes.string),\n  statement: PropTypes.string,\n  styles: PropTypes.array\n};\n\nexport default ArtistDetails;\n","import React, { PureComponent } from 'react';\nimport T from 'prop-types';\n\nimport * as Classes from './styles.module.scss';\n\nclass Transition extends PureComponent {\n  static propTypes = {\n    children: T.node,\n    collapsed: T.bool\n  };\n\n  constructor(props) {\n    super(props);\n\n    const { collapsed } = props;\n\n    this.state = {\n      initiallyCollapsed: collapsed\n    };\n\n    this.setRootRef = this.setRootRef.bind(this);\n    this.onTransitionEnd = this.onTransitionEnd.bind(this);\n  }\n\n  componentDidUpdate(prevProps) {\n    const { collapsed } = this.props;\n\n    if (collapsed && !prevProps.collapsed) {\n      this.hide();\n    } else if (!collapsed && prevProps.collapsed) {\n      this.open();\n    }\n  }\n\n  componentWillUnmount() {\n    this.cancelAnimations();\n  }\n\n  onTransitionEnd() {\n    this.rootRef.removeEventListener('transitionend', this.onTransitionEnd);\n    this.rootRef.style.maxHeight = 'none';\n    this.rootRef.style.overflow = 'visible';\n  }\n\n  setRootRef(ref) {\n    this.rootRef = ref;\n  }\n\n  hide() {\n    this.cancelAnimations();\n    this.rootRef.style.maxHeight = `${ this.rootRef.scrollHeight }px`;\n    this.rootRef.style.overflow = 'hidden';\n\n    this.raf = window.requestAnimationFrame(() => {\n      this.raf = window.requestAnimationFrame(() => {\n        this.rootRef.style.maxHeight = '0';\n      });\n    });\n  }\n\n  open() {\n    this.cancelAnimations();\n    this.rootRef.addEventListener('transitionend', this.onTransitionEnd);\n    this.rootRef.style.maxHeight = `${ this.rootRef.scrollHeight }px`;\n  }\n\n  cancelAnimations() {\n    this.rootRef.removeEventListener('transitionend', this.onTransitionEnd);\n    window.cancelAnimationFrame(this.raf);\n  }\n\n  render() {\n    const { children } = this.props;\n    const { initiallyCollapsed } = this.state;\n    const className = `\n      ${ initiallyCollapsed ? Classes.collapsed : '' }\n      ${ Classes.transitionRoot }\n    `;\n\n    return (\n      <div\n        ref={ this.setRootRef }\n        className={ className }\n      >\n        { children }\n      </div>\n    );\n  }\n}\n\nexport default Transition;\n","// extracted by mini-css-extract-plugin\nvar _1 = \"jyMesdPFVESQIC5kYbZy\";\nvar _2 = \"foEnQfOaGdgUVv6Jyw3l\";\nvar _3 = \"jTDgLGJ9rWSeuXoj46Ge\";\nexport { _1 as \"collapsed\", _2 as \"root\", _3 as \"transitionRoot\" }\n","import React from 'react';\nimport T from 'prop-types';\n\nimport Transition from './transition';\nimport * as Classes from './styles.module.scss';\n\nconst Collapsible = ({ children, collapsed }) => (\n  <section className={ Classes.root }>\n    <Transition collapsed={ collapsed }>\n      { children }\n    </Transition>\n  </section>\n);\n\nCollapsible.propTypes = {\n  children: T.node,\n  collapsed: T.bool\n};\n\nexport default Collapsible;\n","import React from 'react';\nimport T from 'prop-types';\nimport * as Classes from './styles.module.scss';\n\nconst Delimiter = ({ notop }) => (\n  <div className={ notop ? Classes.notop : Classes.root } />\n);\n\nDelimiter.propTypes = {\n  notop: T.bool\n};\n\nexport default Delimiter;\n","// extracted by mini-css-extract-plugin\nvar _1 = \"LGUXzLinhEdt5zdVBA7j\";\nvar _2 = \"DLVqlLDtibgYdm6zMFAR\";\nexport { _1 as \"notop\", _2 as \"root\" }\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Radio from 'arts/components/Radio';\nimport * as Classes from './styles.module.scss';\n\nconst Mount = ({\n  isSelected, kind, name, description, onSelect, paperId, postFix, children\n}) => {\n  const radioId = `MountRadioControl-${ paperId }-${ kind }`;\n  const radioName = `MountRadioControl-${ paperId }-${ postFix }`;\n\n  return (\n    <div key={ kind }>\n      <label\n        htmlFor={ radioId }\n        key={ kind }\n      >\n        <div className={ Classes.mountOption }>\n          <Radio\n            type=\"radio\"\n            value={ kind }\n            checked={ isSelected }\n            onChange={ onSelect }\n            id={ radioId }\n            name={ radioName }\n          />\n\n          <div className={ Classes.mount }>\n            { name }\n            <span>\n              { description }\n            </span>\n          </div>\n        </div>\n      </label>\n      { children }\n    </div>\n  );\n};\n\nMount.propTypes = {\n  isSelected: PropTypes.bool.isRequired,\n  kind: PropTypes.string.isRequired,\n  name: PropTypes.string.isRequired,\n  description: PropTypes.string.isRequired,\n  onSelect: PropTypes.func.isRequired,\n  paperId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n  postFix: PropTypes.string,\n  children: PropTypes.node\n};\n\nexport default Mount;\n","import React, { useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport * as Classes from './styles.module.scss';\n\nconst MatColor = ({\n  isSelected, kind, onSelect, paperId, postFix, colorRgb, name\n}) => {\n  const radioId = `MountRadioControl-${ paperId }-${ kind }`;\n  const radioName = `MountRadioControl-${ paperId }-${ postFix }`;\n\n  const ref = useRef(null);\n\n  const onClick = (e) => {\n    e.preventDefault();\n    ref.current.click();\n  };\n\n  return (\n    <div key={ kind }>\n      <button\n        type=\"button\"\n        aria-label={ name }\n        className={\n          classnames(Classes.matColorHolder, { [Classes.matColorSelected]: isSelected })\n        }\n        onClick={ onClick }\n      >\n        <div className={ Classes.matColor } style={ { backgroundColor: `rgb(${ colorRgb.join(',') })` } } />\n      </button>\n      <input\n        className={ Classes.matColorInput }\n        type=\"radio\"\n        value={ kind }\n        checked={ isSelected }\n        onChange={ onSelect }\n        id={ radioId }\n        name={ radioName }\n        ref={ ref }\n      />\n    </div>\n  );\n};\n\nMatColor.propTypes = {\n  isSelected: PropTypes.bool.isRequired,\n  kind: PropTypes.string.isRequired,\n  onSelect: PropTypes.func.isRequired,\n  paperId: PropTypes.string.isRequired,\n  postFix: PropTypes.string.isRequired,\n  colorRgb: PropTypes.array.isRequired,\n  name: PropTypes.string.isRequired\n};\n\nexport default MatColor;\n","import React, { useMemo } from 'react';\nimport T from 'prop-types';\n\nimport * as Classes from './styles.module.scss';\nimport Mount from './mount';\nimport MatColor from './mat_color';\n\nexport const FULL_BLEED = 'fullBleed';\nexport const MATTE = 'matte';\nexport const FLOAT_DECKLED = 'dckl';\nexport const FLOAT_STRIGHT = 'fltn';\nexport const FLOATING = 'floating';\n\nexport const MAT_COLORS_ORDER = ['White', 'Deep Red', 'Indigo', 'Moss Point Green'];\n\nexport const mat = () => (window.currentLocale.currentLocale === 'en' ? '2.75\"' : '7cm');\nconst matteText = (caps) => (caps ? 'M' : 'm') + (window.currentLocale.currentLocale === 'en' ? 'atte' : 'ount');\n\nconst VALID_MOUNT_KINDS = [MATTE, FULL_BLEED, FLOAT_STRIGHT, FLOAT_DECKLED];\n\nconst Mounts = ({\n  onSelect, selectedMount, selectedMatColor, paperId, matte,\n  fullBleed, dckl, fltn, matColors, matColorsRgb\n}) => {\n  const onChange = (e) => {\n    const { value } = e.target;\n    if (value === FLOATING) {\n      onSelect(FLOAT_STRIGHT, null);\n    } else if (value === MATTE) {\n      onSelect(MATTE, selectedMatColor);\n    } else if (value.indexOf(';') > -1) {\n      const [kind, color] = value.split(';');\n      onSelect(kind, color);\n    } else {\n      onSelect(value, selectedMatColor);\n    }\n  };\n\n  const renderMatte = useMemo(() => {\n    const description = selectedMatColor\n      ? ` - ${ mat() } wide, ${ selectedMatColor } matboard, buffered for extended life`\n      : ` - ${ mat() } wide matboard, buffered for extended life`;\n    if (matte) {\n      return (\n        <Mount\n          kind={ MATTE }\n          name={ `With ${ matteText(true) }` }\n          description={ description }\n          onSelect={ onChange }\n          paperId={ paperId }\n          isSelected={ selectedMount === MATTE }\n        >\n          <div className={ Classes.matColors }>\n            { MAT_COLORS_ORDER.map((color) => (\n              (matColors.includes(color) ? (\n                <MatColor\n                  name={ `${ color } ${ matteText(true) }` }\n                  kind={ `${ MATTE };${ color }` }\n                  onSelect={ onChange }\n                  paperId={ paperId }\n                  isSelected={ selectedMount === MATTE && selectedMatColor === color }\n                  postFix={ color }\n                  colorRgb={ matColorsRgb[matColors.indexOf(color)] }\n                />\n              ) : null)\n            )) }\n          </div>\n        </Mount>\n      );\n    }\n    return null;\n  }, [matte, matColors, selectedMatColor, selectedMount]);\n\n  const renderFillBleed = useMemo(() => {\n    if (fullBleed) {\n      return (\n        <Mount\n          kind={ FULL_BLEED }\n          name={ `No ${ matteText(true) }` }\n          description={ ` - no ${ matteText(false) } or border, image is flush to frame` }\n          onSelect={ onChange }\n          paperId={ paperId }\n          isSelected={ selectedMount === FULL_BLEED }\n        />\n      );\n    }\n    return null;\n  }, [fullBleed, selectedMount, matColors, selectedMatColor]);\n\n  const renderFloating = useMemo(() => {\n    if (dckl || fltn) {\n      return (\n        <Mount\n          kind={ FLOATING }\n          name=\"Float Mount\"\n          description=\"- image floated on 1.25&quot; wide white matte\"\n          onSelect={ onChange }\n          paperId={ paperId }\n          isSelected={ selectedMount === FLOAT_STRIGHT || selectedMount === FLOAT_DECKLED }\n        >\n          <div className={ Classes.floatForm }>\n            { fltn && (\n              <Mount\n                kind={ FLOAT_STRIGHT }\n                name=\"Straight Edge\"\n                description=\" - straight paper edges\"\n                onSelect={ onChange }\n                paperId={ paperId }\n                isSelected={ selectedMount === FLOAT_STRIGHT }\n                postFix=\"float\"\n              />\n            ) }\n            { dckl && (\n              <Mount\n                kind={ FLOAT_DECKLED }\n                name=\"Deckled Edge\"\n                description=\" - rough paper edges\"\n                onSelect={ onChange }\n                paperId={ paperId }\n                isSelected={ selectedMount === FLOAT_DECKLED }\n                postFix=\"float\"\n              />\n            ) }\n          </div>\n        </Mount>\n      );\n    }\n    return null;\n  }, [dckl, fltn, selectedMount, matColors, selectedMatColor]);\n\n  return (\n    <form className={ Classes.mounts }>\n      { renderMatte }\n      { renderFillBleed }\n      { renderFloating }\n    </form>\n  );\n};\n\nMounts.propTypes = {\n  onSelect: T.func.isRequired,\n  selectedMount: T.oneOf(VALID_MOUNT_KINDS),\n  selectedMatColor: T.string,\n  paperId: T.oneOfType([T.number, T.string]).isRequired,\n  matte: T.bool,\n  fullBleed: T.bool,\n  dckl: T.bool,\n  fltn: T.bool,\n  matColors: T.arrayOf(T.string),\n  matColorsRgb: T.arrayOf(T.arrayOf(T.number))\n};\n\nexport default Mounts;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport * as Classes from './styles.module.scss';\n\nconst Warning = ({ warning, flat }) => (\n  warning ? (\n    <div className={ classnames(Classes.warning, { [Classes.flatWarning]: flat }) }>\n      { warning }\n    </div>\n  ) : null\n);\n\nWarning.propTypes = {\n  warning: PropTypes.string,\n  flat: PropTypes.bool\n};\n\nexport default Warning;\n","import React from 'react';\nimport T from 'prop-types';\nimport * as Classes from './styles.module.scss';\n\nconst Radio = (props) => (\n  <div className={ Classes.radio }>\n    <input\n      type=\"radio\"\n      { ...props }\n    />\n    <span />\n  </div>\n);\nRadio.propTypes = {\n  checked: T.bool,\n  id: T.oneOfType([T.string, T.number])\n};\nexport default Radio;\n","// extracted by mini-css-extract-plugin\nvar _1 = \"_nayueMnaS3n4G3LaZXg\";\nexport { _1 as \"radio\" }\n","import React from 'react';\nimport T from 'prop-types';\nimport * as Classes from './styles.module.scss';\n\nconst PinIt = ({ href, imageUrl, description }) => {\n  if (!window.allowSharing) { return null; }\n\n  const onClick = (e) => {\n    e.preventDefault();\n    if (window.PinUtils) {\n      window.PinUtils.pinOne({\n        url: href,\n        media: imageUrl,\n        description\n      });\n    }\n  };\n\n  return (\n    // eslint-disable-next-line jsx-a11y/anchor-is-valid\n    <a href=\"#\" className={ Classes.pinClass } onClick={ onClick }>\n      <img\n        src=\"//assets.pinterest.com/images/pidgets/pinit_fg_en_round_red_32.png\"\n        alt=\"PinIt\"\n        width=\"16px\"\n        height=\"16px\"\n      />\n    </a>\n  );\n};\n\nPinIt.propTypes = {\n  href: T.string,\n  imageUrl: T.string,\n  description: T.string\n};\n\nexport default PinIt;\n","// extracted by mini-css-extract-plugin\nvar _1 = \"KEyrofTPyAhIimrsHvwT\";\nvar _2 = \"OcT7WzKypu5O5gCStFrO\";\nexport { _1 as \"letter\", _2 as \"pinClass\" }\n","import React from 'react';\nimport classnames from 'classnames';\nimport T from 'prop-types';\nimport * as Classes from './styles.module.scss';\n\nconst Entry = ({\n  url, index, selectedIndex, onClick, className\n}) => {\n  const klass = selectedIndex === index ? Classes.selected : '';\n  const onSelect = () => onClick(index);\n  return (\n    <div\n      className={ classnames(Classes.entry, klass, className) }\n      onClick={ onSelect }\n    >\n      <img src={ url } alt=\"\" />\n    </div>\n  );\n};\n\nEntry.propTypes = {\n  url:  T.string.isRequired,\n  index: T.number.isRequired,\n  selectedIndex: T.number.isRequired,\n  onClick: T.func.isRequired,\n  className: T.string\n};\n\nexport default Entry;\n","import React from 'react';\n\nconst SvgComponent = (props) => (\n  <svg viewBox=\"0 0 20 20\" { ...props } width={ 20 } height={ 20 }>\n    <g clipPath=\"url(#clip0_165_166)\">\n      <rect width=\"20\" height=\"20\" fill=\"white\" fillOpacity=\"0.5\" />\n      <path d=\"M8 3H4C3.44772 3 3 3.44772 3 4V8H4V4H8V3Z\" fill=\"black\" fillOpacity=\"0.5\" />\n      <path d=\"M12.1959 4H16V8H17V4C17 3.44772 16.5523 3 16 3H12.1959V4Z\" fill=\"black\" fillOpacity=\"0.5\" />\n      <path d=\"M16 16V12.1959H17V16C17 16.5523 16.5523 17 16 17H12.1959V16H16Z\" fill=\"black\" fillOpacity=\"0.5\" />\n      <path d=\"M8 16H4V12H3V16C3 16.5523 3.44772 17 4 17H8V16Z\" fill=\"black\" fillOpacity=\"0.5\" />\n      <path d=\"M12 10C12 11.1046 11.1046 12 10 12C8.89543 12 8 11.1046 8 10C8 8.89543 8.89543 8 10 8C11.1046 8 12 8.89543 12 10Z\" fill=\"#110000\" fillOpacity=\"0.5\" />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_165_166\">\n        <rect width=\"20\" height=\"20\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n);\n\nexport default SvgComponent;\n","import React from 'react';\nimport T from 'prop-types';\nimport classnames from 'classnames';\n\nimport Zoom from './zoom';\nimport * as Classes from './styles.module.scss';\n\nimport { FLOAT_DECKLED, FLOAT_STRIGHT } from '../PapersMenu/mounts';\n\nconst PaperView = ({\n  width, height, borderH, borderW, backgroundImage, unframed,\n  frameThicknessH, frameThicknessV, zoomPreviewUrl, imageUrl, title,\n  mount, isTapestry, frameMatColorRgb\n}) => {\n  const styles = { flexBasis: width, height };\n  if (backgroundImage) {\n    styles.backgroundImage = `url(${ backgroundImage })`;\n  }\n  const innerStyle = {\n    paddingTop: `${ borderH }%`,\n    paddingBottom: `${ borderH }%`,\n    paddingLeft: `${ borderW }%`,\n    paddingRight: `${ borderW }%`\n  };\n\n  const paperClass = unframed ? Classes.externalShadow : '';\n  const frameClass = backgroundImage ? Classes.externalShadow : '';\n\n  let frameShadow = null;\n  let imageClassName = null;\n  const isFloat = FLOAT_DECKLED === mount || FLOAT_STRIGHT === mount;\n  if (frameThicknessH && !isFloat && !isTapestry) {\n    const frameShadowStyle = {\n      top: `${ frameThicknessV }%`,\n      right: `${ frameThicknessH }%`,\n      bottom: `${ frameThicknessV }%`,\n      left: `${ frameThicknessH }%`\n    };\n    if (frameMatColorRgb) {\n      frameShadowStyle.backgroundColor = `rgb(${ frameMatColorRgb.join(',') })`;\n      imageClassName = Classes.workImageFramed;\n    }\n    frameShadow = <div className={ Classes.frameShadow } style={ frameShadowStyle } />;\n  }\n\n  return (\n    <Zoom\n      style={ styles }\n      className={ classnames(Classes.paper, frameClass) }\n      zoomPreviewUrl={ zoomPreviewUrl }\n    >\n      <div style={ innerStyle } className={ paperClass }>\n        { frameShadow }\n        <img\n          src={ imageUrl }\n          alt={ title }\n          className={ imageClassName }\n          width=\"100%\"\n          height=\"100%\"\n        />\n      </div>\n    </Zoom>\n  );\n};\n\nPaperView.propTypes = {\n  width: T.string,\n  height: T.string,\n  borderH: T.number,\n  borderW: T.number,\n  imageUrl: T.string,\n  backgroundImage: T.string,\n  zoomPreviewUrl: T.string,\n  title: T.string,\n  landscape: T.bool,\n  unframed: T.bool.isRequired,\n  frameThicknessV: T.number,\n  frameThicknessH: T.number,\n  mount: T.string,\n  isTapestry: T.bool,\n  frameMatColorRgb: T.array\n};\n\nexport default  PaperView;\n","import React from 'react';\nimport T from 'prop-types';\nimport { MODAL_LEVEL2_SELECTOR } from 'arts/config/constants';\nimport Modal from 'arts/components/Modal';\n\nconst PreviewModal = ({\n  onHide, children, className, contentOptions\n}) => (\n  <Modal\n    selector={ MODAL_LEVEL2_SELECTOR }\n    onCancel={ onHide }\n    className={ className }\n    contentOptions={ contentOptions }\n  >\n    { children }\n  </Modal>\n);\n\nPreviewModal.propTypes = {\n  onHide: T.func,\n  children: T.node,\n  className: T.string,\n  contentOptions: T.object\n};\n\nexport default PreviewModal;\n","import React from 'react';\n\nconst ScaleIcon = (props) => (\n  <svg\n    viewBox=\"0 0 108 78\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    { ...props }\n  >\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M55.876 0H22.112C16.695 0 5.857 3.523 5.857 17.613c0 1.258 0 3.774 10.004 3.774 5.97 0 6.24 6.651 6.252 23.895 0 1.39 1.12 2.524 2.502 2.524H83.386c1.382 0 2.501-1.134 2.502-2.524.012-17.244.282-23.895 6.252-23.895 10.004 0 10.004-2.516 10.004-3.774C102.144 3.523 91.306 0 85.887 0H55.877ZM20.862 64.161c-10.004 0-15.006-5.032-18.757-13.838-4.672-10.97-.93-21.914 5.002-23.904 3.751-1.258 8.753 0 8.753 6.29 0 .361-.01.88-.024 1.517-.077 3.806-.24 11.79 1.275 14.839 1.25 2.516 4.585 2.516 5.002 2.516h63.774c.417 0 3.752 0 5.002-2.517 1.515-3.048 1.352-11.032 1.275-14.838a86.397 86.397 0 0 1-.024-1.516c0-6.29 5.002-7.549 8.753-6.29 5.932 1.989 9.674 12.932 5.002 23.903-3.751 8.806-10.004 13.838-18.757 13.838 0 1.678 2.5 5.033 6.252 6.29 3.752 1.259 5.002 6.29 2.501 7.549h-7.503L77.134 64.161H30.866L19.612 78h-7.503c-2.501-1.258-1.25-6.29 2.5-7.548 3.752-1.258 6.253-4.613 6.253-6.29Z\"\n    />\n  </svg>\n);\n\nexport default ScaleIcon;\n","export const calculatePaperProps = ({\n  paperHeight,\n  paperWidth,\n  printHeight,\n  printWidth,\n  landscape,\n  useWidth\n}) => {\n  let width;\n  let height;\n  let borderH;\n  let borderW;\n  const ratio = (100 * paperHeight) / paperWidth;\n  if (landscape) {\n    width = '100%';\n    height = `${ ratio }%`;\n    const dH = (100 * ((paperHeight - printHeight) / 2)) / paperWidth;\n    const dW = (100 * ((paperWidth - printWidth) / 2)) / paperWidth;\n    borderH = dH;\n    borderW = dW;\n  } else {\n    width = `${ ratio }%`;\n    height = '100%';\n    if (useWidth) {\n      borderH = (100 * ((paperHeight - printHeight) / 2)) / paperWidth;\n      borderW = (100 * ((paperWidth - printWidth) / 2)) / paperWidth;\n    } else {\n      borderH = (100 * ((paperHeight - printHeight) / 2)) / paperHeight;\n      borderW = (100 * ((paperWidth - printWidth) / 2)) / paperHeight;\n    }\n  }\n  return {\n    width, height, borderH, borderW\n  };\n};\n\nexport const calculateFrameThickness = (width, frameThickness) => (\n  (frameThickness / width) * 100\n);\n","import React, { useRef, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport * as Classes from './styles.module.scss';\n\nconst Zoom = ({\n  style,\n  className,\n  zoomPreviewUrl,\n  children\n}) => {\n  const el = useRef(null);\n  const cz = useRef(null);\n\n  const zoomProps = useMemo(() => ({\n    image: zoomPreviewUrl,\n    zoomImage: zoomPreviewUrl,\n    zoomPosition: '.zoom-container'\n  }), [zoomPreviewUrl]);\n\n  const unBindZoom = () => {\n    if (cz.current) {\n      cz.current.destroy();\n      cz.current = null;\n    }\n    const cb = document.querySelector('.cloudzoom-blank');\n    if (cb) {\n      cb.parentNode.removeChild(cb);\n    }\n  };\n\n  const bindZoom = () => {\n    unBindZoom();\n    if (parseInt(Classes.mobilewidth, 10) < window.innerWidth) {\n      if (window.jQuery(el.current).CloudZoom) {\n        cz.current = window.jQuery(el.current).CloudZoom(zoomProps).data('CloudZoom');\n      } else {\n        setTimeout(() => {\n          if (window.jQuery(el.current).CloudZoom) {\n            cz.current = window.jQuery(el.current).CloudZoom(zoomProps).data('CloudZoom');\n          }\n        }, 1000);\n      }\n    }\n  };\n\n  useEffect(() => {\n    if (zoomPreviewUrl) {\n      bindZoom();\n    }\n    return () => unBindZoom();\n  }, [zoomPreviewUrl]);\n\n  return (\n    <div\n      style={ style }\n      className={ className }\n      ref={ el }\n    >\n      { children }\n      <div className={ `zoom-container ${ Classes.zoomContainer }` } />\n    </div>\n  );\n};\n\nZoom.propTypes = {\n  style: PropTypes.object,\n  className: PropTypes.string,\n  zoomPreviewUrl: PropTypes.string,\n  children: PropTypes.node\n};\n\nexport default Zoom;\n","import React from 'react';\n\nconst Zoomin = (props) => (\n  <svg\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"0 0 24 24\"\n    { ...props }\n  >\n    <g opacity={ 0.6 } stroke=\"#000\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n      <path\n        d=\"m20 20-5-5m2-5a7 7 0 1 1-14 0 7 7 0 0 1 14 0v0Z\"\n        strokeWidth={ 2 }\n      />\n      <path d=\"M20.5 20.5 17 17\" strokeWidth={ 3 } />\n    </g>\n    <path\n      d=\"M10 8v4m2-2H8\"\n      stroke=\"#000\"\n      strokeOpacity={ 0.5 }\n      strokeLinecap=\"round\"\n    />\n  </svg>\n);\n\nexport default Zoomin;\n","import React, { useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport * as Classes from './styles.module.scss';\nimport ZoomModal from './zoom_modal';\nimport Zoomin from './zoomin_icon.js';\n\nconst ZoomIn = ({\n  zoomPreviewUrl,\n  withFrame,\n  className\n}) => {\n  const [visible, setVisible] = useState(null);\n  const hide = () => setVisible(false);\n  const show = () => setVisible(true);\n\n  const modal = useMemo(() => (\n    visible ? (\n      <ZoomModal\n        img={ zoomPreviewUrl }\n        onHide={ hide }\n        withFrame={ withFrame }\n      />\n    ) : null\n  ), [visible]);\n\n  return useMemo(() => {\n    if (!zoomPreviewUrl) {\n      return null;\n    }\n\n    return (\n      <div className={ className }>\n        { modal }\n        <button className={ Classes.zoomIcon } onClick={ show } type=\"button\" title=\"Zoom In\" aria-label=\"Zoom In\">\n          <Zoomin />\n        </button>\n      </div>\n    );\n  }, [zoomPreviewUrl, visible]);\n};\n\nZoomIn.propTypes = {\n  zoomPreviewUrl: PropTypes.string,\n  withFrame: PropTypes.bool,\n  className: PropTypes.string\n};\n\nexport default ZoomIn;\n","import React from 'react';\nimport T from 'prop-types';\nimport PreviewModal from './preview_modal';\nimport * as ModalClasses from '../Modal/styles.module.scss';\n\nconst ZoomModal = ({\n  img, onHide\n}) => (\n  <PreviewModal\n    onHide={ onHide }\n    className={ ModalClasses.zoom }\n    contentOptions={ { style: { backgroundImage: `url(${ img })` }, onClick: onHide } }\n  />\n);\n\nZoomModal.propTypes = {\n  img: T.string,\n  onHide: T.func,\n  withFrame: T.bool\n};\n\nexport default ZoomModal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport BreadCrumbsGeneric from '../bread_crumbs';\nimport * as Classes from './styles.module.scss';\n\nconst ART_PRINTS = { text: 'Art Prints', to: '/art-prints' };\nconst ORIGINAL_ART = { text: 'Original Art', to: '/original_arts' };\n\nconst BreadCrumbs = ({\n  authorName, authorId, authorSlug, originalArt\n}) => {\n  const links = [\n    originalArt ? ORIGINAL_ART : ART_PRINTS,\n    { text: authorName, to : `/artists/${ authorId }/${ authorSlug }` }\n  ];\n  return (\n    <BreadCrumbsGeneric links={ links } rootClassName={ Classes.bc } />\n  );\n};\n\nBreadCrumbs.propTypes = {\n  authorName: PropTypes.string,\n  authorId: PropTypes.number,\n  authorSlug: PropTypes.string,\n  originalArt: PropTypes.bool\n};\n\nexport default BreadCrumbs;\n","import Constants from 'arts/config/constants';\nimport { getArtist } from 'arts/config/api';\n\nconst fetchArtistStart = () => ({\n  type: Constants.Artist.FETCH\n});\n\nconst fetchArtistSuccess = (data) => ({\n  type: Constants.Artist.FETCH_SUCCESS,\n  data\n});\n\nconst fetchArtistFailure = (error) => ({\n  type: Constants.Artist.FETCH_FAILURE,\n  error\n});\n\nexport const fetchArtist = (id) => (dispatch) => {\n  dispatch(fetchArtistStart());\n\n  getArtist(id).then(\n    (data) => dispatch(fetchArtistSuccess(data)),\n    (error) => dispatch(fetchArtistFailure(error))\n  );\n};\n","import React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { artistShape } from 'arts/reducers/artist';\nimport Delimiter from 'arts/components/Delimiter';\nimport SmallItemsCarousel from '../small_items_carousel';\nimport { renderText } from '../ArtistWorks/artist_details';\n\nconst onMoreOfArtist = () => true;\n\nconst MoreArtistWorks = ({\n  artistId,\n  skipId,\n  artist,\n  name,\n  about,\n  loadMoreWorks\n}) => {\n  useEffect(() => {\n    if (artistId) { loadMoreWorks(artistId); }\n  }, [artistId]);\n\n  const { works } = useMemo(() => artist || {}, [artist]);\n  const filteredWorks = useMemo(() => (works || []).filter(w => w.id !== skipId), [works, skipId]);\n  const title = useMemo(() => (\n    name ? (\n      <>\n        More of&nbsp;\n        { name }\n        &apos;s work\n      </>\n    ) : 'Loading artist details...'\n  ), [name]);\n\n  return (\n    <div>\n      <Delimiter />\n      <div>\n        <SmallItemsCarousel\n          items={ filteredWorks }\n          title={ title }\n          onClick={ onMoreOfArtist }\n          gtmListName=\"artist-works\"\n        />\n        { renderText('About The Artist', about, false, true) }\n      </div>\n    </div>\n  );\n};\n\nMoreArtistWorks.propTypes = {\n  artistId:   PropTypes.number.isRequired,\n  skipId:     PropTypes.number.isRequired,\n  artist:     artistShape,\n  name:       PropTypes.string.isRequired,\n  about:      PropTypes.string,\n  loadMoreWorks: PropTypes.func.isRequired\n};\n\nexport default MoreArtistWorks;\n","import { connect } from 'react-redux';\nimport {\n  fetchArtist as loadMoreWorks\n} from 'arts/actions/artist';\nimport MoreArtistWorks from './more_artist_works';\n\nconst mapStateToProps = ({ artist }) => ({\n  artist\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n  loadMoreWorks: (id) => { dispatch(loadMoreWorks(id)); }\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MoreArtistWorks);\n","import React from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport { trackEvent } from '../../config/analytics';\nimport Eye from '../Viewer/eye';\nimport * as Classes from './styles.module.scss';\n// import SimilarModal from '../similar_modal';\n\nconst SimilarItems = ({\n  className, eventSource, children, id\n}) => {\n  const onClick = () => trackEvent('more like this', { source: eventSource, 'work id': id });\n\n  return (\n    <div className={ classnames(className, Classes.more) }>\n      <Link\n        to={ `/more-like-this/${ id }` }\n        onClick={ onClick }\n      >\n        { children }\n        <Eye />\n        <span>\n          More Like This\n        </span>\n      </Link>\n    </div>\n  );\n};\n\nSimilarItems.propTypes = {\n  id: PropTypes.number.isRequired,\n  className: PropTypes.string,\n  eventSource: PropTypes.string.isRequired,\n  children: PropTypes.node\n};\n\nexport default SimilarItems;\n","// extracted by mini-css-extract-plugin\nvar _1 = \"EoBDmSKndybHIxFTqW6p\";\nexport { _1 as \"more\" }\n","import React, { PureComponent } from 'react';\nimport T from 'prop-types';\nimport { mayAlsoLikeShape } from 'arts/reducers/artist';\nimport SmallItemsCarousel, { WorkImage, calculateWith } from '../small_items_carousel';\nimport * as Classes from './styles.module.scss';\nimport SimilarItems from '../similar_items';\n\nconst onMoreLikeThis = () => true;\n\nconst renderImage = ({\n  // eslint-disable-next-line react/prop-types\n  href, title, imgUrl, id, imageWidth, imageHeight\n}, index) => {\n  const width = calculateWith(imageWidth, imageHeight);\n  return (\n    <div key={ id } style={ { width } }>\n      <WorkImage\n        imageWidth={ imageWidth }\n        imageHeight={ imageHeight }\n        imgUrl={ imgUrl }\n        href={ href }\n        title={ title }\n        onClick={ onMoreLikeThis }\n        index={ index }\n      />\n      <SimilarItems\n        id={ id }\n        className={ Classes.more }\n        eventSource=\"you may also like carousel\"\n      />\n    </div>\n  );\n};\n\nexport default class MayAlsoLike extends PureComponent {\n  static propTypes = {\n    sourceId:        T.number,\n    data:            mayAlsoLikeShape.isRequired,\n    loadAlsoLike:    T.func.isRequired\n  };\n\n  componentDidMount() {\n    const { sourceId, loadAlsoLike } = this.props;\n    if (sourceId) {\n      loadAlsoLike(sourceId);\n    }\n  }\n\n  componentDidUpdate({ sourceId: sourceIdWas }) {\n    const { sourceId, loadAlsoLike } = this.props;\n    if (sourceId !== sourceIdWas) {\n      loadAlsoLike(sourceId);\n    }\n  }\n\n  render() {\n    const { data } = this.props;\n    return (\n      <SmallItemsCarousel\n        title=\"You May Also Like\"\n        gtmListName=\"recommended\"\n        items={ data || [] }\n        renderItem={ renderImage }\n        extended\n      />\n    );\n  }\n}\n","// extracted by mini-css-extract-plugin\nvar _1 = \"Doskkpp3q_yUk2uEJB4l\";\nvar _2 = \"nUQ0YxP1TKlFcxt3a6Qg\";\nvar _3 = \"AO7YZ6wQ9WNrrSVnBN0Q\";\nvar _4 = \"OeLTnZrjF9I_fUluTdBw\";\nexport { _1 as \"images\", _2 as \"more\", _3 as \"root\", _4 as \"title\" }\n","import { connect } from 'react-redux';\nimport { loadAlsoLike } from 'arts/actions/relatedWorks';\nimport MayAlsoLike from './may_also_like';\n\nconst mapStateToProps = ({ relatedWorks: { alsoLike } }) => ({\n  data:    alsoLike.data,\n  error:     alsoLike.error\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n  loadAlsoLike: (id) => { dispatch(loadAlsoLike(id)); }\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MayAlsoLike);\n","import React, { PureComponent } from 'react';\nimport T from 'prop-types';\nimport { mayAlsoLikeShape as recentlyView } from 'arts/reducers/artist';\nimport deepEqual from 'deep-equal';\nimport SmallItemsCarousel from '../small_items_carousel';\n\nexport default class RecentlyView extends PureComponent {\n  static propTypes = {\n    ids:                 T.arrayOf(T.number),\n    data:                recentlyView,\n    loadRecentlyView:    T.func.isRequired\n  };\n\n  componentDidMount() {\n    const { ids, loadRecentlyView } = this.props;\n    if (ids) {\n      loadRecentlyView(ids);\n    }\n  }\n\n  componentDidUpdate({ ids: idsWere }) {\n    const { ids, loadRecentlyView } = this.props;\n    if (!deepEqual(ids, idsWere)) {\n      loadRecentlyView(ids);\n    }\n  }\n\n  render() {\n    const { data } = this.props;\n    return (\n      <SmallItemsCarousel items={ data } title=\"Recently Viewed\" gtmListName=\"recent\" />\n    );\n  }\n}\n","import { connect } from 'react-redux';\nimport { loadRecentlyView } from 'arts/actions/relatedWorks';\nimport RecentlyView from './recently_view';\n\nconst mapStateToProps = ({ relatedWorks: { recentlyView } }) => ({\n  data:    recentlyView.data,\n  error:   recentlyView.error,\n  ids: recentlyView.ids\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n  loadRecentlyView: (id) => { dispatch(loadRecentlyView(id)); }\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RecentlyView);\n","import React from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport MoreArtistWorks from '../more_artist_works';\nimport MayAlsoLike from '../may_also_like';\nimport RecentlyView from '../recently_view';\nimport * as Classes from './styles.module.scss';\n\nconst MoreDetails = ({\n  artistId, id, name, about\n}) => {\n  if (!id) return null;\n\n  const moreWorks = artistId ? (\n    <MoreArtistWorks\n      skipId={ id }\n      artistId={ artistId }\n      name={ name }\n      about={ about }\n    />\n  ) : null;\n\n  return (\n    <div className={ classnames(Classes.work, Classes.moreDetails) }>\n      { moreWorks }\n      <MayAlsoLike sourceId={ id } />\n      <RecentlyView />\n    </div>\n  );\n};\n\nMoreDetails.propTypes = {\n  artistId: PropTypes.number,\n  id: PropTypes.number,\n  name: PropTypes.string,\n  about: PropTypes.string\n};\n\nexport default MoreDetails;\n","import Constants from 'arts/config/constants';\n\nexport const resetOtherImage = () => ({\n  type: Constants.Selection.RESET_OTHER\n});\n\nexport const setFrame = (paper, frame) => ({\n  type: Constants.Selection.SET_FRAME,\n  paper,\n  frame\n});\n\nexport const setOtherImage = (url) => ({\n  type: Constants.Selection.SET_OTHER,\n  url\n});\n\nexport const resetSelection = () => ({\n  type: Constants.Selection.RESET\n});\n\nexport const setNonGlare = (nonGlare) => ({\n  type: Constants.Selection.SET_NON_GLARE,\n  nonGlare\n});\n\nexport const setFramePreview = (paper, frame) => (dispatch) => {\n  dispatch(setFrame(paper, frame));\n  dispatch(resetOtherImage());\n};\n","import React from 'react';\nimport T from 'prop-types';\nimport classnames from 'classnames';\nimport * as Classes from './styles.module.scss';\n\nconst Frame = ({\n  frameName,\n  frameThumbUrl,\n  setFrameByName,\n  handleDragStart,\n  selected\n}) => {\n  const onClick = (e) => {\n    e.preventDefault();\n    setFrameByName(frameName);\n  };\n\n  const classname = classnames(\n    Classes.frame, {\n      [Classes.active]: selected\n    }\n  );\n\n  return (\n    <a\n      href=\"#frame\"\n      role=\"button\"\n      onClick={ onClick }\n      className={ classname }\n      title={ frameName }\n      onDragStart={ handleDragStart }\n      onDragEnd={ handleDragStart }\n    >\n      <div className={ Classes.frameHolder }>\n        <img src={ frameThumbUrl } alt={ frameName } />\n      </div>\n    </a>\n  );\n};\n\nFrame.propTypes = {\n  frameName: T.string.isRequired,\n  frameThumbUrl: T.string.isRequired,\n  setFrameByName: T.func.isRequired,\n  handleDragStart: T.func.isRequired,\n  selected: T.bool\n};\n\nexport default Frame;\n","/* eslint-disable jsx-a11y/label-has-associated-control */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Radio from 'arts/components/Radio';\nimport * as Classes from './styles.module.scss';\n\nconst SelectPlexiGlass = ({ nonGlare, setNonGlare }) => {\n  const onChange = (e) => setNonGlare(e.target.value === 'nonGlare');\n\n  return (\n    <form className={ classnames(Classes.mounts, Classes.plexi) }>\n      <label htmlFor=\"std_plexi\">\n        <div className={ Classes.mountOption }>\n          <Radio\n            type=\"radio\"\n            value=\"standard\"\n            checked={ !nonGlare }\n            onChange={ onChange }\n            name=\"nonGlare\"\n            id=\"std_plexi\"\n          />\n          <div className={ Classes.mount }>\n            Standard\n          </div>\n        </div>\n      </label>\n      <label htmlFor=\"non_glare_plexi\">\n        <div className={ Classes.mountOption }>\n          <Radio\n            type=\"radio\"\n            value=\"nonGlare\"\n            checked={ nonGlare }\n            onChange={ onChange }\n            name=\"nonGlare\"\n            id=\"non_glare_plexi\"\n          />\n          <div className={ Classes.mount }>\n            Non-glare\n          </div>\n        </div>\n      </label>\n    </form>\n  );\n};\n\nSelectPlexiGlass.propTypes = {\n  nonGlare: PropTypes.bool,\n  setNonGlare: PropTypes.func.isRequired\n};\n\nexport default SelectPlexiGlass;\n","import React, { useMemo } from 'react';\nimport T from 'prop-types';\nimport AliceCarousel from 'react-alice-carousel';\nimport classnames from 'classnames';\nimport {\n  paperShape,\n  frameShape\n} from 'arts/reducers/work';\nimport Collapsible from 'arts/components/Collapsible';\nimport Frame from './frame';\n// eslint-disable-next-line import/named\nimport Mounts, {\n  FULL_BLEED, MATTE, FLOAT_DECKLED, FLOAT_STRIGHT\n} from './mounts';\nimport SelectPlexiGlass from './select_plexi_glass';\nimport { aliceSliderSettins, handleDragStart } from '../slider_arrows';\nimport Warning from './warning';\nimport * as Classes from './styles.module.scss';\n\nconst hasMount = (options, mount, frameName) => !!options.find(\n  i => i.mount === mount && i.frameName === frameName\n);\n\nconst Paper = ({\n  paper,\n  setFrame,\n  setNonGlare,\n  selectedFrame,\n  thumbnails,\n  nonGlare,\n  availableFrames,\n  selectFirstAvailableFrame\n}) => {\n  const selectFrame = (frame) => setFrame(paper, frame);\n\n  const setFrameAndMount = (frameName, mount, frameMatColorName) => {\n    if (!(frameName && mount)) { return; }\n\n    // with the selected mount\n    let frame = paper.options.find(i => (\n      i.mount === mount && i.frameName === frameName && i.frameMatColorName === frameMatColorName\n    ));\n\n    if (frame) {\n      selectFrame(frame);\n      return;\n    }\n\n    // any mat color\n    frame = paper.options.find(i => (\n      i.mount === mount && i.frameName === frameName\n    ));\n    if (frame) {\n      selectFrame(frame);\n      setNonGlare(false);\n      return;\n    }\n\n    // any mount or mat color\n    frame = paper.options.find(i => i.frameName === frameName);\n    if (frame) {\n      selectFrame(frame);\n      setNonGlare(false);\n      return;\n    }\n\n    // any frame\n    selectFirstAvailableFrame(paper);\n  };\n\n  const setFrameByName = (frameName) => {\n    const { mount, frameMatColorName } = selectedFrame || {};\n    setFrameAndMount(frameName, mount, frameMatColorName);\n  };\n\n  const selectMount = (mount, frameMatColorName) => {\n    const { frameName } = selectedFrame || {};\n    setFrameAndMount(frameName, mount, frameMatColorName);\n  };\n\n  const renderAvailableFrames = useMemo(() => {\n    const categories = availableFrames\n      .map((f) => f.frameCategory)\n      .filter((value, index, self) => self.indexOf(value) === index)\n      .sort();\n\n    return categories.map((category) => {\n      const frames = availableFrames.filter((f) => f.frameCategory === category);\n      const {\n        frameName, frameDisplayWidth, frameDisplayDepth, warning, frameLabel, frameCategory\n      } = selectedFrame || {};\n      let frameDescription = null;\n      let renderWarning = null;\n      if (frameCategory === category) {\n        frameDescription = ` - ${ frameName }, ${ frameLabel } width ${ frameDisplayWidth }${ window.currentLocale.unit }, depth ${ frameDisplayDepth }`;\n        renderWarning = <Warning warning={ warning } />;\n      }\n\n      const filteredUniqFrames = frames.filter((frame, index, self) => self.findIndex(\n        f => f.frameName === frame.frameName) === index\n      );\n\n      const renderedFrames = filteredUniqFrames.map((frame, index) => (\n        <Frame\n          key={ index }\n          frameName={ frame.frameName }\n          frameThumbUrl={ frame.frameThumbUrl }\n          setFrameByName={ setFrameByName }\n          selected={ frameName === frame.frameName }\n          handleDragStart={ handleDragStart }\n        />\n      ));\n\n      return (\n        <div key={ category }>\n          <div className={ Classes.category }>\n            { category }\n            <span>{ frameDescription }</span>\n          </div>\n          { renderWarning }\n          <div className={ Classes.frames }>\n            { renderedFrames }\n          </div>\n          <div className={ Classes.mobileFrames }>\n            <AliceCarousel { ...aliceSliderSettins(false) }>\n              { renderedFrames }\n            </AliceCarousel>\n          </div>\n        </div>\n      );\n    });\n  }, [availableFrames, selectedFrame]);\n\n  const {\n    frameName, isTapestry, mount, nonGlarePrice, frameMatColorName\n  } = selectedFrame || {};\n\n  const uid = paper.paperId;\n  const collapsed = isTapestry ? false : (paper.options.indexOf(selectedFrame) <= 0);\n  const { url: previewUrl } = (thumbnails || []).find((t) => t.type === 'framed') || {};\n  const withMatte = hasMount(paper.options, MATTE, frameName) ? 1 : 0;\n  const withFullBleed = hasMount(paper.options, FULL_BLEED, frameName) ? 1 : 0;\n  const withDckl = hasMount(paper.options, FLOAT_DECKLED, frameName) ? 1 : 0;\n  const withFltn = hasMount(paper.options, FLOAT_STRIGHT, frameName) ? 1 : 0;\n  const matAndColors = paper.options.filter(\n    f => f.mount === MATTE && f.frameName === frameName\n  ).map(f => [f.frameMatColorName, f.frameMatColorRgb]);\n  const matColors = matAndColors.map(f => f[0]);\n  const matColorsRgb = matAndColors.map(f => f[1]);\n\n  const hasStep2 = (withMatte + withFullBleed + withDckl + withFltn) > 1;\n\n  const step2 = hasStep2 ? (\n    <Mounts\n      selectedMount={ mount }\n      selectedMatColor={ frameMatColorName }\n      onSelect={ selectMount }\n      paperId={ paper.paperId }\n      matte={ withMatte > 0 }\n      fullBleed={ withFullBleed > 0 }\n      dckl={ withDckl > 0 }\n      fltn={ withFltn > 0 }\n      matColors={ matColors }\n      matColorsRgb={ matColorsRgb }\n    />\n  ) : null;\n\n  const step3 = hasStep2 && nonGlarePrice ? (\n    <div className={ Classes.step3 }>\n      <div className={ Classes.sectionTitle }>\n        <span>Step 3 - </span>\n        Select UV Plexiglass\n      </div>\n      <SelectPlexiGlass nonGlare={ nonGlare } setNonGlare={ setNonGlare } />\n    </div>\n  ) : null;\n\n  return (\n    <Collapsible\n      uid={ uid }\n      key={ uid }\n      collapsed={ collapsed }\n    >\n      <section className={ Classes.mouldingSection }>\n        <div className={ classnames(Classes.sectionTitle, { [Classes.hidden]: !hasStep2 }) }>\n          <span>Step 1 - </span>\n          Select Moulding\n        </div>\n        { renderAvailableFrames }\n      </section>\n\n      <section className={ Classes.options }>\n        <div className={ Classes.previewImage }>\n          { previewUrl ? <img src={ previewUrl } alt=\"\" /> : null }\n        </div>\n        <div>\n          <div className={ classnames(Classes.sectionTitle, { [Classes.hidden]: !hasStep2 }) }>\n            <span>Step 2 - </span>\n            Select Mount\n          </div>\n          { step2 }\n          { step3 }\n        </div>\n      </section>\n    </Collapsible>\n  );\n};\n\nPaper.propTypes = {\n  paper: paperShape.isRequired,\n  setFrame: T.func.isRequired,\n  setNonGlare: T.func.isRequired,\n  selectedFrame: frameShape,\n  thumbnails: T.arrayOf(T.shape({\n    type: T.string.isRequired,\n    url: T.string.isRequired\n  })).isRequired,\n  nonGlare: T.bool.isRequired,\n  availableFrames: T.array.isRequired,\n  selectFirstAvailableFrame: T.func.isRequired\n};\n\nexport default Paper;\n","import React, { PureComponent } from 'react';\nimport classnames from 'classnames';\nimport T from 'prop-types';\nimport {\n  paperShape\n} from 'arts/reducers/work';\nimport { humanSize } from 'arts/config/lib';\nimport Radio from 'arts/components/Radio';\nimport * as Classes from './styles.module.scss';\n\nclass Header extends PureComponent {\n  static propTypes = {\n    paper: paperShape.isRequired,\n    active: T.bool,\n    frameless: T.bool,\n    selectFrame: T.func.isRequired,\n    selectNoFrame: T.func.isRequired,\n    currentPrice: T.number,\n    currency: T.string,\n    landscape: T.bool,\n    onClick: T.func.isRequired,\n    skipSelectFrame: T.bool\n  }\n\n  constructor() {\n    super();\n\n    this.selectFrame = this.selectFrame.bind(this);\n    this.onHeaderClicked = this.onHeaderClicked.bind(this);\n  }\n\n  onHeaderClicked(e) {\n    const { onClick } = this.props;\n    e.stopPropagation();\n    onClick();\n  }\n\n  selectFrame(e) {\n    e.stopPropagation();\n    const { frameless, selectFrame, selectNoFrame } = this.props;\n    if (frameless)  { selectFrame(); } else { selectNoFrame(); }\n  }\n\n  hasFrames() {\n    const { paper } = this.props;\n    return !!paper.options.find((f) => f.frameId);\n  }\n\n  renderAction() {\n    const { frameless, skipSelectFrame } = this.props;\n    if (skipSelectFrame) { return null; }\n    const action = frameless\n      ? '+ Add frame'\n      : '- Remove frame';\n\n    return (\n      <button\n        type=\"button\"\n        className={ Classes.frameAddRemove }\n        onClick={ this.selectFrame }\n      >\n        { action }\n      </button>\n    );\n  }\n\n  renderActions() {\n    const { paper, active } = this.props;\n    if (paper.limitations) {\n      return (\n        <div>\n          { paper.limitations }\n        </div>\n      );\n    }\n    return active && this.hasFrames() ? this.renderAction() : null;\n  }\n\n  render() {\n    const {\n      paper: {\n        displayPaperWidth,\n        displayPaperHeight,\n        displayPrintWidth,\n        displayPrintHeight,\n        options,\n        paperId,\n        isHidden\n      },\n      active,\n      currentPrice,\n      currency,\n      landscape\n    } = this.props;\n\n    const hiddenIcon = isHidden\n      ? [<span key=\"span\">&nbsp;</span>, <i key=\"i\" className=\"icon-eye-close\" />]\n      : null;\n\n    const price = active\n      ? currentPrice.toFixed(2) || Math.abs(options[0].price).toFixed(2)\n      : Math.abs(options[0].price).toFixed(2);\n\n    return (\n      <div className={ Classes.header } onClick={ this.onHeaderClicked }>\n        <Radio\n          readOnly\n          id={ paperId }\n          checked={ active }\n        />\n        <div className={ Classes.label }>\n          <span>\n            { humanSize(landscape, displayPaperWidth, displayPaperHeight, 'X') }\n          </span>\n\n          <span className={ classnames(Classes.printSize, { [Classes.printSizeUk]: window.currentLocale.currentLocale === 'uk' }) }>\n            { `(image ${ humanSize(landscape, displayPrintWidth, displayPrintHeight, 'x') }${ window.currentLocale.unit })` }\n          </span>\n        </div>\n        <div className={ Classes.price }>\n          <span>\n            { `${ currency }${ price }` }\n            { hiddenIcon }\n          </span>\n          <span className={ Classes.printSize }>&nbsp;</span>\n        </div>\n        { this.renderActions() }\n      </div>\n    );\n  }\n}\n\nexport default Header;\n","import React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {\n  paperShape\n} from 'arts/reducers/work';\nimport {\n  selectionShape\n} from 'arts/reducers/selection';\nimport {\n  FULL_BLEED, MATTE, FLOAT_DECKLED, FLOAT_STRIGHT\n} from './mounts';\nimport Paper from './paper';\nimport * as AppClasses from '../Application/styles.module.scss';\nimport * as Classes from './styles.module.scss';\nimport Header from './header';\n\n/* eslint-disable prefer-destructuring */\nconst findPaperAndFrame = (data, paperId, frameId) => {\n  if (!data || data.length === 0) {\n    return [null, null];\n  }\n  // // this.props.setFrame(nextProps.data[0], nextProps.data[0].options[0]);\n  if (!paperId) {\n    return [data[0], data[0].options[0]];\n  }\n\n  let paper = data.find((p) => p.paperId === paperId);\n  if (!paper) {\n    paper = data[0];\n  }\n\n  let frame = null;\n  frame = paper.options.find((f) => f.frameId === frameId);\n  if (!frame) {\n    frame = paper.options[0];\n  }\n\n  return [paper, frame];\n};\n/* eslint-enable prefer-destructuring */\n\nconst groupBy = (xs, key) => xs.reduce((rv, x) => {\n  // eslint-disable-next-line no-param-reassign\n  rv[x[key]] = rv[x[key]] || [];\n  rv[x[key]].push(x);\n  return rv;\n}, {});\n\nconst generateUniqFrames = (options) => {\n  const res = [];\n  const groups = groupBy(options, 'frameName');\n  const order = [MATTE, FULL_BLEED, FLOAT_DECKLED, FLOAT_STRIGHT];\n  Object.keys(groups).forEach((k) => {\n    const g = groups[k];\n    for (let i = 0, l = order.length; i < l; i += 1) {\n      const mount = order[i];\n      if (mount !== MATTE) {\n        const frame = g.find(f => f.mount === mount);\n        if (frame) {\n          res.push(frame);\n          return;\n        }\n      } else {\n        const matteFrames = g.filter(f => f.mount === mount);\n        matteFrames.forEach(frame => {\n          res.push(frame);\n        });\n      }\n    }\n  });\n  return res;\n};\n\nconst PapersMenu = ({\n  data,\n  setFrame,\n  setNonGlare,\n  selection,\n  resetSelection,\n  initialPaperId,\n  initialFrameId,\n  currentPrice,\n  currency,\n  landscape,\n  nonGlare,\n  thumbnails\n}) => {\n  useEffect(() => {\n    const [paper, frame] = findPaperAndFrame(\n      data || [],\n      initialPaperId,\n      initialFrameId\n    );\n    setFrame(paper, frame);\n  }, [data, initialPaperId, initialFrameId, setFrame]);\n\n  useEffect(() => () => resetSelection(), [resetSelection]);\n\n  const availableFrames = useMemo(() => {\n    const res = {};\n    data?.forEach((paper) => {\n      res[paper.paperId] = generateUniqFrames(paper.options);\n    });\n    return res;\n  }, [data, data?.options]);\n\n  const selectNoFrame = (paper) => {\n    setFrame(paper, paper.options[0]);\n    setNonGlare(false);\n  };\n\n  const selectFirstAvailableFrame = (paper) => {\n    setFrame(paper, availableFrames[paper.paperId][0]);\n    setNonGlare(false);\n  };\n\n  const {\n    frame: selectedFrame, paper: selectedPaper\n  } = useMemo(() => selection || {}, [selection]);\n\n  const { paperId: selectedPaperId } = useMemo(() => selectedPaper || {}, [selectedPaper]);\n\n  const renderHeaders = () => {\n    if (!data || data.length === 0) {\n      return (\n        <>\n          <div className={ classnames(Classes.header, AppClasses.skeleton) }>&nbsp;</div>\n          <div className={ classnames(Classes.header, AppClasses.skeleton) }>&nbsp;</div>\n          <div className={ classnames(Classes.header, AppClasses.skeleton) }>&nbsp;</div>\n        </>\n      );\n    }\n\n    const { isTapestry } = selectedFrame || {};\n    return data.map((paper) => (\n      <Header\n        skipSelectFrame={ isTapestry }\n        selectFrame={ () => selectFirstAvailableFrame(paper) }\n        selectNoFrame={ () => selectNoFrame(paper) }\n        paper={ paper }\n        active={ selectedPaperId ? paper.paperId === selectedPaperId : false }\n        frameless={ selectedFrame === paper.options[0] }\n        currentPrice={ currentPrice }\n        currency={ currency }\n        landscape={ landscape }\n        key={ paper.paperId }\n        onClick={ () => selectNoFrame(paper) }\n      />\n    ));\n  };\n\n  return (\n    <>\n      <div className={ Classes.heading }>select size:</div>\n      { renderHeaders() }\n      {\n        (data || []).map((paper) => (\n          <Paper\n            paper={ paper }\n            key={ paper.paperId }\n            selectedFrame={ selectedFrame }\n            thumbnails={ thumbnails }\n            setFrame={ setFrame }\n            setNonGlare={ setNonGlare }\n            nonGlare={ nonGlare }\n            availableFrames={ availableFrames[paper.paperId] }\n            selectFirstAvailableFrame={ selectFirstAvailableFrame }\n          />\n        ))\n      }\n    </>\n  );\n};\n\nPapersMenu.propTypes = {\n  data: PropTypes.arrayOf(paperShape),\n  setFrame: PropTypes.func.isRequired,\n  setNonGlare: PropTypes.func.isRequired,\n  selection: selectionShape.isRequired,\n  resetSelection: PropTypes.func.isRequired,\n  initialPaperId: PropTypes.number,\n  initialFrameId: PropTypes.number,\n  currentPrice: PropTypes.number,\n  currency: PropTypes.string,\n  landscape: PropTypes.bool,\n  nonGlare: PropTypes.bool,\n  thumbnails: PropTypes.array\n};\n\nexport default PapersMenu;\n","import { connect } from 'react-redux';\nimport {\n  setFrame,\n  resetSelection,\n  setNonGlare\n} from 'arts/actions/selection';\nimport PapersMenu from './papers_menu';\nimport { currentPriceAndNonGlare } from '../AddToCart/add_to_cart';\n\nconst mapStateToProps = ({ selection, work: { thumbnails, data: { currency } } }) => ({\n  selection,\n  ...currentPriceAndNonGlare(selection, 'currentPrice'),\n  thumbnails,\n  currency\n});\n\nexport default connect(mapStateToProps, { setFrame, resetSelection, setNonGlare })(PapersMenu);\n","import React, { PureComponent } from 'react';\nimport T from 'prop-types';\nimport {\n  thumbnailsShape\n} from 'arts/reducers/work';\nimport Entry from './entry';\n\nconst otherImageChanged = (prevThumbnails, thumbnails, prevSelectedIndex, selectedIndex) => {\n  if (\n    prevThumbnails[prevSelectedIndex] && thumbnails[selectedIndex]\n    && prevThumbnails[prevSelectedIndex].type === thumbnails[selectedIndex].type\n    && (\n      prevThumbnails[prevSelectedIndex].type === 'second'\n      || prevThumbnails[prevSelectedIndex].type === 'frame'\n    )\n  ) {\n    return true;\n  }\n  return false;\n};\n\nexport default class Thumbnails extends PureComponent {\n  static propTypes = {\n    thumbnails: thumbnailsShape.isRequired,\n    setFramePreview: T.func.isRequired,\n    setOtherImage: T.func.isRequired\n  };\n\n  constructor(props) {\n    super(props);\n    this.onSelect = this.onSelect.bind(this);\n    this.state = { selectedIndex: 0 };\n  }\n\n  componentDidUpdate(prevProps, prevState) {\n    if (otherImageChanged(\n      prevProps.thumbnails, this.props.thumbnails,\n      prevState.selectedIndex, this.state.selectedIndex\n    )\n    ) {\n      this.props.setOtherImage(this.props.thumbnails[this.state.selectedIndex].url);\n    }\n  }\n\n  onSelect(selectedIndex) {\n    this.setState({ selectedIndex });\n    if (this.props.thumbnails[selectedIndex].selection) {\n      const { paper, frame } = this.props.thumbnails[selectedIndex].selection;\n      this.props.setFramePreview(paper, frame);\n    } else {\n      this.props.setOtherImage(this.props.thumbnails[selectedIndex].url);\n    }\n  }\n\n  render() {\n    if (this.props.thumbnails.length < 1) {\n      return null;\n    }\n\n    return (\n      <>\n        {\n          this.props.thumbnails.map((e, index) => (\n            <Entry\n              url={ e.url }\n              index={ index }\n              key={ e.type }\n              selectedIndex={ this.state.selectedIndex }\n              onClick={ this.onSelect }\n            />\n          ))\n        }\n      </>\n    );\n  }\n}\n","import React from 'react';\n\nconst SvgComponent = (props) => (\n  <svg\n    viewBox=\"0 0 100 77\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    { ...props }\n  >\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M93 7H7v63h86V7ZM0 0v77h100V0H0Z\"\n    />\n    <path d=\"M33 23h34v29H33V23Z\" fill=\"#D9D9D9\" />\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M64 26H36v23h28V26Zm-31-3v29h34V23H33Z\"\n      fill=\"#676767\"\n    />\n  </svg>\n);\n\nexport default SvgComponent;\n","import React from 'react';\nimport { Loader } from 'semantic-ui-react';\nimport PropTypes from 'prop-types';\nimport {\n  paperShape,\n  frameShape,\n  workShape\n} from 'arts/reducers/work';\nimport * as Classes from './styles.module.scss';\nimport PaperView from './paper_view';\nimport { calculatePaperProps, calculateFrameThickness } from './utils';\n\nconst renderFrame = (frame, { imageUrl, title, landscape }) => {\n  const {\n    frameWidth, frameHeight, frameMat, frameThickness, zoomPreviewUrl, frameLargeImageUrl, mount,\n    isTapestry, frameMatColorRgb\n  } = frame;\n  const thicknessV = isTapestry && landscape ? 0 : frameThickness;\n  const thicknessH = isTapestry && !landscape ? 0 : frameThickness;\n  const frameMatW = isTapestry ? 0 : (frameMat + frameThickness) * 2;\n  const frameMatH = (frameMat + frameThickness) * 2;\n  const { width, borderH, borderW } = calculatePaperProps({\n    paperHeight: frameHeight + frameMatH,\n    paperWidth: frameWidth + frameMatW,\n    printHeight: frameHeight,\n    printWidth: frameWidth,\n    landscape,\n    useWidth: true\n  });\n  const ftH = calculateFrameThickness(\n    frameWidth + ((thicknessH + frameMat) * 2), 2 * thicknessH\n  ) / 2;\n  const ftV = calculateFrameThickness(\n    frameHeight + ((thicknessV + frameMat) * 2), 2 * thicknessV\n  ) / 2;\n  const paperProps = {\n    width,\n    borderH,\n    borderW,\n    imageUrl,\n    title,\n    zoomPreviewUrl,\n    backgroundImage: frameLargeImageUrl,\n    frameThicknessH: ftH,\n    frameThicknessV: ftV,\n    mount,\n    isTapestry,\n    frameMatColorRgb\n  };\n  return (\n    <PaperView unframed={ false } { ...paperProps } />\n  );\n};\n\nconst renderNoFrame = (paper, zoomPreviewUrl, { imageUrl, title, landscape }) => {\n  const {\n    paperHeight, paperWidth, printHeight, printWidth\n  } = paper;\n  const { width, borderH, borderW } = calculatePaperProps({\n    paperHeight, paperWidth, printHeight, printWidth, landscape, useWidth: false\n  });\n  const paperProps = {\n    width, borderH, borderW, imageUrl, title, zoomPreviewUrl\n  };\n  return <PaperView unframed { ...paperProps } />;\n};\n\nconst ImagePreview = ({\n  selectedFrame,\n  selectedPaper,\n  data,\n  otherImageUrl\n}) => {\n  const { wmZoomPreviewUrl: zoomPreviewUrlUsed } = selectedFrame || {};\n  let content = null;\n\n  if (otherImageUrl) {\n    content = (\n      <div className={ Classes.otherImage }>\n        <img src={ otherImageUrl } alt=\"\" />\n      </div>\n    );\n  } else {\n    const paper = selectedPaper || data.firstPaper;\n    if (!paper) {\n      content = <Loader active inline />;\n    } else if (!selectedFrame || !selectedFrame.frame) {\n      content = renderNoFrame(paper, zoomPreviewUrlUsed, data);\n    } else {\n      content = renderFrame(selectedFrame, data);\n    }\n  }\n\n  return (\n    <div className={ Classes.previews }>\n      { content }\n    </div>\n  );\n};\n\nImagePreview.propTypes = {\n  selectedFrame: frameShape,\n  selectedPaper: paperShape,\n  data: workShape,\n  otherImageUrl: PropTypes.string\n};\n\nexport default ImagePreview;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport AliceCarousel from 'react-alice-carousel';\nimport { useWindowSize } from '../visual_search/use_window_size';\nimport * as Classes from '../works/styles.module.scss';\nimport ImagePreview from './image_preview';\n\nconst { w1 } = Classes;\nconst mobileBreak = parseInt(w1, 10);\n\nconst ImagePreviewSwitcher = ({ secondPreviewUrl, otherImageUrl, ...props }) => {\n  const { width } = useWindowSize();\n  const showCarousel = useMemo(\n    () => secondPreviewUrl && width <= mobileBreak,\n    [width, secondPreviewUrl]\n  );\n  if (showCarousel) {\n    return (\n      <AliceCarousel\n        autoPlay={ false }\n        disableSlideInfo\n        infinite\n        mouseTracking\n        mouseDragEnabled\n        disableButtonsControls\n      >\n        <ImagePreview { ...props } />\n        <div className={ Classes.secondPreview }>\n          <img src={ secondPreviewUrl } alt=\"preview\" />\n        </div>\n      </AliceCarousel>\n    );\n  }\n  return <ImagePreview { ...props } otherImageUrl={ otherImageUrl } />;\n};\n\nImagePreviewSwitcher.propTypes = {\n  secondPreviewUrl: PropTypes.string,\n  otherImageUrl: PropTypes.string\n};\n\nexport default ImagePreviewSwitcher;\n","import React from 'react';\nimport T from 'prop-types';\nimport PreviewModal from './preview_modal';\nimport * as Classes from './styles.module.scss';\nimport * as ModalClasses from '../Modal/styles.module.scss';\n\nconst silhouette = require('./silhouette-2.png');\n\nconst sizeX = 234.4;\nconst sizeY = 139.95;\n\nconst calculateStyle = (width, height) => ({\n  width: `${ (100 * width / sizeX) }%`,\n  height: `${ (100 * height / sizeY) }%`,\n  position: 'absolute',\n  marginLeft: `-${ (50 * width / sizeX) }%`,\n  marginTop: `-${ (50 * height / sizeY) }%`,\n  left: '50%',\n  top: '50%'\n});\n\nconst ScaleModal = ({\n  img, onHide, previewWidth2, previewHeight2\n}) => (\n  <PreviewModal onHide={ onHide } className={ ModalClasses.scale }>\n    <div className={ Classes.silhouette } style={ { backgroundImage: `url(${ silhouette })` } }>\n      <img src={ img } alt=\"\" style={ calculateStyle(previewWidth2, previewHeight2) } />\n    </div>\n  </PreviewModal>\n);\n\nScaleModal.propTypes = {\n  img: T.string,\n  onHide: T.func,\n  previewWidth2: T.number,\n  previewHeight2: T.number\n};\n\nexport default ScaleModal;\n","import React, { useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport ScaleIcon from './scale_icon';\nimport ScaleModal from './scale_modal';\n\nconst ShowToScale = ({\n  smallPreviewUrl,\n  previewWidth2,\n  previewHeight2\n}) => {\n  const [visible, setVisible] = useState(null);\n  const hide = () => setVisible(false);\n\n  const show = () => {\n    if (smallPreviewUrl && previewWidth2) {\n      setVisible(true);\n    }\n  };\n\n  const modal = useMemo(() => (\n    visible ? (\n      <ScaleModal\n        img={ smallPreviewUrl }\n        previewWidth2={ previewWidth2 }\n        previewHeight2={ previewHeight2 }\n        onHide={ hide }\n      />\n    ) : null\n  ), [visible, smallPreviewUrl, previewWidth2, previewHeight2]);\n\n  return (\n    <>\n      { modal }\n      <button onClick={ show } type=\"button\" title=\"Show To Scale\">\n        <ScaleIcon />\n        <span>Show To Scale</span>\n      </button>\n    </>\n  );\n};\n\nShowToScale.propTypes = {\n  smallPreviewUrl: PropTypes.string,\n  previewWidth2: PropTypes.number,\n  previewHeight2: PropTypes.number\n};\n\nexport default ShowToScale;\n","import React from 'react';\nimport T from 'prop-types';\nimport classnames from 'classnames';\nimport { Link } from 'react-router-dom';\nimport {\n  paperShape,\n  frameShape,\n  workShape,\n  thumbnailsShape\n} from 'arts/reducers/work';\n\nimport * as AppClasses from '../Application/styles.module.scss';\nimport * as Classes from './styles.module.scss';\nimport Thumbnails from './thumbnails';\nimport SimilarItems from '../similar_items';\nimport Box from './box';\n// import ImagePreview from './image_preview';\nimport ImagePreviewSwitcher from './image_preview_switcher';\nimport ShowToScale from './show_to_scale';\nimport ZoomIn from './zoom_in';\n\nconst Viewer = ({\n  selectedFrame,\n  selectedPaper,\n  data,\n  thumbnails,\n  setOtherImage,\n  setFramePreview,\n  otherImageUrl,\n  extraContent\n}) => {\n  const {\n    previewWidth2,\n    previewHeight2,\n    wmZoomPreviewUrl: zoomPreviewUrlUsed,\n    imageUrl: smallPreviewUrlUsed\n  } = selectedFrame || {};\n\n  const {\n    id, hasWalls, skipMoreLikeThis, secondPreviewUrl\n  } = data;\n\n  const rollOver = (\n    <div key=\"text\" className={ Classes.rollOver }>\n      {\n        (id && zoomPreviewUrlUsed && !otherImageUrl) ? 'Roll Over to Zoom' : null\n      }\n      &nbsp;\n    </div>\n  );\n\n  const similarItems = id && !skipMoreLikeThis ? (\n    <SimilarItems\n      id={ id }\n      className={ Classes.moreLikeThis }\n      eventSource=\"art\"\n    />\n  ) : null;\n\n  const artOnWall = id && hasWalls ? (\n    <Link to={ `/walls?with_work_id=${ id }&as=thumb` } className={ Classes.thisArt }>\n      <Box />\n      <span>Walls With This Art</span>\n    </Link>\n  ) : null;\n\n  return (\n    <div className={ Classes.viewer }>\n      <div className={ Classes.thumbsMenu }>\n        <Thumbnails\n          thumbnails={ thumbnails }\n          setFramePreview={ setFramePreview }\n          setOtherImage={ setOtherImage }\n        />\n        <ShowToScale\n          smallPreviewUrl={ otherImageUrl ? null : smallPreviewUrlUsed }\n          previewWidth2={ previewWidth2 }\n          previewHeight2={ previewHeight2 }\n        />\n        { similarItems }\n        { artOnWall }\n      </div>\n      <div className={ Classes.cKeeper }>\n        <div\n          className={\n            classnames(\n              Classes.carousel, {\n                [AppClasses.skeleton]: !data?.imageUrl\n              }\n            )\n          }\n        >\n          <ImagePreviewSwitcher\n            selectedFrame={ selectedFrame }\n            selectedPaper={ selectedPaper }\n            data={ data }\n            otherImageUrl={ otherImageUrl }\n            secondPreviewUrl={ secondPreviewUrl }\n          />\n          <ZoomIn\n            zoomPreviewUrl={ otherImageUrl || zoomPreviewUrlUsed }\n            withFrame= { !!(selectedFrame && selectedFrame.frameId) }\n          />\n        </div>\n        { rollOver }\n        { extraContent }\n      </div>\n    </div>\n  );\n};\n\nViewer.propTypes = {\n  id: T.number.isRequired,\n  selectedFrame: frameShape,\n  selectedPaper: paperShape,\n  hasSelection: T.bool,\n  data: workShape,\n  thumbnails: thumbnailsShape,\n  setOtherImage: T.func.isRequired,\n  setFramePreview: T.func.isRequired,\n  otherImageUrl: T.string,\n  extraContent: T.node\n};\n\nexport default Viewer;\n","import { connect } from 'react-redux';\nimport {\n  setFramePreview,\n  setOtherImage\n} from 'arts/actions/selection';\nimport Viewer from './viewer';\n\nconst mapStateToProps = ({ selection, work: { data, thumbnails } }) => ({\n  selectedFrame: selection.frame,\n  selectedPaper: selection.paper,\n  otherImageUrl: selection.otherImageUrl,\n  hasSelection: Boolean(selection.frame && selection.paper),\n  data,\n  thumbnails\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n  setFramePreview: (paper, frame) => dispatch(setFramePreview(paper, frame)),\n  setOtherImage: (url) => dispatch(setOtherImage(url))\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Viewer);\n","import React from 'react';\nimport classnames from 'classnames';\nimport T from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport PinIt from 'arts/components/Social/pin_it';\nimport * as AppClasses from '../Application/styles.module.scss';\nimport * as Classes from './styles.module.scss';\nimport Favorite from '../favorite';\n\nexport const author = (authorId, authorSlug, authorName, isMobile) => {\n  if (!authorName || !authorId) {\n    return (\n      <p\n        className={\n          classnames(Classes.author, { [Classes.mobile]: isMobile })\n        }\n      >\n        &nbsp;\n      </p>\n    );\n  }\n  return (\n    <p className={ classnames(Classes.author, { [Classes.mobile]: isMobile }) }>\n      By&nbsp;\n      <Link\n        className={ Classes.name }\n        to={ `/artists/${ authorSlug }-${ authorId }` }\n      >\n        { authorName }\n      </Link>\n    </p>\n  );\n};\n\nconst adminLink = (id) => (window.hasELinks ? (\n  <>\n    <a className={ Classes.admin } href={ `/admin/work_details/${ id }/edit` }>Admin</a>\n    <br />\n  </>\n) : null);\n\nexport const renderTitle = (isHidden, title, id) => {\n  const hiddenIcon = isHidden ? [\n    <i key=\"eye\" className=\"icon-eye-close\" />,\n    <span key=\"space\">&nbsp;</span>\n  ] : null;\n  return (\n    <p className={ classnames(Classes.heading, { [AppClasses.skeleton]: !title }) }>\n      { hiddenIcon }\n      { title }\n      &nbsp;\n      { adminLink(id) }\n    </p>\n  );\n};\n\nconst renderPrintedOn = (printedOn, limitedEdition) => (\n  <p className={ Classes.text }>\n    Printed on&nbsp;\n    { printedOn || '...'}\n    { limitedEdition ? '' : (printedOn && ' (Open Edition)') }\n  </p>\n);\n\nconst WorkSummary = ({\n  title,\n  authorName,\n  authorId,\n  authorSlug,\n  description,\n  printedOn,\n  limitedEdition,\n  isHidden,\n  id,\n  frameId,\n  paperId,\n  href,\n  isMobile\n}) => {\n  const theTitle = (\n    <div className={ Classes.title }>\n      { renderTitle(isHidden, title, id) }\n      <div className={ Classes.controls }>\n        {\n          href ? (\n            <PinIt\n              href={ `${ window.location.protocol }//${ window.location.host }${ href }` }\n              imageUrl={ `//${ window.location.host }/pinit/?work_id=${ id }&paper_id=${ paperId }&frame_id=${ frameId }` }\n              description={ `${ title } on Artfully Walls` }\n            />\n          ) : null\n        }\n        { id ? (<Favorite id={ id } type=\"Work\" />) : null }\n      </div>\n    </div>\n  );\n\n  const s1 = isMobile ? (\n    <div className={ classnames(Classes.mobileVisible, Classes.mobileHeader) }>\n      { theTitle }\n      { author(authorId, authorSlug, authorName, true) }\n    </div>\n  ) : null;\n\n  const s2 = isMobile ? null : (\n    <>\n      <div className={ Classes.mobileHidden }>\n        { theTitle }\n        { author(authorId, authorSlug, authorName, false) }\n      </div>\n      <div className={ Classes.mobileHidden }>\n        <p className={ Classes.text }>\n          { description }\n          &nbsp;\n        </p>\n        { renderPrintedOn(printedOn, limitedEdition) }\n      </div>\n    </>\n  );\n\n  return (\n    <>\n      { s1 }\n      { s2 }\n    </>\n  );\n};\n\nWorkSummary.propTypes = {\n  id: T.number,\n  frameId: T.number,\n  paperId: T.number,\n  title: T.string,\n  authorName: T.string,\n  authorId: T.number,\n  authorSlug: T.string,\n  description: T.string,\n  printedOn: T.string,\n  limitedEdition: T.bool,\n  isHidden: T.bool,\n  href: T.string,\n  isMobile: T.bool\n};\n\nexport default WorkSummary;\n","import { connect } from 'react-redux';\nimport AddToCart from './smart_add_to_cart';\nimport { currentPriceAndNonGlare } from './add_to_cart';\n\nconst mapStateToProps = ({ selection, work }) => ({\n  ...currentPriceAndNonGlare(selection, 'price'),\n  inStock: work && work.data ? work.data.inStock : null,\n  selection: !!selection.frame,\n  frameId: selection && selection.frame && selection.frame.frameId,\n  workId: work && work.data && work.data.id,\n  paperId: selection && selection.paper && selection.paper.paperId,\n  currency: work.data.currency\n});\n\nconst mapDispatchToProps = () => ({});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AddToCart);\n","import React from 'react';\nimport T from 'prop-types';\nimport * as Classes from './styles.module.scss';\n\nconst Entry = ({ label, value }) => (\n  <div className={ Classes.entry }>\n    <div className={ Classes.label }>\n      { label }\n      :\n    </div>\n    <div className={ Classes.value }>\n      { value }\n    </div>\n  </div>\n);\n\nEntry.propTypes = {\n  label: T.string,\n  value: T.string\n};\n\nexport default Entry;\n","// extracted by mini-css-extract-plugin\nvar _1 = \"csGzcl2tkRzYoCzC4PxS\";\nvar _2 = \"R2BOgqLAdpOWbNvET40w\";\nvar _3 = \"_4qkYw9o6IFbGG0vbKNwn\";\nexport { _1 as \"entry\", _2 as \"label\", _3 as \"value\" }\n","import React from 'react';\nimport T from 'prop-types';\nimport {\n  frameShape,\n  paperShape\n} from 'arts/reducers/work';\nimport Constants, { TAPESTRY } from 'arts/config/constants';\nimport { humanSize } from 'arts/config/lib';\nimport Entry from './entry';\nimport Expandable from '../expandable';\n\nconst PRODUCT_DETAILS = 'Product Details and Dimensions';\n\nconst title = (frame, paper) => {\n  if (paper.paperMaterial === 'Canvas') {\n    return `Canvas ${ PRODUCT_DETAILS }`;\n  }\n\n  if (frame.frameId) {\n    if (paper.paperMaterial !== TAPESTRY) {\n      return `Framed ${ PRODUCT_DETAILS }`;\n    }\n  }\n\n  return PRODUCT_DETAILS;\n};\n\nexport const renderDetailEtries = (frame, paper, landscape) => {\n  const entries = [];\n  let sizes = null;\n  if (frame.frameId && frame.frameMat === 0) {\n    sizes = `${ humanSize(landscape, paper.displayPrintWidthNoMat, paper.displayPrintHeightNoMat, 'x') }${ window.currentLocale.unit }`;\n  } else {\n    sizes = `${ humanSize(landscape, paper.displayPrintWidth, paper.displayPrintHeight, 'x') }${ window.currentLocale.unit }`;\n  }\n  entries.push(<Entry label=\"image size\" value={ sizes } key=\"is\" />);\n  if (frame.frameId) {\n    entries.push(<Entry label={ `${ frame.frameLabel } Moulding` } value={ frame.frameName } key=\"fn\" />);\n    entries.push(<Entry label={ `${ frame.frameLabel } Width` } value={ `${ frame.frameDisplayWidth }${ window.currentLocale.unit }` } key=\"fdw\" />);\n    if (paper.paperMaterial !== TAPESTRY) {\n      entries.push(<Entry label=\"Frame Depth\" value={ frame.frameDisplayDepth } key=\"fdd\" />);\n    }\n    const finalSize =  paper.paperMaterial === TAPESTRY ? 'Final Size' : 'Final Framed Size';\n    entries.push(<Entry label={ finalSize } value={ frame.frameFinalFramedSize } key=\"ffs\" />);\n  } else if (paper.paperMaterial === 'Canvas') {\n    entries.push(<Entry label=\"canvas size\" value={ sizes } key=\"cs\" />);\n  } else {\n    entries.push(<Entry label=\"Print Dimensions\" value={ `${ humanSize(landscape, paper.displayPaperWidth, paper.displayPaperHeight, 'x') }${ window.currentLocale.unit }` } key=\"pd\" />);\n  }\n  return entries;\n};\n\nconst SelectionDetails = ({\n  frame, paper, hasSelection, landscape\n}) => {\n  if (!hasSelection) { return null; }\n\n  return (\n    <Expandable title={ title(frame, paper) } eKey={ Constants.Expandable.KEYS.selectionDetails }>\n      { renderDetailEtries(frame, paper, landscape) }\n    </Expandable>\n  );\n};\n\nSelectionDetails.propTypes = {\n  paper: paperShape,\n  frame: frameShape,\n  hasSelection: T.bool,\n  landscape: T.bool\n};\n\nexport default SelectionDetails;\n","import { connect } from 'react-redux';\nimport SelectionDetails from './selection_details';\n\nconst mapStateToProps = ({ selection, work }) => {\n  const { landscape } = ((work || {}).data || {}) || {};\n  return {\n    ...selection,\n    hasSelection: !!selection.frame,\n    landscape\n  };\n};\n\nconst mapDispatchToProps = () => ({});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SelectionDetails);\n","import React from 'react';\nimport T from 'prop-types';\nimport Expandable from 'arts/components/expandable';\nimport Constants, { CANVAS /* , TAPESTRY */ } from 'arts/config/constants';\n\nconst AdditionalInfo = ({\n  aboutPaper, paperMaterial, withFrame\n}) => {\n  const lines = aboutPaper || [];\n  if (paperMaterial === CANVAS && withFrame) {\n    lines.push('A space 1/8\" wide between the canvas and the moulding');\n  }\n\n  return (\n    <Expandable title=\"Additional Print Info\" eKey={ Constants.Expandable.KEYS.additionalInfo }>\n      <div>\n        {\n          lines.map((l, i) => (\n            <div key={ i }>\n              -\n              {' '}\n              {l}\n            </div>\n          ))\n        }\n        <strong>\n          As our prints and frames are custom made to order according to your\n          specifications, all of our products are final sale and non-returnable.\n        </strong>\n      </div>\n    </Expandable>\n  );\n};\n\nAdditionalInfo.propTypes = {\n  withFrame: T.bool,\n  paperMaterial: T.string,\n  aboutPaper: T.arrayOf(T.string)\n};\n\nexport default AdditionalInfo;\n","import { connect } from 'react-redux';\nimport AdditionalInfo from './additional_info';\n\nconst mapStateToProps = ({ selection, work }) => ({\n  withFrame: !!(selection.frame || {}).frameId,\n  paperMaterial: (\n    work.data\n    && work.data.workSizes\n    && work.data.workSizes[0]\n    && work.data.workSizes[0].paperMaterial\n  ),\n  aboutPaper: work.data && work.data.aboutPaper\n});\n\nconst mapDispatchToProps = () => ({});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AdditionalInfo);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Expandable from 'arts/components/expandable';\nimport Constants from 'arts/config/constants';\nimport { shippingDetailsItems } from 'arts/components/extra_info/shipping_details';\nimport { mat } from 'arts/components/PapersMenu/mounts';\nimport { CANVAS, TAPESTRY } from '../../config/constants';\n\nconst ExtraInfo = ({ aboutPrints, selection }) => {\n  // if (!selection || !selection.paper) return null;\n\n  const { currentLocale } = window.currentLocale;\n  const isUK = currentLocale === 'uk';\n\n  let frameDetails = null;\n\n  switch (selection && selection.paper && selection.paper.paperMaterial) {\n    case TAPESTRY:\n      frameDetails = (\n        <Expandable title=\"Hanging Rods\" eKey={ Constants.Expandable.KEYS.frameDetails }>\n          <p>\n            Our tapestries are anchored with a hanging rod on the top and one on the bottom.\n            All of our hanging rods are made from wood.\n          </p>\n        </Expandable>\n      );\n      break;\n    case CANVAS:\n      frameDetails = (\n        <Expandable title=\"Frames\" eKey={ Constants.Expandable.KEYS.frameDetails }>\n          {\n            isUK ? (\n              <p>\n                Canvas prints do not require a hanging wire and can be hung\n                directly on a screw or nail.\n              </p>\n            ) : (\n              <p>\n                Our canvas prints are professionally framed with a woodgrain frame,\n                designed specifically for framing canvas. The frame has a stepped inner\n                edge to add subtle depth, and comes ready to hang with a hanging wire.\n              </p>\n            )\n          }\n        </Expandable>\n      );\n      break;\n    default: {\n      const plexiGlass = isUK ? 'plexi-glass' : 'an archival UV plexi-glass';\n      frameDetails = (\n        <Expandable title=\"Frames\" eKey={ Constants.Expandable.KEYS.frameDetails }>\n          <p>\n            Our fine art paper prints and photographs are professionally framed\n            with&nbsp;\n            { plexiGlass }\n            , and come ready to hang on your wall\n            with a hanging wire. Prints can be framed with a&nbsp;\n            { mat() }\n            &nbsp;white mat,\n            or without.\n          </p>\n        </Expandable>\n      );\n      break;\n    }\n  }\n\n  return (\n    <div>\n      <Expandable title=\"Prints\" eKey={ Constants.Expandable.KEYS.prints }>\n        {\n          (aboutPrints || []).map((v, i) => (\n            <p key={ i }>{ v }</p>\n          ))\n        }\n      </Expandable>\n      { frameDetails }\n      <Expandable title=\"Shipping\" eKey={ Constants.Expandable.KEYS.shipping }>\n        { shippingDetailsItems() }\n      </Expandable>\n    </div>\n  );\n};\n\nExtraInfo.propTypes = {\n  selection: PropTypes.object,\n  aboutPrints: PropTypes.arrayOf(PropTypes.string)\n};\n\nexport default ExtraInfo;\n","import { connect } from 'react-redux';\nimport ExtraInfo from './extra_info';\n\nconst mapStateToProps = ({ selection, work }) => ({\n  selection,\n  aboutPrints: work.data && work.data.aboutPrints\n});\n\nconst mapDispatchToProps = () => ({});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ExtraInfo);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Constants from 'arts/config/constants';\nimport Expandable from '../expandable';\nimport * as Classes from './styles.module.scss';\n\nconst AboutTheArt = ({\n  description, printedOn, limitedEdition\n}) => (\n  <Expandable\n    className={ Classes.aboutTheArt }\n    title=\"About The Art\"\n    eKey={ Constants.Expandable.KEYS.about }\n  >\n    <div>\n      <p>{ description }</p>\n      <p>\n        Printed on&nbsp;\n        { printedOn }\n        { limitedEdition ? '' : ' (Open Edition)' }\n      </p>\n    </div>\n  </Expandable>\n);\n\nAboutTheArt.propTypes = {\n  description: PropTypes.string,\n  printedOn: PropTypes.string,\n  limitedEdition: PropTypes.bool\n};\n\nexport default AboutTheArt;\n","import React, { useEffect } from 'react';\nimport T from 'prop-types';\nimport classnames from 'classnames';\nimport { Link } from 'react-router-dom';\nimport { frameShape, workShape } from 'arts/reducers/work';\nimport { toCamelCase } from 'arts/config/convertCase';\nimport { linkTo } from 'arts/config/lib';\nimport { trackEvent } from 'arts/config/analytics';\nimport MoreDetails from './more_details';\nimport PapersMenu from '../PapersMenu';\nimport Viewer from '../Viewer';\nimport WorkSummary from '../WorkSummary';\nimport AddToCart from '../AddToCart';\nimport SelectionDetails from '../selection_details';\nimport AdditionalInfo from '../additional_info';\nimport ExtraInfo from '../extra_info';\nimport BreadCrumbs from './bread_crumbs';\nimport AboutTheArt from './about_the_art';\nimport GTMPageView, { GtmDetails } from '../Application/data_layer';\n\nimport * as AppClasses from '../Application/styles.module.scss';\nimport * as Classes from './styles.module.scss';\n\nconst Work = ({\n  id,\n  detail,\n  fetchWork,\n  data,\n  modal,\n  paperId,\n  frameId,\n  selectedFrame,\n  selectedPaper\n}) => {\n  useEffect(() => {\n    const details = detail || (window.arts && toCamelCase(window.arts[id])) || {};\n    fetchWork(id, details);\n  }, [id]);\n\n  let papers = null;\n  const {\n    title, authorName, authorId, authorSlug, description, aboutPaper,\n    limitedEdition, isHidden, href,\n    notAvailable, allowStores, storeItemId, aboutTheAuthor,\n    workSizes, landscape\n  } = data;\n\n  useEffect(() => {\n    if (id && title && authorId) {\n      trackEvent('art page', {\n        'work id': id,\n        'author id': authorId,\n        name: title,\n        'author name': authorName,\n        display: (modal ? 'modal' : 'page')\n      });\n    }\n  }, [id, title, authorId]);\n\n  if (notAvailable && !isHidden) {\n    papers = (\n      <div className={ Classes.notAvailable }>This art is no longer available</div>\n    );\n  } else {\n    papers = (\n      <PapersMenu\n        data={ workSizes }\n        initialPaperId={ paperId }\n        initialFrameId={ frameId }\n        landscape={ landscape }\n      />\n    );\n  }\n\n  const breadCrumbs = modal\n    ? null\n    : (\n      <BreadCrumbs\n        authorName={ data.authorName }\n        authorSlug={ data.authorSlug }\n        authorId={ parseInt(data.authorId, 10) }\n      />\n    );\n\n  const {\n    price: retailPrice, gtmVariant, frameId: selectedFrameId\n  } = selectedFrame || {};\n\n  const { paperId: selectedPaperId } = selectedPaper || {};\n\n  const summaryProps = {\n    title,\n    authorName,\n    authorId,\n    authorSlug,\n    description,\n    printedOn: aboutPaper ? aboutPaper[0] : '',\n    limitedEdition,\n    isHidden,\n    id,\n    href,\n    frameId: selectedFrameId,\n    paperId: selectedPaperId\n  };\n\n  const aboutProps = { ...summaryProps, description };\n\n  const addRemoveFromStore = allowStores && !notAvailable;\n\n  let fullDetails = null;\n  let moreDetails = {\n    name:  authorName,\n    about: aboutTheAuthor\n  };\n\n  if (authorId) {\n    if (!modal && id) {\n      moreDetails = {\n        ...moreDetails,\n        artistId: authorId,\n        id\n      };\n    }\n    fullDetails = modal ? (\n      <Link to={ linkTo(href) } className={ Classes.fullDetails }>View Full Details</Link>\n    ) : null;\n  }\n\n  const gtmDetailsData = {\n    id, title, firstPaper: { retailPrice, gtmVariant }, authorName\n  };\n\n  return (\n    <div className={ AppClasses.innerContainerArt }>\n      { id ? <GTMPageView pageType=\"product\" section=\"art prints\" key={ id } /> : null }\n      { retailPrice && title ? <GtmDetails key={ `d-${ id }-${ gtmVariant }` } data={ gtmDetailsData } /> : null }\n      { breadCrumbs }\n      <div className={ classnames(Classes.work, { [Classes.modalRoot]: modal }) }>\n        <WorkSummary { ...summaryProps } isMobile />\n        <Viewer id={ id } extraContent={ fullDetails } />\n        <aside className={ Classes.sizeSelection }>\n          <WorkSummary { ...summaryProps } />\n          { papers }\n          <AddToCart\n            addRemoveFromStore={ addRemoveFromStore }\n            storeItemId={ storeItemId }\n            allowQnty\n          />\n          <AdditionalInfo />\n          <AboutTheArt { ...aboutProps } />\n          <SelectionDetails />\n          <ExtraInfo />\n        </aside>\n      </div>\n      <MoreDetails { ...moreDetails } />\n    </div>\n  );\n};\n\nWork.propTypes = {\n  id: T.number.isRequired,\n  detail: T.shape({}),\n  fetchWork: T.func.isRequired,\n  data: workShape,\n  modal: T.bool,\n  paperId: T.number,\n  frameId: T.number,\n  selectedFrame: frameShape,\n  selectedPaper: T.shape({})\n};\n\nexport default Work;\n","import { connect } from 'react-redux';\nimport { fetchWork } from 'arts/actions/work';\nimport Work from './work';\n\nconst findWorkDetails = (works, id, detail) => (\n  detail || ((works || {}).collection || []).find(w => w.id === id)\n);\n\nconst mapStateToProps = ({ selection, works, work: { data, error, loading } }, { id, detail }) => ({\n  data,\n  error,\n  loading,\n  selectedFrame: (selection || {}).frame,\n  selectedPaper: (selection || {}).paper,\n  otherImageUrl: (selection || {}).otherImageUrl,\n  detail: findWorkDetails(works, id, detail)\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n  fetchWork: (id, detail) => { dispatch(fetchWork(id, detail)); }\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Work);\n","// extracted by mini-css-extract-plugin\nvar _1 = \"mmhr4PYiH1kAgbPb3Zw7\";\nvar _2 = \"wmyG9E90WXyuLmgpgBPn\";\nexport { _1 as \"links\", _2 as \"root\" }\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport classnames from 'classnames';\nimport * as Classes from './styles.module.scss';\n\nconst renderLink = (text, to, index, isLast) => (\n  isLast ? (\n    <Link to={ to } key={ index }>\n      { text }\n    </Link>\n  ) : [\n    (\n      <Link to={ to } key={ index }>\n        { text }\n      </Link>\n    ),\n    (\n      <span key=\"slash\">/</span>\n    )\n  ]\n);\n\nexport const BreadCrumbsSkeleton = () => (\n  <div className={ Classes.root }>\n    <div className={ Classes.links }>\n      &nbsp;\n    </div>\n  </div>\n);\n\nconst BreadCrumbs = ({\n  links, className, rootClassName, children\n}) => (\n  <div className={ classnames(Classes.root, rootClassName) }>\n    <div className={ classnames(Classes.links, className) }>\n      {\n        links.map(\n          ({ text, to }, index) => renderLink(text, to, index, index === links.length - 1)\n        )\n      }\n    </div>\n    { children }\n  </div>\n);\n\nBreadCrumbs.propTypes = {\n  links: PropTypes.arrayOf(PropTypes.shape({\n    text: PropTypes.string,\n    to: PropTypes.string.isRequired\n  })).isRequired,\n  children: PropTypes.node,\n  className: PropTypes.string,\n  rootClassName: PropTypes.string\n};\n\nexport default BreadCrumbs;\n","import React, { PureComponent } from 'react';\nimport classnames from 'classnames';\nimport T from 'prop-types';\nimport Collapsible from 'arts/components/Collapsible';\nimport * as Classes from './styles.module.scss';\n\nexport default class Expandable extends PureComponent {\n  static propTypes = {\n    title: T.string.isRequired,\n    children: T.node.isRequired,\n    eKey: T.string.isRequired,\n    open: T.bool.isRequired,\n    expand: T.func.isRequired,\n    className: T.string\n  };\n\n  toggle = (e) => {\n    const { eKey, expand } = this.props;\n    e.preventDefault();\n    expand(eKey);\n  }\n\n  render() {\n    const {\n      className, open, title, children\n    } = this.props;\n    return (\n      <div className={ classnames(Classes.expandable, className) }>\n        <a href=\"#expand\" onClick={ this.toggle }>\n          <span className={ `${ Classes.triangle } ${ open ? Classes.open : '' }` } />\n          <span>{ title }</span>\n        </a>\n        <Collapsible collapsed={ !open }>\n          <div className={ Classes.content }>\n            { children }\n          </div>\n        </Collapsible>\n      </div>\n    );\n  }\n}\n","// extracted by mini-css-extract-plugin\nvar _1 = \"BCL2ds2XnYdF3lJ5DJD7\";\nvar _2 = \"kHNVWMauXQAJVKfooo4c\";\nvar _3 = \"SmztE1_oVRHMyb1os4BA\";\nvar _4 = \"RGznuVimqTJ3ln2AhELi\";\nexport { _1 as \"content\", _2 as \"expandable\", _3 as \"open\", _4 as \"triangle\" }\n","import { connect } from 'react-redux';\nimport { expand } from 'arts/actions/expand';\nimport Expandable from './expandable';\n\nconst mapStateToProps = ({ expandable }, { eKey }) => ({\n  open: !!expandable[eKey]\n});\n\nconst mapDispatchToProps = (dispatch, { eKey }) => ({\n  expand: () => dispatch(expand(eKey))\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Expandable);\n","import Constants from 'arts/config/constants';\n\nexport const expand = (key) => ({\n  type: Constants.Expandable.ACTIONS.expand,\n  key\n});\n","import React from 'react';\n\nexport default (props) => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 21 19\" { ...props }>\n    <path d=\"M15.34 1.9c1 0 1.93.41 2.64 1.14 1.5 1.56 1.5 4.1 0 5.66L16.8 9.93l-6.29 6.55-6.3-6.55L3.02 8.7c-1.5-1.56-1.5-4.1 0-5.66.71-.73 1.65-1.14 2.64-1.14s1.94.41 2.65 1.14l1.18 1.23 1.01 1.05 1.01-1.05 1.18-1.23a3.68 3.68 0 012.65-1.14m0-1.4c-1.32 0-2.64.52-3.65 1.57L10.5 3.3 9.32 2.07C8.31 1.02 6.99.5 5.66.5s-2.64.52-3.65 1.57C0 4.17 0 7.57 2.01 9.67L3.2 10.9l7.3 7.6 7.3-7.6 1.18-1.23c2.02-2.1 2.02-5.5 0-7.6-1-1.05-2.32-1.57-3.64-1.57z\" />\n  </svg>\n);\n","import React from 'react';\n\nexport default (props) => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 21 19\" { ...props }>\n    <path d=\"M18.99 2.07c-2.02-2.1-5.29-2.1-7.3 0L10.5 3.3 9.32 2.07c-2.02-2.1-5.29-2.1-7.3 0C0 4.17 0 7.57 2.01 9.67L3.2 10.9l7.3 7.6 7.3-7.6 1.18-1.23c2.02-2.1 2.02-5.5.01-7.6z\" />\n  </svg>\n);\n","// extracted by mini-css-extract-plugin\nvar _1 = \"aFSN3O2Qhh4FqjePRYT3\";\nvar _2 = \"aaRM_DpYs_hBjAzZpxKT\";\nvar _3 = \"qOQrvfHpzEjJUcg06NLp\";\nexport { _1 as \"button\", _2 as \"off\", _3 as \"on\" }\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport HeartE from './heart_e';\nimport HeartF from './heart_f';\nimport * as classes from './styles.module.scss';\n\nconst Favorite = ({\n  id,\n  type,\n  isAdded,\n  add,\n  remove,\n  load,\n  loading,\n  loaded,\n  className\n}) => {\n  useEffect(() => {\n    if (!loaded && !loading) {\n      load();\n    }\n  }, []);\n\n  if (!window.currentUser) {\n    const onSignIn = () => {\n      const event = new CustomEvent('LoginRequiredFavroutes');\n      document.dispatchEvent(event);\n    };\n\n    return (\n      <button className={ classnames(classes.button, className) } type=\"button\" onClick={ onSignIn } aria-label=\"Add to Favorites\">\n        <HeartE className={ classes.off } />\n      </button>\n    );\n  }\n\n  if (!loaded) {\n    return null;\n  }\n\n  const onClick = () => {\n    if (isAdded) {\n      remove(id, type);\n    } else {\n      add(id, type);\n    }\n  };\n\n  const icon = isAdded ? <HeartF className={ classes.on } /> : <HeartE className={ classes.off } />;\n\n  return (\n    <button\n      className={ classnames(classes.button, className) }\n      type=\"button\"\n      onClick={ onClick }\n      alt=\"Add to Favorites\"\n    >\n      { icon }\n    </button>\n  );\n};\n\nFavorite.propTypes = {\n  id: PropTypes.number.isRequired,\n  type: PropTypes.string.isRequired,\n\n  isAdded: PropTypes.bool,\n\n  add: PropTypes.func.isRequired,\n  remove: PropTypes.func.isRequired,\n  load: PropTypes.func.isRequired,\n\n  loading: PropTypes.bool.isRequired,\n  loaded: PropTypes.bool.isRequired,\n\n  className: PropTypes.string\n};\n\nexport default Favorite;\n","import { createSelector } from 'reselect';\n\nconst getFavories = ({ favorites }) => favorites;\n\nconst getProps = (_, { id, type }) => ({ type, id });\n\nexport const fetchFavorites = createSelector(\n  [getFavories, getProps],\n  (favorites, { id, type }) => {\n    const { loaded, loading, ...rest } = favorites;\n    const res = {\n      loaded,\n      loading\n    };\n    const favorite = (rest[type] || {})[id];\n    if (favorite) {\n      res.isAdded = true;\n    }\n    return res;\n  }\n);\n","import { connect } from 'react-redux';\nimport Favorite from './favorite';\nimport { add, remove, load } from '../../actions/favorites';\nimport { fetchFavorites } from '../../selectors/favorite';\n\nconst mapStateToProps = (state, props) => fetchFavorites(state, props);\n\nexport default connect(mapStateToProps, { add, remove, load })(Favorite);\n","// extracted by mini-css-extract-plugin\nvar _1 = \"n7_DcyVfnVhTplui9ECo\";\nvar _2 = \"170px\";\nvar _3 = \"2px\";\nvar _4 = \"aTjoUMRu2oXLVIg7ATCa\";\nvar _5 = \"WOaOyxff3ZvZRuDOqOql\";\nexport { _1 as \"extended\", _2 as \"imageheight\", _3 as \"imagepadding\", _4 as \"images\", _5 as \"item\" }\n","import React, { useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport AliceCarousel from 'react-alice-carousel';\nimport classnames from 'classnames';\nimport { Link } from 'react-router-dom';\nimport { linkTo } from 'arts/config/lib';\nimport { aliceSliderSettins, handleDragStart } from 'arts/components/slider_arrows';\nimport * as Classes from './styles.module.scss';\nimport { onWorkItems, onWorkClick } from '../../config/analytics';\nimport { renderText } from '../ArtistWorks/artist_details';\n\n// see imageheight, imagepadding in styles\nconst { imagepadding, imageheight } = Classes;\n\nexport const calculateWith = (imageWidth, imageHeight) => (\n  imageWidth * (parseInt(imageheight, 10) / imageHeight) + 2 * parseInt(imagepadding, 10)\n);\n\nexport const WorkImage = ({\n  imgUrl,\n  imageHeight,\n  imageWidth,\n  title,\n  href,\n  onClick,\n  index\n}) => {\n  const width = calculateWith(imageWidth, imageHeight);\n  const style = { width };\n  const onItemClick = () => onClick(index);\n  return (\n    <Link\n      to={ linkTo(href) }\n      className={ Classes.item }\n      style={ style }\n      onDragStart={ handleDragStart }\n      onDragEnd={ handleDragStart }\n      onClick={ onItemClick }\n    >\n      <img src={ imgUrl } alt={ title } style={ style } />\n    </Link>\n  );\n};\n\nWorkImage.propTypes = {\n  imgUrl: PropTypes.string,\n  imageHeight: PropTypes.number,\n  imageWidth: PropTypes.number,\n  href: PropTypes.string,\n  title: PropTypes.string,\n  onClick: PropTypes.func,\n  index: PropTypes.number.isRequired\n};\n\nconst SmallItemsCarousel = ({\n  items, title, onClick, renderItem, gtmListName, extended\n}) => {\n  const ref = useRef(null);\n\n  const className = classnames(Classes.images, { [Classes.extended]: extended });\n\n  if (!renderItem && (!items || !items.length)) {\n    return renderText(title, <div className={ className } ref={ ref } />, true);\n  }\n\n  const onItemClick = (position) => {\n    onWorkClick(items[position], 'product', gtmListName, position);\n    if (onClick) { onClick(); }\n  };\n\n  const content = renderItem ? items.map(renderItem) : items.map((i, index) => (\n    <WorkImage { ...i } onClick={ onItemClick } key={ index } index={ index } />\n  ));\n\n  const findVisible = () => {\n    const visibleIndexes = [];\n    if (ref.current) {\n      const parent = ref.current.getElementsByClassName('alice-carousel')[0];\n      if (!parent) { return []; }\n      const { left: parentLeft, right: parentRight } = parent.getBoundingClientRect();\n      const elements = ref.current.getElementsByClassName('alice-carousel__stage-item');\n      for (let i = 0, l = elements.length; i < l; i += 1) {\n        const { left, right } = elements[i].getBoundingClientRect();\n        const isVisible = left >= parentLeft && right <= parentRight;\n        if (isVisible) {\n          visibleIndexes.push(i);\n        }\n      }\n    }\n    return visibleIndexes;\n  };\n\n  const reportVisible = () => {\n    const works = findVisible().map(i => items[i]);\n    if (works.length) {\n      onWorkItems({ items: works, listName: gtmListName, pageType: 'product' });\n    }\n  };\n\n  const images = (\n    <div className={ className } ref={ ref }>\n      <AliceCarousel\n        { ...aliceSliderSettins() }\n        items={ content }\n        onInitialized={ reportVisible }\n        onSlideChanged={ reportVisible }\n      />\n    </div>\n  );\n\n  return renderText(title, images, true);\n};\n\nSmallItemsCarousel.propTypes = {\n  items: PropTypes.arrayOf(PropTypes.shape({\n    imgUrl: PropTypes.string,\n    imageHeight: PropTypes.number,\n    imageWidth: PropTypes.number,\n    href: PropTypes.string,\n    title: PropTypes.string\n  })),\n  title: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n  onClick: PropTypes.func,\n  renderItem: PropTypes.func,\n  gtmListName: PropTypes.string,\n  extended: PropTypes.bool\n};\n\nexport default SmallItemsCarousel;\n","import Constants from 'arts/config/constants';\nimport { addToStoreItemsApi, removeFromStoreItemsApi } from 'arts/config/api';\n\nexport const updateUI = (totalItems) => {\n  document.querySelector('.my-store-status strong').innerHTML = totalItems;\n};\n\nexport const add = (opts) => (dispatch) => {\n  addToStoreItemsApi(opts)\n    .then(\n      (data) => {\n        if (!data) { return; }\n        const { id, storableId, totalItems } = data;\n        dispatch({\n          storeItemId: id,\n          wallId: storableId,\n          type: Constants.WallStoreItems.ADDED\n        });\n        updateUI(totalItems);\n      }\n    ).catch(() => { });\n};\n\nexport const remove = (wallId, storeItemId) => (dispatch) => {\n  removeFromStoreItemsApi(storeItemId)\n    .then(\n      (data) => {\n        if (!data) { return; }\n        const { totalItems } = data;\n        dispatch({\n          wallId,\n          type: Constants.WallStoreItems.REMOVED\n        });\n        updateUI(totalItems);\n      }\n    ).catch(() => { });\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport * as Classes from './styles.module.scss';\n\nconst StoreItem = ({\n  wallId,\n  workId,\n  storeItemId,\n  add,\n  remove,\n  className,\n  paperId,\n  frameId\n}) => {\n  const onAction = (e) => {\n    e.preventDefault();\n    if (storeItemId) {\n      const id = wallId || workId;\n      remove(id, storeItemId);\n      return;\n    }\n    const props = { frameId, paperId };\n    if (wallId) {\n      props.wallId = wallId;\n    } else {\n      props.workId = workId;\n    }\n    add(props);\n  };\n\n  const action = storeItemId ? 'Remove from Store' : 'Add To Store';\n  return (\n    <button\n      className={ classnames(Classes.storeItem, className) }\n      onClick={ onAction }\n      type=\"button\"\n    >\n      { action }\n    </button>\n  );\n};\n\nStoreItem.propTypes = {\n  wallId: PropTypes.number,\n  workId: PropTypes.number,\n  storeItemId: PropTypes.number,\n  add: PropTypes.func.isRequired,\n  remove: PropTypes.func.isRequired,\n  className: PropTypes.string,\n  paperId: PropTypes.number,\n  frameId: PropTypes.number\n};\n\nexport default StoreItem;\n","// extracted by mini-css-extract-plugin\nvar _1 = \"N1a80zUk46tLadiSkk5b\";\nexport { _1 as \"storeItem\" }\n","import { connect } from 'react-redux';\nimport { add as addWork, remove as removeWork } from 'arts/actions/work_store_items';\nimport { add as addWall, remove as removeWall } from 'arts/actions/wall_store_items';\nimport StoreItem from './store_item';\n\nexport const WorkStoreItem = connect(null, {\n  add: addWork,\n  remove: removeWork\n})(StoreItem);\n\nexport const WallStoreItem = connect(null, {\n  add: addWall,\n  remove: removeWall\n})(StoreItem);\n","import Constants from 'arts/config/constants';\nimport { addToStoreItemsApi, removeFromStoreItemsApi } from 'arts/config/api';\nimport { updateUI } from './wall_store_items';\n\nexport const add = (opts) => (dispatch) => {\n  addToStoreItemsApi(opts)\n    .then(\n      (data) => {\n        if (!data) { return; }\n        const { id, storableId, totalItems } = data;\n        dispatch({\n          storeItemId: id,\n          workId: storableId,\n          type: Constants.WorkStoreItems.ADDED\n        });\n        updateUI(totalItems);\n      }\n    ).catch(() => {});\n};\n\nexport const remove = (workId, storeItemId) => (dispatch) => {\n  removeFromStoreItemsApi(storeItemId)\n    .then(\n      (data) => {\n        if (!data) { return; }\n        const { totalItems } = data;\n        dispatch({\n          workId,\n          type: Constants.WorkStoreItems.REMOVED\n        });\n        updateUI(totalItems);\n      }\n    ).catch(() => {});\n};\n","import { useState, useEffect } from 'react';\n\nexport const useWindowSize = () => {\n  const [windowSize, setWindowSize] = useState({\n    width: window.innerWidth,\n    height: window.innerHeight\n  });\n\n  useEffect(() => {\n    const onResize = () => window.requestAnimationFrame(\n      () => setWindowSize({ width: window.innerWidth, height: window.innerHeight })\n    );\n    window.addEventListener('resize', onResize);\n    return () => window.removeEventListener('resize', onResize);\n  }, []);\n\n  return windowSize;\n};\n","// extracted by mini-css-extract-plugin\nvar _1 = \"avsyRtL_QWOVm9u5yIPj\";\nvar _2 = \"p9jywNHGIHPS_YWuzOlz\";\nvar _3 = \"BZqeW901UmGynDP5eJ15\";\nvar _4 = \"ejg1F5mwhhwb3Ul60gtB\";\nvar _5 = \"mtffQ5bHNIIVMwaeK4HT\";\nvar _6 = \"w6lfJ85uUnz1cC5L6Aeg\";\nvar _7 = \"agEAVdHmEKUl9HerXhtW\";\nvar _8 = \"udx41kEiYvSeuV2G6kns\";\nvar _9 = \"x4FhH5ItL5vRIq24GhDl\";\nvar _a = \"WhpkQy5GDhkIHyR2vHU0\";\nvar _b = \"uLAM5xT05_SUK3BthddZ\";\nvar _c = \"jyudmO3SZHDGInYLHzTd\";\nvar _d = \"LO9zaZZbCZrmx1nDsjnF\";\nvar _e = \"aLTBtc_Rd9aJGP8dsrgV\";\nvar _f = \"kPjO4x6gnIi96z8J92sL\";\nvar _10 = \"I0l9OnkFyPKfzXvXK0qh\";\nvar _11 = \"PmX51IS7KO5BIVtSGKgg\";\nvar _12 = \"QSarxn7UNzrzJVuYF9N1\";\nvar _13 = \"ca_XbOx3Zfy9KzInKiAx\";\nvar _14 = \"rmyhPIQLfEXKWpTWjmiA\";\nvar _15 = \"fux6fbzbvel5gOLMGKBU\";\nexport { _1 as \"adding\", _2 as \"affirmPromo\", _3 as \"b1\", _4 as \"b2\", _5 as \"b3\", _6 as \"bar\", _7 as \"barHolder\", _8 as \"bl\", _9 as \"button\", _a as \"buttonContainer\", _b as \"buttonHolder\", _c as \"grow\", _d as \"onWall\", _e as \"qnty\", _f as \"qntyButton\", _10 as \"qntyInput\", _11 as \"shipping\", _12 as \"soldOut\", _13 as \"storeItem\", _14 as \"total\", _15 as \"warning\" }\n","// extracted by mini-css-extract-plugin\nvar _1 = \"JHy6KcQW0hYPsxDF7zLI\";\nvar _2 = \"s_NTys4RXRaBxrj9JC_X\";\nvar _3 = \"k60l5WX8aXbfyLOvWNRj\";\nvar _4 = \"awsYEwfhBIjiV7ILimHL\";\nvar _5 = \"WfeI1x7aCtF9di3p_iMz\";\nvar _6 = \"NtllDbU4RmYshDgHbtsl\";\nvar _7 = \"d7MzskdQkRBBCuBOVUSh\";\nvar _8 = \"m3ov7ZpdBssoQCeYzgng\";\nvar _9 = \"QQ_R1PN65oad6x7NE2VD\";\nvar _a = \"ejlbgwXfojncHQGule2V\";\nvar _b = \"ZA6PDqRg01DtXtBN53KA\";\nvar _c = \"UlbJSbLSb2WrcsxW7bDv\";\nvar _d = \"_1m4shkDlTi6tG2ILgjyp\";\nvar _e = \"ox2FN0C1DC9nrcKzNGqh\";\nvar _f = \"m5zqcoQCLlt7RwbLVuG9\";\nexport { _1 as \"artistName\", _2 as \"author\", _3 as \"column\", _4 as \"content\", _5 as \"details\", _6 as \"favorite\", _7 as \"like\", _8 as \"middle\", _9 as \"profile\", _a as \"right\", _b as \"section\", _c as \"share\", _d as \"styles\", _e as \"title\", _f as \"withImages\" }\n","// extracted by mini-css-extract-plugin\nvar _1 = \"LkiGpUNb7zxyQMLPDCPT\";\nvar _2 = \"LGmdgNRNNoXz34NUwRPU\";\nvar _3 = \"yp7cSjNHLvexsM6AnGeB\";\nvar _4 = \"yR2A4pdRw2CHXvC7gpxw\";\nvar _5 = \"T2QzTyrMxiaW9tGbpLh1\";\nvar _6 = \"YvU3E3SVnWEve4DtKkwI\";\nvar _7 = \"DKgtbr1kmwUAViz2CoWp\";\nvar _8 = \"PcaggSywK3Vdx1BDr6OU\";\nvar _9 = \"V0lYXcNRH4d3RNBPiFEL\";\nvar _a = \"Ol4TeDEEkO7iCr9Kk2uS\";\nvar _b = \"lztilp1xS9zUrMwmoaRA\";\nvar _c = \"dm0NZR6McuaCzhfqp2yG\";\nvar _d = \"_ckrDz98IzlKJAu1t9iG\";\nvar _e = \"Ybj9Z5J19i8md8sRsfzK\";\nvar _f = \"Y2qkPta2fK9aYM6U4mg9\";\nvar _10 = \"MxvMhxYNIg5gPQKcHA7J\";\nvar _11 = \"nNkY1SeG4cTYjppZlw6R\";\nvar _12 = \"OW0K4m8ayDK2AMGnQWhA\";\nvar _13 = \"o2sUrjULaA6ngDKZPcxL\";\nvar _14 = \"LCo5NzkCvB6XeXQtsIgX\";\nvar _15 = \"ubHyV6DfaGUqJI_0tcBw\";\nvar _16 = \"jP5nKQKxkD4xcLNFw7RE\";\nvar _17 = \"Krw4OtG5bVYVG4T5DPIO\";\nvar _18 = \"YM2Wdu5slJCk1zYNc3Av\";\nvar _19 = \"Hpf82A6ab3vBeIIOkIGi\";\nvar _1a = \"DS1OgjfG2xa4Ty3qqB43\";\nvar _1b = \"HZgbLJ1V5Itk7FkI36SM\";\nvar _1c = \"uvl3h3rBRg4uS1nDrmqQ\";\nvar _1d = \"ExoQaQZuacwrgfD2vk9a\";\nvar _1e = \"WNhyrBt9O4XZsKwYMkdc\";\nvar _1f = \"RUOT7ENMorPwaTDws1lK\";\nvar _20 = \"BaACJSVIlrqSBul8uLIv\";\nvar _21 = \"BvZJHuacvnR9_oMXxTVY\";\nexport { _1 as \"active\", _2 as \"category\", _3 as \"flatWarning\", _4 as \"floatForm\", _5 as \"frame\", _6 as \"frameAddRemove\", _7 as \"frameHolder\", _8 as \"frames\", _9 as \"framesRoot\", _a as \"header\", _b as \"heading\", _c as \"hidden\", _d as \"label\", _e as \"matColor\", _f as \"matColorHolder\", _10 as \"matColorInput\", _11 as \"matColorSelected\", _12 as \"matColors\", _13 as \"mobileFrames\", _14 as \"mouldingSection\", _15 as \"mount\", _16 as \"mountOption\", _17 as \"mounts\", _18 as \"options\", _19 as \"plexi\", _1a as \"previewImage\", _1b as \"price\", _1c as \"printSize\", _1d as \"printSizeUk\", _1e as \"root\", _1f as \"sectionTitle\", _20 as \"step3\", _21 as \"warning\" }\n","// extracted by mini-css-extract-plugin\nvar _1 = \"Jn1Jp96O0tf_GxqL2CFe\";\nvar _2 = \"Z2BasOWxqPkQMTk9gEw6\";\nvar _3 = \"aiaJKkynO5T6TxqJR8Nf\";\nvar _4 = \"zKEIgIlV6h2BgG9iprbK\";\nvar _5 = \"iHj30B026UWF6svuRa9B\";\nvar _6 = \"fj53HpK5X3fbZ3iqg7NQ\";\nvar _7 = \"RmwTKbbs2F7q4FQRUFHJ\";\nvar _8 = \"NfO9pnhQjVnIV26Gz8Zg\";\nvar _9 = \"942px\";\nvar _a = \"lCMwTJqSx30BcmgSsunL\";\nvar _b = \"ViLwaAX8Ns_dfyRhPVCQ\";\nvar _c = \"aLziA41IdCdQIatj0y1U\";\nvar _d = \"x0W2WbWnMxeICUldpG5w\";\nvar _e = \"vNEoYDYXtq3v493fUtCw\";\nvar _f = \"p3LEWts6829dHvjlaJ6T\";\nvar _10 = \"WdJc7oJDj8onNCEdQqpK\";\nvar _11 = \"pujLW_6iVoW1Wpghp8x6\";\nvar _12 = \"MyWlpnuwihkHJh0EIIxj\";\nvar _13 = \"fiU1KT1729mLRZAAVReu\";\nvar _14 = \"VMaovsl7p5XTYg7mqaKe\";\nvar _15 = \"oS4lKaz2OZ6Wkgg7JOxw\";\nvar _16 = \"qQysKk9MYNW3lBxf2bgY\";\nvar _17 = \"AN71j3Q6u3u4xhCIZmO_\";\nvar _18 = \"JJpwRRM7sICHN7rOYJXU\";\nexport { _1 as \"cKeeper\", _2 as \"carousel\", _3 as \"entry\", _4 as \"externalShadow\", _5 as \"favorite\", _6 as \"frameShadow\", _7 as \"holder\", _8 as \"innerImage\", _9 as \"mobilewidth\", _a as \"moreLikeThis\", _b as \"otherImage\", _c as \"paper\", _d as \"previews\", _e as \"ratio\", _f as \"rollOver\", _10 as \"selected\", _11 as \"silhouette\", _12 as \"thisArt\", _13 as \"thumbsMenu\", _14 as \"viewer\", _15 as \"workImageFramed\", _16 as \"zoomContainer\", _17 as \"zoomIcon\", _18 as \"zoomImage\" }\n","// extracted by mini-css-extract-plugin\nvar _1 = \"TJ0JnxU4glGx1okekydZ\";\nvar _2 = \"F2HVhrXNDXYLq86EwTGq\";\nvar _3 = \"bHFcmlzsFGFwGIUREyr5\";\nvar _4 = \"Hd2QMMwNuPb70vn_QIHu\";\nvar _5 = \"rF2A7KosNBxyLFFyNk4v\";\nvar _6 = \"AZyVwZbXTvdYQO2lyHGY\";\nvar _7 = \"Hdf7VM0pQi_18mmgGDek\";\nvar _8 = \"Xu0sPO8wOx2SrqLMwFEW\";\nvar _9 = \"tlMlgMIf1jqvQeh0WFNQ\";\nexport { _1 as \"aboutTheArt\", _2 as \"bc\", _3 as \"dmenu\", _4 as \"fullDetails\", _5 as \"modalRoot\", _6 as \"moreDetails\", _7 as \"notAvailable\", _8 as \"sizeSelection\", _9 as \"work\" }\n","// extracted by mini-css-extract-plugin\nvar _1 = \"VbyH1KTNnjCl290uX86L\";\nvar _2 = \"yYDtCmoFNpQbvXuqp_7c\";\nvar _3 = \"rOP8iojvWLR3Q0ixage4\";\nvar _4 = \"iG_hvID1uM2Jq5qVijrR\";\nvar _5 = \"vm9VBZgBVQ1_NIjn2qjN\";\nvar _6 = \"ERkc8je7S9iBCvE5Ou47\";\nvar _7 = \"dP5pxJZwX06KN2ryKXts\";\nvar _8 = \"yirZVMsLSO5CQoqwpTTh\";\nvar _9 = \"nufSboZRxs0962Ouw5Wl\";\nvar _a = \"Wu2TtpNwezbEf1gBlB_M\";\nvar _b = \"Fh6R74hRj8XOA9QgW3sk\";\nexport { _1 as \"admin\", _2 as \"author\", _3 as \"controls\", _4 as \"heading\", _5 as \"mobile\", _6 as \"mobileHeader\", _7 as \"mobileHidden\", _8 as \"mobileVisible\", _9 as \"name\", _a as \"text\", _b as \"title\" }\n","// extracted by mini-css-extract-plugin\nvar _1 = \"MrND0lZsH275o5AXUc8t\";\nvar _2 = \"fyotDpr5uOD3SBtwawFH\";\nvar _3 = \"kFLQhuANnDs2sDqBWKMg\";\nvar _4 = \"TTItBWeiNfdAMel1lVmW\";\nvar _5 = \"kfWIZ8y9fZPR0uJ8PcKY\";\nvar _6 = \"H5ej9_vWDSiXY4kCzk7o\";\nvar _7 = \"gCmZYYfz9jqHPWL7knlA\";\nvar _8 = \"s55hvewR6SbGfl4ZLToo\";\nvar _9 = \"GoXpIDZI7f7gwVIllV4k\";\nvar _a = \"RbFSmcMTDf41yrJndnZQ\";\nvar _b = \"mobXOTmymVQY_SP7iLbH\";\nvar _c = \"RrFK4wDLRJr74EVp0GTR\";\nvar _d = \"R3OpNT51n9rG5O7kq9V1\";\nvar _e = \"lpex6hvMwwWbAk6VpMPX\";\nvar _f = \"E_acWMOJnFkhu5NsiluN\";\nvar _10 = \"OYdhvIQMv7jA0lzPkAvS\";\nvar _11 = \"tY1xQfA26LroWXdU_w2X\";\nvar _12 = \"QjLZJaz7MQZctUdP_Svh\";\nvar _13 = \"pJ0O9a4w9qTWpDM6Ac1e\";\nvar _14 = \"RJRdZBN1BLQLK8QmTUZg\";\nvar _15 = \"VZtsw4XlevAKHBrXpAi7\";\nvar _16 = \"pFSgULYEo_p9bB6B5Cgd\";\nvar _17 = \"P_foBdpkWwI0tF1za2RX\";\nvar _18 = \"Lab7eNy57ko9zy2S5GbA\";\nvar _19 = \"BMyNVY1DiBl6MBJwp9g1\";\nvar _1a = \"RrVbRH0Q7aM3m0FrAIEy\";\nvar _1b = \"dSRjwlG7a2AMiSuu71ov\";\nvar _1c = \"jVmKGJ_SvXmB_qBUn9eA\";\nvar _1d = \"e0bPB2lnjZsy8tHQNr8J\";\nvar _1e = \"SI1uINNs7VK96QYoZc6O\";\nvar _1f = \"J63s8OeaSk9cTQEfUFPR\";\nvar _20 = \"Io6fSZbmkOFNdm_I7Qcw\";\nvar _21 = \"942px\";\nexport { _1 as \"active\", _2 as \"awColor\", _3 as \"byColor\", _4 as \"clearAll\", _5 as \"colorLine\", _6 as \"colorOption\", _7 as \"expanded\", _8 as \"filter\", _9 as \"filterByCountry\", _a as \"filterDropDown\", _b as \"filterHolder\", _c as \"filterLists\", _d as \"l\", _e as \"left\", _f as \"link\", _10 as \"list\", _11 as \"main\", _12 as \"menuWrapper\", _13 as \"mobileFilter\", _14 as \"noResults\", _15 as \"pHolder\", _16 as \"pagination\", _17 as \"remove\", _18 as \"right\", _19 as \"root\", _1a as \"searchBy\", _1b as \"secondPreview\", _1c as \"sign\", _1d as \"singleColor\", _1e as \"small\", _1f as \"text\", _20 as \"values\", _21 as \"w1\" }\n"],"names":["add","id","type","dispatch","addFavoriteApi","then","favorite","Constants","Favorites","ADD","catch","remove","removeFavoriteApi","REMOVE","load","getState","window","currentUser","setTimeout","favorites","loaded","loading","LOAD","loadFavoritesApi","LOADED","loadAlsoLike","sourceId","RelatedWorks","LOAD_ALSO_LIKE_START","loadAdditionalWorks","data","LOAD_ALSO_LIKE_SUCCESS","loadAlsoLikeSuccess","error","LOAD_ALSO_LIKE_FAILURE","loadAlsoLikeFailure","loadRecentlyView","ids","LOAD_RECENTLY_VIEW_START","loadRecentWorks","LOAD_RECENTLY_VIEW_SUCCESS","loadRecentlyViewSuccess","LOAD_RECENTLY_VIEW_FAILURE","loadRecentlyViewFailure","setRecentWorkIds","SET_RECENTLY_VIEWED","fetchWork","detail","fetchWorkStart","Work","FETCH","loadWork","recentWorkIds","rest","FETCH_SUCCESS","fetchWorkSuccess","length","FETCH_FAILURE","fetchWorkFailure","AddButton","doAddToCart","adding","added","text","React","className","Classes","classnames","onClick","onAddToCart","AddWithTotals","hasSelection","price","currency","frameId","workId","paperId","originalArtId","addArtToCart","addOriginalArtToCart","nonGlare","allowQnty","qnty","setQnty","useState","showWarning","setShowWarning","showEmpty","setShowEmpty","limitQnty","value","force","maxQnty","hideEmpty","hideWarningAndAddToCart","Modal","selector","MODAL_SELECTOR","onCancel","AppClasses","CheckoutStyles","Math","abs","toFixed","prev","onChange","event","parseInt","target","ShoppableLookAssignment","props","Suspense","fallback","currentPriceAndNonGlare","frame","priceKey","parseFloat","nonGlarePrice","AffirmPromo","onWall","minAffirmAmount","useEffect","affirm","ui","ready","refresh","AddToCart","inStock","selection","addRemoveFromStore","storeItemId","status","WorkStoreItem","hasELinks","connect","mapStateToProps","cartItems","renderText","title","hasImages","renderEmpty","ArtistDetails","background","exhibitions","statement","styles","name","key","map","path","index","Link","to","texts","join","renderArray","Transition","PureComponent","constructor","super","collapsed","this","state","initiallyCollapsed","setRootRef","bind","onTransitionEnd","componentDidUpdate","prevProps","hide","open","componentWillUnmount","cancelAnimations","rootRef","removeEventListener","style","maxHeight","overflow","ref","scrollHeight","raf","requestAnimationFrame","addEventListener","cancelAnimationFrame","render","children","Collapsible","Delimiter","notop","Mount","isSelected","kind","description","onSelect","postFix","radioId","radioName","htmlFor","Radio","checked","MatColor","colorRgb","useRef","e","preventDefault","current","click","backgroundColor","FULL_BLEED","MATTE","FLOAT_DECKLED","FLOAT_STRIGHT","FLOATING","MAT_COLORS_ORDER","mat","currentLocale","matteText","caps","Mounts","selectedMount","selectedMatColor","matte","fullBleed","dckl","fltn","matColors","matColorsRgb","indexOf","color","split","renderMatte","useMemo","includes","renderFillBleed","renderFloating","Warning","warning","flat","Object","assign","PinIt","href","imageUrl","allowSharing","PinUtils","pinOne","url","media","src","alt","width","height","Entry","selectedIndex","klass","viewBox","clipPath","fill","fillOpacity","d","PaperView","borderH","borderW","backgroundImage","unframed","frameThicknessH","frameThicknessV","zoomPreviewUrl","mount","isTapestry","frameMatColorRgb","flexBasis","innerStyle","paddingTop","paddingBottom","paddingLeft","paddingRight","paperClass","frameClass","frameShadow","imageClassName","isFloat","frameShadowStyle","top","right","bottom","left","Zoom","PreviewModal","onHide","contentOptions","MODAL_LEVEL2_SELECTOR","xmlns","fillRule","clipRule","calculatePaperProps","paperHeight","paperWidth","printHeight","printWidth","landscape","useWidth","ratio","calculateFrameThickness","frameThickness","el","cz","zoomProps","image","zoomImage","zoomPosition","unBindZoom","destroy","cb","document","querySelector","parentNode","removeChild","innerWidth","jQuery","CloudZoom","opacity","stroke","strokeLinecap","strokeLinejoin","strokeWidth","strokeOpacity","ZoomIn","withFrame","visible","setVisible","show","modal","ZoomModal","img","Zoomin","ModalClasses","ART_PRINTS","ORIGINAL_ART","BreadCrumbs","authorName","authorId","authorSlug","originalArt","links","BreadCrumbsGeneric","rootClassName","fetchArtist","Artist","getArtist","fetchArtistSuccess","fetchArtistFailure","onMoreOfArtist","MoreArtistWorks","artistId","skipId","artist","about","loadMoreWorks","works","filteredWorks","filter","w","SmallItemsCarousel","items","gtmListName","SimilarItems","eventSource","trackEvent","source","Eye","onMoreLikeThis","renderImage","imgUrl","imageWidth","imageHeight","calculateWith","WorkImage","MayAlsoLike","componentDidMount","sourceIdWas","renderItem","extended","relatedWorks","alsoLike","RecentlyView","idsWere","deepEqual","recentlyView","MoreDetails","moreWorks","setFrame","paper","Selection","SET_FRAME","setFramePreview","RESET_OTHER","Frame","frameName","frameThumbUrl","setFrameByName","handleDragStart","selected","classname","role","onDragStart","onDragEnd","SelectPlexiGlass","setNonGlare","hasMount","options","find","i","Paper","selectedFrame","thumbnails","availableFrames","selectFirstAvailableFrame","selectFrame","setFrameAndMount","frameMatColorName","renderAvailableFrames","f","frameCategory","self","sort","category","frames","frameDisplayWidth","frameDisplayDepth","frameLabel","frameDescription","renderWarning","unit","renderedFrames","findIndex","AliceCarousel","aliceSliderSettins","uid","previewUrl","t","withMatte","withFullBleed","withDckl","withFltn","matAndColors","hasStep2","step2","selectMount","step3","Header","onHeaderClicked","stopPropagation","frameless","selectNoFrame","hasFrames","renderAction","skipSelectFrame","action","renderActions","active","limitations","displayPaperWidth","displayPaperHeight","displayPrintWidth","displayPrintHeight","isHidden","currentPrice","hiddenIcon","readOnly","humanSize","PapersMenu","resetSelection","initialPaperId","initialFrameId","findPaperAndFrame","p","res","forEach","groups","reduce","rv","x","push","groupBy","order","keys","k","g","l","generateUniqFrames","selectedPaper","selectedPaperId","renderHeaders","work","RESET","SET_NON_GLARE","Thumbnails","prevState","otherImageChanged","prevThumbnails","prevSelectedIndex","setOtherImage","setState","ImagePreview","otherImageUrl","wmZoomPreviewUrl","zoomPreviewUrlUsed","content","firstPaper","renderFrame","frameWidth","frameHeight","frameMat","frameLargeImageUrl","thicknessV","thicknessH","frameMatW","frameMatH","paperProps","renderNoFrame","Loader","inline","w1","mobileBreak","ImagePreviewSwitcher","secondPreviewUrl","useWindowSize","autoPlay","disableSlideInfo","infinite","mouseTracking","mouseDragEnabled","disableButtonsControls","silhouette","require","sizeY","ScaleModal","previewWidth2","previewHeight2","position","marginLeft","marginTop","calculateStyle","ShowToScale","smallPreviewUrl","ScaleIcon","Viewer","extraContent","smallPreviewUrlUsed","hasWalls","skipMoreLikeThis","rollOver","similarItems","artOnWall","Box","Boolean","SET_OTHER","author","isMobile","renderTitle","adminLink","WorkSummary","printedOn","limitedEdition","theTitle","location","protocol","host","Favorite","s1","s2","renderPrintedOn","mapDispatchToProps","label","PRODUCT_DETAILS","paperMaterial","TAPESTRY","SelectionDetails","Expandable","eKey","KEYS","selectionDetails","renderDetailEtries","entries","sizes","displayPrintWidthNoMat","displayPrintHeightNoMat","finalSize","frameFinalFramedSize","AdditionalInfo","aboutPaper","lines","CANVAS","additionalInfo","workSizes","ExtraInfo","aboutPrints","isUK","frameDetails","plexiGlass","prints","v","shipping","shippingDetailsItems","AboutTheArt","details","arts","toCamelCase","papers","notAvailable","allowStores","aboutTheAuthor","display","breadCrumbs","retailPrice","gtmVariant","selectedFrameId","summaryProps","aboutProps","fullDetails","moreDetails","linkTo","gtmDetailsData","GTMPageView","pageType","section","GtmDetails","findWorkDetails","collection","_1","_2","BreadCrumbsSkeleton","renderLink","isLast","toggle","expand","expandable","ACTIONS","isAdded","onSignIn","CustomEvent","dispatchEvent","classes","HeartE","icon","HeartF","fetchFavorites","createSelector","getFavories","getProps","_","_3","_4","_5","imagepadding","imageheight","onItemClick","onWorkClick","reportVisible","findVisible","visibleIndexes","parent","getElementsByClassName","parentLeft","parentRight","getBoundingClientRect","elements","onWorkItems","listName","images","onInitialized","onSlideChanged","updateUI","totalItems","innerHTML","StoreItem","wallId","opts","addToStoreItemsApi","storableId","WorkStoreItems","ADDED","removeFromStoreItemsApi","REMOVED","WallStoreItem","WallStoreItems","windowSize","setWindowSize","innerHeight","onResize","_6","_7","_8","_9","_a","_b","_d","_e","_f","_10","_11","_12","_13","_14","_15","_c","_16","_17","_18","_19","_1a","_1b","_1c","_1d","_1f","_20","_21","_1e"],"sourceRoot":""}