{"version":3,"file":"static/chunks/pages/join-the-club-ab95d052788e104e.js","mappings":"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","sources":["webpack://_N_E/?02fb","webpack://_N_E/./src/pages/join-the-club.tsx","webpack://_N_E/"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/join-the-club\",\n function () {\n return require(\"private-next-pages/join-the-club.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/join-the-club\"])\n });\n }\n ","import type { InferGetServerSidePropsType, GetServerSideProps } from \"next\";\nimport { useSearchParams } from \"next/navigation\";\nimport type { Product } from \"@src/types/product.type\";\nimport { BuilderComponent } from \"@builder.io/react\";\nimport \"@builder.io/widgets/dist/lib/builder-widgets-async\";\nimport { useContext, useEffect, useState } from \"react\";\nimport SEO from \"@lib/seo\";\nimport { getCollectionsByHandles } from \"@services/shopify/collections\";\nimport { tierPricing } from \"@lib/product.utilities\";\nimport {\n CmsBridgeContext,\n CmsBridgeContextProps,\n} from \"@context/cms.bridge.context\";\nimport { StoreContext } from \"@context/store.context\";\nimport { useCart } from \"@shopify/hydrogen-react\";\nimport { getBuilderServerProps } from \"@services/builderIO/get-builder-server-props\";\n\nconst baseURL = process.env.NEXT_PUBLIC_BASE_PATH;\n\ninterface AddOns {\n vid: string;\n qty: number;\n sellingPlanId?: string;\n}\n\nexport const getServerSideProps: GetServerSideProps = async (ctx) => {\n const content = await getBuilderServerProps(\n \"bundles\",\n \"/join-the-club\",\n ctx.query\n );\n\n const resp = await getCollectionsByHandles({\n handles: [\"stepper-boxes\"],\n limit: 20,\n });\n\n const litter = resp[0].productList\n .filter((prod: any) => prod.tags.includes(\"clay\"))\n .map((prod: any) => {\n const type = prod.tags.filter((tag: string) =>\n /(XL-Box|Box|Bag)/.test(tag)\n );\n return {\n type: type[0],\n startPrice: prod.price,\n litterTypes: resp[0].productList.filter((prod: any) =>\n prod.tags.includes(type[0])\n ),\n };\n });\n\n return {\n props: {\n ...content.props,\n productList: litter,\n },\n };\n};\n\nexport default function Jtc(\n props: InferGetServerSidePropsType\n) {\n const searchParams = useSearchParams();\n const cart: any = useCart();\n\n const [storedStates, setStoredStates] = useState({});\n const [addOns, setAddOns] = useState>([]);\n const [addOnKey, setAddOnKey] = useState(\"AO\");\n const [product, setProduct] = useState({});\n const [send2Cart, setSend2Cart] = useState(false);\n const [sellingPlanId, setSellingPlanId] = useState(false);\n\n const { state, setState } =\n useContext(CmsBridgeContext);\n const { addManyToCart, setCouponCodes } = useContext(StoreContext)!;\n\n // Query Params\n const queryParams = [] as any;\n const couponCode = searchParams.get(\"promoCode\");\n searchParams.forEach((value, key) => {\n queryParams.push({ [key]: value });\n });\n\n const setMainProduct = (\n product: Product,\n qty: number,\n _sellingPlanId?: string\n ) => {\n if ((_sellingPlanId ?? \"\") != \"\") {\n setSellingPlanId(_sellingPlanId);\n } else {\n setSellingPlanId(product.sellingPlan);\n }\n\n const tier = tierPricing(product, qty);\n const _product = {\n vid: tier.vid,\n title: product.title,\n price: tier.unit_price,\n quantity: qty,\n };\n setProduct(_product);\n };\n\n const setAccessory = (key: string, vid: string) => {\n const index = addOns.findIndex((item) => item.vid === vid);\n const id = `${key}_${vid}`;\n let qty = 1;\n\n if (index === -1) {\n addOns.push({ vid, qty: 1, sellingPlanId: \"\" });\n } else if (addOns[index].qty > 0) {\n qty = 0;\n addOns.splice(index, 1);\n }\n\n setAddOnKey(key);\n setAddOns(addOns);\n setState({ setQuantity: { id, qty } });\n };\n\n const updateAddOns = (vid: string, qty: number) => {\n const index = addOns.findIndex((item) => item.vid === vid);\n if (index >= 0 && qty > 0) {\n addOns[index].qty = qty;\n } else if (qty > 0) {\n addOns.push({ vid, qty, sellingPlanId: \"\" });\n } else {\n addOns.splice(index, 1);\n }\n setAddOns(addOns);\n };\n\n const replaceAccessory = (vid: string, id?: string) => {\n const index = addOns.findIndex((item) => item.vid === vid);\n if (index >= 0) {\n addOns.splice(index, 1);\n setAddOns(addOns);\n }\n id && setAccessory(addOnKey, id);\n };\n\n const handleAddToCart = () => {\n couponCode && setCouponCodes([couponCode]);\n\n const items = [] as any;\n if (product.vid) {\n items.push({\n product: { vid: product.vid },\n quantity: product.quantity,\n sellingPlanId: sellingPlanId == \"none\" ? undefined : sellingPlanId,\n });\n }\n addOns.forEach((item) => {\n if (item.qty > 0) {\n items.push({\n product: { vid: item.vid },\n quantity: item.qty,\n });\n }\n });\n let _cart = null;\n if (cart.id && cart.lines.length > 0) {\n _cart = {\n lines: cart.lines,\n checkoutUrl: cart.checkoutUrl,\n discountCodes: cart.discountCodes,\n };\n }\n addManyToCart(items, _cart, false);\n };\n\n useEffect(() => {\n // Update AddOns\n const keys = Object.keys(state);\n state.sellingPlan && setSellingPlanId(state.sellingPlan);\n\n if (keys.length === 1) {\n const key = keys[0].toString().split(\"_\");\n if (key.length === 2 && key[0] === addOnKey) {\n updateAddOns(key[1], state[keys[0]]);\n }\n }\n setStoredStates({ ...storedStates, ...state });\n }, [state]);\n\n useEffect(() => {\n if (send2Cart) {\n handleAddToCart();\n setSend2Cart(false);\n }\n }, [send2Cart]);\n\n return (\n <>\n \n \n setState({ setQuantity: { id: pid, qty: q } }),\n setProduct: (\n product: Product,\n q: number,\n _sellingPlanId: string | undefined\n ) => setMainProduct(product, q, _sellingPlanId),\n setAccessory: (key: string, id: string) => setAccessory(key, id),\n replaceItem: (vid: string, id?: string) => replaceAccessory(vid, id),\n addToCart: () => setSend2Cart(true),\n }}\n />\n \n );\n}\n"],"names":["window","__NEXT_P","push","__webpack_require__","Jtc","props","searchParams","useSearchParams","cart","useCart","storedStates","setStoredStates","useState","addOns","setAddOns","addOnKey","setAddOnKey","product","setProduct","send2Cart","setSend2Cart","sellingPlanId","setSellingPlanId","state","setState","useContext","CmsBridgeContext","addManyToCart","setCouponCodes","StoreContext","queryParams","couponCode","get","forEach","value","key","setMainProduct","qty","_sellingPlanId","sellingPlan","tier","tierPricing","_product","vid","title","price","unit_price","quantity","setAccessory","index","findIndex","item","id","concat","splice","setQuantity","updateAddOns","replaceAccessory","handleAddToCart","items","undefined","_cart","lines","length","checkoutUrl","discountCodes","useEffect","keys","Object","toString","split","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsxs","Fragment","jsx","SEO","description","image","BuilderComponent","model","content","builderPage","data","litter","productList","mainProduct","siteUrl","process","context","pid","q","replaceItem","addToCart"],"sourceRoot":""}