{"version":3,"file":"static/chunks/3249.21b1911aca94eafe.js","mappings":"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","sources":["webpack://_N_E/./components/applications/pip/components/Options/Options.module.scss","webpack://_N_E/./components/applications/pip/helpers/createOptionSets.helper.js","webpack://_N_E/./components/applications/pip/components/Options/index.jsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"step\":\"Options_step__2uit0\",\"block\":\"Options_block__IJLlH\",\"hide\":\"Options_hide__ycBQO\",\"optionSets\":\"Options_optionSets__hBmPT\",\"arrowIconFinish\":\"Options_arrowIconFinish__O3zu1\",\"selectedBlock\":\"Options_selectedBlock__UrbLd\",\"selectedButton\":\"Options_selectedButton__R5BfU\",\"chosenBtn\":\"Options_chosenBtn__0mxd4\",\"selectedTitle\":\"Options_selectedTitle__b7F8_\",\"chosenText\":\"Options_chosenText__0NbDO\",\"selectedItem\":\"Options_selectedItem__v360Y\",\"closeBtn\":\"Options_closeBtn__pPGX2\",\"small\":\"Options_small__jkKMt\",\"stepIcon\":\"Options_stepIcon__Nsy8q\"};","import stripBrandFromName from \"lib/Utils/stripBrandFromName\";\nimport parseOptionLabel from \"./parseOptionLabel.helper\";\n\n\n/**\n * Option Builder Rules for Product Sets:\n * -----------------------------------------------\n * - For each option of a product in a product set, ignore (i.e., do not display) any \"Protective (Cover)\" option in \n * favor of the larger set based protective cover in the addon products, THEN set the default \"No Thanks\" for each\n * product's option that matches this\n * \n * - Run through each product option in the set and each of the addon products; if there is a \n * display name match, then ignore (i.e., do not display) the product option in favor of the addon product \n */\n\n\n\n/**\n * Need to initially parse the label to prepare our first totalAddendOptions values for calculateSetOptionsPriceAdjust method\n * @param {array} values \n * @returns array of option.values to parse labels\n */\n\nfunction parseSetOptionLabels(values = []){\n return values.map(option => {\n const parsedObj = parseOptionLabel(option.label);\n\n return {\n ...option,\n ...parsedObj\n }\n });\n}\n\n\n\n\n\n/**\n * Adds up all of the set option values to get total value for a given global swatch\n * @param {array} totalAddend - total set value charges, right now\n * @param {array} newAddend - what to add to that total\n * @returns Array of values with added Upcharges\n */\n\nfunction calculateSetOptionsPriceAdjust( totalAddendOptions, newAddendOptions ){\n const newAddendParsed = parseSetOptionLabels(newAddendOptions.values);\n\n // pass #2 and onwards with the second set of parsed options\n if( Array.isArray(totalAddendOptions?.values) && totalAddendOptions?.values.length ){\n return totalAddendOptions.values.map(totalOpt => {\n const { color, brandName, priceAdjustNumeric } = totalOpt\n \n // matched based on `brand + color` name\n const swatch = newAddendParsed.find(parsed => (color && parsed?.color) && (`${brandName} ${color.toLowerCase()}` === `${parsed?.brandName} ${parsed?.color.toLowerCase()}` ))\n \n const newPrice = swatch ? (newAddendOptions?.quantity * swatch?.priceAdjustNumeric) + priceAdjustNumeric : 0;\n \n return {\n ...swatch,\n priceAdjustNumeric: newPrice,\n priceAdjust: newPrice ? `+$${newPrice}` : null\n }\n\n })\n\n // pass #1 with the first set of parsed options\n } else {\n return newAddendParsed.map(totalOpt => {\n // matched based on color name\n const newPrice = totalOpt?.priceAdjustNumeric * newAddendOptions?.quantity;\n \n return {\n ...totalOpt,\n priceAdjustNumeric: newPrice,\n priceAdjust: newPrice ? `+$${newPrice}` : null\n }\n })\n }\n\n}\n\n\n\n\n\n// only set one Custom Type for our global set Option controls\nfunction setCustomTypes({ setOptionsArray, brand }){\n const SetCustomTypes = {};\n\n setOptionsArray.forEach(type => {\n SetCustomTypes[type?.display_name] = {\n ...type,\n setProducts: [],\n quantity: type?.quantity + (SetCustomTypes?.[type?.display_name]?.quantity ?? 0),\n values: calculateSetOptionsPriceAdjust(\n { \n values: SetCustomTypes?.[type?.display_name]?.values ?? []\n }, \n { \n quantity: type?.quantity, \n values: type?.values \n }\n )\n };\n })\n \n\n // add the corresponding product to this custom option\n setOptionsArray.forEach(type => {\n SetCustomTypes[type?.display_name].setProducts.push(\n {\n name: stripBrandFromName(brand, type?.product_name),\n image: type?.product_image\n }\n )\n })\n\n\n return SetCustomTypes\n}\n\n\n\n\n\n/**\n * Set Option Builder\n * \n * @param {Object} sets \n * @param {Object} addons \n * @param {string} brand \n * @returns a sets options and the custom type options\n */\n\n\nexport default function createOptionSets({ sets, addons = {}, brand, options = [] }){\n const protectiveCovers = [];\n let displayNames = [];\n\n // set these as \"No Thanks\"\n const autoSetNoThanks = [];\n\n // what should be shown\n const setOptionsArray = [];\n\n\n Object.keys(sets).forEach((setProduct) => {\n if( sets[setProduct]?.options ){\n const setDisplayNames = sets[setProduct]?.options.map(setOpt => {\n\n // pull out protective covers\n if( setOpt?.display_name.toLowerCase().includes(\"protective\") ){\n protectiveCovers.push({\n ...setOpt,\n product_id: setProduct\n })\n \n return null;\n } \n\n const correspondingSetOption = options.find(option => option?.display_name === setOpt?.display_name)\n\n return {\n ...setOpt,\n product_id: setProduct,\n product_name: sets?.[setProduct]?.name,\n product_image: sets?.[setProduct]?.image,\n variant_id: sets?.[setProduct]?.variant_id,\n display_name: setOpt?.display_name,\n quantity: sets?.[setProduct]?.quantity,\n sort_order: correspondingSetOption ? correspondingSetOption?.sort_order : 9\n };\n })\n\n displayNames = [ ...displayNames, ...setDisplayNames ].filter(item => item !== null)\n }\n })\n\n\n // set these as \"No Thanks\"\n autoSetNoThanks.push(...protectiveCovers)\n\n\n const addonNames = addons && Object.values(addons).map(addonProduct => addonProduct?.name)\n \n\n // pull out duplicate options between sets and addons\n displayNames.forEach(name => {\n let reducedName = name?.display_name.toLowerCase().split(\"select\")[1] ?? name?.display_name;\n reducedName = reducedName.toLowerCase().split(\"optional\")[1] ?? reducedName;\n\n const matchedAddon = addonNames && addonNames.find(addon => addon.toLowerCase().includes(reducedName) )\n\n if( matchedAddon === reducedName.trim() ){\n // what should be auto set, \"no thanks\"\n autoSetNoThanks.push(name)\n\n }else{\n // what should be shown\n setOptionsArray.push({ \n ...name, \n })\n }\n })\n\n\n const SetCustomTypes = setCustomTypes({ setOptionsArray, brand })\n\n\n return{\n autoSetNoThanks,\n setOptionsArray,\n SetCustomTypes\n }\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport Style from './Options.module.scss'\nimport PropTypes from \"prop-types\";\nimport React, { useContext, useEffect, useMemo, useState } from \"react\";\nimport { ProductOptionContext } from \"components/applications/pip/contexts/ProductOptionContext\";\nimport useSetNextOption from \"custom_hooks/useSetNextOption\";\nimport { buildOptions } from \"components/applications/pip/helpers/PIP.helpers\";\nimport ErrorBoundary from \"services/ErrorBoundary\";\nimport clsx from \"clsx\";\nimport createOptionSets from \"components/applications/pip/helpers/createOptionSets.helper\";\nimport dynamic from 'next/dynamic';\n\n\nconst CustomizeType = dynamic(() => import(\"./CustomizeType\"), { ssr: false })\nconst OptionsSets = dynamic(() => import(\"./OptionsSets\"), { ssr: false })\n\n\nconst Options = React.forwardRef(({\n options = [], \n sets = null, \n addons = null, \n isMobile, \n hideSwatch, \n stockedOptions, \n specialOrderOptions,\n brand,\n product_id,\n showSwatchRequest = () => null,\n bcOptions = [],\n}, ref ) => {\n\n const [ state, dispatch ] = useContext(ProductOptionContext);\n const [ errors, setErrors ] = useState([])\n const next = useSetNextOption({ product_id });\n const [ optionSetData, setOptionSetData ] = useState([])\n const [ customTypeData, setCustomTypeData ] = useState([])\n const [ customGlobalTypeData, setCustomGlobalTypeData ] = useState([])\n\n\n const refreshedOptions = useMemo(() => {\n if ( !bcOptions.length ) return []\n\n return options.map(option => {\n const found = bcOptions.find(bcOption => bcOption?.display_name === option?.display_name)\n\n if( found ){\n const hasNewOptionID = found?.id !== option?.option_group_id\n\n\n const opObj = {\n ...option,\n option_group_id: hasNewOptionID ? found?.id : option?.option_group_id,\n hasNewOptionID\n }\n\n opObj.values = option.values.map(value => {\n const foundValue = found?.option_values.find(bcValue => bcValue?.label === value?.label)\n\n if( foundValue ){\n const hasNewOptionValueID = foundValue?.id !== value?.option_id\n\n return {\n ...value,\n id: hasNewOptionValueID ? foundValue?.id : value?.option_id,\n hasNewOptionValueID\n }\n }\n\n return value\n })\n\n return opObj\n }\n })\n \n\n }, [ \n options?.[0]?.display_name,\n bcOptions?.[0]?.display_name\n ]) \n\n\n\n /** Keep Options Fresh n' Clean */\n // useEffect(() => {\n // async function syncOptionData(){\n // const graphQl = new GraphQL();\n // const productOptions = GetProductOptionIDs(product_id);\n // const optionData = await graphQl.get(productOptions);\n\n // console.log(optionData)\n // }\n \n // syncOptionData()\n\n // }, [])\n \n\n\n\n\n\n useEffect(() => {\n if( Array.isArray(refreshedOptions) ){\n const obj = buildOptions(refreshedOptions)\n\n dispatch({ \n type: \"setOptions\", \n data: obj \n });\n }\n\n\n\n\n /**\n * Option Builder for Sets \n */\n\n if( sets && Array.isArray(refreshedOptions) && refreshedOptions.length ){\n const { autoSetNoThanks, setOptionsArray, SetCustomTypes } = createOptionSets({ sets, addons, brand, options: refreshedOptions })\n\n // split up customize options based on set length so we can put 100% global (all) will be at the top\n Object.values(SetCustomTypes).forEach(type => {\n if( Object.keys(sets).length === type.setProducts.length ){\n setCustomGlobalTypeData(customGlobalTypeData => [ \n ...customGlobalTypeData, \n type \n ])\n\n }else{\n setCustomTypeData(customTypeData => [ \n ...customTypeData, \n type\n ])\n }\n }) \n\n\n setOptionSetData(setOptionsArray)\n\n dispatch({\n type: \"setAutoNoThanks\",\n data: autoSetNoThanks\n })\n\n\n // const canSwatchRequest = canRequestSwatchChecker(setOptionsArray)\n\n // if( canSwatchRequest ){\n // showSwatchRequest(true)\n // }\n }\n \n\n\n }, [ refreshedOptions ])\n\n\n\n useEffect(() => {\n if( state.errorAttributes.length ){\n const error = state.errorAttributes.map(item => item);\n\n setErrors(error)\n\n }else{\n setErrors([])\n }\n\n }, [ state.errorAttributes ])\n \n\n\n return(\n \n \n {(refreshedOptions.length && !sets) ? (\n
\n \n
\n ):(\n <>\n {sets && (\n \n )}\n \n )}\n \n
\n )\n})\n\n\nOptions.displayName = 'Options';\n\n\nOptions.propTypes = {\n productSetItem: PropTypes.object,\n options: PropTypes.array,\n sets: PropTypes.object,\n addons: PropTypes.object,\n isMobile: PropTypes.bool,\n hideSwatch: PropTypes.bool,\n stockedOptions: PropTypes.array,\n specialOrderOptions: PropTypes.array,\n brand: PropTypes.object,\n product_id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n showSwatchRequest: PropTypes.func,\n ref: PropTypes.object\n}\n\n\nexport default Options;"],"names":["CustomizeType","dynamic","ssr","OptionsSets","Options","React","ref","options","sets","addons","isMobile","hideSwatch","stockedOptions","specialOrderOptions","brand","product_id","showSwatchRequest","bcOptions","state","dispatch","useContext","ProductOptionContext","errors","setErrors","useState","next","useSetNextOption","optionSetData","setOptionSetData","customTypeData","setCustomTypeData","customGlobalTypeData","setCustomGlobalTypeData","refreshedOptions","useMemo","length","map","option","found","find","bcOption","display_name","hasNewOptionID","id","option_group_id","opObj","values","value","foundValue","option_values","bcValue","label","hasNewOptionValueID","option_id","useEffect","Array","isArray","type","data","buildOptions","autoSetNoThanks","setOptionsArray","SetCustomTypes","createOptionSets","protectiveCovers","displayNames","Object","keys","forEach","setProduct","setDisplayNames","setOpt","toLowerCase","includes","push","correspondingSetOption","product_name","name","product_image","image","variant_id","quantity","sort_order","filter","item","addonNames","addonProduct","reducedName","split","matchedAddon","addon","trim","setCustomTypes","setProducts","calculateSetOptionsPriceAdjust","newAddendOptions","newAddendParsed","parseSetOptionLabels","parsedObj","parseOptionLabel","totalAddendOptions","totalOpt","color","brandName","priceAdjustNumeric","swatch","parsed","newPrice","priceAdjust","stripBrandFromName","errorAttributes","error","ErrorBoundary","div","className","clsx","Style","customSelectIsOpen","optionData","showDisplayName","contextState","customTypes","customGlobalTypes","setOptions","setData","displayName","propTypes","productSetItem","PropTypes"],"sourceRoot":"","ignoreList":[]}