{"version":3,"file":"js/658-83d31dfa25a1e7aa3daf.js","mappings":"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","sources":["webpack://sizestream/./app/javascript/components/ sync ^\\.\\/.*$","webpack://sizestream/./app/javascript/actions/cart-services/iframePostMessage-cart.js","webpack://sizestream/./app/javascript/components/AttributeSelectionPanel.jsx","webpack://sizestream/./app/javascript/components/AttributesImagePreview.jsx","webpack://sizestream/./app/javascript/components/BackToConfigurator.jsx","webpack://sizestream/./app/javascript/components/BodySelectionPanel.jsx","webpack://sizestream/./app/javascript/components/BodySelectionRow.jsx","webpack://sizestream/./app/javascript/components/Buttonhole/ButtonholeColorItem.jsx","webpack://sizestream/./app/javascript/components/Buttonhole/ButtonholeColors.jsx","webpack://sizestream/./app/javascript/components/Buttonhole/ButtonholeSelectionPanel.jsx","webpack://sizestream/./app/javascript/actions/configurator_actions.js","webpack://sizestream/./app/javascript/components/Configurator.jsx","webpack://sizestream/./app/javascript/components/ConfiguratorHeader.jsx","webpack://sizestream/./app/javascript/components/ConfiguratorHome.jsx","webpack://sizestream/./app/javascript/components/ContrastStitchingRow.jsx","webpack://sizestream/./app/javascript/components/ContrastStitchingSelectionPanel.jsx","webpack://sizestream/./app/javascript/components/CustomAttributeRow.jsx","webpack://sizestream/./app/javascript/components/FabricDescriptionModal.jsx","webpack://sizestream/./app/javascript/components/FabricSelectionPanel.jsx","webpack://sizestream/./app/javascript/components/FabricSelectionRow.jsx","webpack://sizestream/./app/javascript/components/FitImagePreview.jsx","webpack://sizestream/./app/javascript/components/FitSelectionPanel.jsx","webpack://sizestream/./app/javascript/components/FitSelectionRow.jsx","webpack://sizestream/./app/javascript/components/ModelImagePreview.jsx","webpack://sizestream/./app/javascript/components/MonogramPalletStyle.jsx","webpack://sizestream/./app/javascript/components/MonogramPreview.jsx","webpack://sizestream/./app/javascript/components/MonogramSelectionPanel.jsx","webpack://sizestream/./app/javascript/components/MonogramSelectionRow.jsx","webpack://sizestream/./app/javascript/components/NextStepButton.jsx","webpack://sizestream/./app/javascript/actions/cart-services/result-handling.js","webpack://sizestream/./app/javascript/actions/cart-services/local-cart.js","webpack://sizestream/./app/javascript/actions/cart-services/webhook-cart.js","webpack://sizestream/./app/javascript/actions/cart-services/index.js","webpack://sizestream/./app/javascript/components/OrderActions.jsx","webpack://sizestream/./app/javascript/components/OrderTotals.jsx","webpack://sizestream/./app/javascript/hooks/postedMessageForwarder.js","webpack://sizestream/./app/javascript/components/PopupBodySelector.jsx","webpack://sizestream/./app/javascript/components/PreviewImage.jsx","webpack://sizestream/./app/javascript/components/Rush/RushSelectionPanel.tsx","webpack://sizestream/./app/javascript/components/SelectionCheckbox/SelectionCheckbox.jsx","webpack://sizestream/./app/javascript/components/SubSelectionPalletColor.jsx","webpack://sizestream/./app/javascript/components/SubSelectionPalletLocation.jsx","webpack://sizestream/./app/javascript/components/WhiteCollar/WhiteCollarSelectionPanel.jsx","webpack://sizestream/./app/javascript/components/WhiteCuff/WhiteCuffSelectionPanel.jsx","webpack://sizestream/./app/javascript/components/monogramStyles/MonogramDefault.jsx","webpack://sizestream/./app/javascript/components/monogramStyles/MonogramDiamond.jsx","webpack://sizestream/./app/javascript/components/monogramStyles/MonogramOffset.jsx","webpack://sizestream/./app/javascript/constants/body_selector.js","webpack://sizestream/./app/javascript/constants/contrast_stitching.js","webpack://sizestream/./app/javascript/hooks/useImageLoader.js","webpack://sizestream/./app/javascript/utils/object.js"],"sourcesContent":["var map = {\n\t\"./AttributeSelectionPanel\": 6278,\n\t\"./AttributeSelectionPanel.jsx\": 6278,\n\t\"./AttributesImagePreview\": 7283,\n\t\"./AttributesImagePreview.jsx\": 7283,\n\t\"./BackToConfigurator\": 497,\n\t\"./BackToConfigurator.jsx\": 497,\n\t\"./BodySelectionPanel\": 8035,\n\t\"./BodySelectionPanel.jsx\": 8035,\n\t\"./BodySelectionRow\": 3317,\n\t\"./BodySelectionRow.jsx\": 3317,\n\t\"./Buttonhole/ButtonholeColorItem\": 4277,\n\t\"./Buttonhole/ButtonholeColorItem.jsx\": 4277,\n\t\"./Buttonhole/ButtonholeColors\": 8250,\n\t\"./Buttonhole/ButtonholeColors.jsx\": 8250,\n\t\"./Buttonhole/ButtonholeSelectionPanel\": 2913,\n\t\"./Buttonhole/ButtonholeSelectionPanel.jsx\": 2913,\n\t\"./Configurator\": 7709,\n\t\"./Configurator.jsx\": 7709,\n\t\"./ConfiguratorHeader\": 5469,\n\t\"./ConfiguratorHeader.jsx\": 5469,\n\t\"./ConfiguratorHome\": 6525,\n\t\"./ConfiguratorHome.jsx\": 6525,\n\t\"./ContrastStitchingRow\": 9690,\n\t\"./ContrastStitchingRow.jsx\": 9690,\n\t\"./ContrastStitchingSelectionPanel\": 5436,\n\t\"./ContrastStitchingSelectionPanel.jsx\": 5436,\n\t\"./CustomAttributeRow\": 7035,\n\t\"./CustomAttributeRow.jsx\": 7035,\n\t\"./FabricDescriptionModal\": 7316,\n\t\"./FabricDescriptionModal.jsx\": 7316,\n\t\"./FabricSelectionPanel\": 5499,\n\t\"./FabricSelectionPanel.jsx\": 5499,\n\t\"./FabricSelectionRow\": 238,\n\t\"./FabricSelectionRow.jsx\": 238,\n\t\"./FitImagePreview\": 1972,\n\t\"./FitImagePreview.jsx\": 1972,\n\t\"./FitSelectionPanel\": 978,\n\t\"./FitSelectionPanel.jsx\": 978,\n\t\"./FitSelectionRow\": 2486,\n\t\"./FitSelectionRow.jsx\": 2486,\n\t\"./ModelImagePreview\": 5699,\n\t\"./ModelImagePreview.jsx\": 5699,\n\t\"./MonogramPalletStyle\": 1952,\n\t\"./MonogramPalletStyle.jsx\": 1952,\n\t\"./MonogramPreview\": 5162,\n\t\"./MonogramPreview.jsx\": 5162,\n\t\"./MonogramSelectionPanel\": 9801,\n\t\"./MonogramSelectionPanel.jsx\": 9801,\n\t\"./MonogramSelectionRow\": 6141,\n\t\"./MonogramSelectionRow.jsx\": 6141,\n\t\"./NextStepButton\": 3976,\n\t\"./NextStepButton.jsx\": 3976,\n\t\"./OrderActions\": 8086,\n\t\"./OrderActions.jsx\": 8086,\n\t\"./OrderTotals\": 8419,\n\t\"./OrderTotals.jsx\": 8419,\n\t\"./PopupBodySelector\": 1862,\n\t\"./PopupBodySelector.jsx\": 1862,\n\t\"./PreviewImage\": 9537,\n\t\"./PreviewImage.jsx\": 9537,\n\t\"./Rush/RushSelectionPanel\": 6550,\n\t\"./Rush/RushSelectionPanel.tsx\": 6550,\n\t\"./SelectionCheckbox/SelectionCheckbox\": 3533,\n\t\"./SelectionCheckbox/SelectionCheckbox.jsx\": 3533,\n\t\"./SubSelectionPalletColor\": 7045,\n\t\"./SubSelectionPalletColor.jsx\": 7045,\n\t\"./SubSelectionPalletLocation\": 3697,\n\t\"./SubSelectionPalletLocation.jsx\": 3697,\n\t\"./WhiteCollar/WhiteCollarSelectionPanel\": 2995,\n\t\"./WhiteCollar/WhiteCollarSelectionPanel.jsx\": 2995,\n\t\"./WhiteCuff/WhiteCuffSelectionPanel\": 2406,\n\t\"./WhiteCuff/WhiteCuffSelectionPanel.jsx\": 2406,\n\t\"./monogramStyles/MonogramDefault\": 1264,\n\t\"./monogramStyles/MonogramDefault.jsx\": 1264,\n\t\"./monogramStyles/MonogramDiamond\": 8829,\n\t\"./monogramStyles/MonogramDiamond.jsx\": 8829,\n\t\"./monogramStyles/MonogramOffset\": 7915,\n\t\"./monogramStyles/MonogramOffset.jsx\": 7915\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 982;","const addToCart = async ({\n cartApi,\n configured_item,\n quantity,\n description,\n descriptions,\n preview,\n selectedBody\n}) => {\n const [skuProductId, sku] = configured_item.sku.split(':');\n window.parent.postMessage(\n {\n action: 'addCustomCommerceItem',\n body: {\n productId: skuProductId,\n catalogRefId: sku,\n quantity,\n configuredItemId: configured_item.id,\n display: {\n configurations: Object.fromEntries(descriptions),\n thumbnail_img_url: preview\n },\n description,\n hasScan: !!selectedBody['scanId']\n }\n },\n cartApi\n );\n};\n\nconst updateInCart = async ({\n configuredItemIds,\n selectedBody,\n authenticityToken,\n cartApi,\n descriptions\n}) => {\n const res = await window.fetch(`/configured_items/bulk_update`, {\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': authenticityToken\n },\n body: JSON.stringify({\n configured_item_ids: configuredItemIds,\n selected_body: selectedBody\n }),\n method: 'PATCH'\n });\n\n if (res.ok) {\n window.parent.postMessage(\n {\n action: 'configuredItemIsComplete',\n body: {\n configuredItemIds,\n display: {\n configurations: Object.fromEntries(descriptions)\n }\n }\n },\n cartApi\n );\n }\n};\n\nexport const iframePostMessageCartService = {\n addToCart,\n updateInCart\n};\n","import React, {useMemo} from 'react';\nimport BackToConfigurator from './BackToConfigurator';\nimport NextStepButton from './NextStepButton';\nimport FabricSelectedIcon from 'images/fabric-selected-check.svg';\nimport DefaultAttributeImage from 'images/PhotoComingSoon.png';\nimport cx from 'classnames';\nimport useImageLoader from \"../hooks/useImageLoader\";\nimport classNames from \"classnames\";\nimport SearchIcon from 'images/search.svg';\n\nexport default function AttributeSelectionPanel({\n productName,\n attributeName,\n options,\n selectedAttribute,\n setSelectedAttribute,\n setCurrentScreen,\n currencySymbol,\n nextAttribute,\n nextAttributeName,\n previousAttribute,\n canAddToBasket\n}) {\n const [touched, setTouched] = React.useState(false);\n const [query, setQuery] = React.useState('');\n\n const attributeTitle =\n attributeName.charAt(0).toUpperCase() + attributeName.slice(1);\n\n const filteredOptions = useMemo(() => {\n if (query === '') {\n return options;\n } else {\n return filterByName(options, query)\n }\n }, [options, query]);\n\n function filterByName(arr, searchText) {\n return arr.filter(item => item.name.toLowerCase().includes(searchText.toLowerCase()));\n }\n\n return (\n
\n
\n
\n
\n \n
\n
\n
\n
\n Select a {attributeTitle}\n
\n \n setQuery(event.target.value)}\n value={query}\n />\n \n
\n
\n
\n
\n
\n {options &&\n filteredOptions.map((attribute) => {\n return (\n \n );\n })}\n {filteredOptions?.length < 1 && (\n \n No {attributeTitle}s found\n
\n )}\n
\n
\n
\n\n
\n \n
\n \n \n );\n}\n\nexport function AttributeSelection({\n attribute,\n isSelected,\n selectedAttribute,\n setSelectedAttribute\n}) {\n const [isActive, setIsActive] = React.useState(null);\n const containerClasses = cx(\n 'row no-gutters fc-custom-selection',\n (isActive || isSelected) && 'fc-custom-selection-active'\n );\n const loadedImageUrl = useImageLoader(attribute.images.display, DefaultAttributeImage);\n\n const handleClick = () => {\n if (selectedAttribute != attribute) {\n setSelectedAttribute(attribute);\n }\n };\n\n return (\n setIsActive(false)}\n onMouseEnter={() => setIsActive(true)}\n onClick={handleClick}\n >\n
\n \n
\n\n
\n
{attribute.name.toLowerCase()}
\n
\n \n {isSelected && \"Selected\"}\n \n \n );\n}\n","import React from 'react';\nimport PreviewImage from './PreviewImage';\nimport MonogramPreview from './MonogramPreview';\n\nexport default function AttributesImagePreview({\n productKey,\n userSelections,\n categories,\n monogramCategories,\n remoteImagesPath,\n resizedRemoteImagesPath,\n resizedImageExtension,\n categoriesWithoutPreview,\n monogramInitials,\n monogramError,\n selectedMonogramStyleSpecs,\n defaultMonogramColor,\n onImageLoadError\n}) {\n // Images are fetched according to the convention `attribute_overlay___`\n const fabricSelection =\n userSelections['fabric'] && userSelections['fabric'].gpp_code;\n\n return (\n
\n
\n {categories.map((category) => {\n if (categoriesWithoutPreview.includes(category)) {\n return;\n }\n const imageCodeSuffix =\n userSelections[category] ? `__${category}` : `default_${category}`;\n let imageCode;\n if (monogramCategories.includes(category)) {\n return null;\n } else if (category === 'pocket' && !userSelections[category]) {\n return null;\n } else if (category === 'fabric') {\n imageCode = `${fabricSelection}__${productKey}${imageCodeSuffix}`;\n } else {\n const gppCode =\n userSelections[category] ? userSelections[category].gpp_code : '';\n imageCode = `${fabricSelection}__${productKey}__${gppCode}${imageCodeSuffix}`;\n }\n\n return (\n \n );\n })}\n\n {userSelections.monogram_initials != null ?\n \n \n \n \n \n : null}\n
\n
\n );\n}\n","import React from 'react';\nimport ArrowLeft from 'images/arrow-back.svg';\n\nexport default function BackToConfigurator({\n setCurrentScreen,\n currencySymbol\n}) {\n const customizer = currencySymbol === '$' ? 'Customizer' : 'Customiser';\n\n return (\n
setCurrentScreen('main')} className=\"fc-back-button\">\n \"Arrow\n \n Back to {customizer}\n \n
\n );\n}\n","import React, { useEffect, useRef } from 'react';\nimport NextStepButton from './NextStepButton';\nimport BackToConfigurator from './BackToConfigurator';\n\nexport default function BodySelectionPanel({\n productName,\n currencySymbol,\n nextAttribute,\n nextAttributeName,\n previousAttribute,\n iframeUrl,\n setCurrentScreen,\n selectedBody,\n updateSelectedBody,\n canAddToBasket\n}) {\n const iframeRef = useRef();\n const iframeSrc = useRef(\n selectedBody.userId ?\n iframeUrl + '/#/customers/' + selectedBody.userId\n : iframeUrl\n );\n\n useEffect(() => {\n const handleMessage = (event) => {\n if (event.source !== iframeRef.current.contentWindow) return;\n updateSelectedBody(event.data);\n };\n\n window.addEventListener('message', handleMessage);\n\n return () => {\n window.removeEventListener('message', handleMessage);\n };\n }, []);\n\n return (\n
\n
\n
\n
\n \n
\n
\n
\n
\n Provide Measurements\n
\n
\n
\n\n \n
\n\n
\n \n
\n
\n
\n );\n}\n","import React from 'react';\nimport ArrowRight from 'images/arrow-right.svg';\nimport cx from 'classnames';\n\nexport default function BodySelectionRow({\n setCurrentScreen,\n panelScreen,\n selectedBody,\n selectedFit,\n isBodyLocked\n}) {\n const arrowClasses = cx(\n 'fc-option-dropdown-arrow-collapsed',\n !selectedFit && 'fc-reduced-opacity'\n );\n const handleClick = () => {\n if (!isBodyLocked) {\n setCurrentScreen(panelScreen);\n setTimeout(() => {\n window.scroll({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n }, 100);\n }\n };\n\n return (\n
\n
Sized For
\n {selectedBody.email ? (\n
{\n selectedBody.lastName ?\n selectedBody.firstName + ' ' + selectedBody.lastName :\n selectedBody.email\n }\n {!selectedBody.scanId &&\n (No Measurements)\n }\n
\n ) : (\n
\n Make a selection\n
\n )}\n
\n
\n \"Arrow\n
\n
\n
\n );\n}\n","import React from \"react\";\nimport cx from \"classnames\";\nimport MonogramSelectedIcon from 'images/monogram-selected-check.png';\n\nexport default function ButtonholeColorItem({\n attr,\n isSelectedAttribute,\n setSelectedColor\n}) {\n const [isActive, setIsActive] = React.useState(null);\n\n const containerClasses = cx(\n 'monogram-color-blocks',\n (isActive || isSelectedAttribute) && 'monogram-color-blocks-active'\n );\n\n const handleColorSelection = () => {\n if (!isSelectedAttribute) {\n setSelectedColor(attr);\n }\n };\n\n const monogramBlock = cx('col-lg-4', 'col-sm-4', 'fc-monogram-pallet');\n\n const styles =\n attr.font_family !== '#FFFFFF' ?\n {\n backgroundColor: attr.font_family\n }\n : {\n backgroundColor: attr.font_family,\n border: '1px solid #d0d0d0',\n color: 'black'\n };\n\n if(attr.font_family === null) return;\n\n return (\n \n setIsActive(false)}\n onMouseEnter={() => setIsActive(true)}\n onClick={handleColorSelection}\n >\n {isSelectedAttribute && (\n \n \n \n )}\n
\n
\n {attr.name}\n
\n
\n
\n \n );\n}\n","import React from \"react\";\nimport ButtonholeColorItem from \"./ButtonholeColorItem\";\n\nexport default function ButtonholeColors({\n options,\n selectedAttribute,\n setSelectedAttribute\n}) {\n\n return (\n
\n
Choose Color
\n\n
\n {options?.map((color) => {\n return (\n \n );\n })}\n
\n
\n );\n}\n","import React from 'react';\nimport NextStepButton from '../NextStepButton';\nimport BackToConfigurator from '../BackToConfigurator';\nimport cx from 'classnames';\nimport ButtonholeColors from \"./ButtonholeColors\";\n\nconst CONTRAST_BUTTONHOLE = 'contrast_buttonhole'\n\nexport default function ButtonholeSelectionPanel({\n productName,\n currencySymbol,\n nextAttribute,\n nextAttributeName,\n previousAttribute,\n setCurrentScreen,\n isDisabled,\n selectableOptionsTable,\n setSelectedAttributeFunctions,\n userSelections,\n canAddToBasket\n}) {\n\n const defaultOption = selectableOptionsTable[CONTRAST_BUTTONHOLE]?.find((option) => option.font_family === null || option.name === \"NO\");\n\n const enabled = JSON.stringify(userSelections[CONTRAST_BUTTONHOLE]) !== JSON.stringify(defaultOption) && userSelections[CONTRAST_BUTTONHOLE] !== null;\n\n const toggleButtonholes = () => {\n if (enabled) {\n setSelectedAttributeFunctions[CONTRAST_BUTTONHOLE](defaultOption);\n } else {\n const options = selectableOptionsTable[CONTRAST_BUTTONHOLE];\n setSelectedAttributeFunctions[CONTRAST_BUTTONHOLE](options?.[0]);\n }\n };\n\n React.useEffect(() => {\n if(userSelections[CONTRAST_BUTTONHOLE] === null) {\n setSelectedAttributeFunctions[CONTRAST_BUTTONHOLE](defaultOption);\n }\n }, [userSelections]);\n\n const containerClasses = cx(\n 'row no-gutters fc-fabric-selection-pallet',\n enabled ?\n 'monogram-selection-pallet-scrollbar'\n : 'monogram-selection-w-pallet-scrollbar'\n );\n\n return (\n
\n
\n
\n
\n \n
\n
\n
\n
\n Select Contrast Buttonholes\n
\n
\n
\n\n
\n
\n \n \n
\n \n Yes, Contrast Buttonholes\n \n \n\n {enabled ? (\n
\n \n
\n ) : (\n

\n Contrast Buttonholes are another way to add a special detail.\n
\n Choose from several colors.\n

\n )}\n
\n
\n
\n\n
\n \n
\n
\n
\n );\n}\n","import React, { useEffect, useState } from 'react';\n\nexport const useProductOptions = ({\n categories,\n productKey,\n fitOptions,\n existingLineItemId,\n fabricDisplayValue\n}) => {\n const [productOptions, setProductOptions] = useState({});\n\n const getProductOptions = async () => {\n if (!fitOptions) return;\n\n for (const fitOption of fitOptions) {\n const shapeCode = fitOption.gpp_shape_code;\n for (const category of categories) {\n let endpoint = `/products/${productKey}/product_option_categories/${category}.json?shape_code=${shapeCode}`;\n\n if (existingLineItemId) {\n endpoint = endpoint + `&line_item_id=${existingLineItemId}`;\n }\n\n const response = await fetch(endpoint, {\n headers: { 'Content-Type': 'application/json' }\n });\n\n const parsedResponse = await response.json();\n\n if (fabricDisplayValue && category === 'fabric') {\n for (const fabric of parsedResponse) {\n // If the value and name are same, no need to repeat.\n // This is to prevent something like \"FW01034646-0002 FW01034646-0002\" showing up\n fabric.name =\n fabric.name.includes(fabric.gpp_value) ?\n fabric.name\n : fabric.name + ' ' + fabric.gpp_value;\n }\n }\n\n setProductOptions((prev) => ({\n ...prev,\n [shapeCode]: {\n ...prev[shapeCode],\n [category]: parsedResponse\n }\n }));\n }\n }\n };\n\n useEffect(() => { getProductOptions() }, [\n categories,\n productKey,\n fitOptions,\n existingLineItemId,\n fabricDisplayValue\n ]);\n\n return productOptions;\n};\n\nexport function useProductPreferences(productKey) {\n const endpoint = `/products/${productKey}/product_preferences.json`;\n const [productPreferencesRequest, setProductPreferencesRequest] =\n useState({ loading: true, data: null, error: null });\n\n useEffect(() => {\n window\n .fetch(endpoint, {\n headers: { 'Content-Type': 'application/json' }\n })\n .then((response) => {\n return response.json();\n })\n .then((parsedResponse) => {\n setProductPreferencesRequest({\n loading: false,\n data: parsedResponse,\n error: null\n });\n })\n .catch((errorResponse) => {\n setProductPreferencesRequest({\n loading: false,\n data: null,\n error: errorResponse.message\n });\n });\n }, [endpoint]);\n\n return productPreferencesRequest;\n}\n","// Run this example by adding <%= javascript_pack_tag 'Configurator_react' %> to the head of your layout file,\n// like app/views/layouts/application.html.erb. All it does is render
Configurator React
at the bottom\n// of the page.\n\nimport React, { useEffect, useMemo } from 'react';\nimport ModelImagePreview from './ModelImagePreview';\nimport AttributesImagePreview from './AttributesImagePreview';\nimport FitImagePreview from './FitImagePreview';\nimport BodySelectionPanel from './BodySelectionPanel';\nimport FabricSelectionPanel from './FabricSelectionPanel';\nimport MonogramSelectionPanel from './MonogramSelectionPanel';\nimport FabricDescriptionModal from './FabricDescriptionModal';\nimport AttributeSelectionPanel from './AttributeSelectionPanel';\nimport ContrastStitchingSelectionPanel from './ContrastStitchingSelectionPanel';\nimport NextStepButton from './NextStepButton';\nimport ConfiguratorHome from './ConfiguratorHome';\nimport FitSelectionPanel from './FitSelectionPanel';\nimport {\n useProductPreferences,\n useProductOptions\n} from '../actions/configurator_actions';\nimport {\n CONTRAST_STITCHING_NO_OPTION_GPP_CODE,\n CONTRAST_STITCHING_CATEGORIES_SET,\n CONTRAST_STITCHING_CATEGORIES_ARRAY\n} from '../constants/contrast_stitching';\nimport { SHOW_BODY_SELECTOR } from '../constants/body_selector';\nimport { hasProp } from '../utils/object';\nimport PopupBodySelector from './PopupBodySelector';\nimport ButtonholeSelectionPanel from \"./Buttonhole/ButtonholeSelectionPanel\";\nimport WhiteCollarSelectionPanel from \"./WhiteCollar/WhiteCollarSelectionPanel\";\nimport WhiteCuffSelectionPanel from \"./WhiteCuff/WhiteCuffSelectionPanel\";\nimport RushSelectionPanel from \"./Rush/RushSelectionPanel\";\nimport SelectionCheckbox from './SelectionCheckbox/SelectionCheckbox';\n\nconst MONOGRAM_STYLES_SPECS = {\n VC26019: {\n min: 1,\n max: 16,\n validCharacters: '-*!@#$%&+?:;)(\"=A-Za-z0-9 ',\n validCharactersDisplay: 'alphabetic (a-z, A-Z, 0-9, !@#$%&*+?:;)(-\"=)',\n textTransform: 'uppercase',\n previewInitials: 'EDS',\n margin: 12,\n style: {\n fontFamily: 'Roboto Condensed' + ', sans-serif',\n fontWeight: 400\n },\n monogramPreviewStyle: 'monogram-style-text'\n },\n VC26018: {\n min: 1,\n max: 16,\n validCharacters: '-*!@#$%&+?:;)(\"=A-Za-z0-9 ',\n validCharactersDisplay: 'alphabetic (a-z, A-Z, 0-9, !@#$%&*+?:;)(-\"=)',\n textTransform: 'uppercase',\n previewInitials: 'ABC',\n margin: 12,\n style: {\n fontFamily: 'Roboto Condensed' + ', sans-serif',\n fontWeight: 700\n },\n monogramPreviewStyle: 'monogram-style-text'\n },\n VC26017: {\n min: 1,\n max: 16,\n validCharacters: '-*!@#$%&+?:;)(\"=A-Za-z0-9 ',\n validCharactersDisplay: 'alphabetic (a-z, A-Z, 0-9, !@#$%&*+?:;)(-\"=)',\n textTransform: 'uppercase',\n previewInitials: 'ABC',\n margin: 12,\n style: {\n fontFamily: 'Roboto Condensed' + ', sans-serif',\n fontWeight: 700\n },\n monogramPreviewStyle: 'monogram-style-text'\n },\n VC00183: {\n min: 1,\n max: 9,\n validCharacters: '-*!@#$%&+?:;)(\"=A-Za-z0-9 ',\n validCharactersDisplay: 'alphabetic (a-z, A-Z, 0-9, !@#$%&*+?:;)(-\"=)',\n textTransform: 'uppercase',\n previewInitials: 'JMS',\n margin: 12,\n style: {\n fontFamily: 'Roboto Condensed' + ', sans-serif',\n fontWeight: 700\n },\n monogramPreviewStyle: 'monogram-style-text'\n },\n VC00496: {\n min: 3,\n max: 3,\n validCharacters: 'A-Za-z ',\n validCharactersDisplay: 'alphabetic (A-Z)',\n textTransform: 'uppercase',\n previewInitials: 'JHC',\n margin: 10,\n style: {\n fontFamily: 'Diamond Mono Center' + ', sans-serif',\n fontWeight: 2500\n },\n monogramPreviewStyle: 'diamond-monogram'\n },\n VC00693: {\n min: 1,\n max: 9,\n validCharacters: '-*!@#$%&+?:;)(\"=A-Za-z0-9 ',\n validCharactersDisplay: 'alphabetic (a-z, A-Z, 0-9, !@#$%&*+?:;)(-\"=)',\n textTransform: 'uppercase',\n previewInitials: 'ABC',\n margin: 30,\n style: {\n fontFamily: 'Pinyon Script' + ', cursive',\n fontWeight: 400\n },\n monogramPreviewStyle: 'monogram-style-text'\n },\n VC00583: {\n min: 2,\n max: 2,\n validCharacters: 'a-z',\n validCharactersDisplay: 'alphabetic (A-Z)',\n textTransform: 'uppercase',\n previewInitials: 'Rc',\n margin: 30,\n style: {\n fontFamily: 'Pinyon Script' + ', cursive',\n fontWeight: 400\n },\n monogramPreviewStyle: 'script-initial-code'\n },\n VC08864: {\n min: 1,\n max: 8,\n validCharacters: 'A-Za-z0-9 ',\n validCharactersDisplay: 'alphanumeric (a-z, A-Z, 0-9)',\n textTransform: 'none',\n previewInitials: 'ABC',\n margin: 12,\n style: {\n fontFamily: 'Stardos Stencil' + ', serif',\n fontWeight: 400\n },\n monogramPreviewStyle: 'monogram-style-text'\n },\n VC08866: {\n min: 1,\n max: 8,\n validCharacters: 'A-Za-z0-9 ',\n validCharactersDisplay: 'alphanumeric (a-z, A-Z, 0-9)',\n textTransform: 'none',\n previewInitials: 'Aa1',\n margin: 12,\n style: {\n fontFamily: 'Source_Sans_3' + ', sans-serif',\n fontWeight: 700\n },\n monogramPreviewStyle: 'monogram-style-text'\n },\n VC08867: {\n min: 1,\n max: 8,\n validCharacters: 'A-Za-z0-9 ',\n validCharactersDisplay: 'alphanumeric (a-z, A-Z, 0-9)',\n textTransform: 'none',\n previewInitials: 'Aa1',\n margin: 12,\n style: {\n fontFamily: 'Pinyon Script' + ', cursive',\n fontWeight: 400\n },\n monogramPreviewStyle: 'monogram-style-text'\n },\n VC23091: {\n min: 1,\n max: 3,\n validCharacters: 'A-Za-z ',\n validCharactersDisplay: 'alphabetic (A-Z)',\n textTransform: 'uppercase',\n previewInitials: 'ABC',\n margin: 12,\n style: {\n fontFamily: 'DM Serif Display' + ', serif',\n fontWeight: 400\n },\n monogramPreviewStyle: 'monogram-style-text'\n },\n VC23072: {\n min: 1,\n max: 3,\n validCharacters: 'A-Za-z ',\n validCharactersDisplay: 'alphabetic (A-Z)',\n textTransform: 'uppercase',\n previewInitials: 'ABC',\n margin: 12,\n style: {\n fontFamily: 'Roboto Condensed' + ', sans-serif',\n fontWeight: 700\n },\n monogramPreviewStyle: 'monogram-style-text'\n },\n VC25510: {\n min: 1,\n max: 16,\n validCharacters: '-*!@#$%&+?:;)(\"<>A-Za-z0-9 ',\n validCharactersDisplay: 'alphabetic (a-z, A-Z, 0-9, !@#$%&*+?:;)(-\"<>)',\n textTransform: 'none',\n previewInitials: 'Abc',\n margin: 12,\n style: {\n fontFamily: 'Roboto Condensed' + ', sans-serif',\n fontWeight: 400\n },\n monogramPreviewStyle: 'monogram-style-text'\n },\n VC25511: {\n min: 1,\n max: 16,\n validCharacters: '-*!@#$%&+?:;)(\"<>A-Za-z0-9 ',\n validCharactersDisplay: 'alphabetic (a-z, A-Z, 0-9, !@#$%&*+?:;)(-\"<>)',\n textTransform: 'none',\n previewInitials: 'Abc',\n margin: 12,\n style: {\n fontFamily: 'Pinyon Script' + ', cursive',\n fontWeight: 400\n },\n monogramPreviewStyle: 'monogram-style-text'\n },\n VC24519: {\n min: 1,\n max: 16,\n validCharacters: 'A-Za-z ',\n validCharactersDisplay: 'alphabetic (A-Z)',\n textTransform: 'none',\n previewInitials: 'Abc',\n margin: 12,\n style: {\n fontFamily: 'Roboto Condensed' + ', sans-serif',\n fontWeight: 400\n },\n monogramPreviewStyle: 'monogram-style-text'\n },\n VC24520: {\n min: 1,\n max: 16,\n validCharacters: 'A-Za-z ',\n validCharactersDisplay: 'alphabetic (A-Z)',\n textTransform: 'none',\n previewInitials: 'Abc',\n margin: 12,\n style: {\n fontFamily: 'Pinyon Script' + ', cursive',\n fontWeight: 400\n },\n monogramPreviewStyle: 'monogram-style-text'\n },\n default: {\n min: 0,\n max: 0,\n validCharacters: '',\n validCharactersDisplay: '',\n textTransform: 'none',\n previewInitials: 'Aa1',\n margin: 12,\n style: {\n fontFamily: 'Pinyon Script' + ', cursive',\n fontWeight: 400\n },\n monogramPreviewStyle: 'monogram-style-text'\n }\n};\n\nconst OPTION_FILTERS = {\n monogram_location: {\n VC00394: (userSelections) =>\n // 'Center Pocket' is not an option when \"no pocket\" is selected\n userSelections.pocket?.gpp_code !== 'VC00052',\n VC00678: (userSelections) =>\n // 'Top Pocket Hem' is not an option when \"no pocket\" is selected\n userSelections.pocket?.gpp_code !== 'VC00052' &&\n userSelections.monogram_style?.gpp_code !== 'VC00496' &&\n userSelections.monogram_style?.gpp_code !== 'VC00583',\n VC00171: (userSelections) =>\n // 'Left Breast' is only an option when \"no pocket\" is selected (or no pocket selection has been made)\n userSelections.pocket?.gpp_code === 'VC00052' || !userSelections.pocket,\n VC22536: (userSelections) =>\n // 'Inside Collar Band' is not an option when monogram style \"MOH\" is selected\n userSelections.monogram_style?.gpp_code !== 'VC00496' &&\n userSelections.monogram_style?.gpp_code !== 'VC00583'\n },\n contrast_stitching_color: {\n ...CONTRAST_STITCHING_NO_OPTION_GPP_CODE.contrast_stitching_color.reduce(\n (a, gpp_code) => {\n a[gpp_code] = () => false;\n return a;\n },\n {}\n )\n },\n contrast_stitching_location: {\n ...CONTRAST_STITCHING_NO_OPTION_GPP_CODE.contrast_stitching_location.reduce(\n (a, gpp_code) => {\n a[gpp_code] = () => false;\n return a;\n },\n {}\n )\n }\n};\n\nconst UNHIDDABLE_CATEGORIES = new Set(['fabric']);\n\nconst REQUIRED_MONOGRAM_CATEGORIES = new Set([\n 'monogram_initials',\n 'monogram_style'\n]);\n\nconst CUSTOM_NEXT_ATTRIBUTE_NAME = {\n monogram: 'Monogram',\n contrast_stitching: 'Contrast Stitching'\n};\n\nexport default function Configurator({\n productKey,\n productName,\n productExternalId,\n hasLaydownPreview,\n existingBody,\n confirmedFitShapeCode,\n existingLineItemOptions,\n existingMonogramInitials,\n startingQuantity,\n authenticityToken,\n remoteImagesPath,\n resizedRemoteImagesPath,\n resizedImageExtension,\n categorySettings,\n cartSettings,\n currencyCode,\n hidePayment,\n bodySelectorIframeUrl,\n showBodySelector = SHOW_BODY_SELECTOR.NONE,\n fabricDisplayValue,\n brandCode,\n showCustomPreviewImage = false,\n showFabricDetail,\n isIframeIntegrated = false,\n isItemClone = false,\n isAttendant = false\n}) {\n const [currentScreen, setCurrentScreen] = React.useState('main');\n const [existingLineItems, setExistingLineItems] = React.useState(\n existingLineItemOptions\n );\n const [contrastStitchingEnabled, setContrastStitchingEnabled] =\n React.useState(false);\n const queryParams = new URLSearchParams(window.location.search);\n const view = queryParams.get('view');\n let essQueryParams = {};\n if (queryParams.has('formcut_email') && queryParams.has('formcut_scan_id')) {\n essQueryParams = {\n formcut_email: queryParams.get('formcut_email'),\n formcut_scan_id: queryParams.get('formcut_scan_id')\n };\n }\n\n const popupQueryParamConfiguredItemIds = (\n queryParams.get('configured_item_ids') || ''\n ).split(',');\n\n // We need monogram_style regardless of if its hidden or not because the min max character for monogram initials\n // depends on the style\n const categories = useMemo(\n () =>\n Object.keys(categorySettings).filter(\n (c) => c === 'monogram_style' || categorySettings[c]?.hidden === false\n ),\n [categorySettings]\n );\n\n const categoriesWithoutPreview = Object.keys(categorySettings).filter(\n (c) => categorySettings[c]?.has_laydown_preview === false\n );\n let currencySymbol;\n if (currencyCode === 'GBP') {\n currencySymbol = '£';\n } else if (currencyCode === 'HKD') {\n currencySymbol = 'HK$';\n } else {\n currencySymbol = '$';\n }\n\n const defaultSelectedBody = useMemo(() => {\n if (existingBody?.email) return existingBody;\n\n let localStorageBodyData = localStorage.getItem('selectedBody');\n\n if (localStorageBodyData) {\n try {\n localStorageBodyData = JSON.parse(localStorageBodyData);\n } catch {\n localStorageBodyData = undefined;\n }\n }\n if (localStorageBodyData) {\n return localStorageBodyData;\n }\n\n const currentExternalCartId = new URLSearchParams(\n window.location.search\n ).get('externalCartId');\n if (!currentExternalCartId) return {};\n\n const previousExternalCartId = localStorage.getItem('externalCartId');\n if (previousExternalCartId === currentExternalCartId) {\n return JSON.parse(localStorage.getItem('selectedBody')) || {};\n } else {\n localStorage.setItem('externalCartId', currentExternalCartId);\n return {};\n }\n }, [existingBody]);\n\n const [selectedBody, setSelectedBody] = React.useState(defaultSelectedBody);\n const updateSelectedBody = (body) => {\n setSelectedBody(body);\n // In case of iframe-integration, the user body data is managed by ESS\n if (!isIframeIntegrated) {\n localStorage.setItem('selectedBody', JSON.stringify(body));\n }\n };\n\n const fitOptions = useProductPreferences(productKey).data;\n const [selectedFit, setSelectedFit] = React.useState(null);\n\n useLoadExistingFit(\n fitOptions,\n existingLineItems.fit || confirmedFitShapeCode,\n setSelectedFit\n );\n\n const defaultUserSelection = useMemo(() => {\n const initialUserSelections = {};\n categories.forEach((category) => {\n initialUserSelections[category] = null;\n });\n return initialUserSelections;\n }, [categories]);\n\n const [userSelections, setUserSelections] =\n React.useState(defaultUserSelection);\n\n const setSelectedAttributeFunctions = categories.reduce(\n (obj, category) => (\n (obj[category] = (newAttributeValue) => {\n setUserSelections((us) => ({ ...us, [category]: newAttributeValue }));\n }),\n obj\n ),\n {}\n );\n\n const [wasInMonogramSection, setWasInMonogramSection] = React.useState(false);\n const [wasInContrastStitchingSection, setWasInContrastStitchingSection] =\n React.useState(false);\n\n const productOptions = useProductOptions({\n categories,\n productKey,\n fitOptions,\n existingLineItemId: existingLineItems.id,\n fabricDisplayValue\n });\n let unselectableOptionsTable = {};\n\n const selectableOptionsTable =\n (Object.keys(productOptions).length &&\n Object.entries(productOptions[selectedFit?.gpp_shape_code] ?? {}).reduce(\n (acc, [key, options]) => {\n if (hasProp(OPTION_FILTERS, key)) {\n acc[key] = [];\n\n for (const option of options) {\n if (\n OPTION_FILTERS[key][option.gpp_code]?.(userSelections) ??\n true\n ) {\n acc[key].push(option);\n } else {\n unselectableOptionsTable[key] = [\n ...(unselectableOptionsTable[key] || []),\n option\n ];\n }\n }\n } else {\n acc[key] = options;\n }\n\n return acc;\n },\n {}\n )) ||\n defaultUserSelection;\n\n useEffect(() => {\n const selections = categories.reduce((obj, category) => {\n // Look/check for userSelection in selectable options\n let selection = selectableOptionsTable[category]?.find(\n (attrOption) => attrOption.id === userSelections[category]?.id\n );\n\n // Else try to restore existing line item options\n // except for monograms and contrast stitching panel\n if (\n !selection &&\n !(wasInMonogramSection && monogramCategories.includes(category)) &&\n !(\n wasInContrastStitchingSection &&\n CONTRAST_STITCHING_CATEGORIES_SET.has(category)\n )\n ) {\n selection = selectableOptionsTable[category]?.find(\n (attrOption) => attrOption.id === existingLineItems[category]\n );\n }\n\n // Only for contrast stitching categories:\n // Check if the userSelection is the None option\n // None options aren't present in selectableOptionsTable\n if (!selection && CONTRAST_STITCHING_CATEGORIES_SET.has(category)) {\n selection = unselectableOptionsTable[category]?.find(\n (attrOption) => attrOption.id === userSelections[category]?.id\n );\n\n if (!selection && !wasInContrastStitchingSection) {\n selection = unselectableOptionsTable[category]?.find(\n (attrOption) => attrOption.id === existingLineItems[category]\n );\n }\n }\n\n return { ...obj, [category]: selection || null };\n }, {});\n\n if (JSON.stringify(selections) !== JSON.stringify(userSelections)) {\n setUserSelections(selections);\n\n // When restoring the selection from existing line items, set the appropriate\n // checkbox state for contrast stitching panel\n if (!wasInContrastStitchingSection) {\n // check if contrast stitching is enabled\n const didUserDisable = CONTRAST_STITCHING_CATEGORIES_ARRAY.every(\n (category) => {\n return CONTRAST_STITCHING_NO_OPTION_GPP_CODE[category].some(\n (gpp_code) => gpp_code === selections[category]?.gpp_code\n );\n }\n );\n\n setContrastStitchingEnabled(!didUserDisable);\n }\n }\n }, [\n selectableOptionsTable,\n wasInMonogramSection,\n wasInContrastStitchingSection\n ]);\n\n const selectableOptionsTableLoaded =\n Object.keys(selectableOptionsTable).length == categories.length &&\n !Object.values(selectableOptionsTable).every((x) => !x);\n\n const selectableOptions = selectableOptionsTable[currentScreen];\n const currentSelectedAttribute = userSelections[currentScreen];\n const currentSetSelectedAttribute =\n setSelectedAttributeFunctions[currentScreen];\n\n const categoriesToShow = categories.filter((category) => {\n if (!selectableOptionsTableLoaded) {\n // Show category if it's not hidden when the table hasn't loaded\n return !categorySettings[category].hidden;\n } else {\n // Show category if it has selectable options or is unhiddable\n const hasSelectableOptions =\n (selectableOptionsTable[category] &&\n selectableOptionsTable[category].length > 1 &&\n !REQUIRED_MONOGRAM_CATEGORIES.has(category)) ||\n (REQUIRED_MONOGRAM_CATEGORIES.has(category) &&\n selectableOptionsTable[category] &&\n selectableOptionsTable[category].length > 0);\n const isUnhiddable = UNHIDDABLE_CATEGORIES.has(category);\n return hasSelectableOptions || isUnhiddable;\n }\n });\n\n // If even preview image for a single category is unable to load, get rid of all the preview images and show the default one\n const [isDefaultImageActive, setIsDefaultImageActive] = React.useState(false);\n const triggerDefaultImage = () => {\n setIsDefaultImageActive(true);\n };\n\n //monogram\n const [monogramInitials, setMonogramInitials] = React.useState(\n existingMonogramInitials || ''\n );\n const monogramCategories = categoriesToShow.filter(\n (c) => categorySettings[c]?.selection_panel_layout === 'monogram'\n );\n const monogramSelections = monogramCategories.reduce((obj, key) => {\n if (userSelections[key] !== undefined) {\n obj[key] = userSelections[key];\n }\n return obj;\n }, {});\n\n const selectedMonogramStyleSpecs =\n MONOGRAM_STYLES_SPECS[userSelections.monogram_style?.gpp_code] ||\n (selectableOptionsTable?.monogram_style?.length ?\n {\n min: 0,\n max: Math.max(\n ...selectableOptionsTable.monogram_style.map(\n (s) => MONOGRAM_STYLES_SPECS[s.gpp_code].max\n )\n ),\n validCharacters: selectableOptionsTable.monogram_style\n .map((s) => MONOGRAM_STYLES_SPECS[s.gpp_code].validCharacters)\n .reduce((a, b) => (a.length > b.length ? a : b)),\n validCharactersDisplay: selectableOptionsTable.monogram_style\n .map((s) => MONOGRAM_STYLES_SPECS[s.gpp_code])\n .reduce((a, b) =>\n a.validCharacters.length > b.validCharacters.length ? a : b\n ).validCharactersDisplay,\n textTransform:\n selectableOptionsTable.monogram_style\n .map((s) => MONOGRAM_STYLES_SPECS[s.gpp_code].textTransform)\n .reduce((a, b) =>\n a === 'none' || b === 'none' ? 'none'\n : a === 'uppercase' || b === 'uppercase' ? 'uppercase'\n : a === 'lowercase' || b === 'lowercase' ? 'lowercase'\n : null\n ) || 'none',\n previewInitials:\n MONOGRAM_STYLES_SPECS[\n selectableOptionsTable.monogram_style[0].gpp_code\n ].previewInitials,\n margin: MONOGRAM_STYLES_SPECS.default.margin,\n style:\n MONOGRAM_STYLES_SPECS[\n selectableOptionsTable.monogram_style[0].gpp_code\n ].style,\n monogramPreviewStyle:\n MONOGRAM_STYLES_SPECS[\n selectableOptionsTable.monogram_style[0].gpp_code\n ].monogramPreviewStyle\n }\n : MONOGRAM_STYLES_SPECS.default);\n const defaultMonogramColor =\n selectableOptionsTable?.monogram_color?.length ?\n selectableOptionsTable.monogram_color.find(\n (c) => c.font_family === '#000000'\n ) || selectableOptionsTable.monogram_color[0]\n : { font_family: '#000000' };\n const monogramError =\n monogramInitials.length < selectedMonogramStyleSpecs.min ?\n `Please update your initials: the style you have selected requires at least ${\n selectedMonogramStyleSpecs.min\n } character${selectedMonogramStyleSpecs.min == 1 ? '' : 's'}`\n : monogramInitials.length > selectedMonogramStyleSpecs.max ?\n `Please update your initials: the style you have selected supports at most ${selectedMonogramStyleSpecs.max} characters`\n : (\n !new RegExp(\n `^[${selectedMonogramStyleSpecs.validCharacters}]*$`,\n 'i'\n ).test(monogramInitials)\n ) ?\n `Please update your initials: the style you have selected only supports ${selectedMonogramStyleSpecs.validCharactersDisplay} characters.`\n : '';\n const monogramFullySelected =\n ((wasInMonogramSection || !!existingLineItems.id) &&\n !userSelections.monogram_initials) ||\n (!monogramError && Object.values(monogramSelections).every(Boolean));\n const transformedMonogramInitials =\n selectedMonogramStyleSpecs.textTransform === 'uppercase' ?\n monogramInitials.toUpperCase()\n : selectedMonogramStyleSpecs.textTransform === 'lowercase' ?\n monogramInitials.toLowerCase()\n : monogramInitials;\n\n const clearMonogram = () => {\n setMonogramInitials('');\n setUserSelections({\n ...userSelections,\n ...Object.fromEntries(\n monogramCategories.map((category) => [category, null])\n )\n });\n };\n\n let categoryIndex = -1;\n\n for (let i = 0; i < categoriesToShow.length; i++) {\n if (currentScreen === 'monogram') {\n if (categoriesToShow[i] === 'monogram_initials') {\n categoryIndex = i;\n break;\n }\n } else if (currentScreen === 'contrast_stitching') {\n if (CONTRAST_STITCHING_CATEGORIES_SET.has(categoriesToShow[i])) {\n categoryIndex = i;\n break;\n }\n } else if (categoriesToShow[i] === currentScreen) {\n categoryIndex = i;\n break;\n }\n }\n\n let nextAttribute = categoriesToShow[categoryIndex + 1];\n let previousAttribute = categoriesToShow[categoryIndex - 1];\n if (categoryIndex == 0 && !confirmedFitShapeCode) previousAttribute = 'fit';\n\n // Monogram options are handled on their own screen.\n if (currentScreen === 'monogram') {\n for (\n let indexOffset = 2;\n monogramCategories.includes(nextAttribute);\n indexOffset++\n ) {\n nextAttribute = categoriesToShow[categoryIndex + indexOffset];\n }\n } else if (currentScreen === 'contrast_stitching') {\n if (nextAttribute !== 'monogram') {\n for (\n let indexOffset = 1;\n CONTRAST_STITCHING_CATEGORIES_SET.has(nextAttribute);\n indexOffset++\n ) {\n nextAttribute = categoriesToShow[categoryIndex + indexOffset];\n }\n }\n }\n\n if (nextAttribute) {\n if (CONTRAST_STITCHING_CATEGORIES_SET.has(nextAttribute))\n nextAttribute = 'contrast_stitching';\n else if (monogramCategories.includes(nextAttribute))\n nextAttribute = 'monogram';\n }\n\n if (previousAttribute) {\n if (CONTRAST_STITCHING_CATEGORIES_SET.has(previousAttribute))\n previousAttribute = 'contrast_stitching';\n else if (monogramCategories.includes(previousAttribute))\n previousAttribute = 'monogram';\n }\n\n const nextAttributeName =\n CUSTOM_NEXT_ATTRIBUTE_NAME[nextAttribute] ||\n categorySettings[nextAttribute]?.display_name;\n\n const canAddToBasket = !!(\n (cartSettings.cart === 'iframePostMessage' || selectedBody.scanId) &&\n selectedFit &&\n categoriesToShow.every(\n (category) =>\n monogramCategories.includes(category) ||\n userSelections[category] !== null\n ) &&\n monogramFullySelected\n );\n\n const canAddToAttendantBasket = !!(\n selectedFit &&\n categoriesToShow.every(\n (category) =>\n monogramCategories.includes(category) ||\n userSelections[category] !== null\n ) &&\n monogramFullySelected &&\n isAttendant\n );\n\n let screenToDisplay;\n let mobileNextStepsButton;\n switch (currentScreen) {\n case 'main': {\n const pricedSelections = Object.values(userSelections);\n const itemCost = pricedSelections\n .map((selection) => {\n return selection && parseFloat(selection.price);\n })\n .reduce((total, num) => total + num);\n\n mobileNextStepsButton = null;\n screenToDisplay = (\n \n );\n break;\n }\n case 'body': {\n mobileNextStepsButton = (\n \n );\n screenToDisplay = (\n \n );\n break;\n }\n case 'fit': {\n const resetSelections = () => {\n setUserSelections(defaultUserSelection);\n setExistingLineItems({\n fit: selectedFit,\n id: existingLineItems.id,\n ...defaultUserSelection\n });\n setIsDefaultImageActive(false);\n };\n const isNextDisabled = !selectableOptionsTable[nextAttribute];\n mobileNextStepsButton = (\n \n );\n screenToDisplay = (\n \n );\n break;\n }\n case 'monogram': {\n const isDisabled = wasInMonogramSection && !monogramFullySelected;\n\n mobileNextStepsButton = (\n \n );\n screenToDisplay = (\n \n );\n break;\n }\n case 'contrast_buttonhole': {\n mobileNextStepsButton = (\n \n );\n screenToDisplay = (\n \n );\n break;\n }\n case 'contrast_white_collar': {\n mobileNextStepsButton = (\n \n );\n screenToDisplay = (\n \n );\n break;\n }\n case 'contrast_white_cuff': {\n mobileNextStepsButton = (\n \n );\n screenToDisplay = (\n \n );\n break;\n }\n case 'rush': {\n mobileNextStepsButton = (\n \n );\n screenToDisplay = (\n \n );\n break;\n }\n case 'contrast_stitching': {\n const actualNextAttribute =\n nextAttribute === 'monogram' ? 'monogram_initials' : nextAttribute;\n const isNextDisabled =\n // if the actualNextAttribute/nextAttribute is undefined, this means the contrast stitching\n // is the last option and in that case, it shouldn't look in the selectableOptionsTable\n (actualNextAttribute && !selectableOptionsTable[actualNextAttribute]) ||\n // Check if the checkbox is enabled but all of the categories haven't been selected\n (contrastStitchingEnabled &&\n !CONTRAST_STITCHING_CATEGORIES_ARRAY.every((category) =>\n hasProp(userSelections, category) ?\n userSelections[category] !== null\n : true\n ));\n\n mobileNextStepsButton = (\n \n );\n screenToDisplay = (\n \n );\n break;\n }\n case \"pocket_square\":\n const category = \"pocket_square\";\n\n const defaultOption = selectableOptionsTable[category]?.find(\n (option) => option.name === \"NO\",\n );\n const ConditionTextTemplate = (\n <>\n *There will be a fee added when you select \"Yes\"\n
\n Pocket Square is automatically made in the same fabric selected for\n your Shirt\n \n );\n\n mobileNextStepsButton = (\n \n );\n screenToDisplay = (\n \n );\n break;\n default:\n if (categorySettings[currentScreen]?.selection_panel_layout === 'grid') {\n screenToDisplay = (\n \n );\n mobileNextStepsButton = (\n \n );\n } else {\n mobileNextStepsButton = (\n \n );\n screenToDisplay = (\n \n );\n }\n break;\n }\n\n let imagePreviewScreenToDisplay;\n\n switch (currentScreen) {\n case 'body':\n case 'fit':\n imagePreviewScreenToDisplay = (\n \n );\n break;\n case 'fabric':\n imagePreviewScreenToDisplay = (\n \n );\n break;\n default:\n if (!userSelections['fabric'] || isDefaultImageActive) {\n imagePreviewScreenToDisplay = (\n \n );\n } else if (hasLaydownPreview) {\n imagePreviewScreenToDisplay = (\n \n );\n } else {\n imagePreviewScreenToDisplay = (\n \n );\n }\n }\n\n const fabricOptions = selectableOptionsTable['fabric'];\n\n return (\n
\n {showBodySelector === SHOW_BODY_SELECTOR.POPUP && (\n \n )}\n {!(isIframeIntegrated && view === 'ess-only') && (\n <>\n
\n
\n {imagePreviewScreenToDisplay}\n
\n {screenToDisplay}\n
\n
\n {mobileNextStepsButton}\n
\n {fabricOptions &&\n fabricOptions.map((fabric) => (\n \n ))}\n \n )}\n
\n );\n}\n\nexport function useLoadExistingFit(\n fitOptions,\n existingFitShapeCode,\n setSelectedFit\n) {\n useEffect(() => {\n if (!fitOptions || !existingFitShapeCode) return;\n\n const initialFit = fitOptions.find(\n (option) => option.gpp_shape_code === existingFitShapeCode\n );\n if (initialFit) {\n setSelectedFit(initialFit);\n }\n }, [existingFitShapeCode, fitOptions, setSelectedFit]);\n}\n\n//for monogram\n\n// Run this example by adding <%= javascript_pack_tag 'Configurator_react' %> to the head of your layout file,\n// like app/views/layouts/application.html.erb. All it does is render
Configurator React
at the bottom\n// of the page.\n","import React from 'react';\n\nexport default function ConfiguratorHeader({ productName, currencySymbol }) {\n const title = currencySymbol === '$' ? 'Customizer' : 'Customiser';\n\n return (\n
\n
{title}
\n
\n \n Choose from our carefully curated selection of fabrics and then\n customize the {productName.toLowerCase()} to your preference.{' '}\n \n \n The {productName.toLowerCase()} will be cut to your shape.\n \n
\n
\n );\n}\n","import React from 'react';\nimport ConfiguratorHeader from './ConfiguratorHeader';\nimport BodySelectionRow from './BodySelectionRow';\nimport FitSelectionRow from './FitSelectionRow';\nimport FabricSelectionRow from './FabricSelectionRow';\nimport MonogramSelectionRow from './MonogramSelectionRow';\nimport CustomAttributeRow from './CustomAttributeRow';\nimport ContrastStitchingRow from './ContrastStitchingRow';\nimport OrderTotals from './OrderTotals';\nimport OrderActions from './OrderActions';\nimport { CONTRAST_STITCHING_CATEGORIES_SET } from '../constants/contrast_stitching';\nimport { SHOW_BODY_SELECTOR } from '../constants/body_selector';\n\nexport default function ConfiguratorHome({\n itemCost,\n productKey,\n productName,\n selectedBody,\n selectedFit,\n setCurrentScreen,\n canOpenAttributes,\n currencySymbol,\n authenticityToken,\n fitOptions,\n lineItemId,\n userSelections,\n categorySettings,\n categoriesToShow,\n isFitLocked,\n startingQuantity,\n monogramCategories,\n monogramSelections,\n monogramFullySelected,\n monogramInitials,\n hidePayment,\n showBodySelector,\n productExternalId,\n cartSettings,\n contrastStitchingEnabled,\n isItemClone,\n canAddToBasket,\n isAttendant\n}) {\n const [quantity, setQuantity] = React.useState(startingQuantity);\n\n const customAttributeRows = categoriesToShow.map((categoryKey, idx) => {\n const attributeName = categorySettings[categoryKey].display_name;\n\n if (categoryKey === 'fabric') {\n return (\n \n );\n } else if (monogramCategories.includes(categoryKey)) {\n if (categoryKey === 'monogram_initials')\n return (\n \n );\n } else {\n const isLastAttribute = categoriesToShow.at(-1) === categoryKey;\n\n if (CONTRAST_STITCHING_CATEGORIES_SET.has(categoryKey)) {\n if (\n idx !== 0 &&\n CONTRAST_STITCHING_CATEGORIES_SET.has(categoriesToShow[idx - 1])\n ) {\n return;\n }\n\n return (\n \n );\n }\n\n return (\n \n );\n }\n });\n\n return (\n
\n
\n
\n \n
\n {showBodySelector === SHOW_BODY_SELECTOR.SELECTION && (\n \n )}\n\n \n\n {customAttributeRows}\n\n \n \n
\n
\n
\n
\n );\n}\n","import React from 'react';\nimport ArrowRight from 'images/arrow-right.svg';\nimport cx from 'classnames';\nimport { CONTRAST_STITCHING_CATEGORIES_ARRAY } from '../constants/contrast_stitching';\nimport { hasProp } from '../utils/object';\n\nexport default function ContrastStitchingRow({\n setCurrentScreen,\n canOpen,\n contrastStitchingEnabled,\n userSelections\n}) {\n const classNames = cx(\n 'fc-option-dropdown-arrow-collapsed',\n !canOpen && 'fc-reduced-opacity'\n );\n const handleClick = () => {\n if (canOpen) {\n setCurrentScreen('contrast_stitching');\n }\n };\n\n const selectionMade = CONTRAST_STITCHING_CATEGORIES_ARRAY.every((category) =>\n hasProp(userSelections, category) ? userSelections[category] !== null : true\n );\n\n return (\n
\n
Contrast Stitching
\n {!contrastStitchingEnabled && selectionMade ?\n
\n No contrast stitching\n
\n : contrastStitchingEnabled && selectionMade ?\n
\n {[\n ...CONTRAST_STITCHING_CATEGORIES_ARRAY.map(\n (c) => userSelections[c].name\n )\n ].join(', ')}\n
\n :
\n Make a selection\n
\n }\n
\n
\n \"Arrow\n
\n
\n
\n );\n}\n","import React from 'react';\nimport NextStepButton from './NextStepButton';\nimport BackToConfigurator from './BackToConfigurator';\nimport SubSelectionPalletColor from './SubSelectionPalletColor';\nimport SubSelectionPalletLocation from './SubSelectionPalletLocation';\nimport { CONTRAST_STITCHING_CATEGORIES_ARRAY } from '../constants/contrast_stitching';\nimport cx from 'classnames';\n\nconst palletComponents = {\n contrast_stitching_color: SubSelectionPalletColor,\n contrast_stitching_location: SubSelectionPalletLocation\n};\n\nexport default function ContrastStitchingSelectionPanel({\n productName,\n currencySymbol,\n nextAttribute,\n nextAttributeName,\n previousAttribute,\n setCurrentScreen,\n isDisabled,\n selectableOptionsTable,\n unselectableOptionsTable,\n setSelectedAttributeFunctions,\n userSelections,\n enabled,\n setEnabled,\n wasInContrastStitchingSection,\n setWasInContrastStitchingSection,\n canAddToBasket\n}) {\n const containerClasses = cx(\n 'row no-gutters fc-fabric-selection-pallet',\n enabled ?\n 'monogram-selection-pallet-scrollbar'\n : 'monogram-selection-w-pallet-scrollbar'\n );\n\n const toggleCheckbox = () => {\n if (enabled) {\n setEnabled(false);\n CONTRAST_STITCHING_CATEGORIES_ARRAY.forEach((category) => {\n setSelectedAttributeFunctions[category](\n unselectableOptionsTable[category][0]\n );\n });\n } else {\n setEnabled(true);\n CONTRAST_STITCHING_CATEGORIES_ARRAY.forEach((category) => {\n setSelectedAttributeFunctions[category]();\n });\n }\n };\n\n React.useEffect(() => {\n setWasInContrastStitchingSection(true);\n\n // Set the selection to be none initially, unless there is a selection present already.\n if (userSelections && !wasInContrastStitchingSection) {\n CONTRAST_STITCHING_CATEGORIES_ARRAY.forEach((category) => {\n !!userSelections[category] ||\n setSelectedAttributeFunctions[category](\n unselectableOptionsTable[category][0]\n );\n });\n }\n }, []);\n\n return (\n
\n
\n
\n
\n \n
\n
\n
\n
\n Select a Contrast Stitching\n
\n
\n
\n\n
\n
\n \n \n
\n \n Yes, Add Contrast Stitching\n \n \n\n {!enabled ?\n

\n Choose from several colors and placements.\n

\n : null}\n\n {enabled ?\n
\n {Object.keys(palletComponents).map((category) => {\n const Pallet = palletComponents[category];\n return Pallet ?\n \n : <>;\n })}\n
\n : null}\n
\n
\n
\n\n
\n \n
\n
\n
\n );\n}\n","import React from 'react';\nimport ArrowRight from 'images/arrow-right.svg';\nimport cx from 'classnames';\n\nexport default function CustomAttributeRow({\n attributeName,\n selectedAttribute,\n setCurrentScreen,\n panelScreen,\n canOpen\n}) {\n const arrowClasses = cx(\n 'fc-option-dropdown-arrow-collapsed',\n !canOpen && 'fc-reduced-opacity'\n );\n const handleClick = () => {\n if (canOpen) {\n setCurrentScreen(panelScreen);\n }\n };\n\n return (\n
\n
{attributeName}
\n {selectedAttribute ? (\n
\n {selectedAttribute.name}\n
\n ) : (\n
\n Make a selection\n
\n )}\n
\n
\n \"Arrow\n
\n
\n
\n );\n}\n","import React from 'react';\nimport FabricInfoIcon from 'images/fabric-info-icon.svg';\n\nexport default function FabricDescriptionModal({ fabric, currencySymbol }) {\n const rawDescription = fabric.text.description;\n let description;\n if (rawDescription) {\n const lowerCaseDescription = fabric.text.description\n .split('. ')\n .map(\n (sentence) =>\n sentence[0] &&\n sentence[0].toUpperCase() + sentence.substring(1).toLowerCase()\n );\n description = lowerCaseDescription && lowerCaseDescription.join('. ');\n }\n\n return (\n \n
\n
\n
\n \n ×\n \n
\n
\n
\n \n \n \n {fabric.name}\n
\n

{description}

\n

\n {currencySymbol}\n {Math.round(fabric.price)}\n

\n
\n
\n
\n \n );\n}\n","import React, { useMemo, useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport BackToConfigurator from './BackToConfigurator';\nimport NextStepButton from './NextStepButton';\nimport FabricSelectedIcon from 'images/fabric-selected-check.svg';\nimport DefaultFabricImage from 'images/PhotoComingSoon.png';\nimport SearchIcon from 'images/search.svg';\nimport CutLengthsIcon from 'images/cut-length.svg';\nimport ArrowDown from 'images/arrow-down-small.svg';\nimport useImageLoader from \"../hooks/useImageLoader\";\n\nconst CUT_LENGTH_TYPE = 'CUTLENGTH';\n\nexport default function FabricSelectionPanel({\n productName,\n fabrics,\n hasMoreInfo,\n attributeName,\n setSelectedAttribute,\n selectedAttribute,\n setCurrentScreen,\n currencySymbol,\n nextAttribute,\n nextAttributeName,\n previousAttribute,\n hidePayment,\n showFabricDetail,\n canAddToBasket\n}) {\n const attributeTitle =\n attributeName.charAt(0).toUpperCase() + attributeName.slice(1);\n const hasFabrics = !!fabrics;\n const [touched, setTouched] = useState(false);\n const [query, setQuery] = useState('');\n const [activeBook, setActiveBook] = useState('');\n\n const filteredFabrics = useMemo(() => {\n if (query === '' || fabrics === null) {\n return sortByBookName(fabrics);\n } else {\n const lowerCasedQuery = query.toLowerCase();\n return sortByBookName(fabrics.filter((_fabric) =>\n _fabric.name.toLowerCase().includes(lowerCasedQuery) ||\n _fabric.gpp_book_name.toLowerCase().includes(lowerCasedQuery)\n ));\n }\n }, [fabrics, query]);\n\n const handleOnClickSearch = () => {\n setTouched(true);\n };\n\n const handleSearch = (e) => {\n setQuery(e.target.value);\n };\n\n useEffect(() => {\n setQuery('');\n }, [attributeName]);\n\n function sortByBookName(arr) {\n return arr.reduce((sortedObj, item) => {\n sortedObj[item.gpp_book_name] = [...(sortedObj[item.gpp_book_name] || []), item];\n return sortedObj;\n }, {});\n }\n\n const sortByCutLength = (a, b) => a.gpp_selection_type === CUT_LENGTH_TYPE ? 1 : b.gpp_selection_type === CUT_LENGTH_TYPE ? -1 : 0;\n\n return (\n
\n
\n
\n
\n \n
\n\n
\n
\n
\n Select a {attributeTitle}\n
\n \n \n \n
\n
\n
\n
\n\n {Object.keys(filteredFabrics).length === 1 ?\n (\n <>\n {Object.keys(filteredFabrics).map((key) => (\n
\n {hasFabrics &&\n filteredFabrics[key].sort(sortByCutLength).map((fabric) => {\n const isSelectedAttribute = selectedAttribute === fabric;\n return (\n \n );\n })}\n
\n ))}\n \n ) :\n (\n <>\n {Object.keys(filteredFabrics).map((key) => (\n
\n
setActiveBook((prev) => prev === key ? '' : key)}>\n
{key.toLowerCase()}
\n
\n \"Arrow\n
\n
\n
\n {hasFabrics &&\n filteredFabrics[key].sort(sortByCutLength).map((fabric) => {\n const isSelectedAttribute = selectedAttribute === fabric;\n return (\n \n );\n })}\n
\n
\n ))}\n \n )\n }\n
\n
\n\n
\n \n
\n
\n \n );\n}\n\nexport function FabricPallet({\n currencySymbol,\n fabric,\n setSelectedAttribute,\n isSelectedAttribute,\n hasMoreInfo,\n hidePayment,\n showFabricDetail\n}) {\n const [isActive, setIsActive] = React.useState(null);\n const isDetailVisible = (isSelectedAttribute || isActive) && hasMoreInfo;\n const showFabricInfoDetails = showFabricDetail && isDetailVisible;\n const loadedImageUrl = useImageLoader(fabric.thumbnail_url || fabric.images.display, DefaultFabricImage);\n const handleFabricSelection = () => {\n if (!isSelectedAttribute) {\n setSelectedAttribute(fabric);\n }\n };\n\n return (\n \n setIsActive(false)}\n onMouseEnter={() => setIsActive(true)}\n >\n {isSelectedAttribute && (\n \n \"Fabric\n \n )}\n
\n {fabric?.gpp_selection_type === CUT_LENGTH_TYPE && (\n
\n
cut lengths
\n
\n \"cut\n
\n
\n )}\n \n {showFabricInfoDetails && (\n
\n
\n {Object.keys(fabric.attributes).map((attributeTitle) => {\n const displayTitle =\n attributeTitle.charAt(0).toUpperCase() +\n attributeTitle.slice(1);\n const attributeText = fabric.attributes[attributeTitle];\n\n return (\n
\n \n {displayTitle}:{' '}\n \n \n {attributeText}\n \n
\n );\n })}\n
\n
\n )}\n
\n
\n
{fabric.name}
\n {!hidePayment && hasMoreInfo && (\n
\n {currencySymbol}\n {Math.round(fabric.price)}\n
\n )}\n \n );\n}\n","import React from 'react';\nimport ArrowRight from 'images/arrow-right.svg';\nimport cx from 'classnames';\n\nexport default function FabricSelectionRow({\n fabric,\n setCurrentScreen,\n canOpen\n}) {\n const classNames = cx(\n 'fc-option-dropdown-arrow-collapsed',\n !canOpen && 'fc-reduced-opacity'\n );\n const handleClick = () => {\n if (canOpen) {\n setCurrentScreen('fabric');\n }\n };\n\n return (\n
\n
Fabric
\n {fabric ? (\n \n ) : (\n
Make a selection
\n )}\n
\n
\n \"Arrow\n
\n
\n
\n );\n}\n\nexport function FabricSelection({ fabric }) {\n return
{fabric.name}
;\n}\n","import React from 'react';\nimport ModelImagePreview from './ModelImagePreview';\n\nexport default function FitImagePreview({\n productKey,\n selectedFit,\n remoteImagesPath,\n brandCode,\n showCustomPreviewImage\n}) {\n return selectedFit && selectedFit.image ? (\n
\n \n
\n ) : (\n \n );\n}\n","import React, {useEffect, useRef} from 'react';\nimport BackToConfigurator from './BackToConfigurator';\nimport NextStepButton from './NextStepButton';\nimport FabricSelectedIcon from 'images/fabric-selected-check.svg';\nimport DefaultFitImage from 'images/PhotoComingSoon.png';\nimport cx from 'classnames';\nimport useImageLoader from \"../hooks/useImageLoader\";\n\nexport default function FitSelectionPanel({\n productName,\n fitOptions,\n selectedFit,\n setCurrentScreen,\n setSelectedFit,\n resetSelections,\n currencySymbol,\n nextAttribute,\n previousAttribute,\n isNextDisabled,\n canAddToBasket\n}) {\n return (\n
\n
\n
\n
\n \n
\n
\n
\n
Select a Fit
\n
\n
\n
\n
\n {fitOptions &&\n fitOptions.map((fit) => {\n return (\n \n );\n })}\n
\n
\n
\n\n
\n \n
\n
\n
\n );\n}\n\nexport function FitSelection({\n fit,\n isSelected,\n setSelectedFit,\n resetSelections\n}) {\n const [isActive, setIsActive] = React.useState(null);\n const loadedImageUrl = useImageLoader(fit.image, DefaultFitImage);\n\n const containerClasses = cx(\n 'row no-gutters fc-custom-selection',\n (isActive || isSelected) && 'fc-custom-selection-active'\n );\n const handleClick = () => {\n if (!isSelected) {\n setSelectedFit(fit);\n resetSelections();\n }\n };\n\n return (\n setIsActive(false)}\n onMouseEnter={() => setIsActive(true)}\n onClick={handleClick}\n >\n
\n \n
\n\n
\n
{fit.answer}
\n\n
\n {fit.description}\n
\n
\n \n {isSelected && \"Selected\"}\n \n \n );\n}\n","import React from 'react';\nimport ArrowRight from 'images/arrow-right.svg';\nimport cx from 'classnames';\n\nexport default function FitSelectionRow({\n setCurrentScreen,\n panelScreen,\n selectedFit,\n isFitLocked\n}) {\n const arrowClasses = cx(\n 'fc-option-dropdown-arrow-collapsed',\n !selectedFit && 'fc-reduced-opacity'\n );\n const handleClick = () => {\n if (!isFitLocked) {\n setCurrentScreen(panelScreen);\n setTimeout(() => {\n window.scroll({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n }, 100);\n }\n };\n\n return (\n
\n
Fit
\n {selectedFit ? (\n
\n {selectedFit.answer}\n
\n ) : (\n
\n Make a selection\n
\n )}\n
\n
\n \"Arrow\n
\n
\n
\n );\n}\n","import React, { useState, useMemo, useEffect } from 'react';\n\nexport default function ModelImagePreview({\n productKey,\n selectedFabric,\n remoteImagesPath,\n brandCode,\n showCustomPreviewImage\n}) {\n const [imageIndex, setImageIndex] = useState(0);\n // Array of images sources. We'll start with index 0 and fallback to the next one if\n // we are unable to load current image\n const imageSources = useMemo(() => {\n let sourcesArray = [];\n\n if (selectedFabric) {\n sourcesArray.push(\n `${remoteImagesPath}/${selectedFabric.gpp_code}__${productKey}__model.jpg`\n );\n }\n\n if (showCustomPreviewImage) {\n sourcesArray.push(\n `${remoteImagesPath}/default__${brandCode}__${productKey}__model.jpg`\n );\n }\n\n sourcesArray.push(`${remoteImagesPath}/default__${productKey}__model.jpg`);\n\n return sourcesArray;\n }, [productKey, selectedFabric, remoteImagesPath]);\n\n const handleOnError = () => {\n setImageIndex((imgIdx) =>\n imgIdx < imageSources.length - 1 ? imgIdx + 1 : imgIdx\n );\n };\n\n useEffect(() => {\n // reset image index when the imageSources array gets updated\n setImageIndex(0);\n }, [imageSources]);\n\n return (\n
\n \n
\n );\n}\n","import React from 'react';\nimport cx from 'classnames';\nimport MonogramSelectedIcon from 'images/monogram-selected-check.png';\n\nexport default function MonogramPalletStyle({\n options,\n selectedAttribute,\n setSelectedAttribute,\n monogramStylesSpecs\n}) {\n return (\n
\n
Choose Style
\n
\n {options?.map((style) => {\n return (\n \n );\n })}\n
\n
\n );\n}\n\nexport function MonogramPalletStyleItem({\n attr,\n setSelectedStyle,\n isSelectedAttribute,\n monogramStyleSpecs\n}) {\n const [isActive, setIsActive] = React.useState(null);\n\n const containerClasses = cx(\n 'monogram-color-blocks',\n (isActive || isSelectedAttribute) && 'monogram-color-blocks-active'\n );\n\n const handleColorSelection = () => {\n if (!isSelectedAttribute) {\n setSelectedStyle(attr);\n }\n };\n\n const monogramPreviewStyle = monogramStyleSpecs.monogramPreviewStyle;\n\n return (\n \n setIsActive(false)}\n onMouseEnter={() => setIsActive(true)}\n onClick={handleColorSelection}\n >\n {isSelectedAttribute && (\n \n \n \n )}\n
\n
\n {monogramStyleSpecs.previewInitials\n .split('')\n ?.map((val, index) => (\n \n {val}\n \n ))}\n
\n
\n
\n
{attr.name}
\n \n );\n}\n\n\n","import React, { useEffect, useRef, useState } from 'react';\nimport MonogramOffset from './monogramStyles/MonogramOffset';\nimport MonogramDiamond from './monogramStyles/MonogramDiamond';\nimport MonogramDefault from './monogramStyles/MonogramDefault';\n\nexport default function MonogramPreview({\n userSelections,\n monogramInitials,\n monogramError,\n selectedMonogramStyleSpecs,\n defaultMonogramColor\n}) {\n const [key, setKey] = useState(0);\n\n useEffect(() => {\n // Incrementing the key whenever monogramInitials or userSelections.monogram_style changes\n setKey((prevKey) => prevKey + 1);\n }, [\n monogramInitials,\n userSelections.monogram_style,\n userSelections.monogram_color\n ]);\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction MonogramContent({\n userSelections,\n monogramInitials,\n selectedMonogramStyleSpecs,\n defaultMonogramColor\n}) {\n const svgRef = useRef();\n\n useEffect(() => {\n const textElements = svgRef.current.querySelectorAll('text');\n if (textElements.length > 0) {\n const bbox = Array.from(textElements).reduce(\n (acc, text) => text.getBBox(),\n textElements[0].getBBox()\n );\n\n const margin = selectedMonogramStyleSpecs.margin;\n svgRef.current.setAttribute(\n 'viewBox',\n `${bbox.x - margin} ${bbox.y} ${bbox.width + 2 * margin} ${bbox.height}`\n );\n }\n }, [monogramInitials, userSelections.monogram_style]);\n\n const MonogramComponents = {\n 'monogram-style-text': MonogramDefault,\n 'script-initial-code': MonogramOffset,\n 'diamond-monogram': MonogramDiamond,\n };\n\n const selectedMonogramStyle = selectedMonogramStyleSpecs.monogramPreviewStyle;\n const MonogramComponent = MonogramComponents[selectedMonogramStyle];\n\n return (\n \n {MonogramComponent && (\n \n )}\n \n );\n}\n","import React from 'react';\nimport NextStepButton from './NextStepButton';\nimport BackToConfigurator from './BackToConfigurator';\nimport SubSelectionPalletColor from './SubSelectionPalletColor';\nimport SubSelectionPalletLocation from './SubSelectionPalletLocation';\nimport MonogramPalletStyle from './MonogramPalletStyle';\nimport cx from 'classnames';\n\nexport default function MonogramSelectionPanel({\n productName,\n currencySymbol,\n nextAttribute,\n nextAttributeName,\n previousAttribute,\n setCurrentScreen,\n isDisabled,\n selectableOptionsTable,\n setSelectedAttributeFunctions,\n userSelections,\n clearMonogram,\n monogramError,\n monogramCategories,\n monogramStylesSpecs,\n selectedMonogramStyleSpecs,\n monogramInitials,\n setMonogramInitials,\n setWasInMonogramSection,\n canAddToBasket\n}) {\n const enabled = userSelections.monogram_initials !== null;\n\n const palletComponents = {\n monogram_style: MonogramPalletStyle,\n monogram_color: SubSelectionPalletColor,\n monogram_location: SubSelectionPalletLocation\n };\n\n const toggleMonogram = () => {\n if (enabled) {\n clearMonogram();\n } else {\n const options = selectableOptionsTable['monogram_initials'];\n setSelectedAttributeFunctions['monogram_initials'](options?.[0]);\n }\n };\n\n let characterRegExp = new RegExp(\n `[^${selectedMonogramStyleSpecs.validCharacters}]`,\n 'gi'\n );\n\n const pallets = monogramCategories.map((category) => {\n if (category === 'monogram_initials') {\n return (\n
\n Enter Initials\n

\n maximum characters vary by style\n

\n {\n e.target.value = e.target.value.replace(characterRegExp, '');\n }}\n style={{ textTransform: selectedMonogramStyleSpecs.textTransform }}\n onChange={(e) => setMonogramInitials(e.target.value)}\n maxLength={selectedMonogramStyleSpecs.max}\n />\n {monogramError ?\n
\n

{monogramError}

\n
\n : null}\n
\n );\n }\n\n let Pallet = palletComponents[category];\n // Don't show monogram styles if they have only a single option\n if (\n Pallet &&\n !(\n category === 'monogram_style' &&\n selectableOptionsTable[category].length < 2\n )\n ) {\n return (\n \n );\n } else {\n return null;\n }\n });\n\n const containerClasses = cx(\n 'row no-gutters fc-fabric-selection-pallet',\n enabled ?\n 'monogram-selection-pallet-scrollbar'\n : 'monogram-selection-w-pallet-scrollbar'\n );\n\n React.useEffect(() => {\n setWasInMonogramSection(true);\n }, []);\n\n return (\n
\n
\n
\n
\n \n
\n
\n
\n
\n Select a Monogram\n
\n
\n
\n\n
\n
\n \n \n
\n \n Yes, Add Monogram (Free)\n \n \n\n {!enabled ?\n

\n A monogram is another way to emphasize that this shirt was\n made for you, by you.\n
\n Choose from several styles, colors, and placements.\n

\n : null}\n\n {enabled ?\n
\n {pallets}\n
\n : null}\n
\n
\n
\n\n
\n \n
\n
\n
\n );\n}\n","import React from 'react';\nimport ArrowRight from 'images/arrow-right.svg';\nimport cx from 'classnames';\n\nexport default function MonogramSelectionRow({\n setCurrentScreen,\n canOpen,\n monogramSelections,\n monogramInitials,\n monogramFullySelected\n}) {\n const classNames = cx(\n 'fc-option-dropdown-arrow-collapsed',\n !canOpen && 'fc-reduced-opacity'\n );\n const handleClick = () => {\n if (canOpen) {\n setCurrentScreen('monogram');\n }\n };\n\n const selections = Object.keys(monogramSelections).filter(\n (key) => key !== 'monogram_initials'\n );\n\n return (\n
\n
Monogram
\n {monogramFullySelected && !monogramSelections.monogram_initials ?\n
No monogram
\n : monogramFullySelected ?\n
\n {[\n monogramInitials,\n ...selections.map((s) => monogramSelections[s].name)\n ].join(', ')}\n
\n :
\n Make a selection\n
\n }\n
\n
\n \"Arrow\n
\n
\n
\n );\n}\n","import React from 'react';\nimport cx from 'classnames';\n\nexport default function NextStepButton({\n nextAttribute,\n nextAttributeName,\n previousAttribute,\n isDisabled,\n productName,\n setCurrentScreen,\n canAddToBasket\n}) {\n const nextScreen = nextAttribute || 'main';\n const previousScreen = previousAttribute || 'main';\n\n const changeScreen = (newScreen) => {\n setCurrentScreen(newScreen);\n setTimeout(() => {\n window.scroll({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n }, 100);\n };\n\n const handleNextClick = () => {\n changeScreen(nextScreen);\n };\n\n const handlePreviousClick = () => {\n changeScreen(previousScreen);\n };\n\n const enableShortcutButton = nextAttribute && canAddToBasket;\n\n return (\n
\n \n Previous\n \n\n \n {nextAttribute ?\n `Continue to ${nextAttributeName || nextAttribute}`\n : `Finalize my ${productName}`}\n \n\n {enableShortcutButton && (\n changeScreen('main')}\n disabled={isDisabled}\n >\n {`Finalize my ${productName}`}\n \n )}\n
\n );\n}\n","export const addToCartResultHandling = (\n data,\n cartUrl,\n skipSingleItemRestriction\n) => {\n if (\n !skipSingleItemRestriction &&\n data.error === 'single_item_restriction_fit_confirm_pending'\n ) {\n alert(\n `It looks like your first shirt has not been fit confirmed yet.\\n\\nWe only allow one product per category for first time orders.This ensures you get exactly the right fit and that all of your expectations are met.Your next order will allow the purchase of multiple items.`\n );\n } else if (data.error === 'user_not_signed_in') {\n $('#ScanRequiredModal').modal('show');\n } else {\n window.open(cartUrl, '_top');\n }\n};\n","import { addToCartResultHandling } from './result-handling';\n\nconst addToCart = async ({\n configured_item,\n quantity,\n authenticityToken,\n cartUrl\n}) => {\n const queryString = new URLSearchParams({\n configured_item_id: configured_item.id,\n quantity: quantity\n }).toString();\n\n const res = await window.fetch(`/line_items?${queryString}`, {\n headers: {\n 'X-CSRF-Token': authenticityToken\n },\n method: 'POST'\n });\n const data = await res.json();\n\n addToCartResultHandling(data, cartUrl, true);\n};\n\nconst updateInCart = async ({\n lineItemId,\n selections,\n quantity,\n authenticityToken,\n cartUrl\n}) => {\n const queryString = new URLSearchParams({\n ...selections,\n quantity: quantity\n }).toString();\n\n const res = await window.fetch(`/line_items/${lineItemId}?${queryString}`, {\n headers: {\n 'X-CSRF-Token': authenticityToken\n },\n method: 'PUT'\n });\n\n const data = await res.json();\n addToCartResultHandling(data, cartUrl, true);\n return;\n};\n\nexport const localCartService = {\n addToCart,\n updateInCart\n};\n","import { addToCartResultHandling } from './result-handling';\n\nconst addToCart = async ({\n cartApi,\n configured_item,\n itemCost,\n quantity,\n description,\n preview,\n cartUrl\n}) => {\n const res = await window.fetch(cartApi, {\n method: 'POST',\n body: JSON.stringify({\n configured_item: configured_item.id,\n price: itemCost * quantity,\n description,\n preview\n })\n });\n\n const data = await res.json();\n addToCartResultHandling(data, cartUrl);\n};\n\nexport const webhookCartService = {\n addToCart\n};\n","import { localCartService } from './local-cart';\nimport { webhookCartService } from './webhook-cart';\nimport { iframePostMessageCartService } from './iframePostMessage-cart';\nimport {useState} from \"react\";\n\nconst getDescriptions = ({\n categoriesToShow,\n categorySettings,\n userSelections,\n selectedFit,\n selectedBody,\n monogramSelections,\n monogramInitials\n}) => {\n const descriptions = [\n ['Sized For', selectedBody.firstName + ' ' + selectedBody.lastName],\n ['Fit', selectedFit.answer],\n ...categoriesToShow.reduce((acc, k) => {\n const v = categorySettings[k];\n if (v && v.selection_panel_layout != 'monogram') {\n acc.push([v.display_name, userSelections[k].name]);\n }\n return acc;\n }, [])\n ];\n\n if (Object.keys(userSelections).includes('monogram_initials')) {\n const monogramText =\n !userSelections['monogram_initials'] ? 'No' : (\n `(${[\n monogramInitials.toUpperCase(),\n ...Object.values(monogramSelections).map((v) => v.name)\n ].join(', ')})`\n );\n\n descriptions.push(['Monogram', monogramText]);\n }\n\n return descriptions;\n};\n\nconst getDescription = (descriptions) => {\n const { monogram, ...descriptionTexts } = descriptions;\n\n var monogramText;\n if (!monogram) {\n monogramText = '';\n } else if (monogram === 'No') {\n monogramText = `, with no monogram`;\n } else {\n monogramText = `, with monogram ${monogram}`;\n }\n\n return (\n Object.entries(descriptionTexts)\n .map((category, selection) => `${selection} ${category}`)\n .join(', ') + monogramText\n );\n};\n\nconst cartServices = {\n local: localCartService,\n webhook: webhookCartService,\n iframePostMessage: iframePostMessageCartService\n};\n\nexport const useCartServices = ({\n productKey,\n monogramInitials,\n lineItemId,\n authenticityToken,\n quantity,\n itemCost,\n userSelections,\n selectedFit,\n selectedBody,\n monogramSelections,\n productExternalId,\n categoriesToShow,\n categorySettings,\n cartSettings,\n isItemClone,\n isAttendant,\n attendantToken,\n attendantCustomerId\n}) => {\n const { cart, cartUrl, cartApi } = cartSettings;\n const [loading, setLoading] = useState(false);\n\n const fetchLineItem = async (url, method, body) => {\n const res = await window.fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n method,\n });\n\n const response = await res.json();\n return response.order_id;\n };\n\n const handleSubmit = async () => {\n setLoading(true);\n try {\n const selections = {\n ...Object.keys(userSelections).reduce((acc, category) => {\n acc[category] = userSelections[category]?.id;\n return acc;\n }, {}),\n product_key: productKey,\n fit: selectedFit.gpp_shape_code,\n monogram_initials_text: monogramInitials || ''\n };\n\n const descriptions = getDescriptions({\n categoriesToShow,\n categorySettings,\n userSelections,\n selectedFit,\n selectedBody,\n monogramSelections,\n monogramInitials\n });\n const description = getDescription(descriptions);\n\n if (isAttendant && attendantToken) {\n const url = lineItemId\n ? `/attendants/${attendantToken}/line_items/${lineItemId}`\n : `/attendants/${attendantToken}/line_items`;\n\n const method = lineItemId ? 'PUT' : 'POST';\n\n const body = { ...selections, selected_body: selectedBody, quantity };\n\n if (attendantCustomerId) {\n body.user_id = +attendantCustomerId;\n }\n\n const orderId = await fetchLineItem(url, method, body);\n\n window.location.href = `/attendants/${attendantToken}/orders/${orderId}/basket`;\n return;\n }\n\n if (lineItemId && !isItemClone) {\n await cartServices[cart].updateInCart({\n cartApi,\n lineItemId,\n selections,\n itemCost,\n quantity,\n descriptions,\n description,\n cartUrl,\n productExternalId,\n authenticityToken\n });\n } else {\n const requestBody = { ...selections, selected_body: selectedBody };\n if (isItemClone) {\n // Find source line item from the URL\n let matched = false;\n let matchedSlug = '';\n\n window.location.pathname.split('/').some((slug) => {\n if (slug === 'clone') {\n matched = true;\n return;\n }\n\n if (matched) {\n matchedSlug = slug;\n return true;\n }\n });\n\n if (matchedSlug) {\n requestBody['source_line_item'] = matchedSlug;\n }\n }\n\n console.log('requestBody', { ...selections, selected_body: selectedBody, quantity })\n\n const res = await window.fetch(`/configured_items`, {\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': authenticityToken\n },\n body: JSON.stringify(requestBody),\n method: 'POST'\n });\n const response = await res.json();\n const { configured_item } = response;\n\n const preview = `${window.location.origin}/configured_items/${configured_item.id}/preview`;\n\n await cartServices[cart].addToCart({\n cartApi,\n configured_item,\n itemCost,\n quantity,\n descriptions,\n description,\n preview,\n cartUrl,\n productExternalId,\n authenticityToken,\n selectedBody\n });\n }\n } catch (e) {\n console.log('ERROR', e);\n alert(`Something went wrong. Your item was not added to the basket.`);\n } finally {\n setLoading(false)\n }\n };\n\n return [handleSubmit, loading];\n};\n","import React, { useState } from 'react';\nimport { useCartServices } from '../actions/cart-services/index';\n\nexport default function OrderActions({\n canAddToBasket,\n lineItemId,\n isItemClone,\n isAttendant,\n ...props\n}) {\n const attendantCustomerId = new URLSearchParams(window.location.search).get('user_id');\n\n const [buttonWasPressed, setButtonWasPressed] = useState(false);\n const [attendantToken, setAttendantToken] = useState(null);\n\n const [handleSubmit, loading] = useCartServices({ lineItemId, isItemClone, isAttendant, attendantToken, attendantCustomerId, ...props });\n\n const pressHandler = () => {\n if (window.dataLayer && !lineItemId) {\n gtag('event', 'add_to_basket', {\n params: JSON.stringify({ ...props.userSelections, ...props.quantity })\n });\n }\n if (window.dataLayer && lineItemId && isItemClone) {\n gtag('event', 're_order_modified', {\n modified_line_item_id: lineItemId,\n params: JSON.stringify({ ...props.userSelections, ...props.quantity })\n });\n }\n setButtonWasPressed(true);\n handleSubmit();\n };\n\n React.useEffect(() => {\n if(isAttendant) {\n const url = window.location.pathname;\n const segments = url.split('/');\n setAttendantToken(segments[2]);\n }\n }, [isAttendant]);\n\n return (\n
\n
\n
\n \n {loading ? 'LOADING' : lineItemId ? 'SAVE CHANGES' : 'ADD TO BASKET' }\n \n
\n
\n
\n );\n}\n","import React from 'react';\nimport cx from 'classnames';\n\nexport default function OrderTotals({\n currencySymbol,\n itemCost,\n quantity,\n setQuantity,\n isLimitedQuantity,\n hidePayment,\n isAttendant\n}) {\n const [isInvalidQuantity, setIsInvalidQuantity] = React.useState(false);\n const totalCost = quantity ? quantity * itemCost : 0;\n const quantityClassNames = cx(\n 'fc-quantity-value',\n (!isLimitedQuantity || isAttendant) && 'fc-quantity-value-enabled'\n );\n const handleQuantityChange = (e) => {\n const newQuantity = parseInt(e.target.value);\n if (newQuantity < 1) {\n setQuantity(1);\n setIsInvalidQuantity(false);\n } else if (newQuantity > 99) {\n setIsInvalidQuantity(false);\n setQuantity(99);\n } else {\n setIsInvalidQuantity(false);\n setQuantity(isNaN(newQuantity) ? '' : newQuantity);\n }\n };\n\n return (\n
\n {isInvalidQuantity && (\n \n setIsInvalidQuantity(false)}\n >\n ×\n \n \n Note: We only allow one product per category for first time orders.\n This ensures you get exactly the right fit and that all of your\n expectations are met. Your next order will allow the purchase of\n multiple items.\n \n
\n )}\n
\n
\n Quantity\n \n {\n if (isNaN(Number(quantity))) {\n setQuantity(1);\n }\n }}\n onChange={handleQuantityChange}\n />\n \n
\n
\n {!hidePayment && (\n <>\n {currencySymbol}\n {totalCost}\n \n )}\n
\n
\n \n );\n}\n","import { useEffect } from 'react';\n\n/**\n * Intended to be used in iframes with ESS. This forwards local storage get/set post messages\n * to its parent window.\n */\nexport const usePostedMessageForwarder = (iframeUrl, cartApi) => {\n useEffect(() => {\n const handleMessage = (event) => {\n if (!event.data.action) return;\n // cartApi\n if (event.origin === iframeUrl) {\n if (event.data.action === 'storeData' && event.data.body.key) {\n window.parent.postMessage(event.data, cartApi);\n } else if (\n event.data.action === 'retrieveData' &&\n event.data.body.key\n ) {\n window.parent.postMessage(event.data, cartApi);\n }\n } else if (event.origin === cartApi) {\n if (event.data.action === 'returnRetrievedData') {\n const iframeEl = document.querySelector('.fc-iframe-shopify-ess');\n if (!iframeEl) return;\n\n iframeEl.contentWindow.postMessage(event.data, iframeUrl);\n }\n }\n };\n\n window.addEventListener('message', handleMessage);\n\n return () => window.removeEventListener('message', handleMessage);\n }, []);\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { iframePostMessageCartService } from '../actions/cart-services/iframePostMessage-cart';\nimport { usePostedMessageForwarder } from '../hooks/postedMessageForwarder';\n\nconst MOBILE_SCREEN = 450;\n\nexport default function PopupBodySelector({\n iframeUrl,\n updateSelectedBody,\n isEssOnly,\n essQueryParams,\n configuredItemIds,\n authenticityToken,\n cartApi\n}) {\n const [screenWidth, setScreenWidth] = useState(window.innerWidth);\n const iframeRef = useRef();\n const iframeQueryParams = new URLSearchParams(essQueryParams);\n if (isEssOnly) {\n iframeQueryParams.append('view', 'ess-only');\n }\n const iframeSrc = useRef(iframeUrl + `?${iframeQueryParams.toString()}`);\n const isMobile = screenWidth <= MOBILE_SCREEN;\n\n usePostedMessageForwarder(iframeUrl, cartApi);\n\n useEffect(() => {\n const handleMessage = async (event) => {\n if (event.origin !== iframeUrl) return;\n if (event.data.action === 'essIframeResize') {\n iframeRef.current.style.width = event.data.body.width;\n iframeRef.current.style.height = event.data.body.height;\n\n let left = '0px',\n right = '0px';\n\n if (event.data.body.event === 'modalOpen') {\n right = 'auto';\n } else if (\n event.data.body.event === 'accountBtnCollapsed' ||\n event.data.body.event === 'accountBtnExpanded'\n ) {\n left = 'auto';\n right = isMobile ? '0px' : '100px';\n }\n\n iframeRef.current.style.left = left;\n iframeRef.current.style.right = right;\n } else if (event.data.action === 'setUserData') {\n const sb = event.data.body.userData;\n updateSelectedBody(sb);\n if (isEssOnly) {\n await iframePostMessageCartService.updateInCart({\n configuredItemIds,\n descriptions: [['Sized For', sb.firstName + ' ' + sb.lastName]],\n selectedBody: sb,\n authenticityToken,\n cartApi\n });\n }\n }\n };\n\n window.addEventListener('message', handleMessage);\n\n return () => {\n window.removeEventListener('message', handleMessage);\n };\n }, []);\n\n return (\n \n );\n}\n","import React, { useEffect } from 'react';\nimport NoImageIcon from 'images/no-image-icon.svg';\n\nconst errorStates = {\n RESIZED_IMAGE_ERROR: 'RESIZED_IMAGE_ERROR',\n ORIGINAL_IMAGE_ERROR: 'ORIGINAL_IMAGE_ERROR'\n};\n\nexport default function PreviewImage({\n src,\n remoteImagesPath,\n resizedRemoteImagesPath,\n resizedImageExtension,\n imgClass\n}) {\n const [onError, setOnError] = React.useState(null);\n const imageExtension = '.png';\n const imagePath = `${remoteImagesPath}/${src}${imageExtension}`;\n const resizedImagePath = `${resizedRemoteImagesPath}/${src}.${\n resizedImageExtension || imageExtension\n }`;\n\n useEffect(() => {\n setOnError(null)\n }, [imagePath]);\n\n if (onError === errorStates.ORIGINAL_IMAGE_ERROR) {\n return (\n {'no-image-icon'}\n );\n } else if (onError === errorStates.RESIZED_IMAGE_ERROR) {\n return (\n setOnError(errorStates.ORIGINAL_IMAGE_ERROR)}\n />\n );\n } else {\n return (\n setOnError(errorStates.RESIZED_IMAGE_ERROR)}\n />\n );\n }\n}\n","import React from 'react';\nimport NextStepButton from '../NextStepButton';\nimport BackToConfigurator from '../BackToConfigurator';\nimport cx from 'classnames';\n\nconst RUSH_OPTION = 'rush'\n\nexport default function RushSelectionPanel({\n productName,\n currencySymbol,\n nextAttribute,\n nextAttributeName,\n previousAttribute,\n setCurrentScreen,\n isDisabled,\n selectableOptionsTable,\n setSelectedAttributeFunctions,\n userSelections,\n canAddToBasket\n}) {\n\n const defaultOption = selectableOptionsTable[RUSH_OPTION]?.find((option) => option.font_family === null || option.name === \"NO\");\n\n const enabled = JSON.stringify(userSelections[RUSH_OPTION]) !== JSON.stringify(defaultOption) && userSelections[RUSH_OPTION] !== null;\n\n const toggleButtonholes = () => {\n if (enabled) {\n setSelectedAttributeFunctions[RUSH_OPTION](defaultOption);\n } else {\n const options = selectableOptionsTable[RUSH_OPTION];\n setSelectedAttributeFunctions[RUSH_OPTION](options?.[1]);\n }\n };\n\n React.useEffect(() => {\n if(userSelections[RUSH_OPTION] === null) {\n setSelectedAttributeFunctions[RUSH_OPTION](defaultOption);\n }\n }, [userSelections]);\n\n const containerClasses = cx(\n 'row no-gutters fc-fabric-selection-pallet',\n enabled ?\n 'monogram-selection-pallet-scrollbar'\n : 'monogram-selection-w-pallet-scrollbar'\n );\n\n return (\n
\n
\n
\n
\n \n
\n
\n
\n
\n Select Rush\n
\n
\n
\n\n
\n
\n \n \n
\n \n Yes, Rush\n \n \n
\n
\n

\n *There will be a Rush Fee added when you select \"Yes\"\n

\n
\n\n
\n \n
\n
\n
\n );\n}\n","import React from 'react';\nimport NextStepButton from '../NextStepButton';\nimport BackToConfigurator from '../BackToConfigurator';\nimport cx from 'classnames';\n\nexport default function SelectionCheckbox({\n productName,\n currencySymbol,\n nextAttribute,\n nextAttributeName,\n previousAttribute,\n setCurrentScreen,\n isDisabled,\n selectableOptionsTable,\n setSelectedAttributeFunctions,\n userSelections,\n canAddToBasket,\n defaultOption,\n category,\n title,\n checkboxLabel,\n ConditionTextTemplate\n }) {\n\n\n const enabled = JSON.stringify(userSelections[category]) !== JSON.stringify(defaultOption) && userSelections[category] !== null;\n\n const toggleButtonholes = () => {\n debugger\n if (enabled) {\n setSelectedAttributeFunctions[category](defaultOption);\n } else {\n const options = selectableOptionsTable[category];\n setSelectedAttributeFunctions[category](options?.[1]);\n }\n };\n\n React.useEffect(() => {\n if(userSelections[category] === null) {\n setSelectedAttributeFunctions[category](defaultOption);\n }\n }, [userSelections]);\n\n const containerClasses = cx(\n 'row no-gutters fc-fabric-selection-pallet',\n enabled ?\n 'monogram-selection-pallet-scrollbar'\n : 'monogram-selection-w-pallet-scrollbar'\n );\n\n return (\n
\n
\n
\n
\n \n
\n
\n
\n
\n {title}\n
\n
\n
\n\n
\n
\n \n \n
\n \n {checkboxLabel}\n \n \n

\n {ConditionTextTemplate}\n {/* Contrast Buttonholes are another way to add a special detail.\n
\n Choose from several colors. */}\n

\n
\n
\n
\n\n
\n \n
\n
\n
\n );\n}\n","import React from 'react';\nimport cx from 'classnames';\nimport MonogramSelectedIcon from 'images/monogram-selected-check.png';\n\nexport default function SubSelectionPalletColor({\n options,\n selectedAttribute,\n setSelectedAttribute\n}) {\n return (\n
\n
Choose Color
\n\n
\n {options?.map((color) => {\n return (\n \n );\n })}\n
\n
\n );\n}\n\nexport function SubSelectionPalletColorItem({\n attr,\n isSelectedAttribute,\n setSelectedColor\n}) {\n const [isActive, setIsActive] = React.useState(null);\n\n const containerClasses = cx(\n 'monogram-color-blocks',\n (isActive || isSelectedAttribute) && 'monogram-color-blocks-active'\n );\n\n const handleColorSelection = () => {\n if (!isSelectedAttribute) {\n setSelectedColor(attr);\n }\n };\n\n const monogramBlock = cx('col-lg-4', 'col-sm-4', 'fc-monogram-pallet');\n\n const styles =\n attr.font_family !== '#FFFFFF' ?\n {\n backgroundColor: attr.font_family\n }\n : {\n backgroundColor: attr.font_family,\n border: '1px solid #d0d0d0',\n color: 'black'\n };\n\n return (\n \n setIsActive(false)}\n onMouseEnter={() => setIsActive(true)}\n onClick={handleColorSelection}\n >\n {isSelectedAttribute && (\n \n \n \n )}\n
\n
\n {attr.name}\n
\n
\n
\n \n );\n}\n","import React from 'react';\nimport cx from 'classnames';\nimport MonogramSelectedIcon from 'images/monogram-selected-check.png';\n\nexport default function SubSelectionPalletLocation({\n options,\n selectedAttribute,\n setSelectedAttribute\n}) {\n return (\n
\n
Choose Placement
\n
\n {options?.map((placement) => {\n return (\n \n );\n })}\n
\n
\n );\n}\n\nexport function SubSelectionPalletLocationItem({\n attr,\n setSelectedPlacement,\n isSelectedAttribute\n}) {\n const [isActive, setIsActive] = React.useState(null);\n const containerClasses = cx(\n 'monogram-color-blocks',\n (isActive || isSelectedAttribute) && 'monogram-color-blocks-active'\n );\n\n const handleColorSelection = () => {\n if (!isSelectedAttribute) {\n setSelectedPlacement(attr);\n }\n };\n\n return (\n \n setIsActive(false)}\n onMouseEnter={() => setIsActive(true)}\n onClick={handleColorSelection}\n >\n {isSelectedAttribute && (\n \n \n \n )}\n
\n
\n {attr.name}\n
\n
\n
\n \n );\n}\n","import React from 'react';\nimport NextStepButton from '../NextStepButton';\nimport BackToConfigurator from '../BackToConfigurator';\nimport cx from 'classnames';\n\nconst CONTRAST_WHITE_COLLAR = 'contrast_white_collar'\n\nexport default function WhiteCollarSelectionPanel({\n productName,\n currencySymbol,\n nextAttribute,\n nextAttributeName,\n previousAttribute,\n setCurrentScreen,\n isDisabled,\n selectableOptionsTable,\n setSelectedAttributeFunctions,\n userSelections,\n canAddToBasket\n}) {\n\n const defaultOption = selectableOptionsTable[CONTRAST_WHITE_COLLAR]?.find((option) => option.font_family === null || option.name === \"NO\");\n\n const enabled = JSON.stringify(userSelections[CONTRAST_WHITE_COLLAR]) !== JSON.stringify(defaultOption) && userSelections[CONTRAST_WHITE_COLLAR] !== null;\n\n const toggleButtonholes = () => {\n if (enabled) {\n setSelectedAttributeFunctions[CONTRAST_WHITE_COLLAR](defaultOption);\n } else {\n const options = selectableOptionsTable[CONTRAST_WHITE_COLLAR];\n setSelectedAttributeFunctions[CONTRAST_WHITE_COLLAR](options?.[1]);\n }\n };\n\n React.useEffect(() => {\n if(userSelections[CONTRAST_WHITE_COLLAR] === null) {\n setSelectedAttributeFunctions[CONTRAST_WHITE_COLLAR](defaultOption);\n }\n }, [userSelections]);\n\n const containerClasses = cx(\n 'row no-gutters fc-fabric-selection-pallet',\n enabled ?\n 'monogram-selection-pallet-scrollbar'\n : 'monogram-selection-w-pallet-scrollbar'\n );\n\n return (\n
\n
\n
\n
\n \n
\n
\n
\n
\n Select Contrast White Collar\n
\n
\n
\n\n
\n
\n \n \n
\n \n Yes, Contrast White Collar\n \n \n
\n
\n
\n\n
\n \n
\n
\n
\n );\n}\n","import React from 'react';\nimport NextStepButton from '../NextStepButton';\nimport BackToConfigurator from '../BackToConfigurator';\nimport cx from 'classnames';\n\nconst CONTRAST_WHITE_CUFF = 'contrast_white_cuff'\n\nexport default function WhiteCuffSelectionPanel({\n productName,\n currencySymbol,\n nextAttribute,\n nextAttributeName,\n previousAttribute,\n setCurrentScreen,\n isDisabled,\n selectableOptionsTable,\n setSelectedAttributeFunctions,\n userSelections,\n canAddToBasket\n }) {\n\n const defaultOption = selectableOptionsTable[CONTRAST_WHITE_CUFF]?.find((option) => option.font_family === null || option.name === \"NO\");\n\n const enabled = JSON.stringify(userSelections[CONTRAST_WHITE_CUFF]) !== JSON.stringify(defaultOption) && userSelections[CONTRAST_WHITE_CUFF] !== null;\n\n const toggleButtonholes = () => {\n if (enabled) {\n setSelectedAttributeFunctions[CONTRAST_WHITE_CUFF](defaultOption);\n } else {\n const options = selectableOptionsTable[CONTRAST_WHITE_CUFF];\n setSelectedAttributeFunctions[CONTRAST_WHITE_CUFF](options?.[1]);\n }\n };\n\n React.useEffect(() => {\n if(userSelections[CONTRAST_WHITE_CUFF] === null) {\n setSelectedAttributeFunctions[CONTRAST_WHITE_CUFF](defaultOption);\n }\n }, [userSelections]);\n\n const containerClasses = cx(\n 'row no-gutters fc-fabric-selection-pallet',\n enabled ?\n 'monogram-selection-pallet-scrollbar'\n : 'monogram-selection-w-pallet-scrollbar'\n );\n\n return (\n
\n
\n
\n
\n \n
\n
\n
\n
\n Select Contrast White Cuff\n
\n
\n
\n\n
\n
\n \n \n
\n \n Yes, Contrast White Cuff\n \n \n
\n
\n
\n\n
\n \n
\n
\n
\n );\n}\n","// MonogramDefault.js\nimport React from 'react';\n\nconst MonogramDefault = ({ monogramInitials, style, fontColor }) => (\n \n {monogramInitials}\n \n);\n\nexport default MonogramDefault;\n","import React from 'react';\n\nconst MonogramDiamond = ({ monogramInitials, style, fontColor }) => (\n <>\n {monogramInitials.length === 1 ? (\n // Render option for one character\n \n {monogramInitials}\n \n ) : monogramInitials.length === 2 ? (\n // Render option for two characters\n <>\n \n {monogramInitials[0]}\n \n \n {monogramInitials[1]}\n \n \n ) : (\n // Render option for three characters\n <>\n \n \n {monogramInitials[0]}\n \n \n {monogramInitials[1]}\n \n \n {monogramInitials[2]}\n \n \n \n )}\n \n);\n\nexport default MonogramDiamond;\n","// MonogramOffset.js\nimport React from 'react';\n\nconst MonogramOffset = ({ monogramInitials, style, fontColor }) => {\n const monogramChars = monogramInitials?.slice(0, 2); // Take only the first two characters\n return monogramChars?.split('').map((initial, index) => (\n \n {initial}\n \n ));\n};\n\nexport default MonogramOffset;","export const SHOW_BODY_SELECTOR = {\n NONE: 'none',\n SELECTION: 'selection',\n POPUP: 'popup'\n};\n","export const CONTRAST_STITCHING_NO_OPTION_GPP_CODE = {\n contrast_stitching_color: ['VC26000', 'VC26440','VC26027'],\n contrast_stitching_location: ['VC25999', 'VC26439','VC26023']\n};\n\nexport const CONTRAST_STITCHING_CATEGORIES_SET = new Set(\n Object.keys(CONTRAST_STITCHING_NO_OPTION_GPP_CODE)\n);\n\nexport const CONTRAST_STITCHING_CATEGORIES_ARRAY = Array.from(\n CONTRAST_STITCHING_CATEGORIES_SET\n);\n","import { useState, useEffect } from 'react';\n\nconst useImageLoader = (imageUrl, DefaultImage) => {\n const [loadedImageUrl, setLoadedImageUrl] = useState('');\n\n useEffect(() => {\n const img = new Image();\n img.onload = () => setLoadedImageUrl(imageUrl);\n img.onerror = () => setLoadedImageUrl(DefaultImage);\n img.src = imageUrl;\n }, [imageUrl]);\n\n return loadedImageUrl;\n};\n\nexport default useImageLoader;\n","export const hasProp = (obj, prop) =>\n Object.prototype.hasOwnProperty.call(obj, prop);\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","iframePostMessageCartService","addToCart","async","cartApi","configured_item","quantity","description","descriptions","preview","selectedBody","skuProductId","sku","split","window","parent","postMessage","action","body","productId","catalogRefId","configuredItemId","display","configurations","fromEntries","thumbnail_img_url","hasScan","updateInCart","configuredItemIds","authenticityToken","fetch","headers","JSON","stringify","configured_item_ids","selected_body","method","ok","AttributeSelectionPanel","productName","attributeName","options","selectedAttribute","setSelectedAttribute","setCurrentScreen","currencySymbol","nextAttribute","nextAttributeName","previousAttribute","canAddToBasket","touched","setTouched","React","query","setQuery","attributeTitle","charAt","toUpperCase","slice","filteredOptions","useMemo","searchText","filter","item","name","toLowerCase","includes","className","BackToConfigurator","classNames","type","placeholder","onChange","event","target","value","htmlFor","onClick","src","SearchIcon","alt","attribute","AttributeSelection","key","isSelected","length","style","fontSize","NextStepButton","isDisabled","isActive","setIsActive","containerClasses","cx","loadedImageUrl","useImageLoader","images","DefaultAttributeImage","onMouseLeave","onMouseEnter","handleClick","FabricSelectedIcon","AttributesImagePreview","productKey","userSelections","categories","monogramCategories","remoteImagesPath","resizedRemoteImagesPath","resizedImageExtension","categoriesWithoutPreview","monogramInitials","monogramError","selectedMonogramStyleSpecs","defaultMonogramColor","onImageLoadError","fabricSelection","gpp_code","category","imageCodeSuffix","imageCode","gppCode","PreviewImage","imgClass","monogram_initials","height","width","viewBox","x","y","MonogramPreview","customizer","ArrowLeft","BodySelectionPanel","iframeUrl","updateSelectedBody","iframeRef","useRef","iframeSrc","userId","useEffect","handleMessage","source","current","contentWindow","data","addEventListener","removeEventListener","ref","scanId","BodySelectionRow","panelScreen","selectedFit","isBodyLocked","arrowClasses","setTimeout","scroll","top","left","behavior","email","lastName","firstName","color","marginLeft","ArrowRight","ButtonholeColorItem","attr","isSelectedAttribute","setSelectedColor","monogramBlock","styles","font_family","backgroundColor","border","handleColorSelection","MonogramSelectedIcon","ButtonholeColors","CONTRAST_BUTTONHOLE","ButtonholeSelectionPanel","selectableOptionsTable","setSelectedAttributeFunctions","defaultOption","find","option","enabled","defaultChecked","toggleButtonholes","useProductOptions","fitOptions","existingLineItemId","fabricDisplayValue","productOptions","setProductOptions","useState","fitOption","shapeCode","gpp_shape_code","endpoint","response","parsedResponse","json","fabric","gpp_value","prev","getProductOptions","MONOGRAM_STYLES_SPECS","VC26019","min","max","validCharacters","validCharactersDisplay","textTransform","previewInitials","margin","fontFamily","fontWeight","monogramPreviewStyle","VC26018","VC26017","VC00183","VC00496","VC00693","VC00583","VC08864","VC08866","VC08867","VC23091","VC23072","VC25510","VC25511","VC24519","VC24520","default","OPTION_FILTERS","monogram_location","VC00394","pocket","VC00678","monogram_style","VC00171","VC22536","contrast_stitching_color","CONTRAST_STITCHING_NO_OPTION_GPP_CODE","reduce","a","contrast_stitching_location","UNHIDDABLE_CATEGORIES","Set","REQUIRED_MONOGRAM_CATEGORIES","CUSTOM_NEXT_ATTRIBUTE_NAME","monogram","contrast_stitching","Configurator","productExternalId","hasLaydownPreview","existingBody","confirmedFitShapeCode","existingLineItemOptions","existingMonogramInitials","startingQuantity","categorySettings","cartSettings","currencyCode","hidePayment","bodySelectorIframeUrl","showBodySelector","SHOW_BODY_SELECTOR","NONE","brandCode","showCustomPreviewImage","showFabricDetail","isIframeIntegrated","isItemClone","isAttendant","currentScreen","existingLineItems","setExistingLineItems","contrastStitchingEnabled","setContrastStitchingEnabled","queryParams","URLSearchParams","location","search","view","get","essQueryParams","has","formcut_email","formcut_scan_id","popupQueryParamConfiguredItemIds","c","hidden","has_laydown_preview","defaultSelectedBody","localStorageBodyData","localStorage","getItem","parse","undefined","currentExternalCartId","setItem","setSelectedBody","productPreferencesRequest","setProductPreferencesRequest","loading","error","then","catch","errorResponse","message","useProductPreferences","setSelectedFit","useLoadExistingFit","fit","defaultUserSelection","initialUserSelections","forEach","setUserSelections","obj","newAttributeValue","us","wasInMonogramSection","setWasInMonogramSection","wasInContrastStitchingSection","setWasInContrastStitchingSection","unselectableOptionsTable","entries","acc","hasProp","push","selections","selection","attrOption","CONTRAST_STITCHING_CATEGORIES_SET","didUserDisable","CONTRAST_STITCHING_CATEGORIES_ARRAY","every","some","selectableOptionsTableLoaded","values","selectableOptions","currentSelectedAttribute","currentSetSelectedAttribute","categoriesToShow","hasSelectableOptions","isUnhiddable","isDefaultImageActive","setIsDefaultImageActive","triggerDefaultImage","setMonogramInitials","selection_panel_layout","monogramSelections","Math","s","b","monogram_color","RegExp","test","monogramFullySelected","Boolean","transformedMonogramInitials","clearMonogram","categoryIndex","i","indexOffset","display_name","cart","canAddToAttendantBasket","screenToDisplay","mobileNextStepsButton","imagePreviewScreenToDisplay","itemCost","parseFloat","price","total","num","ConfiguratorHome","isFitLocked","canOpenAttributes","lineItemId","resetSelections","isNextDisabled","SELECTION","FitSelectionPanel","MonogramSelectionPanel","monogramStylesSpecs","WhiteCollarSelectionPanel","WhiteCuffSelectionPanel","RushSelectionPanel","actualNextAttribute","ContrastStitchingSelectionPanel","setEnabled","ConditionTextTemplate","SelectionCheckbox","title","checkboxLabel","FabricSelectionPanel","fabrics","hasMoreInfo","FitImagePreview","ModelImagePreview","selectedFabric","fabricOptions","POPUP","PopupBodySelector","isEssOnly","FabricDescriptionModal","existingFitShapeCode","initialFit","ConfiguratorHeader","setQuantity","customAttributeRows","categoryKey","idx","FabricSelectionRow","canOpen","isLastAttribute","at","ContrastStitchingRow","CustomAttributeRow","MonogramSelectionRow","FitSelectionRow","OrderTotals","isLimitedQuantity","OrderActions","selectionMade","join","palletComponents","SubSelectionPalletColor","SubSelectionPalletLocation","toggleCheckbox","Pallet","text","lowerCaseDescription","sentence","substring","role","FabricInfoIcon","round","CUT_LENGTH_TYPE","hasFabrics","activeBook","setActiveBook","filteredFabrics","sortByBookName","lowerCasedQuery","_fabric","gpp_book_name","arr","sortedObj","sortByCutLength","gpp_selection_type","handleOnClickSearch","sort","FabricPallet","ArrowDown","showFabricInfoDetails","thumbnail_url","DefaultFabricImage","handleFabricSelection","CutLengthsIcon","attributes","displayTitle","attributeText","FabricSelection","image","FitSelection","DefaultFitImage","answer","imageIndex","setImageIndex","imageSources","sourcesArray","onError","handleOnError","imgIdx","MonogramPalletStyle","MonogramPalletStyleItem","setSelectedStyle","monogramStyleSpecs","val","index","setKey","prevKey","patternUnits","preserveAspectRatio","href","cy","r","fill","stroke","strokeWidth","MonogramContent","svgRef","textElements","querySelectorAll","bbox","Array","from","getBBox","setAttribute","MonogramComponent","MonogramDefault","MonogramOffset","MonogramDiamond","fontColor","characterRegExp","pallets","onInput","replace","maxLength","toggleMonogram","nextScreen","previousScreen","changeScreen","newScreen","enableShortcutButton","handlePreviousClick","handleNextClick","disabled","addToCartResultHandling","cartUrl","skipSingleItemRestriction","$","modal","open","alert","localCartService","queryString","configured_item_id","toString","res","webhookCartService","cartServices","local","webhook","iframePostMessage","useCartServices","attendantToken","attendantCustomerId","setLoading","product_key","monogram_initials_text","getDescriptions","k","v","monogramText","descriptionTexts","getDescription","url","user_id","orderId","order_id","fetchLineItem","requestBody","matched","matchedSlug","pathname","slug","console","log","origin","props","buttonWasPressed","setButtonWasPressed","setAttendantToken","handleSubmit","segments","pressHandler","dataLayer","gtag","params","modified_line_item_id","isInvalidQuantity","setIsInvalidQuantity","totalCost","quantityClassNames","onBlur","isNaN","Number","newQuantity","parseInt","usePostedMessageForwarder","iframeEl","document","querySelector","MOBILE_SCREEN","screenWidth","setScreenWidth","innerWidth","iframeQueryParams","append","isMobile","right","sb","userData","errorStates","RESIZED_IMAGE_ERROR","ORIGINAL_IMAGE_ERROR","setOnError","imageExtension","imagePath","resizedImagePath","NoImageIcon","RUSH_OPTION","SubSelectionPalletColorItem","placement","SubSelectionPalletLocationItem","setSelectedPlacement","CONTRAST_WHITE_COLLAR","CONTRAST_WHITE_CUFF","letterSpacing","transform","points","monogramChars","initial","imageUrl","DefaultImage","setLoadedImageUrl","img","Image","onload","onerror","prop","prototype","hasOwnProperty","call"],"sourceRoot":""}