@plasmicpkgs/commerce-local 0.0.243 → 0.0.244
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commerce-local.cjs.development.js +165 -389
- package/dist/commerce-local.cjs.development.js.map +1 -1
- package/dist/commerce-local.cjs.production.min.js +1 -1
- package/dist/commerce-local.cjs.production.min.js.map +1 -1
- package/dist/commerce-local.esm.js +165 -389
- package/dist/commerce-local.esm.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commerce-local.cjs.development.js","sources":["../src/fetcher.ts","../src/const.ts","../src/utils/cart.ts","../src/cart/use-cart.tsx","../src/cart/use-add-item.tsx","../src/cart/use-update-item.tsx","../src/cart/use-remove-item.tsx","../src/utils/sort-product.ts","../src/product/use-search.tsx","../src/product/use-product.tsx","../src/site/use-categories.ts","../src/site/use-brands.ts","../src/provider.ts","../src/local.ts","../src/registerCommerceProvider.tsx","../src/index.tsx"],"sourcesContent":["import { Fetcher } from '@plasmicpkgs/commerce';\n\nexport const fetcher: Fetcher = async () => {\n console.log('FETCHER')\n const res = await fetch('./data.json')\n if (res.ok) {\n const { data } = await res.json()\n return data\n }\n throw res\n}\n","export const LOCAL_CART_OBJ = \"localCartObj\";\n\nexport const LOCAL_CART_ID = \"localCartId\";\n","import { CartType } from \"@plasmicpkgs/commerce\";\nimport Cookies from \"js-cookie\";\nimport { LOCAL_CART_ID, LOCAL_CART_OBJ } from \"../const\";\n\nconst options: Cookies.CookieAttributes = {\n sameSite: \"none\",\n secure: true,\n};\n\nexport const createCart: () => CartType.Cart = () => {\n const cart = {\n id: \"\",\n createdAt: \"\",\n currency: { code: \"USD\" },\n taxesIncluded: false,\n lineItems: [],\n lineItemsSubtotalPrice: 0,\n subtotalPrice: 0,\n totalPrice: 0,\n };\n\n const cartId = Date.now().toString();\n\n Cookies.set(LOCAL_CART_ID, cartId);\n Cookies.set(\n LOCAL_CART_OBJ,\n JSON.stringify({\n id: cartId,\n cart,\n })\n );\n\n return cart;\n};\n\nexport const getCart: (cartId?: string) => CartType.Cart = (\n cartId?: string\n) => {\n cartId = cartId ?? Cookies.get(LOCAL_CART_ID);\n const cartStr = Cookies.get(LOCAL_CART_OBJ);\n const cart = cartStr ? JSON.parse(cartStr) : undefined;\n\n if (!cart || cart.id !== cartId) {\n return createCart();\n } else {\n return cart.cart;\n }\n};\n\nexport const cartUpdate = (newCart: CartType.Cart) => {\n Cookies.set(\n LOCAL_CART_OBJ,\n JSON.stringify({\n id: Cookies.get(LOCAL_CART_ID),\n cart: newCart,\n })\n );\n\n return newCart;\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes:\n - Before: just returned an empty cart.\n - Now: Read cart from local storage.\n*/\nimport { SWRHook, useCart, UseCart } from \"@plasmicpkgs/commerce\";\nimport React from \"react\";\nimport { getCart } from \"../utils/cart\";\n\nexport default useCart as UseCart<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-cart\",\n },\n async fetcher({ input, options, fetch }) {\n return getCart(input.cartId);\n },\n useHook: ({ useData }) => (input) => {\n const response = useData({\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n });\n return React.useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.lineItems.length ?? 0) <= 0;\n },\n enumerable: true,\n },\n }),\n [response]\n );\n },\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes:\n - Implemented a local cart\n - The items are added to local storage.\n*/\nimport {\n CommerceError,\n MutationHook,\n useAddItem,\n UseAddItem,\n} from \"@plasmicpkgs/commerce\";\nimport { useCallback } from \"react\";\nimport data from \"../data.json\";\nimport { cartUpdate, getCart } from \"../utils/cart\";\nimport useCart from \"./use-cart\";\n\nexport default useAddItem as UseAddItem<typeof handler>;\nexport const handler: MutationHook<any> = {\n fetchOptions: {\n query: \"use-add-item\",\n },\n async fetcher({ input: item, options, fetch }) {\n if (\n item.quantity &&\n (!Number.isInteger(item.quantity) || item.quantity! < 1)\n ) {\n throw new CommerceError({\n message: \"The item quantity has to be a valid integer greater than 0\",\n });\n }\n\n const lineItem = {\n variantId: item.variantId,\n quantity: item.quantity ?? 1,\n };\n\n const cart = getCart();\n for (const product of data.products) {\n const variant = (product.variants as any[]).find(\n (variant) => variant.id === item.variantId\n );\n if (variant) {\n cart.totalPrice += variant.price * (item.quantity ?? 1);\n cart.currency.code = product.price.currencyCode;\n const currentLineItem = cart.lineItems.find(\n (item) => item.variantId === lineItem.variantId\n );\n if (!currentLineItem) {\n cart.lineItems.push(lineItem as any);\n } else {\n currentLineItem.quantity += lineItem.quantity;\n }\n }\n }\n\n return cartUpdate(cart);\n },\n useHook: ({ fetch }) => () => {\n const { mutate } = useCart();\n return useCallback(\n async function addItem(input) {\n const data = await fetch({ input });\n await mutate(data, false);\n return data;\n },\n [fetch, mutate]\n );\n },\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: None\n*/\nimport { MutationHook } from '@plasmicpkgs/commerce'\nimport { useUpdateItem,\n UseUpdateItem,\n} from '@plasmicpkgs/commerce'\n\nexport default useUpdateItem as UseUpdateItem<any>\n\nexport const handler: MutationHook<any> = {\n fetchOptions: {\n query: '',\n },\n async fetcher({ input, options, fetch }) {},\n useHook:\n ({ fetch }) =>\n () => {\n return async function addItem() {\n return {}\n }\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: None\n*/\nimport { MutationHook } from '@plasmicpkgs/commerce'\nimport {useRemoveItem,\n UseRemoveItem,\n} from '@plasmicpkgs/commerce'\n\nexport default useRemoveItem as UseRemoveItem<typeof handler>\n\nexport const handler: MutationHook<any> = {\n fetchOptions: {\n query: '',\n },\n async fetcher({ input, options, fetch }) {},\n useHook:\n ({ fetch }) =>\n () => {\n return async function removeItem(input) {\n return {}\n }\n },\n}\n","import data from \"../data.json\";\n\nexport const sortProduct = (\n a: typeof data.products[0],\n b: typeof data.products[0],\n sortKey: string\n) => {\n switch (sortKey) {\n case \"price-asc\":\n return a.price.value < b.price.value ? -1 : 1;\n case \"price-desc\":\n return a.price.value < b.price.value ? 1 : -1;\n case \"trending-desc\":\n return a.id.localeCompare(b.id);\n case \"latest-desc\":\n return a.id.localeCompare(b.id) * -1;\n default:\n return 0;\n }\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: None\n*/\nimport { SWRHook, useSearch, UseSearch } from \"@plasmicpkgs/commerce\";\nimport data from \"../data.json\";\nimport { sortProduct } from \"../utils/sort-product\";\nconst useSearchTyped: UseSearch<typeof handler> = useSearch;\nexport default useSearchTyped;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-search\",\n },\n async fetcher({ input, options, fetch }) {\n const { search, categoryId, brandId, sort, count } = input;\n\n let products = data.products;\n\n if (categoryId) {\n const category = data.categories.find(\n (category) => category.id === categoryId\n );\n products = data.products.filter((product) =>\n category?.products?.includes(product.id)\n );\n }\n\n if (brandId) {\n products = products.filter(\n (product) =>\n product.vendor.replace(/\\s+/g, \"-\").toLowerCase() ===\n `${brandId}`.toLowerCase()\n );\n }\n\n if (search) {\n products = products.filter(\n (product) =>\n product.name.toLowerCase().includes(`${search}`.toLowerCase()) ||\n product.slug.toLowerCase().includes(`${search}`.toLowerCase())\n );\n }\n\n if (sort) {\n products = products.sort((a, b) => sortProduct(a, b, sort));\n }\n\n return {\n products: products.slice(0, count),\n found: products.length > 0,\n };\n },\n useHook:\n ({ useData }) =>\n (input = {}) => {\n return useData({\n input: [\n [\"search\", input.search],\n [\"prefixSearch\", input.prefixSearch],\n [\"categoryId\", input.categoryId],\n [\"brandId\", input.brandId],\n [\"sort\", input.sort],\n [\"locale\", input.locale],\n [\"count\", input.count],\n ],\n swrOptions: {\n revalidateOnFocus: false,\n ...input.swrOptions,\n },\n });\n },\n};\n","import { SWRHook, useProduct, UseProduct } from \"@plasmicpkgs/commerce\";\nimport data from \"../data.json\";\nexport default useProduct as UseProduct<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-product\",\n },\n async fetcher({ input, options, fetch }) {\n const { id } = input;\n\n return (\n data.products.find((product) =>\n [product.id, product.slug].includes(id)\n ) ?? null\n );\n },\n useHook: ({ useData }) => (input = {}) => {\n return useData({\n input: [[\"id\", input.id]],\n swrOptions: {\n revalidateOnFocus: false,\n ...input.swrOptions,\n },\n });\n },\n};\n","import { SWRHook, useCategories, UseCategories } from \"@plasmicpkgs/commerce\";\nimport React from \"react\";\nimport data from \"../data.json\";\nexport default useCategories as UseCategories<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-categories\",\n },\n async fetcher({ input, options, fetch }) {\n const { categoryId } = input;\n if (!categoryId) {\n return data.categories;\n }\n const category = data.categories.find(\n (category) => category.id === categoryId\n );\n return category ? [category] : [];\n },\n useHook: ({ useData }) => (input) => {\n const response = useData({\n input: [[\"categoryId\", input?.categoryId]],\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n });\n return React.useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.length ?? 0) <= 0;\n },\n enumerable: true,\n },\n }),\n [response]\n );\n },\n};\n","import { SWRHook, useBrands, UseBrands } from \"@plasmicpkgs/commerce\";\nimport React from \"react\";\nimport data from \"../data.json\";\nexport default useBrands as UseBrands<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-brands\",\n },\n async fetcher({ input, options, fetch }) {\n const vendorsStrings = data.products.map((product) => product.vendor);\n return Array.from(new Set(vendorsStrings).values()).map((v) => {\n const id = v.replace(/\\s+/g, \"-\").toLowerCase();\n return {\n entityId: id,\n name: v,\n path: `brands/${id}`,\n };\n });\n },\n useHook: ({ useData }) => (input) => {\n const response = useData({\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n });\n return React.useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.length ?? 0) <= 0;\n },\n enumerable: true,\n },\n }),\n [response]\n );\n },\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: Removed authentication, customer and wishlist hooks\n*/\nimport { fetcher } from './fetcher'\nimport { handler as useCart } from './cart/use-cart'\nimport { handler as useAddItem } from './cart/use-add-item'\nimport { handler as useUpdateItem } from './cart/use-update-item'\nimport { handler as useRemoveItem } from './cart/use-remove-item'\nimport { handler as useSearch } from './product/use-search'\nimport { handler as useProduct } from './product/use-product'\nimport { handler as useCategories } from './site/use-categories'\nimport { handler as useBrands } from './site/use-brands'\nimport { LOCAL_CART_ID } from './const'\nexport const localProvider = {\n locale: 'en-us',\n cartCookie: LOCAL_CART_ID,\n fetcher: fetcher,\n cart: { useCart, useAddItem, useUpdateItem, useRemoveItem },\n products: { useSearch, useProduct },\n site: { useCategories, useBrands }\n}\n\nexport type LocalProvider = typeof localProvider\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: Add export data\n*/\nexport * from \"./registerable\";\nexport { localProvider, data };\nexport type { LocalProvider };\nimport {\n getCommerceProvider,\n useCommerce as useCoreCommerce,\n} from \"@plasmicpkgs/commerce\";\nimport data from \"./data.json\";\nimport { localProvider, LocalProvider } from \"./provider\";\n\nexport const CommerceProvider = getCommerceProvider(localProvider);\n\nexport const useCommerce = () => useCoreCommerce<LocalProvider>();\n","import { GlobalContextMeta } from \"@plasmicapp/host\";\nimport registerGlobalContext from \"@plasmicapp/host/registerGlobalContext\";\nimport React from \"react\";\nimport { CommerceProvider } from \"./local\";\nimport { Registerable } from \"./registerable\";\n\ninterface CommerceProviderProps {\n children?: React.ReactNode;\n}\n\nexport const commerceProviderMeta: GlobalContextMeta<CommerceProviderProps> = {\n name: \"plasmic-commerce-local-provider\",\n displayName: \"Local Provider\",\n props: {},\n importPath: \"@plasmicpkgs/commerce-local\",\n importName: \"CommerceProviderComponent\",\n};\n\nfunction CommerceProviderComponent(props: CommerceProviderProps) {\n return <CommerceProvider>{props.children}</CommerceProvider>;\n}\n\nexport function registerCommerceProvider(\n loader?: Registerable,\n customCommerceProviderMeta?: GlobalContextMeta<CommerceProviderProps>\n) {\n const doRegisterComponent: typeof registerGlobalContext = (...args) =>\n loader\n ? loader.registerGlobalContext(...args)\n : registerGlobalContext(...args);\n doRegisterComponent(\n CommerceProviderComponent,\n customCommerceProviderMeta ?? commerceProviderMeta\n );\n}\n","import { Registerable } from \"./registerable\";\nimport { registerCommerceProvider } from \"./registerCommerceProvider\";\nexport * from \"./registerable\";\n\nexport * from \"./local\";\n\nexport function registerAll(loader?: Registerable) {\n registerCommerceProvider(loader);\n}\n\nexport { registerCommerceProvider };"],"names":["fetcher","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","res","_yield$res$json","data","wrap","_callee$","_context","prev","next","console","log","fetch","sent","ok","json","abrupt","stop","apply","arguments","LOCAL_CART_OBJ","LOCAL_CART_ID","createCart","cart","id","createdAt","currency","code","taxesIncluded","lineItems","lineItemsSubtotalPrice","subtotalPrice","totalPrice","cartId","Date","now","toString","Cookies","set","JSON","stringify","getCart","_cartId","get","cartStr","parse","undefined","cartUpdate","newCart","handler","fetchOptions","query","input","options","useHook","_ref2","useData","response","swrOptions","_extends","revalidateOnFocus","React","useMemo","Object","create","isEmpty","_response$data$lineIt","_response$data","length","enumerable","item","quantity","Number","isInteger","CommerceError","message","lineItem","variantId","_item$quantity","_iterator","_createForOfIteratorHelperLoose","products","_step","done","product","value","variant","variants","find","price","_item$quantity2","currencyCode","currentLineItem","push","_useCart","useCart","mutate","useCallback","_addItem","_callee2","_callee2$","_context2","addItem","_x","_removeItem","removeItem","sortProduct","a","b","sortKey","localeCompare","search","categoryId","brandId","sort","count","category","categories","filter","_category$products","includes","vendor","replace","toLowerCase","name","slug","slice","found","prefixSearch","locale","_data$products$find","_response$data$length","vendorsStrings","map","Array","from","Set","values","v","entityId","path","localProvider","cartCookie","useAddItem","useUpdateItem","useRemoveItem","useSearch","useProduct","site","useCategories","useBrands","CommerceProvider","getCommerceProvider","useCommerce","useCoreCommerce","commerceProviderMeta","displayName","props","importPath","importName","CommerceProviderComponent","children","registerCommerceProvider","loader","customCommerceProviderMeta","doRegisterComponent","registerGlobalContext","registerAll"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
1
|
+
{"version":3,"file":"commerce-local.cjs.development.js","sources":["../src/fetcher.ts","../src/const.ts","../src/utils/cart.ts","../src/cart/use-cart.tsx","../src/cart/use-add-item.tsx","../src/cart/use-update-item.tsx","../src/cart/use-remove-item.tsx","../src/utils/sort-product.ts","../src/product/use-search.tsx","../src/product/use-product.tsx","../src/site/use-categories.ts","../src/site/use-brands.ts","../src/provider.ts","../src/local.ts","../src/registerCommerceProvider.tsx","../src/index.tsx"],"sourcesContent":["import { Fetcher } from '@plasmicpkgs/commerce';\n\nexport const fetcher: Fetcher = async () => {\n console.log('FETCHER')\n const res = await fetch('./data.json')\n if (res.ok) {\n const { data } = await res.json()\n return data\n }\n throw res\n}\n","export const LOCAL_CART_OBJ = \"localCartObj\";\n\nexport const LOCAL_CART_ID = \"localCartId\";\n","import { CartType } from \"@plasmicpkgs/commerce\";\nimport Cookies from \"js-cookie\";\nimport { LOCAL_CART_ID, LOCAL_CART_OBJ } from \"../const\";\n\nconst options: Cookies.CookieAttributes = {\n sameSite: \"none\",\n secure: true,\n};\n\nexport const createCart: () => CartType.Cart = () => {\n const cart = {\n id: \"\",\n createdAt: \"\",\n currency: { code: \"USD\" },\n taxesIncluded: false,\n lineItems: [],\n lineItemsSubtotalPrice: 0,\n subtotalPrice: 0,\n totalPrice: 0,\n };\n\n const cartId = Date.now().toString();\n\n Cookies.set(LOCAL_CART_ID, cartId);\n Cookies.set(\n LOCAL_CART_OBJ,\n JSON.stringify({\n id: cartId,\n cart,\n })\n );\n\n return cart;\n};\n\nexport const getCart: (cartId?: string) => CartType.Cart = (\n cartId?: string\n) => {\n cartId = cartId ?? Cookies.get(LOCAL_CART_ID);\n const cartStr = Cookies.get(LOCAL_CART_OBJ);\n const cart = cartStr ? JSON.parse(cartStr) : undefined;\n\n if (!cart || cart.id !== cartId) {\n return createCart();\n } else {\n return cart.cart;\n }\n};\n\nexport const cartUpdate = (newCart: CartType.Cart) => {\n Cookies.set(\n LOCAL_CART_OBJ,\n JSON.stringify({\n id: Cookies.get(LOCAL_CART_ID),\n cart: newCart,\n })\n );\n\n return newCart;\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes:\n - Before: just returned an empty cart.\n - Now: Read cart from local storage.\n*/\nimport { SWRHook, useCart, UseCart } from \"@plasmicpkgs/commerce\";\nimport React from \"react\";\nimport { getCart } from \"../utils/cart\";\n\nexport default useCart as UseCart<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-cart\",\n },\n async fetcher({ input, options, fetch }) {\n return getCart(input.cartId);\n },\n useHook: ({ useData }) => (input) => {\n const response = useData({\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n });\n return React.useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.lineItems.length ?? 0) <= 0;\n },\n enumerable: true,\n },\n }),\n [response]\n );\n },\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes:\n - Implemented a local cart\n - The items are added to local storage.\n*/\nimport {\n CommerceError,\n MutationHook,\n useAddItem,\n UseAddItem,\n} from \"@plasmicpkgs/commerce\";\nimport { useCallback } from \"react\";\nimport data from \"../data.json\";\nimport { cartUpdate, getCart } from \"../utils/cart\";\nimport useCart from \"./use-cart\";\n\nexport default useAddItem as UseAddItem<typeof handler>;\nexport const handler: MutationHook<any> = {\n fetchOptions: {\n query: \"use-add-item\",\n },\n async fetcher({ input: item, options, fetch }) {\n if (\n item.quantity &&\n (!Number.isInteger(item.quantity) || item.quantity! < 1)\n ) {\n throw new CommerceError({\n message: \"The item quantity has to be a valid integer greater than 0\",\n });\n }\n\n const lineItem = {\n variantId: item.variantId,\n quantity: item.quantity ?? 1,\n };\n\n const cart = getCart();\n for (const product of data.products) {\n const variant = (product.variants as any[]).find(\n (variant) => variant.id === item.variantId\n );\n if (variant) {\n cart.totalPrice += variant.price * (item.quantity ?? 1);\n cart.currency.code = product.price.currencyCode;\n const currentLineItem = cart.lineItems.find(\n (item) => item.variantId === lineItem.variantId\n );\n if (!currentLineItem) {\n cart.lineItems.push(lineItem as any);\n } else {\n currentLineItem.quantity += lineItem.quantity;\n }\n }\n }\n\n return cartUpdate(cart);\n },\n useHook: ({ fetch }) => () => {\n const { mutate } = useCart();\n return useCallback(\n async function addItem(input) {\n const data = await fetch({ input });\n await mutate(data, false);\n return data;\n },\n [fetch, mutate]\n );\n },\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: None\n*/\nimport { MutationHook } from '@plasmicpkgs/commerce'\nimport { useUpdateItem,\n UseUpdateItem,\n} from '@plasmicpkgs/commerce'\n\nexport default useUpdateItem as UseUpdateItem<any>\n\nexport const handler: MutationHook<any> = {\n fetchOptions: {\n query: '',\n },\n async fetcher({ input, options, fetch }) {},\n useHook:\n ({ fetch }) =>\n () => {\n return async function addItem() {\n return {}\n }\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: None\n*/\nimport { MutationHook } from '@plasmicpkgs/commerce'\nimport {useRemoveItem,\n UseRemoveItem,\n} from '@plasmicpkgs/commerce'\n\nexport default useRemoveItem as UseRemoveItem<typeof handler>\n\nexport const handler: MutationHook<any> = {\n fetchOptions: {\n query: '',\n },\n async fetcher({ input, options, fetch }) {},\n useHook:\n ({ fetch }) =>\n () => {\n return async function removeItem(input) {\n return {}\n }\n },\n}\n","import data from \"../data.json\";\n\nexport const sortProduct = (\n a: typeof data.products[0],\n b: typeof data.products[0],\n sortKey: string\n) => {\n switch (sortKey) {\n case \"price-asc\":\n return a.price.value < b.price.value ? -1 : 1;\n case \"price-desc\":\n return a.price.value < b.price.value ? 1 : -1;\n case \"trending-desc\":\n return a.id.localeCompare(b.id);\n case \"latest-desc\":\n return a.id.localeCompare(b.id) * -1;\n default:\n return 0;\n }\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: None\n*/\nimport { SWRHook, useSearch, UseSearch } from \"@plasmicpkgs/commerce\";\nimport data from \"../data.json\";\nimport { sortProduct } from \"../utils/sort-product\";\nconst useSearchTyped: UseSearch<typeof handler> = useSearch;\nexport default useSearchTyped;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-search\",\n },\n async fetcher({ input, options, fetch }) {\n const { search, categoryId, brandId, sort, count } = input;\n\n let products = data.products;\n\n if (categoryId) {\n const category = data.categories.find(\n (category) => category.id === categoryId\n );\n products = data.products.filter((product) =>\n category?.products?.includes(product.id)\n );\n }\n\n if (brandId) {\n products = products.filter(\n (product) =>\n product.vendor.replace(/\\s+/g, \"-\").toLowerCase() ===\n `${brandId}`.toLowerCase()\n );\n }\n\n if (search) {\n products = products.filter(\n (product) =>\n product.name.toLowerCase().includes(`${search}`.toLowerCase()) ||\n product.slug.toLowerCase().includes(`${search}`.toLowerCase())\n );\n }\n\n if (sort) {\n products = products.sort((a, b) => sortProduct(a, b, sort));\n }\n\n return {\n products: products.slice(0, count),\n found: products.length > 0,\n };\n },\n useHook:\n ({ useData }) =>\n (input = {}) => {\n return useData({\n input: [\n [\"search\", input.search],\n [\"prefixSearch\", input.prefixSearch],\n [\"categoryId\", input.categoryId],\n [\"brandId\", input.brandId],\n [\"sort\", input.sort],\n [\"locale\", input.locale],\n [\"count\", input.count],\n ],\n swrOptions: {\n revalidateOnFocus: false,\n ...input.swrOptions,\n },\n });\n },\n};\n","import { SWRHook, useProduct, UseProduct } from \"@plasmicpkgs/commerce\";\nimport data from \"../data.json\";\nexport default useProduct as UseProduct<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-product\",\n },\n async fetcher({ input, options, fetch }) {\n const { id } = input;\n\n return (\n data.products.find((product) =>\n [product.id, product.slug].includes(id)\n ) ?? null\n );\n },\n useHook: ({ useData }) => (input = {}) => {\n return useData({\n input: [[\"id\", input.id]],\n swrOptions: {\n revalidateOnFocus: false,\n ...input.swrOptions,\n },\n });\n },\n};\n","import { SWRHook, useCategories, UseCategories } from \"@plasmicpkgs/commerce\";\nimport React from \"react\";\nimport data from \"../data.json\";\nexport default useCategories as UseCategories<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-categories\",\n },\n async fetcher({ input, options, fetch }) {\n const { categoryId } = input;\n if (!categoryId) {\n return data.categories;\n }\n const category = data.categories.find(\n (category) => category.id === categoryId\n );\n return category ? [category] : [];\n },\n useHook: ({ useData }) => (input) => {\n const response = useData({\n input: [[\"categoryId\", input?.categoryId]],\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n });\n return React.useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.length ?? 0) <= 0;\n },\n enumerable: true,\n },\n }),\n [response]\n );\n },\n};\n","import { SWRHook, useBrands, UseBrands } from \"@plasmicpkgs/commerce\";\nimport React from \"react\";\nimport data from \"../data.json\";\nexport default useBrands as UseBrands<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-brands\",\n },\n async fetcher({ input, options, fetch }) {\n const vendorsStrings = data.products.map((product) => product.vendor);\n return Array.from(new Set(vendorsStrings).values()).map((v) => {\n const id = v.replace(/\\s+/g, \"-\").toLowerCase();\n return {\n entityId: id,\n name: v,\n path: `brands/${id}`,\n };\n });\n },\n useHook: ({ useData }) => (input) => {\n const response = useData({\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n });\n return React.useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.length ?? 0) <= 0;\n },\n enumerable: true,\n },\n }),\n [response]\n );\n },\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: Removed authentication, customer and wishlist hooks\n*/\nimport { fetcher } from './fetcher'\nimport { handler as useCart } from './cart/use-cart'\nimport { handler as useAddItem } from './cart/use-add-item'\nimport { handler as useUpdateItem } from './cart/use-update-item'\nimport { handler as useRemoveItem } from './cart/use-remove-item'\nimport { handler as useSearch } from './product/use-search'\nimport { handler as useProduct } from './product/use-product'\nimport { handler as useCategories } from './site/use-categories'\nimport { handler as useBrands } from './site/use-brands'\nimport { LOCAL_CART_ID } from './const'\nexport const localProvider = {\n locale: 'en-us',\n cartCookie: LOCAL_CART_ID,\n fetcher: fetcher,\n cart: { useCart, useAddItem, useUpdateItem, useRemoveItem },\n products: { useSearch, useProduct },\n site: { useCategories, useBrands }\n}\n\nexport type LocalProvider = typeof localProvider\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: Add export data\n*/\nexport * from \"./registerable\";\nexport { localProvider, data };\nexport type { LocalProvider };\nimport {\n getCommerceProvider,\n useCommerce as useCoreCommerce,\n} from \"@plasmicpkgs/commerce\";\nimport data from \"./data.json\";\nimport { localProvider, LocalProvider } from \"./provider\";\n\nexport const CommerceProvider = getCommerceProvider(localProvider);\n\nexport const useCommerce = () => useCoreCommerce<LocalProvider>();\n","import { GlobalContextMeta } from \"@plasmicapp/host\";\nimport registerGlobalContext from \"@plasmicapp/host/registerGlobalContext\";\nimport React from \"react\";\nimport { CommerceProvider } from \"./local\";\nimport { Registerable } from \"./registerable\";\n\ninterface CommerceProviderProps {\n children?: React.ReactNode;\n}\n\nexport const commerceProviderMeta: GlobalContextMeta<CommerceProviderProps> = {\n name: \"plasmic-commerce-local-provider\",\n displayName: \"Local Provider\",\n props: {},\n importPath: \"@plasmicpkgs/commerce-local\",\n importName: \"CommerceProviderComponent\",\n};\n\nfunction CommerceProviderComponent(props: CommerceProviderProps) {\n return <CommerceProvider>{props.children}</CommerceProvider>;\n}\n\nexport function registerCommerceProvider(\n loader?: Registerable,\n customCommerceProviderMeta?: GlobalContextMeta<CommerceProviderProps>\n) {\n const doRegisterComponent: typeof registerGlobalContext = (...args) =>\n loader\n ? loader.registerGlobalContext(...args)\n : registerGlobalContext(...args);\n doRegisterComponent(\n CommerceProviderComponent,\n customCommerceProviderMeta ?? commerceProviderMeta\n );\n}\n","import { Registerable } from \"./registerable\";\nimport { registerCommerceProvider } from \"./registerCommerceProvider\";\nexport * from \"./registerable\";\n\nexport * from \"./local\";\n\nexport function registerAll(loader?: Registerable) {\n registerCommerceProvider(loader);\n}\n\nexport { registerCommerceProvider };"],"names":["fetcher","_ref","_asyncToGenerator","_regenerator","m","_callee","res","_yield$res$json","data","w","_context","n","console","log","fetch","v","ok","json","a","apply","arguments","LOCAL_CART_OBJ","LOCAL_CART_ID","createCart","cart","id","createdAt","currency","code","taxesIncluded","lineItems","lineItemsSubtotalPrice","subtotalPrice","totalPrice","cartId","Date","now","toString","Cookies","set","JSON","stringify","getCart","get","cartStr","parse","undefined","cartUpdate","newCart","handler","fetchOptions","query","input","options","useHook","_ref2","useData","response","swrOptions","_extends","revalidateOnFocus","React","useMemo","Object","create","isEmpty","_response$data$lineIt","_response$data","length","enumerable","item","quantity","Number","isInteger","CommerceError","message","lineItem","variantId","_item$quantity","_iterator","_createForOfIteratorHelperLoose","products","_step","done","product","value","variant","variants","find","price","_item$quantity2","currencyCode","currentLineItem","push","_useCart","useCart","mutate","useCallback","_addItem","_callee2","_context2","addItem","_x","_removeItem","removeItem","sortProduct","b","sortKey","localeCompare","search","categoryId","brandId","sort","count","category","categories","filter","_category$products","includes","vendor","replace","toLowerCase","name","slug","slice","found","prefixSearch","locale","_data$products$find","_response$data$length","vendorsStrings","map","Array","from","Set","values","entityId","path","localProvider","cartCookie","useAddItem","useUpdateItem","useRemoveItem","useSearch","useProduct","site","useCategories","useBrands","CommerceProvider","getCommerceProvider","useCommerce","useCoreCommerce","commerceProviderMeta","displayName","props","importPath","importName","CommerceProviderComponent","children","registerCommerceProvider","loader","customCommerceProviderMeta","doRegisterComponent","registerGlobalContext","registerAll"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var i=e(require("@plasmicapp/host/registerGlobalContext")),t=require("react"),a=e(t),l=require("@plasmicpkgs/commerce"),r=e(require("js-cookie")),n={categories:[{id:"id::270412710052",name:"New Arrivals",slug:"clothes",path:"/clothes",isEmpty:!1,products:["id::5447323812004","id::5447324270756","id::5447324729508","id::5447325024420","id::6621772644516"]},{id:"id::271211167908",name:"Featured",slug:"featured",path:"/featured",isEmpty:!1,products:["id::5447323156644","id::5447323812004","id::6621772644516"]}],products:[{id:"id::5447322697892",name:"Special Edition T-Shirt",vendor:"ACME",path:"/conf-shirt",slug:"conf-shirt",price:{value:50,currencyCode:"USD"},images:[{url:"https://static1.plasmic.app/commerce/conf-shirt-0.png",altText:null,width:958,height:1e3},{url:"https://static1.plasmic.app/commerce/conf-shirt-1.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/conf-shirt-2.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/conf-shirt-3.png",altText:null,width:1e3,height:1e3}],variants:[{id:"id::40047332688036",name:"Black / S",sku:"",price:200,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40047332688036",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40047332688036",displayName:"size",values:[{label:"S"}]}]},{id:"id::40009056387236",name:"Black / M",sku:"",price:200,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40009056387236",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40009056387236",displayName:"size",values:[{label:"M"}]}]},{id:"id::40064229212324",name:"Black / L",sku:"",price:200,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40064229212324",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40064229212324",displayName:"size",values:[{label:"L"}]}]},{id:"id::40073451602084",name:"Black / XL",sku:"",price:50,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40073451602084",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40073451602084",displayName:"size",values:[{label:"XL"}]}]},{id:"id::40073450061988",name:"Black / XXL",sku:"",price:50,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40073450061988",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40073450061988",displayName:"size",values:[{label:"XXL"}]}]}],options:[{__typename:"MultipleChoiceOption",id:"id::6940501311652",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::6940501278884",displayName:"size",values:[{label:"S"},{label:"M"},{label:"L"},{label:"XL"},{label:"XXL"}]}],description:"Show off your love for Next.js and Vercel with this unique, limited edition t-shirt. This design is part of a limited run, numbered drop at the June 2021 Next.js Conf. It features a unique, handcrafted triangle design. Get it while supplies last – only 200 of these shirts will be made! All proceeds will be donated to charity.",descriptionHtml:'<p><meta charset="utf-8"><span>Show off your love for Next.js and Vercel with this unique, </span><strong>limited edition</strong><span> t-shirt. This design is part of a limited run, numbered drop at the June 2021 Next.js Conf. It features a unique, handcrafted triangle design. Get it while supplies last – only 200 of these shirts will be made! </span><strong>All proceeds will be donated to charity.</strong></p>'},{id:"id::5447323156644",name:"Quarter Zip",vendor:"ACME",path:"/quarter-zip",slug:"quarter-zip",price:{value:90,currencyCode:"USD"},images:[{url:"https://static1.plasmic.app/commerce/quarter-zip-0.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/quarter-zip-1.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/quarter-zip-2.png",altText:null,width:1e3,height:1e3}],variants:[{id:"id::40065999569060",name:"Black / S",sku:"",price:90,listPrice:20,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40065999569060",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40065999569060",displayName:"size",values:[{label:"S"}]}]},{id:"id::40008984756388",name:"Black / M",sku:"",price:90,listPrice:20,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40008984756388",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40008984756388",displayName:"size",values:[{label:"M"}]}]},{id:"id::40065122828452",name:"Black / L",sku:"",price:90,listPrice:20,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40065122828452",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40065122828452",displayName:"size",values:[{label:"L"}]}]},{id:"id::40065123713188",name:"Black / XL",sku:"",price:90,listPrice:20,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40065123713188",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40065123713188",displayName:"size",values:[{label:"XL"}]}]},{id:"id::40065125286052",name:"Black / XXL",sku:"",price:90,listPrice:20,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40065125286052",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40065125286052",displayName:"size",values:[{label:"XXL"}]}]}],options:[{__typename:"MultipleChoiceOption",id:"id::6940501835940",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::6940501803172",displayName:"size",values:[{label:"S"},{label:"M"},{label:"L"},{label:"XL"},{label:"XXL"}]}],description:"Show off your love for Next.js and Vercel with this unique, limited edition quarter zip. This design is part of a limited run, numbered drop at the June 2021 Next.js Conf. It features a unique, handcrafted triangle design. Get it while supplies last – only 200 of these shirts will be made! All proceeds will be donated to charity.",descriptionHtml:"<p>Show off your love for Next.js and Vercel with this unique, <strong>limited edition</strong> quarter zip. This design is part of a limited run, numbered drop at the June 2021 Next.js Conf. It features a unique, handcrafted triangle design. Get it while supplies last – only 200 of these shirts will be made! <strong>All proceeds will be donated to charity.</strong></p>"},{id:"id::5447323812004",name:"Sticker",vendor:"ACME",path:"/sticker",slug:"sticker",price:{value:0,currencyCode:"USD"},images:[{url:"https://static1.plasmic.app/commerce/sticker-0.png",altText:null,width:900,height:900}],variants:[{id:"id::40008892580004",name:"Gradient",sku:"",price:0,listPrice:60,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40008892580004",displayName:"color",values:[{label:"Gradient"}]}]}],options:[{__typename:"MultipleChoiceOption",id:"id::6940502524068",displayName:"color",values:[{label:"Gradient"}]}],description:"Wafer cupcake candy macaroon bonbon candy canes cheesecake candy. Donut chupa chups sesame snaps candy chocolate cake chocolate cake danish. Tart cotton candy gummies cotton candy sweet roll. Wafer pie chocolate cake. Caramels toffee gummies. Liquorice sweet oat cake chocolate candy canes toffee bear claw. Chocolate cupcake wafer. Halvah soufflé halvah. Dessert pastry toffee apple pie chocolate cake lemon drops. Tart carrot cake wafer halvah tiramisu fruitcake.",descriptionHtml:'<p><meta charset="utf-8">Wafer cupcake candy macaroon bonbon candy canes cheesecake candy. Donut chupa chups sesame snaps candy chocolate cake chocolate cake danish. Tart cotton candy gummies cotton candy sweet roll. Wafer pie chocolate cake. Caramels toffee gummies. Liquorice sweet oat cake chocolate candy canes toffee bear claw. Chocolate cupcake wafer. Halvah soufflé halvah. Dessert pastry toffee apple pie chocolate cake lemon drops. Tart carrot cake wafer halvah tiramisu fruitcake.<br></p>'},{id:"id::5447324270756",name:"Bomber Jacket",vendor:"Next.js",path:"/bomber-jacket",slug:"bomber-jacket",price:{value:635.99,currencyCode:"USD"},images:[{url:"https://static1.plasmic.app/commerce/bomber-jacket-0.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/bomber-jacket-1.png",altText:null,width:1e3,height:1e3}],variants:[{id:"id::40046243905700",name:"L / Black",sku:"",price:635.99,listPrice:5200,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046243905700",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046243905700",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]}]},{id:"id::40046243938468",name:"L / DarkOliveGreen",sku:"",price:635.99,listPrice:5200,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046243938468",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046243938468",displayName:"color",values:[{label:"DarkOliveGreen",hexColors:["#556B2F"]}]}]},{id:"id::40046243971236",name:"XL / Black",sku:"",price:635.99,listPrice:5200,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046243971236",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046243971236",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]}]},{id:"id::40046244004004",name:"XL / DarkOliveGreen",sku:"",price:635.99,listPrice:5200,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046244004004",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046244004004",displayName:"color",values:[{label:"DarkOliveGreen",hexColors:["#556B2F"]}]}]},{id:"id::40046244036772",name:"XXL / Black",sku:"",price:635.99,listPrice:5200,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046244036772",displayName:"size",values:[{label:"XXL"}]},{__typename:"MultipleChoiceOption",id:"id::40046244036772",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]}]},{id:"id::40046244069540",name:"XXL / DarkOliveGreen",sku:"",price:635.99,listPrice:5200,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046244069540",displayName:"size",values:[{label:"XXL"}]},{__typename:"MultipleChoiceOption",id:"id::40046244069540",displayName:"color",values:[{label:"DarkOliveGreen",hexColors:["#556B2F"]}]}]}],options:[{__typename:"MultipleChoiceOption",id:"id::6940503015588",displayName:"size",values:[{label:"L"},{label:"XL"},{label:"XXL"}]},{__typename:"MultipleChoiceOption",id:"id::8655769764004",displayName:"color",values:[{label:"Black",hexColors:["#000000"]},{label:"DarkOliveGreen",hexColors:["#556B2F"]}]}],description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.",descriptionHtml:"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.</p>"},{id:"id::5447324729508",name:"Short Sleeve T-Shirt",vendor:"Next.js",path:"/short-sleeve-t-shirt",slug:"short-sleeve-t-shirt",price:{value:35,currencyCode:"USD"},images:[{url:"https://static1.plasmic.app/commerce/short-sleeve-t-shirt-0.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/short-sleeve-t-shirt-1.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/short-sleeve-t-shirt-2.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/short-sleeve-t-shirt-3.png",altText:null,width:1e3,height:1e3}],variants:[{id:"id::35180690669732",name:"M / gray",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::35180690669732",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::35180690669732",displayName:"color",values:[{label:"gray",hexColors:["#808080"]}]}]},{id:"id::35180690702500",name:"L / gray",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::35180690702500",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::35180690702500",displayName:"color",values:[{label:"gray",hexColors:["#808080"]}]}]},{id:"id::35180690735268",name:"XL / gray",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::35180690735268",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::35180690735268",displayName:"color",values:[{label:"gray",hexColors:["#808080"]}]}]},{id:"id::40046203437220",name:"M / beige",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046203437220",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::40046203437220",displayName:"color",values:[{label:"beige",hexColors:["#F5F5DC"]}]}]},{id:"id::40046207369380",name:"L / beige",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046207369380",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046207369380",displayName:"color",values:[{label:"beige",hexColors:["#F5F5DC"]}]}]},{id:"id::40046207729828",name:"XL / beige",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046207729828",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046207729828",displayName:"color",values:[{label:"beige",hexColors:["#F5F5DC"]}]}]},{id:"id::40046212612260",name:"M / white",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046212612260",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::40046212612260",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046212907172",name:"L / white",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046212907172",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046212907172",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046213300388",name:"XL / white",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046213300388",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046213300388",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046214742180",name:"M / DarkTurquoise",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046214742180",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::40046214742180",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]},{id:"id::40046218346660",name:"L / DarkTurquoise",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046218346660",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046218346660",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]},{id:"id::40046220214436",name:"XL / DarkTurquoise",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046220214436",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046220214436",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]}],options:[{__typename:"MultipleChoiceOption",id:"id::6940503474340",displayName:"size",values:[{label:"M"},{label:"L"},{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::8655761178788",displayName:"color",values:[{label:"gray",hexColors:["#808080"]},{label:"beige",hexColors:["#F5F5DC"]},{label:"white",hexColors:["#FFFFFF"]},{label:"DarkTurquoise",hexColors:["#00CED1"]}]}],description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.",descriptionHtml:"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.</p>"},{id:"id::5447325024420",name:"New Short Sleeve T-Shirt",vendor:"Next.js",path:"/new-short-sleeve-t-shirt",slug:"new-short-sleeve-t-shirt",price:{value:25,currencyCode:"USD"},images:[{url:"https://static1.plasmic.app/commerce/new-short-sleeve-t-shirt-0.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/new-short-sleeve-t-shirt-1.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/new-short-sleeve-t-shirt-2.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/new-short-sleeve-t-shirt-3.png",altText:null,width:1e3,height:1e3}],variants:[{id:"id::40046230962340",name:"XS / white",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046230962340",displayName:"size",values:[{label:"XS"}]},{__typename:"MultipleChoiceOption",id:"id::40046230962340",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046230995108",name:"XS / grey",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046230995108",displayName:"size",values:[{label:"XS"}]},{__typename:"MultipleChoiceOption",id:"id::40046230995108",displayName:"color",values:[{label:"grey",hexColors:["#808080"]}]}]},{id:"id::40046231027876",name:"XS / DarkTurquoise",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231027876",displayName:"size",values:[{label:"XS"}]},{__typename:"MultipleChoiceOption",id:"id::40046231027876",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]},{id:"id::40046231060644",name:"XS / LightSalmon",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231060644",displayName:"size",values:[{label:"XS"}]},{__typename:"MultipleChoiceOption",id:"id::40046231060644",displayName:"color",values:[{label:"LightSalmon",hexColors:["#FFA07A"]}]}]},{id:"id::40046231093412",name:"S / white",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231093412",displayName:"size",values:[{label:"S"}]},{__typename:"MultipleChoiceOption",id:"id::40046231093412",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046231126180",name:"S / grey",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231126180",displayName:"size",values:[{label:"S"}]},{__typename:"MultipleChoiceOption",id:"id::40046231126180",displayName:"color",values:[{label:"grey",hexColors:["#808080"]}]}]},{id:"id::40046231158948",name:"S / DarkTurquoise",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231158948",displayName:"size",values:[{label:"S"}]},{__typename:"MultipleChoiceOption",id:"id::40046231158948",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]},{id:"id::40046231191716",name:"S / LightSalmon",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231191716",displayName:"size",values:[{label:"S"}]},{__typename:"MultipleChoiceOption",id:"id::40046231191716",displayName:"color",values:[{label:"LightSalmon",hexColors:["#FFA07A"]}]}]},{id:"id::40046231224484",name:"M / white",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231224484",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::40046231224484",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046231257252",name:"M / grey",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231257252",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::40046231257252",displayName:"color",values:[{label:"grey",hexColors:["#808080"]}]}]},{id:"id::40046231290020",name:"M / DarkTurquoise",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231290020",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::40046231290020",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]},{id:"id::40046231322788",name:"M / LightSalmon",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231322788",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::40046231322788",displayName:"color",values:[{label:"LightSalmon",hexColors:["#FFA07A"]}]}]},{id:"id::40046231355556",name:"L / white",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231355556",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046231355556",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046231388324",name:"L / grey",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231388324",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046231388324",displayName:"color",values:[{label:"grey",hexColors:["#808080"]}]}]},{id:"id::40046231421092",name:"L / DarkTurquoise",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231421092",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046231421092",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]},{id:"id::40046231453860",name:"L / LightSalmon",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231453860",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046231453860",displayName:"color",values:[{label:"LightSalmon",hexColors:["#FFA07A"]}]}]},{id:"id::40046231486628",name:"XL / white",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231486628",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046231486628",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046231519396",name:"XL / grey",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231519396",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046231519396",displayName:"color",values:[{label:"grey",hexColors:["#808080"]}]}]},{id:"id::40046231552164",name:"XL / DarkTurquoise",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231552164",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046231552164",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]},{id:"id::40046231584932",name:"XL / LightSalmon",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231584932",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046231584932",displayName:"color",values:[{label:"LightSalmon",hexColors:["#FFA07A"]}]}]}],options:[{__typename:"MultipleChoiceOption",id:"id::6940503769252",displayName:"size",values:[{label:"XS"},{label:"S"},{label:"M"},{label:"L"},{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::8655765471396",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]},{label:"grey",hexColors:["#808080"]},{label:"DarkTurquoise",hexColors:["#00CED1"]},{label:"LightSalmon",hexColors:["#FFA07A"]}]}],description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.",descriptionHtml:"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.<br></p>"},{id:"id::6621772644516",name:"ACME Cup",vendor:"ACME",path:"/acme-cup",slug:"acme-cup",price:{value:25,currencyCode:"USD"},images:[{url:"https://static1.plasmic.app/commerce/acme-cup-0.png",altText:null,width:2048,height:2048},{url:"https://static1.plasmic.app/commerce/acme-cup-1.png",altText:null,width:2048,height:2048}],variants:[{id:"id::40064679805092",name:"White",sku:"200",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40064679805092",displayName:"color",values:[{label:"White",hexColors:["#FFFFFF"]}]}]},{id:"id::40064679837860",name:"Black",sku:"201",price:25,listPrice:null,requiresShipping:!0,availableForSale:!1,options:[{__typename:"MultipleChoiceOption",id:"id::40064679837860",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]}]}],options:[{__typename:"MultipleChoiceOption",id:"id::8505918849188",displayName:"color",values:[{label:"White",hexColors:["#FFFFFF"]},{label:"Black",hexColors:["#000000"]}]}],description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.",descriptionHtml:'<meta charset="utf-8"><span>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.</span>'}]};function o(e,i){(null==i||i>e.length)&&(i=e.length);for(var t=0,a=Array(i);t<i;t++)a[t]=e[t];return a}function s(e,i,t,a,l,r,n){try{var o=e[r](n),s=o.value}catch(e){return void t(e)}o.done?i(s):Promise.resolve(s).then(a,l)}function u(e){return function(){var i=this,t=arguments;return new Promise((function(a,l){var r=e.apply(i,t);function n(e){s(r,a,l,n,o,"next",e)}function o(e){s(r,a,l,n,o,"throw",e)}n(void 0)}))}}function p(e,i){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,i){if(e){if("string"==typeof e)return o(e,i);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(e,i):void 0}}(e))||i&&e&&"number"==typeof e.length){t&&(e=t);var a=0;return function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function c(){return(c=Object.assign?Object.assign.bind():function(e){for(var i=1;i<arguments.length;i++){var t=arguments[i];for(var a in t)({}).hasOwnProperty.call(t,a)&&(e[a]=t[a])}return e}).apply(null,arguments)}function d(){d=function(){return i};var e,i={},t=Object.prototype,a=t.hasOwnProperty,l=Object.defineProperty||function(e,i,t){e[i]=t.value},r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.asyncIterator||"@@asyncIterator",s=r.toStringTag||"@@toStringTag";function u(e,i,t){return Object.defineProperty(e,i,{value:t,enumerable:!0,configurable:!0,writable:!0}),e[i]}try{u({},"")}catch(e){u=function(e,i,t){return e[i]=t}}function p(e,i,t,a){var r=Object.create((i&&i.prototype instanceof f?i:f).prototype),n=new L(a||[]);return l(r,"_invoke",{value:F(e,t,n)}),r}function c(e,i,t){try{return{type:"normal",arg:e.call(i,t)}}catch(e){return{type:"throw",arg:e}}}i.wrap=p;var m="suspendedStart",h="executing",y="completed",v={};function f(){}function g(){}function b(){}var C={};u(C,n,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(q([])));S&&S!==t&&a.call(S,n)&&(C=S);var k=b.prototype=f.prototype=Object.create(C);function w(e){["next","throw","return"].forEach((function(i){u(e,i,(function(e){return this._invoke(i,e)}))}))}function O(e,i){function t(l,r,n,o){var s=c(e[l],e,r);if("throw"!==s.type){var u=s.arg,p=u.value;return p&&"object"==typeof p&&a.call(p,"__await")?i.resolve(p.__await).then((function(e){t("next",e,n,o)}),(function(e){t("throw",e,n,o)})):i.resolve(p).then((function(e){u.value=e,n(u)}),(function(e){return t("throw",e,n,o)}))}o(s.arg)}var r;l(this,"_invoke",{value:function(e,a){function l(){return new i((function(i,l){t(e,a,i,l)}))}return r=r?r.then(l,l):l()}})}function F(i,t,a){var l=m;return function(r,n){if(l===h)throw Error("Generator is already running");if(l===y){if("throw"===r)throw n;return{value:e,done:!0}}for(a.method=r,a.arg=n;;){var o=a.delegate;if(o){var s=x(o,a);if(s){if(s===v)continue;return s}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if(l===m)throw l=y,a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);l=h;var u=c(i,t,a);if("normal"===u.type){if(l=a.done?y:"suspendedYield",u.arg===v)continue;return{value:u.arg,done:a.done}}"throw"===u.type&&(l=y,a.method="throw",a.arg=u.arg)}}}function x(i,t){var a=t.method,l=i.iterator[a];if(l===e)return t.delegate=null,"throw"===a&&i.iterator.return&&(t.method="return",t.arg=e,x(i,t),"throw"===t.method)||"return"!==a&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+a+"' method")),v;var r=c(l,i.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,v;var n=r.arg;return n?n.done?(t[i.resultName]=n.value,t.next=i.nextLoc,"return"!==t.method&&(t.method="next",t.arg=e),t.delegate=null,v):n:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,v)}function M(e){var i={tryLoc:e[0]};1 in e&&(i.catchLoc=e[1]),2 in e&&(i.finallyLoc=e[2],i.afterLoc=e[3]),this.tryEntries.push(i)}function N(e){var i=e.completion||{};i.type="normal",delete i.arg,e.completion=i}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(M,this),this.reset(!0)}function q(i){if(i||""===i){var t=i[n];if(t)return t.call(i);if("function"==typeof i.next)return i;if(!isNaN(i.length)){var l=-1,r=function t(){for(;++l<i.length;)if(a.call(i,l))return t.value=i[l],t.done=!1,t;return t.value=e,t.done=!0,t};return r.next=r}}throw new TypeError(typeof i+" is not iterable")}return g.prototype=b,l(k,"constructor",{value:b,configurable:!0}),l(b,"constructor",{value:g,configurable:!0}),g.displayName=u(b,s,"GeneratorFunction"),i.isGeneratorFunction=function(e){var i="function"==typeof e&&e.constructor;return!!i&&(i===g||"GeneratorFunction"===(i.displayName||i.name))},i.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,u(e,s,"GeneratorFunction")),e.prototype=Object.create(k),e},i.awrap=function(e){return{__await:e}},w(O.prototype),u(O.prototype,o,(function(){return this})),i.AsyncIterator=O,i.async=function(e,t,a,l,r){void 0===r&&(r=Promise);var n=new O(p(e,t,a,l),r);return i.isGeneratorFunction(t)?n:n.next().then((function(e){return e.done?e.value:n.next()}))},w(k),u(k,s,"Generator"),u(k,n,(function(){return this})),u(k,"toString",(function(){return"[object Generator]"})),i.keys=function(e){var i=Object(e),t=[];for(var a in i)t.push(a);return t.reverse(),function e(){for(;t.length;){var a=t.pop();if(a in i)return e.value=a,e.done=!1,e}return e.done=!0,e}},i.values=q,L.prototype={constructor:L,reset:function(i){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(N),!i)for(var t in this)"t"===t.charAt(0)&&a.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(i){if(this.done)throw i;var t=this;function l(a,l){return o.type="throw",o.arg=i,t.next=a,l&&(t.method="next",t.arg=e),!!l}for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r],o=n.completion;if("root"===n.tryLoc)return l("end");if(n.tryLoc<=this.prev){var s=a.call(n,"catchLoc"),u=a.call(n,"finallyLoc");if(s&&u){if(this.prev<n.catchLoc)return l(n.catchLoc,!0);if(this.prev<n.finallyLoc)return l(n.finallyLoc)}else if(s){if(this.prev<n.catchLoc)return l(n.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<n.finallyLoc)return l(n.finallyLoc)}}}},abrupt:function(e,i){for(var t=this.tryEntries.length-1;t>=0;--t){var l=this.tryEntries[t];if(l.tryLoc<=this.prev&&a.call(l,"finallyLoc")&&this.prev<l.finallyLoc){var r=l;break}}r&&("break"===e||"continue"===e)&&r.tryLoc<=i&&i<=r.finallyLoc&&(r=null);var n=r?r.completion:{};return n.type=e,n.arg=i,r?(this.method="next",this.next=r.finallyLoc,v):this.complete(n)},complete:function(e,i){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&i&&(this.next=i),v},finish:function(e){for(var i=this.tryEntries.length-1;i>=0;--i){var t=this.tryEntries[i];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),N(t),v}},catch:function(e){for(var i=this.tryEntries.length-1;i>=0;--i){var t=this.tryEntries[i];if(t.tryLoc===e){var a=t.completion;if("throw"===a.type){var l=a.arg;N(t)}return l}}throw Error("illegal catch attempt")},delegateYield:function(i,t,a){return this.delegate={iterator:q(i),resultName:t,nextLoc:a},"next"===this.method&&(this.arg=e),v}},i}var m=function(e){var i;e=null!=(i=e)?i:r.get("localCartId");var t=r.get("localCartObj"),a=t?JSON.parse(t):void 0;return a&&a.id===e?a.cart:function(){var e={id:"",createdAt:"",currency:{code:"USD"},taxesIncluded:!1,lineItems:[],lineItemsSubtotalPrice:0,subtotalPrice:0,totalPrice:0},i=Date.now().toString();return r.set("localCartId",i),r.set("localCartObj",JSON.stringify({id:i,cart:e})),e}()},h=function(e,i,t){switch(t){case"price-asc":return e.price.value<i.price.value?-1:1;case"price-desc":return e.price.value<i.price.value?1:-1;case"trending-desc":return e.id.localeCompare(i.id);case"latest-desc":return-1*e.id.localeCompare(i.id);default:return 0}},y={locale:"en-us",cartCookie:"localCartId",fetcher:function(){var e=u(d().mark((function e(){var i;return d().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("FETCHER"),e.next=3,fetch("./data.json");case 3:if(!(i=e.sent).ok){e.next=10;break}return e.next=7,i.json();case 7:return e.abrupt("return",e.sent.data);case 10:throw i;case 11:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),cart:{useCart:{fetchOptions:{query:"use-cart"},fetcher:function(e){return u(d().mark((function i(){return d().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.abrupt("return",m(e.input.cartId));case 2:case"end":return i.stop()}}),i)})))()},useHook:function(e){var i=e.useData;return function(e){var t=i({swrOptions:c({revalidateOnFocus:!1},null==e?void 0:e.swrOptions)});return a.useMemo((function(){return Object.create(t,{isEmpty:{get:function(){var e,i;return(null!=(e=null==(i=t.data)?void 0:i.lineItems.length)?e:0)<=0},enumerable:!0}})}),[t])}}},useAddItem:{fetchOptions:{query:"use-add-item"},fetcher:function(e){return u(d().mark((function i(){var t,a,o,s,u,c,h,y,v,f;return d().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(!(a=e.input).quantity||Number.isInteger(a.quantity)&&!(a.quantity<1)){i.next=3;break}throw new l.CommerceError({message:"The item quantity has to be a valid integer greater than 0"});case 3:for(o={variantId:a.variantId,quantity:null!=(t=a.quantity)?t:1},s=m(),u=p(n.products);!(c=u()).done;)(y=(h=c.value).variants.find((function(e){return e.id===a.variantId})))&&(s.totalPrice+=y.price*(null!=(v=a.quantity)?v:1),s.currency.code=h.price.currencyCode,(f=s.lineItems.find((function(e){return e.variantId===o.variantId})))?f.quantity+=o.quantity:s.lineItems.push(o));return i.abrupt("return",(d=s,r.set("localCartObj",JSON.stringify({id:r.get("localCartId"),cart:d})),d));case 7:case"end":return i.stop()}var d}),i)})))()},useHook:function(e){var i=e.fetch;return function(){var e=l.useCart().mutate;return t.useCallback(function(){var t=u(d().mark((function t(a){var l;return d().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,i({input:a});case 2:return l=t.sent,t.next=5,e(l,!1);case 5:return t.abrupt("return",l);case 6:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),[i,e])}}},useUpdateItem:{fetchOptions:{query:""},fetcher:function(e){return u(d().mark((function e(){return d().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case 1:case"end":return e.stop()}}),e)})))()},useHook:function(e){return function(){return function(){var e=u(d().mark((function e(){return d().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",{});case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()}}},useRemoveItem:{fetchOptions:{query:""},fetcher:function(e){return u(d().mark((function e(){return d().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case 1:case"end":return e.stop()}}),e)})))()},useHook:function(e){return function(){return function(){var e=u(d().mark((function e(i){return d().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",{});case 1:case"end":return e.stop()}}),e)})));return function(i){return e.apply(this,arguments)}}()}}}},products:{useSearch:{fetchOptions:{query:"use-search"},fetcher:function(e){return u(d().mark((function i(){var t,a,l,r,o,s,u,p;return d().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return a=(t=e.input).search,r=t.brandId,o=t.sort,s=t.count,u=n.products,(l=t.categoryId)&&(p=n.categories.find((function(e){return e.id===l})),u=n.products.filter((function(e){var i;return null==p||null==(i=p.products)?void 0:i.includes(e.id)}))),r&&(u=u.filter((function(e){return e.vendor.replace(/\s+/g,"-").toLowerCase()===(""+r).toLowerCase()}))),a&&(u=u.filter((function(e){return e.name.toLowerCase().includes((""+a).toLowerCase())||e.slug.toLowerCase().includes((""+a).toLowerCase())}))),o&&(u=u.sort((function(e,i){return h(e,i,o)}))),i.abrupt("return",{products:u.slice(0,s),found:u.length>0});case 8:case"end":return i.stop()}}),i)})))()},useHook:function(e){var i=e.useData;return function(e){return void 0===e&&(e={}),i({input:[["search",e.search],["prefixSearch",e.prefixSearch],["categoryId",e.categoryId],["brandId",e.brandId],["sort",e.sort],["locale",e.locale],["count",e.count]],swrOptions:c({revalidateOnFocus:!1},e.swrOptions)})}}},useProduct:{fetchOptions:{query:"use-product"},fetcher:function(e){return u(d().mark((function i(){var t,a;return d().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return a=e.input.id,i.abrupt("return",null!=(t=n.products.find((function(e){return[e.id,e.slug].includes(a)})))?t:null);case 3:case"end":return i.stop()}}),i)})))()},useHook:function(e){var i=e.useData;return function(e){return void 0===e&&(e={}),i({input:[["id",e.id]],swrOptions:c({revalidateOnFocus:!1},e.swrOptions)})}}}},site:{useCategories:{fetchOptions:{query:"use-categories"},fetcher:function(e){return u(d().mark((function i(){var t,a;return d().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(t=e.input.categoryId){i.next=4;break}return i.abrupt("return",n.categories);case 4:return a=n.categories.find((function(e){return e.id===t})),i.abrupt("return",a?[a]:[]);case 6:case"end":return i.stop()}}),i)})))()},useHook:function(e){var i=e.useData;return function(e){var t=i({input:[["categoryId",null==e?void 0:e.categoryId]],swrOptions:c({revalidateOnFocus:!1},null==e?void 0:e.swrOptions)});return a.useMemo((function(){return Object.create(t,{isEmpty:{get:function(){var e,i;return(null!=(e=null==(i=t.data)?void 0:i.length)?e:0)<=0},enumerable:!0}})}),[t])}}},useBrands:{fetchOptions:{query:"use-brands"},fetcher:function(e){return u(d().mark((function e(){var i;return d().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=n.products.map((function(e){return e.vendor})),e.abrupt("return",Array.from(new Set(i).values()).map((function(e){var i=e.replace(/\s+/g,"-").toLowerCase();return{entityId:i,name:e,path:"brands/"+i}})));case 3:case"end":return e.stop()}}),e)})))()},useHook:function(e){var i=e.useData;return function(e){var t=i({swrOptions:c({revalidateOnFocus:!1},null==e?void 0:e.swrOptions)});return a.useMemo((function(){return Object.create(t,{isEmpty:{get:function(){var e,i;return(null!=(e=null==(i=t.data)?void 0:i.length)?e:0)<=0},enumerable:!0}})}),[t])}}}}},v=l.getCommerceProvider(y),f={name:"plasmic-commerce-local-provider",displayName:"Local Provider",props:{},importPath:"@plasmicpkgs/commerce-local",importName:"CommerceProviderComponent"};function g(e){return a.createElement(v,null,e.children)}function b(e,t){!function(){e?e.registerGlobalContext.apply(e,arguments):i.apply(void 0,arguments)}(g,null!=t?t:f)}exports.CommerceProvider=v,exports.data=n,exports.localProvider=y,exports.registerAll=function(e){b(e)},exports.registerCommerceProvider=b,exports.useCommerce=function(){return l.useCommerce()};
|
|
1
|
+
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var i=e(require("@plasmicapp/host/registerGlobalContext")),a=require("react"),l=e(a),t=require("@plasmicpkgs/commerce"),r=e(require("js-cookie")),o={categories:[{id:"id::270412710052",name:"New Arrivals",slug:"clothes",path:"/clothes",isEmpty:!1,products:["id::5447323812004","id::5447324270756","id::5447324729508","id::5447325024420","id::6621772644516"]},{id:"id::271211167908",name:"Featured",slug:"featured",path:"/featured",isEmpty:!1,products:["id::5447323156644","id::5447323812004","id::6621772644516"]}],products:[{id:"id::5447322697892",name:"Special Edition T-Shirt",vendor:"ACME",path:"/conf-shirt",slug:"conf-shirt",price:{value:50,currencyCode:"USD"},images:[{url:"https://static1.plasmic.app/commerce/conf-shirt-0.png",altText:null,width:958,height:1e3},{url:"https://static1.plasmic.app/commerce/conf-shirt-1.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/conf-shirt-2.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/conf-shirt-3.png",altText:null,width:1e3,height:1e3}],variants:[{id:"id::40047332688036",name:"Black / S",sku:"",price:200,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40047332688036",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40047332688036",displayName:"size",values:[{label:"S"}]}]},{id:"id::40009056387236",name:"Black / M",sku:"",price:200,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40009056387236",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40009056387236",displayName:"size",values:[{label:"M"}]}]},{id:"id::40064229212324",name:"Black / L",sku:"",price:200,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40064229212324",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40064229212324",displayName:"size",values:[{label:"L"}]}]},{id:"id::40073451602084",name:"Black / XL",sku:"",price:50,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40073451602084",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40073451602084",displayName:"size",values:[{label:"XL"}]}]},{id:"id::40073450061988",name:"Black / XXL",sku:"",price:50,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40073450061988",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40073450061988",displayName:"size",values:[{label:"XXL"}]}]}],options:[{__typename:"MultipleChoiceOption",id:"id::6940501311652",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::6940501278884",displayName:"size",values:[{label:"S"},{label:"M"},{label:"L"},{label:"XL"},{label:"XXL"}]}],description:"Show off your love for Next.js and Vercel with this unique, limited edition t-shirt. This design is part of a limited run, numbered drop at the June 2021 Next.js Conf. It features a unique, handcrafted triangle design. Get it while supplies last – only 200 of these shirts will be made! All proceeds will be donated to charity.",descriptionHtml:'<p><meta charset="utf-8"><span>Show off your love for Next.js and Vercel with this unique, </span><strong>limited edition</strong><span> t-shirt. This design is part of a limited run, numbered drop at the June 2021 Next.js Conf. It features a unique, handcrafted triangle design. Get it while supplies last – only 200 of these shirts will be made! </span><strong>All proceeds will be donated to charity.</strong></p>'},{id:"id::5447323156644",name:"Quarter Zip",vendor:"ACME",path:"/quarter-zip",slug:"quarter-zip",price:{value:90,currencyCode:"USD"},images:[{url:"https://static1.plasmic.app/commerce/quarter-zip-0.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/quarter-zip-1.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/quarter-zip-2.png",altText:null,width:1e3,height:1e3}],variants:[{id:"id::40065999569060",name:"Black / S",sku:"",price:90,listPrice:20,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40065999569060",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40065999569060",displayName:"size",values:[{label:"S"}]}]},{id:"id::40008984756388",name:"Black / M",sku:"",price:90,listPrice:20,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40008984756388",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40008984756388",displayName:"size",values:[{label:"M"}]}]},{id:"id::40065122828452",name:"Black / L",sku:"",price:90,listPrice:20,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40065122828452",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40065122828452",displayName:"size",values:[{label:"L"}]}]},{id:"id::40065123713188",name:"Black / XL",sku:"",price:90,listPrice:20,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40065123713188",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40065123713188",displayName:"size",values:[{label:"XL"}]}]},{id:"id::40065125286052",name:"Black / XXL",sku:"",price:90,listPrice:20,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40065125286052",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::40065125286052",displayName:"size",values:[{label:"XXL"}]}]}],options:[{__typename:"MultipleChoiceOption",id:"id::6940501835940",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]},{__typename:"MultipleChoiceOption",id:"id::6940501803172",displayName:"size",values:[{label:"S"},{label:"M"},{label:"L"},{label:"XL"},{label:"XXL"}]}],description:"Show off your love for Next.js and Vercel with this unique, limited edition quarter zip. This design is part of a limited run, numbered drop at the June 2021 Next.js Conf. It features a unique, handcrafted triangle design. Get it while supplies last – only 200 of these shirts will be made! All proceeds will be donated to charity.",descriptionHtml:"<p>Show off your love for Next.js and Vercel with this unique, <strong>limited edition</strong> quarter zip. This design is part of a limited run, numbered drop at the June 2021 Next.js Conf. It features a unique, handcrafted triangle design. Get it while supplies last – only 200 of these shirts will be made! <strong>All proceeds will be donated to charity.</strong></p>"},{id:"id::5447323812004",name:"Sticker",vendor:"ACME",path:"/sticker",slug:"sticker",price:{value:0,currencyCode:"USD"},images:[{url:"https://static1.plasmic.app/commerce/sticker-0.png",altText:null,width:900,height:900}],variants:[{id:"id::40008892580004",name:"Gradient",sku:"",price:0,listPrice:60,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40008892580004",displayName:"color",values:[{label:"Gradient"}]}]}],options:[{__typename:"MultipleChoiceOption",id:"id::6940502524068",displayName:"color",values:[{label:"Gradient"}]}],description:"Wafer cupcake candy macaroon bonbon candy canes cheesecake candy. Donut chupa chups sesame snaps candy chocolate cake chocolate cake danish. Tart cotton candy gummies cotton candy sweet roll. Wafer pie chocolate cake. Caramels toffee gummies. Liquorice sweet oat cake chocolate candy canes toffee bear claw. Chocolate cupcake wafer. Halvah soufflé halvah. Dessert pastry toffee apple pie chocolate cake lemon drops. Tart carrot cake wafer halvah tiramisu fruitcake.",descriptionHtml:'<p><meta charset="utf-8">Wafer cupcake candy macaroon bonbon candy canes cheesecake candy. Donut chupa chups sesame snaps candy chocolate cake chocolate cake danish. Tart cotton candy gummies cotton candy sweet roll. Wafer pie chocolate cake. Caramels toffee gummies. Liquorice sweet oat cake chocolate candy canes toffee bear claw. Chocolate cupcake wafer. Halvah soufflé halvah. Dessert pastry toffee apple pie chocolate cake lemon drops. Tart carrot cake wafer halvah tiramisu fruitcake.<br></p>'},{id:"id::5447324270756",name:"Bomber Jacket",vendor:"Next.js",path:"/bomber-jacket",slug:"bomber-jacket",price:{value:635.99,currencyCode:"USD"},images:[{url:"https://static1.plasmic.app/commerce/bomber-jacket-0.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/bomber-jacket-1.png",altText:null,width:1e3,height:1e3}],variants:[{id:"id::40046243905700",name:"L / Black",sku:"",price:635.99,listPrice:5200,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046243905700",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046243905700",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]}]},{id:"id::40046243938468",name:"L / DarkOliveGreen",sku:"",price:635.99,listPrice:5200,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046243938468",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046243938468",displayName:"color",values:[{label:"DarkOliveGreen",hexColors:["#556B2F"]}]}]},{id:"id::40046243971236",name:"XL / Black",sku:"",price:635.99,listPrice:5200,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046243971236",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046243971236",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]}]},{id:"id::40046244004004",name:"XL / DarkOliveGreen",sku:"",price:635.99,listPrice:5200,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046244004004",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046244004004",displayName:"color",values:[{label:"DarkOliveGreen",hexColors:["#556B2F"]}]}]},{id:"id::40046244036772",name:"XXL / Black",sku:"",price:635.99,listPrice:5200,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046244036772",displayName:"size",values:[{label:"XXL"}]},{__typename:"MultipleChoiceOption",id:"id::40046244036772",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]}]},{id:"id::40046244069540",name:"XXL / DarkOliveGreen",sku:"",price:635.99,listPrice:5200,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046244069540",displayName:"size",values:[{label:"XXL"}]},{__typename:"MultipleChoiceOption",id:"id::40046244069540",displayName:"color",values:[{label:"DarkOliveGreen",hexColors:["#556B2F"]}]}]}],options:[{__typename:"MultipleChoiceOption",id:"id::6940503015588",displayName:"size",values:[{label:"L"},{label:"XL"},{label:"XXL"}]},{__typename:"MultipleChoiceOption",id:"id::8655769764004",displayName:"color",values:[{label:"Black",hexColors:["#000000"]},{label:"DarkOliveGreen",hexColors:["#556B2F"]}]}],description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.",descriptionHtml:"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.</p>"},{id:"id::5447324729508",name:"Short Sleeve T-Shirt",vendor:"Next.js",path:"/short-sleeve-t-shirt",slug:"short-sleeve-t-shirt",price:{value:35,currencyCode:"USD"},images:[{url:"https://static1.plasmic.app/commerce/short-sleeve-t-shirt-0.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/short-sleeve-t-shirt-1.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/short-sleeve-t-shirt-2.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/short-sleeve-t-shirt-3.png",altText:null,width:1e3,height:1e3}],variants:[{id:"id::35180690669732",name:"M / gray",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::35180690669732",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::35180690669732",displayName:"color",values:[{label:"gray",hexColors:["#808080"]}]}]},{id:"id::35180690702500",name:"L / gray",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::35180690702500",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::35180690702500",displayName:"color",values:[{label:"gray",hexColors:["#808080"]}]}]},{id:"id::35180690735268",name:"XL / gray",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::35180690735268",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::35180690735268",displayName:"color",values:[{label:"gray",hexColors:["#808080"]}]}]},{id:"id::40046203437220",name:"M / beige",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046203437220",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::40046203437220",displayName:"color",values:[{label:"beige",hexColors:["#F5F5DC"]}]}]},{id:"id::40046207369380",name:"L / beige",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046207369380",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046207369380",displayName:"color",values:[{label:"beige",hexColors:["#F5F5DC"]}]}]},{id:"id::40046207729828",name:"XL / beige",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046207729828",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046207729828",displayName:"color",values:[{label:"beige",hexColors:["#F5F5DC"]}]}]},{id:"id::40046212612260",name:"M / white",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046212612260",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::40046212612260",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046212907172",name:"L / white",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046212907172",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046212907172",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046213300388",name:"XL / white",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046213300388",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046213300388",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046214742180",name:"M / DarkTurquoise",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046214742180",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::40046214742180",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]},{id:"id::40046218346660",name:"L / DarkTurquoise",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046218346660",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046218346660",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]},{id:"id::40046220214436",name:"XL / DarkTurquoise",sku:"",price:35,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046220214436",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046220214436",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]}],options:[{__typename:"MultipleChoiceOption",id:"id::6940503474340",displayName:"size",values:[{label:"M"},{label:"L"},{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::8655761178788",displayName:"color",values:[{label:"gray",hexColors:["#808080"]},{label:"beige",hexColors:["#F5F5DC"]},{label:"white",hexColors:["#FFFFFF"]},{label:"DarkTurquoise",hexColors:["#00CED1"]}]}],description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.",descriptionHtml:"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.</p>"},{id:"id::5447325024420",name:"New Short Sleeve T-Shirt",vendor:"Next.js",path:"/new-short-sleeve-t-shirt",slug:"new-short-sleeve-t-shirt",price:{value:25,currencyCode:"USD"},images:[{url:"https://static1.plasmic.app/commerce/new-short-sleeve-t-shirt-0.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/new-short-sleeve-t-shirt-1.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/new-short-sleeve-t-shirt-2.png",altText:null,width:1e3,height:1e3},{url:"https://static1.plasmic.app/commerce/new-short-sleeve-t-shirt-3.png",altText:null,width:1e3,height:1e3}],variants:[{id:"id::40046230962340",name:"XS / white",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046230962340",displayName:"size",values:[{label:"XS"}]},{__typename:"MultipleChoiceOption",id:"id::40046230962340",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046230995108",name:"XS / grey",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046230995108",displayName:"size",values:[{label:"XS"}]},{__typename:"MultipleChoiceOption",id:"id::40046230995108",displayName:"color",values:[{label:"grey",hexColors:["#808080"]}]}]},{id:"id::40046231027876",name:"XS / DarkTurquoise",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231027876",displayName:"size",values:[{label:"XS"}]},{__typename:"MultipleChoiceOption",id:"id::40046231027876",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]},{id:"id::40046231060644",name:"XS / LightSalmon",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231060644",displayName:"size",values:[{label:"XS"}]},{__typename:"MultipleChoiceOption",id:"id::40046231060644",displayName:"color",values:[{label:"LightSalmon",hexColors:["#FFA07A"]}]}]},{id:"id::40046231093412",name:"S / white",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231093412",displayName:"size",values:[{label:"S"}]},{__typename:"MultipleChoiceOption",id:"id::40046231093412",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046231126180",name:"S / grey",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231126180",displayName:"size",values:[{label:"S"}]},{__typename:"MultipleChoiceOption",id:"id::40046231126180",displayName:"color",values:[{label:"grey",hexColors:["#808080"]}]}]},{id:"id::40046231158948",name:"S / DarkTurquoise",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231158948",displayName:"size",values:[{label:"S"}]},{__typename:"MultipleChoiceOption",id:"id::40046231158948",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]},{id:"id::40046231191716",name:"S / LightSalmon",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231191716",displayName:"size",values:[{label:"S"}]},{__typename:"MultipleChoiceOption",id:"id::40046231191716",displayName:"color",values:[{label:"LightSalmon",hexColors:["#FFA07A"]}]}]},{id:"id::40046231224484",name:"M / white",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231224484",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::40046231224484",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046231257252",name:"M / grey",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231257252",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::40046231257252",displayName:"color",values:[{label:"grey",hexColors:["#808080"]}]}]},{id:"id::40046231290020",name:"M / DarkTurquoise",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231290020",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::40046231290020",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]},{id:"id::40046231322788",name:"M / LightSalmon",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231322788",displayName:"size",values:[{label:"M"}]},{__typename:"MultipleChoiceOption",id:"id::40046231322788",displayName:"color",values:[{label:"LightSalmon",hexColors:["#FFA07A"]}]}]},{id:"id::40046231355556",name:"L / white",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231355556",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046231355556",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046231388324",name:"L / grey",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231388324",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046231388324",displayName:"color",values:[{label:"grey",hexColors:["#808080"]}]}]},{id:"id::40046231421092",name:"L / DarkTurquoise",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231421092",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046231421092",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]},{id:"id::40046231453860",name:"L / LightSalmon",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231453860",displayName:"size",values:[{label:"L"}]},{__typename:"MultipleChoiceOption",id:"id::40046231453860",displayName:"color",values:[{label:"LightSalmon",hexColors:["#FFA07A"]}]}]},{id:"id::40046231486628",name:"XL / white",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231486628",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046231486628",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]}]}]},{id:"id::40046231519396",name:"XL / grey",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231519396",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046231519396",displayName:"color",values:[{label:"grey",hexColors:["#808080"]}]}]},{id:"id::40046231552164",name:"XL / DarkTurquoise",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231552164",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046231552164",displayName:"color",values:[{label:"DarkTurquoise",hexColors:["#00CED1"]}]}]},{id:"id::40046231584932",name:"XL / LightSalmon",sku:"",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40046231584932",displayName:"size",values:[{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::40046231584932",displayName:"color",values:[{label:"LightSalmon",hexColors:["#FFA07A"]}]}]}],options:[{__typename:"MultipleChoiceOption",id:"id::6940503769252",displayName:"size",values:[{label:"XS"},{label:"S"},{label:"M"},{label:"L"},{label:"XL"}]},{__typename:"MultipleChoiceOption",id:"id::8655765471396",displayName:"color",values:[{label:"white",hexColors:["#FFFFFF"]},{label:"grey",hexColors:["#808080"]},{label:"DarkTurquoise",hexColors:["#00CED1"]},{label:"LightSalmon",hexColors:["#FFA07A"]}]}],description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.",descriptionHtml:"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.<br></p>"},{id:"id::6621772644516",name:"ACME Cup",vendor:"ACME",path:"/acme-cup",slug:"acme-cup",price:{value:25,currencyCode:"USD"},images:[{url:"https://static1.plasmic.app/commerce/acme-cup-0.png",altText:null,width:2048,height:2048},{url:"https://static1.plasmic.app/commerce/acme-cup-1.png",altText:null,width:2048,height:2048}],variants:[{id:"id::40064679805092",name:"White",sku:"200",price:25,listPrice:null,requiresShipping:!0,availableForSale:!0,options:[{__typename:"MultipleChoiceOption",id:"id::40064679805092",displayName:"color",values:[{label:"White",hexColors:["#FFFFFF"]}]}]},{id:"id::40064679837860",name:"Black",sku:"201",price:25,listPrice:null,requiresShipping:!0,availableForSale:!1,options:[{__typename:"MultipleChoiceOption",id:"id::40064679837860",displayName:"color",values:[{label:"Black",hexColors:["#000000"]}]}]}],options:[{__typename:"MultipleChoiceOption",id:"id::8505918849188",displayName:"color",values:[{label:"White",hexColors:["#FFFFFF"]},{label:"Black",hexColors:["#000000"]}]}],description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.",descriptionHtml:'<meta charset="utf-8"><span>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.</span>'}]};function n(e,i){(null==i||i>e.length)&&(i=e.length);for(var a=0,l=Array(i);a<i;a++)l[a]=e[a];return l}function s(e,i,a,l,t,r,o){try{var n=e[r](o),s=n.value}catch(e){return void a(e)}n.done?i(s):Promise.resolve(s).then(l,t)}function u(e){return function(){var i=this,a=arguments;return new Promise((function(l,t){var r=e.apply(i,a);function o(e){s(r,l,t,o,n,"next",e)}function n(e){s(r,l,t,o,n,"throw",e)}o(void 0)}))}}function p(e,i){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(a)return(a=a.call(e)).next.bind(a);if(Array.isArray(e)||(a=function(e,i){if(e){if("string"==typeof e)return n(e,i);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?n(e,i):void 0}}(e))||i&&e&&"number"==typeof e.length){a&&(e=a);var l=0;return function(){return l>=e.length?{done:!0}:{done:!1,value:e[l++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function c(){return(c=Object.assign?Object.assign.bind():function(e){for(var i=1;i<arguments.length;i++){var a=arguments[i];for(var l in a)({}).hasOwnProperty.call(a,l)&&(e[l]=a[l])}return e}).apply(null,arguments)}function d(){var e,i,a="function"==typeof Symbol?Symbol:{},l=a.iterator||"@@iterator",t=a.toStringTag||"@@toStringTag";function r(a,l,t,r){var s=Object.create((l&&l.prototype instanceof n?l:n).prototype);return m(s,"_invoke",function(a,l,t){var r,n,s,u=0,p=t||[],c=!1,d={p:0,n:0,v:e,a:m,f:m.bind(e,4),d:function(i,a){return r=i,n=0,s=e,d.n=a,o}};function m(a,l){for(n=a,s=l,i=0;!c&&u&&!t&&i<p.length;i++){var t,r=p[i],m=d.p,h=r[2];a>3?(t=h===l)&&(s=r[(n=r[4])?5:(n=3,3)],r[4]=r[5]=e):r[0]<=m&&((t=a<2&&m<r[1])?(n=0,d.v=l,d.n=r[1]):m<h&&(t=a<3||r[0]>l||l>h)&&(r[4]=a,r[5]=l,d.n=h,n=0))}if(t||a>1)return o;throw c=!0,l}return function(t,p,h){if(u>1)throw TypeError("Generator is already running");for(c&&1===p&&m(p,h),n=p,s=h;(i=n<2?e:s)||!c;){r||(n?n<3?(n>1&&(d.n=-1),m(n,s)):d.n=s:d.v=s);try{if(u=2,r){if(n||(t="next"),i=r[t]){if(!(i=i.call(r,s)))throw TypeError("iterator result is not an object");if(!i.done)return i;s=i.value,n<2&&(n=0)}else 1===n&&(i=r.return)&&i.call(r),n<2&&(s=TypeError("The iterator does not provide a '"+t+"' method"),n=1);r=e}else if((i=(c=d.n<0)?s:a.call(l,d))!==o)break}catch(i){r=e,n=1,s=i}finally{u=1}}return{value:i,done:c}}}(a,t,r),!0),s}var o={};function n(){}function s(){}function u(){}i=Object.getPrototypeOf;var p=[][l]?i(i([][l]())):(m(i={},l,(function(){return this})),i),c=u.prototype=n.prototype=Object.create(p);function h(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,m(e,t,"GeneratorFunction")),e.prototype=Object.create(c),e}return s.prototype=u,m(c,"constructor",u),m(u,"constructor",s),s.displayName="GeneratorFunction",m(u,t,"GeneratorFunction"),m(c),m(c,t,"Generator"),m(c,l,(function(){return this})),m(c,"toString",(function(){return"[object Generator]"})),(d=function(){return{w:r,m:h}})()}function m(e,i,a,l){var t=Object.defineProperty;try{t({},"",{})}catch(e){t=0}(m=function(e,i,a,l){function r(i,a){m(e,i,(function(e){return this._invoke(i,a,e)}))}i?t?t(e,i,{value:a,enumerable:!l,configurable:!l,writable:!l}):e[i]=a:(r("next",0),r("throw",1),r("return",2))})(e,i,a,l)}var h=function(e){e=null!=e?e:r.get("localCartId");var i=r.get("localCartObj"),a=i?JSON.parse(i):void 0;return a&&a.id===e?a.cart:function(){var e={id:"",createdAt:"",currency:{code:"USD"},taxesIncluded:!1,lineItems:[],lineItemsSubtotalPrice:0,subtotalPrice:0,totalPrice:0},i=Date.now().toString();return r.set("localCartId",i),r.set("localCartObj",JSON.stringify({id:i,cart:e})),e}()},y=function(e,i,a){switch(a){case"price-asc":return e.price.value<i.price.value?-1:1;case"price-desc":return e.price.value<i.price.value?1:-1;case"trending-desc":return e.id.localeCompare(i.id);case"latest-desc":return-1*e.id.localeCompare(i.id);default:return 0}},v={locale:"en-us",cartCookie:"localCartId",fetcher:function(){var e=u(d().m((function e(){var i;return d().w((function(e){for(;;)switch(e.n){case 0:return console.log("FETCHER"),e.n=1,fetch("./data.json");case 1:if(!(i=e.v).ok){e.n=3;break}return e.n=2,i.json();case 2:return e.a(2,e.v.data);case 3:throw i;case 4:return e.a(2)}}),e)})));return function(){return e.apply(this,arguments)}}(),cart:{useCart:{fetchOptions:{query:"use-cart"},fetcher:function(e){return u(d().m((function i(){return d().w((function(i){for(;;)switch(i.n){case 0:return i.a(2,h(e.input.cartId))}}),i)})))()},useHook:function(e){var i=e.useData;return function(e){var a=i({swrOptions:c({revalidateOnFocus:!1},null==e?void 0:e.swrOptions)});return l.useMemo((function(){return Object.create(a,{isEmpty:{get:function(){var e,i;return(null!=(e=null==(i=a.data)?void 0:i.lineItems.length)?e:0)<=0},enumerable:!0}})}),[a])}}},useAddItem:{fetchOptions:{query:"use-add-item"},fetcher:function(e){return u(d().m((function i(){var a,l,n,s,u,c,m,y,v,f;return d().w((function(i){for(;;)switch(i.n){case 0:if(!(l=e.input).quantity||Number.isInteger(l.quantity)&&!(l.quantity<1)){i.n=1;break}throw new t.CommerceError({message:"The item quantity has to be a valid integer greater than 0"});case 1:for(n={variantId:l.variantId,quantity:null!=(a=l.quantity)?a:1},s=h(),u=p(o.products);!(c=u()).done;)(y=(m=c.value).variants.find((function(e){return e.id===l.variantId})))&&(s.totalPrice+=y.price*(null!=(v=l.quantity)?v:1),s.currency.code=m.price.currencyCode,(f=s.lineItems.find((function(e){return e.variantId===n.variantId})))?f.quantity+=n.quantity:s.lineItems.push(n));return i.a(2,(d=s,r.set("localCartObj",JSON.stringify({id:r.get("localCartId"),cart:d})),d))}var d}),i)})))()},useHook:function(e){var i=e.fetch;return function(){var e=t.useCart().mutate;return a.useCallback(function(){var a=u(d().m((function a(l){var t;return d().w((function(a){for(;;)switch(a.n){case 0:return a.n=1,i({input:l});case 1:return t=a.v,a.n=2,e(t,!1);case 2:return a.a(2,t)}}),a)})));return function(e){return a.apply(this,arguments)}}(),[i,e])}}},useUpdateItem:{fetchOptions:{query:""},fetcher:function(e){return u(d().m((function e(){return d().w((function(e){for(;;)switch(e.n){case 0:case 1:return e.a(2)}}),e)})))()},useHook:function(e){return function(){return function(){var e=u(d().m((function e(){return d().w((function(e){for(;;)switch(e.n){case 0:return e.a(2,{})}}),e)})));return function(){return e.apply(this,arguments)}}()}}},useRemoveItem:{fetchOptions:{query:""},fetcher:function(e){return u(d().m((function e(){return d().w((function(e){for(;;)switch(e.n){case 0:case 1:return e.a(2)}}),e)})))()},useHook:function(e){return function(){return function(){var e=u(d().m((function e(i){return d().w((function(e){for(;;)switch(e.n){case 0:return e.a(2,{})}}),e)})));return function(i){return e.apply(this,arguments)}}()}}}},products:{useSearch:{fetchOptions:{query:"use-search"},fetcher:function(e){return u(d().m((function i(){var a,l,t,r,n,s,u,p;return d().w((function(i){for(;;)switch(i.n){case 0:return l=(a=e.input).search,r=a.brandId,n=a.sort,s=a.count,u=o.products,(t=a.categoryId)&&(p=o.categories.find((function(e){return e.id===t})),u=o.products.filter((function(e){var i;return null==p||null==(i=p.products)?void 0:i.includes(e.id)}))),r&&(u=u.filter((function(e){return e.vendor.replace(/\s+/g,"-").toLowerCase()===(""+r).toLowerCase()}))),l&&(u=u.filter((function(e){return e.name.toLowerCase().includes((""+l).toLowerCase())||e.slug.toLowerCase().includes((""+l).toLowerCase())}))),n&&(u=u.sort((function(e,i){return y(e,i,n)}))),i.a(2,{products:u.slice(0,s),found:u.length>0})}}),i)})))()},useHook:function(e){var i=e.useData;return function(e){return void 0===e&&(e={}),i({input:[["search",e.search],["prefixSearch",e.prefixSearch],["categoryId",e.categoryId],["brandId",e.brandId],["sort",e.sort],["locale",e.locale],["count",e.count]],swrOptions:c({revalidateOnFocus:!1},e.swrOptions)})}}},useProduct:{fetchOptions:{query:"use-product"},fetcher:function(e){return u(d().m((function i(){var a,l;return d().w((function(i){for(;;)switch(i.n){case 0:return l=e.input.id,i.a(2,null!=(a=o.products.find((function(e){return[e.id,e.slug].includes(l)})))?a:null)}}),i)})))()},useHook:function(e){var i=e.useData;return function(e){return void 0===e&&(e={}),i({input:[["id",e.id]],swrOptions:c({revalidateOnFocus:!1},e.swrOptions)})}}}},site:{useCategories:{fetchOptions:{query:"use-categories"},fetcher:function(e){return u(d().m((function i(){var a,l;return d().w((function(i){for(;;)switch(i.n){case 0:if(a=e.input.categoryId){i.n=1;break}return i.a(2,o.categories);case 1:return l=o.categories.find((function(e){return e.id===a})),i.a(2,l?[l]:[])}}),i)})))()},useHook:function(e){var i=e.useData;return function(e){var a=i({input:[["categoryId",null==e?void 0:e.categoryId]],swrOptions:c({revalidateOnFocus:!1},null==e?void 0:e.swrOptions)});return l.useMemo((function(){return Object.create(a,{isEmpty:{get:function(){var e,i;return(null!=(e=null==(i=a.data)?void 0:i.length)?e:0)<=0},enumerable:!0}})}),[a])}}},useBrands:{fetchOptions:{query:"use-brands"},fetcher:function(e){return u(d().m((function e(){var i;return d().w((function(e){for(;;)switch(e.n){case 0:return i=o.products.map((function(e){return e.vendor})),e.a(2,Array.from(new Set(i).values()).map((function(e){var i=e.replace(/\s+/g,"-").toLowerCase();return{entityId:i,name:e,path:"brands/"+i}})))}}),e)})))()},useHook:function(e){var i=e.useData;return function(e){var a=i({swrOptions:c({revalidateOnFocus:!1},null==e?void 0:e.swrOptions)});return l.useMemo((function(){return Object.create(a,{isEmpty:{get:function(){var e,i;return(null!=(e=null==(i=a.data)?void 0:i.length)?e:0)<=0},enumerable:!0}})}),[a])}}}}},f=t.getCommerceProvider(v),b={name:"plasmic-commerce-local-provider",displayName:"Local Provider",props:{},importPath:"@plasmicpkgs/commerce-local",importName:"CommerceProviderComponent"};function g(e){return l.createElement(f,null,e.children)}function C(e,a){!function(){e?e.registerGlobalContext.apply(e,arguments):i.apply(void 0,arguments)}(g,null!=a?a:b)}exports.CommerceProvider=f,exports.data=o,exports.localProvider=v,exports.registerAll=function(e){C(e)},exports.registerCommerceProvider=C,exports.useCommerce=function(){return t.useCommerce()};
|
|
2
2
|
//# sourceMappingURL=commerce-local.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commerce-local.cjs.production.min.js","sources":["../src/fetcher.ts","../src/utils/cart.ts","../src/const.ts","../src/utils/sort-product.ts","../src/provider.ts","../src/cart/use-cart.tsx","../src/cart/use-add-item.tsx","../src/cart/use-update-item.tsx","../src/cart/use-remove-item.tsx","../src/product/use-search.tsx","../src/product/use-product.tsx","../src/site/use-categories.ts","../src/site/use-brands.ts","../src/local.ts","../src/registerCommerceProvider.tsx","../src/index.tsx"],"sourcesContent":["import { Fetcher } from '@plasmicpkgs/commerce';\n\nexport const fetcher: Fetcher = async () => {\n console.log('FETCHER')\n const res = await fetch('./data.json')\n if (res.ok) {\n const { data } = await res.json()\n return data\n }\n throw res\n}\n","import { CartType } from \"@plasmicpkgs/commerce\";\nimport Cookies from \"js-cookie\";\nimport { LOCAL_CART_ID, LOCAL_CART_OBJ } from \"../const\";\n\nconst options: Cookies.CookieAttributes = {\n sameSite: \"none\",\n secure: true,\n};\n\nexport const createCart: () => CartType.Cart = () => {\n const cart = {\n id: \"\",\n createdAt: \"\",\n currency: { code: \"USD\" },\n taxesIncluded: false,\n lineItems: [],\n lineItemsSubtotalPrice: 0,\n subtotalPrice: 0,\n totalPrice: 0,\n };\n\n const cartId = Date.now().toString();\n\n Cookies.set(LOCAL_CART_ID, cartId);\n Cookies.set(\n LOCAL_CART_OBJ,\n JSON.stringify({\n id: cartId,\n cart,\n })\n );\n\n return cart;\n};\n\nexport const getCart: (cartId?: string) => CartType.Cart = (\n cartId?: string\n) => {\n cartId = cartId ?? Cookies.get(LOCAL_CART_ID);\n const cartStr = Cookies.get(LOCAL_CART_OBJ);\n const cart = cartStr ? JSON.parse(cartStr) : undefined;\n\n if (!cart || cart.id !== cartId) {\n return createCart();\n } else {\n return cart.cart;\n }\n};\n\nexport const cartUpdate = (newCart: CartType.Cart) => {\n Cookies.set(\n LOCAL_CART_OBJ,\n JSON.stringify({\n id: Cookies.get(LOCAL_CART_ID),\n cart: newCart,\n })\n );\n\n return newCart;\n};\n","export const LOCAL_CART_OBJ = \"localCartObj\";\n\nexport const LOCAL_CART_ID = \"localCartId\";\n","import data from \"../data.json\";\n\nexport const sortProduct = (\n a: typeof data.products[0],\n b: typeof data.products[0],\n sortKey: string\n) => {\n switch (sortKey) {\n case \"price-asc\":\n return a.price.value < b.price.value ? -1 : 1;\n case \"price-desc\":\n return a.price.value < b.price.value ? 1 : -1;\n case \"trending-desc\":\n return a.id.localeCompare(b.id);\n case \"latest-desc\":\n return a.id.localeCompare(b.id) * -1;\n default:\n return 0;\n }\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: Removed authentication, customer and wishlist hooks\n*/\nimport { fetcher } from './fetcher'\nimport { handler as useCart } from './cart/use-cart'\nimport { handler as useAddItem } from './cart/use-add-item'\nimport { handler as useUpdateItem } from './cart/use-update-item'\nimport { handler as useRemoveItem } from './cart/use-remove-item'\nimport { handler as useSearch } from './product/use-search'\nimport { handler as useProduct } from './product/use-product'\nimport { handler as useCategories } from './site/use-categories'\nimport { handler as useBrands } from './site/use-brands'\nimport { LOCAL_CART_ID } from './const'\nexport const localProvider = {\n locale: 'en-us',\n cartCookie: LOCAL_CART_ID,\n fetcher: fetcher,\n cart: { useCart, useAddItem, useUpdateItem, useRemoveItem },\n products: { useSearch, useProduct },\n site: { useCategories, useBrands }\n}\n\nexport type LocalProvider = typeof localProvider\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes:\n - Before: just returned an empty cart.\n - Now: Read cart from local storage.\n*/\nimport { SWRHook, useCart, UseCart } from \"@plasmicpkgs/commerce\";\nimport React from \"react\";\nimport { getCart } from \"../utils/cart\";\n\nexport default useCart as UseCart<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-cart\",\n },\n async fetcher({ input, options, fetch }) {\n return getCart(input.cartId);\n },\n useHook: ({ useData }) => (input) => {\n const response = useData({\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n });\n return React.useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.lineItems.length ?? 0) <= 0;\n },\n enumerable: true,\n },\n }),\n [response]\n );\n },\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes:\n - Implemented a local cart\n - The items are added to local storage.\n*/\nimport {\n CommerceError,\n MutationHook,\n useAddItem,\n UseAddItem,\n} from \"@plasmicpkgs/commerce\";\nimport { useCallback } from \"react\";\nimport data from \"../data.json\";\nimport { cartUpdate, getCart } from \"../utils/cart\";\nimport useCart from \"./use-cart\";\n\nexport default useAddItem as UseAddItem<typeof handler>;\nexport const handler: MutationHook<any> = {\n fetchOptions: {\n query: \"use-add-item\",\n },\n async fetcher({ input: item, options, fetch }) {\n if (\n item.quantity &&\n (!Number.isInteger(item.quantity) || item.quantity! < 1)\n ) {\n throw new CommerceError({\n message: \"The item quantity has to be a valid integer greater than 0\",\n });\n }\n\n const lineItem = {\n variantId: item.variantId,\n quantity: item.quantity ?? 1,\n };\n\n const cart = getCart();\n for (const product of data.products) {\n const variant = (product.variants as any[]).find(\n (variant) => variant.id === item.variantId\n );\n if (variant) {\n cart.totalPrice += variant.price * (item.quantity ?? 1);\n cart.currency.code = product.price.currencyCode;\n const currentLineItem = cart.lineItems.find(\n (item) => item.variantId === lineItem.variantId\n );\n if (!currentLineItem) {\n cart.lineItems.push(lineItem as any);\n } else {\n currentLineItem.quantity += lineItem.quantity;\n }\n }\n }\n\n return cartUpdate(cart);\n },\n useHook: ({ fetch }) => () => {\n const { mutate } = useCart();\n return useCallback(\n async function addItem(input) {\n const data = await fetch({ input });\n await mutate(data, false);\n return data;\n },\n [fetch, mutate]\n );\n },\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: None\n*/\nimport { MutationHook } from '@plasmicpkgs/commerce'\nimport { useUpdateItem,\n UseUpdateItem,\n} from '@plasmicpkgs/commerce'\n\nexport default useUpdateItem as UseUpdateItem<any>\n\nexport const handler: MutationHook<any> = {\n fetchOptions: {\n query: '',\n },\n async fetcher({ input, options, fetch }) {},\n useHook:\n ({ fetch }) =>\n () => {\n return async function addItem() {\n return {}\n }\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: None\n*/\nimport { MutationHook } from '@plasmicpkgs/commerce'\nimport {useRemoveItem,\n UseRemoveItem,\n} from '@plasmicpkgs/commerce'\n\nexport default useRemoveItem as UseRemoveItem<typeof handler>\n\nexport const handler: MutationHook<any> = {\n fetchOptions: {\n query: '',\n },\n async fetcher({ input, options, fetch }) {},\n useHook:\n ({ fetch }) =>\n () => {\n return async function removeItem(input) {\n return {}\n }\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: None\n*/\nimport { SWRHook, useSearch, UseSearch } from \"@plasmicpkgs/commerce\";\nimport data from \"../data.json\";\nimport { sortProduct } from \"../utils/sort-product\";\nconst useSearchTyped: UseSearch<typeof handler> = useSearch;\nexport default useSearchTyped;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-search\",\n },\n async fetcher({ input, options, fetch }) {\n const { search, categoryId, brandId, sort, count } = input;\n\n let products = data.products;\n\n if (categoryId) {\n const category = data.categories.find(\n (category) => category.id === categoryId\n );\n products = data.products.filter((product) =>\n category?.products?.includes(product.id)\n );\n }\n\n if (brandId) {\n products = products.filter(\n (product) =>\n product.vendor.replace(/\\s+/g, \"-\").toLowerCase() ===\n `${brandId}`.toLowerCase()\n );\n }\n\n if (search) {\n products = products.filter(\n (product) =>\n product.name.toLowerCase().includes(`${search}`.toLowerCase()) ||\n product.slug.toLowerCase().includes(`${search}`.toLowerCase())\n );\n }\n\n if (sort) {\n products = products.sort((a, b) => sortProduct(a, b, sort));\n }\n\n return {\n products: products.slice(0, count),\n found: products.length > 0,\n };\n },\n useHook:\n ({ useData }) =>\n (input = {}) => {\n return useData({\n input: [\n [\"search\", input.search],\n [\"prefixSearch\", input.prefixSearch],\n [\"categoryId\", input.categoryId],\n [\"brandId\", input.brandId],\n [\"sort\", input.sort],\n [\"locale\", input.locale],\n [\"count\", input.count],\n ],\n swrOptions: {\n revalidateOnFocus: false,\n ...input.swrOptions,\n },\n });\n },\n};\n","import { SWRHook, useProduct, UseProduct } from \"@plasmicpkgs/commerce\";\nimport data from \"../data.json\";\nexport default useProduct as UseProduct<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-product\",\n },\n async fetcher({ input, options, fetch }) {\n const { id } = input;\n\n return (\n data.products.find((product) =>\n [product.id, product.slug].includes(id)\n ) ?? null\n );\n },\n useHook: ({ useData }) => (input = {}) => {\n return useData({\n input: [[\"id\", input.id]],\n swrOptions: {\n revalidateOnFocus: false,\n ...input.swrOptions,\n },\n });\n },\n};\n","import { SWRHook, useCategories, UseCategories } from \"@plasmicpkgs/commerce\";\nimport React from \"react\";\nimport data from \"../data.json\";\nexport default useCategories as UseCategories<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-categories\",\n },\n async fetcher({ input, options, fetch }) {\n const { categoryId } = input;\n if (!categoryId) {\n return data.categories;\n }\n const category = data.categories.find(\n (category) => category.id === categoryId\n );\n return category ? [category] : [];\n },\n useHook: ({ useData }) => (input) => {\n const response = useData({\n input: [[\"categoryId\", input?.categoryId]],\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n });\n return React.useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.length ?? 0) <= 0;\n },\n enumerable: true,\n },\n }),\n [response]\n );\n },\n};\n","import { SWRHook, useBrands, UseBrands } from \"@plasmicpkgs/commerce\";\nimport React from \"react\";\nimport data from \"../data.json\";\nexport default useBrands as UseBrands<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-brands\",\n },\n async fetcher({ input, options, fetch }) {\n const vendorsStrings = data.products.map((product) => product.vendor);\n return Array.from(new Set(vendorsStrings).values()).map((v) => {\n const id = v.replace(/\\s+/g, \"-\").toLowerCase();\n return {\n entityId: id,\n name: v,\n path: `brands/${id}`,\n };\n });\n },\n useHook: ({ useData }) => (input) => {\n const response = useData({\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n });\n return React.useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.length ?? 0) <= 0;\n },\n enumerable: true,\n },\n }),\n [response]\n );\n },\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: Add export data\n*/\nexport * from \"./registerable\";\nexport { localProvider, data };\nexport type { LocalProvider };\nimport {\n getCommerceProvider,\n useCommerce as useCoreCommerce,\n} from \"@plasmicpkgs/commerce\";\nimport data from \"./data.json\";\nimport { localProvider, LocalProvider } from \"./provider\";\n\nexport const CommerceProvider = getCommerceProvider(localProvider);\n\nexport const useCommerce = () => useCoreCommerce<LocalProvider>();\n","import { GlobalContextMeta } from \"@plasmicapp/host\";\nimport registerGlobalContext from \"@plasmicapp/host/registerGlobalContext\";\nimport React from \"react\";\nimport { CommerceProvider } from \"./local\";\nimport { Registerable } from \"./registerable\";\n\ninterface CommerceProviderProps {\n children?: React.ReactNode;\n}\n\nexport const commerceProviderMeta: GlobalContextMeta<CommerceProviderProps> = {\n name: \"plasmic-commerce-local-provider\",\n displayName: \"Local Provider\",\n props: {},\n importPath: \"@plasmicpkgs/commerce-local\",\n importName: \"CommerceProviderComponent\",\n};\n\nfunction CommerceProviderComponent(props: CommerceProviderProps) {\n return <CommerceProvider>{props.children}</CommerceProvider>;\n}\n\nexport function registerCommerceProvider(\n loader?: Registerable,\n customCommerceProviderMeta?: GlobalContextMeta<CommerceProviderProps>\n) {\n const doRegisterComponent: typeof registerGlobalContext = (...args) =>\n loader\n ? loader.registerGlobalContext(...args)\n : registerGlobalContext(...args);\n doRegisterComponent(\n CommerceProviderComponent,\n customCommerceProviderMeta ?? commerceProviderMeta\n );\n}\n","import { Registerable } from \"./registerable\";\nimport { registerCommerceProvider } from \"./registerCommerceProvider\";\nexport * from \"./registerable\";\n\nexport * from \"./local\";\n\nexport function registerAll(loader?: Registerable) {\n registerCommerceProvider(loader);\n}\n\nexport { registerCommerceProvider };"],"names":["getCart","cartId","_cartId","Cookies","get","cartStr","cart","JSON","parse","undefined","id","createdAt","currency","code","taxesIncluded","lineItems","lineItemsSubtotalPrice","subtotalPrice","totalPrice","Date","now","toString","set","stringify","createCart","sortProduct","a","b","sortKey","price","value","localeCompare","localProvider","locale","cartCookie","fetcher","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","res","wrap","_context","prev","next","console","log","fetch","sent","ok","json","abrupt","data","stop","apply","arguments","useCart","fetchOptions","query","input","useHook","_ref2","useData","response","swrOptions","_extends","revalidateOnFocus","React","useMemo","Object","create","isEmpty","_response$data$lineIt","_response$data","length","enumerable","useAddItem","item","quantity","Number","isInteger","CommerceError","message","lineItem","variantId","_item$quantity","_iterator","_createForOfIteratorHelperLoose","products","_step","done","variant","product","variants","find","_item$quantity2","currencyCode","currentLineItem","push","newCart","mutate","useCallback","_addItem","_callee2","_context2","_x","useUpdateItem","useRemoveItem","_removeItem","useSearch","search","brandId","sort","count","categoryId","category","categories","filter","_category$products","includes","vendor","replace","toLowerCase","name","slug","slice","found","prefixSearch","useProduct","_data$products$find","site","useCategories","_response$data$length","useBrands","vendorsStrings","map","Array","from","Set","values","v","entityId","path","CommerceProvider","getCommerceProvider","commerceProviderMeta","displayName","props","importPath","importName","CommerceProviderComponent","children","registerCommerceProvider","loader","customCommerceProviderMeta","registerGlobalContext","doRegisterComponent","useCoreCommerce"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commerce-local.cjs.production.min.js","sources":["../src/fetcher.ts","../src/utils/cart.ts","../src/const.ts","../src/utils/sort-product.ts","../src/provider.ts","../src/cart/use-cart.tsx","../src/cart/use-add-item.tsx","../src/cart/use-update-item.tsx","../src/cart/use-remove-item.tsx","../src/product/use-search.tsx","../src/product/use-product.tsx","../src/site/use-categories.ts","../src/site/use-brands.ts","../src/local.ts","../src/registerCommerceProvider.tsx","../src/index.tsx"],"sourcesContent":["import { Fetcher } from '@plasmicpkgs/commerce';\n\nexport const fetcher: Fetcher = async () => {\n console.log('FETCHER')\n const res = await fetch('./data.json')\n if (res.ok) {\n const { data } = await res.json()\n return data\n }\n throw res\n}\n","import { CartType } from \"@plasmicpkgs/commerce\";\nimport Cookies from \"js-cookie\";\nimport { LOCAL_CART_ID, LOCAL_CART_OBJ } from \"../const\";\n\nconst options: Cookies.CookieAttributes = {\n sameSite: \"none\",\n secure: true,\n};\n\nexport const createCart: () => CartType.Cart = () => {\n const cart = {\n id: \"\",\n createdAt: \"\",\n currency: { code: \"USD\" },\n taxesIncluded: false,\n lineItems: [],\n lineItemsSubtotalPrice: 0,\n subtotalPrice: 0,\n totalPrice: 0,\n };\n\n const cartId = Date.now().toString();\n\n Cookies.set(LOCAL_CART_ID, cartId);\n Cookies.set(\n LOCAL_CART_OBJ,\n JSON.stringify({\n id: cartId,\n cart,\n })\n );\n\n return cart;\n};\n\nexport const getCart: (cartId?: string) => CartType.Cart = (\n cartId?: string\n) => {\n cartId = cartId ?? Cookies.get(LOCAL_CART_ID);\n const cartStr = Cookies.get(LOCAL_CART_OBJ);\n const cart = cartStr ? JSON.parse(cartStr) : undefined;\n\n if (!cart || cart.id !== cartId) {\n return createCart();\n } else {\n return cart.cart;\n }\n};\n\nexport const cartUpdate = (newCart: CartType.Cart) => {\n Cookies.set(\n LOCAL_CART_OBJ,\n JSON.stringify({\n id: Cookies.get(LOCAL_CART_ID),\n cart: newCart,\n })\n );\n\n return newCart;\n};\n","export const LOCAL_CART_OBJ = \"localCartObj\";\n\nexport const LOCAL_CART_ID = \"localCartId\";\n","import data from \"../data.json\";\n\nexport const sortProduct = (\n a: typeof data.products[0],\n b: typeof data.products[0],\n sortKey: string\n) => {\n switch (sortKey) {\n case \"price-asc\":\n return a.price.value < b.price.value ? -1 : 1;\n case \"price-desc\":\n return a.price.value < b.price.value ? 1 : -1;\n case \"trending-desc\":\n return a.id.localeCompare(b.id);\n case \"latest-desc\":\n return a.id.localeCompare(b.id) * -1;\n default:\n return 0;\n }\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: Removed authentication, customer and wishlist hooks\n*/\nimport { fetcher } from './fetcher'\nimport { handler as useCart } from './cart/use-cart'\nimport { handler as useAddItem } from './cart/use-add-item'\nimport { handler as useUpdateItem } from './cart/use-update-item'\nimport { handler as useRemoveItem } from './cart/use-remove-item'\nimport { handler as useSearch } from './product/use-search'\nimport { handler as useProduct } from './product/use-product'\nimport { handler as useCategories } from './site/use-categories'\nimport { handler as useBrands } from './site/use-brands'\nimport { LOCAL_CART_ID } from './const'\nexport const localProvider = {\n locale: 'en-us',\n cartCookie: LOCAL_CART_ID,\n fetcher: fetcher,\n cart: { useCart, useAddItem, useUpdateItem, useRemoveItem },\n products: { useSearch, useProduct },\n site: { useCategories, useBrands }\n}\n\nexport type LocalProvider = typeof localProvider\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes:\n - Before: just returned an empty cart.\n - Now: Read cart from local storage.\n*/\nimport { SWRHook, useCart, UseCart } from \"@plasmicpkgs/commerce\";\nimport React from \"react\";\nimport { getCart } from \"../utils/cart\";\n\nexport default useCart as UseCart<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-cart\",\n },\n async fetcher({ input, options, fetch }) {\n return getCart(input.cartId);\n },\n useHook: ({ useData }) => (input) => {\n const response = useData({\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n });\n return React.useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.lineItems.length ?? 0) <= 0;\n },\n enumerable: true,\n },\n }),\n [response]\n );\n },\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes:\n - Implemented a local cart\n - The items are added to local storage.\n*/\nimport {\n CommerceError,\n MutationHook,\n useAddItem,\n UseAddItem,\n} from \"@plasmicpkgs/commerce\";\nimport { useCallback } from \"react\";\nimport data from \"../data.json\";\nimport { cartUpdate, getCart } from \"../utils/cart\";\nimport useCart from \"./use-cart\";\n\nexport default useAddItem as UseAddItem<typeof handler>;\nexport const handler: MutationHook<any> = {\n fetchOptions: {\n query: \"use-add-item\",\n },\n async fetcher({ input: item, options, fetch }) {\n if (\n item.quantity &&\n (!Number.isInteger(item.quantity) || item.quantity! < 1)\n ) {\n throw new CommerceError({\n message: \"The item quantity has to be a valid integer greater than 0\",\n });\n }\n\n const lineItem = {\n variantId: item.variantId,\n quantity: item.quantity ?? 1,\n };\n\n const cart = getCart();\n for (const product of data.products) {\n const variant = (product.variants as any[]).find(\n (variant) => variant.id === item.variantId\n );\n if (variant) {\n cart.totalPrice += variant.price * (item.quantity ?? 1);\n cart.currency.code = product.price.currencyCode;\n const currentLineItem = cart.lineItems.find(\n (item) => item.variantId === lineItem.variantId\n );\n if (!currentLineItem) {\n cart.lineItems.push(lineItem as any);\n } else {\n currentLineItem.quantity += lineItem.quantity;\n }\n }\n }\n\n return cartUpdate(cart);\n },\n useHook: ({ fetch }) => () => {\n const { mutate } = useCart();\n return useCallback(\n async function addItem(input) {\n const data = await fetch({ input });\n await mutate(data, false);\n return data;\n },\n [fetch, mutate]\n );\n },\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: None\n*/\nimport { MutationHook } from '@plasmicpkgs/commerce'\nimport { useUpdateItem,\n UseUpdateItem,\n} from '@plasmicpkgs/commerce'\n\nexport default useUpdateItem as UseUpdateItem<any>\n\nexport const handler: MutationHook<any> = {\n fetchOptions: {\n query: '',\n },\n async fetcher({ input, options, fetch }) {},\n useHook:\n ({ fetch }) =>\n () => {\n return async function addItem() {\n return {}\n }\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: None\n*/\nimport { MutationHook } from '@plasmicpkgs/commerce'\nimport {useRemoveItem,\n UseRemoveItem,\n} from '@plasmicpkgs/commerce'\n\nexport default useRemoveItem as UseRemoveItem<typeof handler>\n\nexport const handler: MutationHook<any> = {\n fetchOptions: {\n query: '',\n },\n async fetcher({ input, options, fetch }) {},\n useHook:\n ({ fetch }) =>\n () => {\n return async function removeItem(input) {\n return {}\n }\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: None\n*/\nimport { SWRHook, useSearch, UseSearch } from \"@plasmicpkgs/commerce\";\nimport data from \"../data.json\";\nimport { sortProduct } from \"../utils/sort-product\";\nconst useSearchTyped: UseSearch<typeof handler> = useSearch;\nexport default useSearchTyped;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-search\",\n },\n async fetcher({ input, options, fetch }) {\n const { search, categoryId, brandId, sort, count } = input;\n\n let products = data.products;\n\n if (categoryId) {\n const category = data.categories.find(\n (category) => category.id === categoryId\n );\n products = data.products.filter((product) =>\n category?.products?.includes(product.id)\n );\n }\n\n if (brandId) {\n products = products.filter(\n (product) =>\n product.vendor.replace(/\\s+/g, \"-\").toLowerCase() ===\n `${brandId}`.toLowerCase()\n );\n }\n\n if (search) {\n products = products.filter(\n (product) =>\n product.name.toLowerCase().includes(`${search}`.toLowerCase()) ||\n product.slug.toLowerCase().includes(`${search}`.toLowerCase())\n );\n }\n\n if (sort) {\n products = products.sort((a, b) => sortProduct(a, b, sort));\n }\n\n return {\n products: products.slice(0, count),\n found: products.length > 0,\n };\n },\n useHook:\n ({ useData }) =>\n (input = {}) => {\n return useData({\n input: [\n [\"search\", input.search],\n [\"prefixSearch\", input.prefixSearch],\n [\"categoryId\", input.categoryId],\n [\"brandId\", input.brandId],\n [\"sort\", input.sort],\n [\"locale\", input.locale],\n [\"count\", input.count],\n ],\n swrOptions: {\n revalidateOnFocus: false,\n ...input.swrOptions,\n },\n });\n },\n};\n","import { SWRHook, useProduct, UseProduct } from \"@plasmicpkgs/commerce\";\nimport data from \"../data.json\";\nexport default useProduct as UseProduct<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-product\",\n },\n async fetcher({ input, options, fetch }) {\n const { id } = input;\n\n return (\n data.products.find((product) =>\n [product.id, product.slug].includes(id)\n ) ?? null\n );\n },\n useHook: ({ useData }) => (input = {}) => {\n return useData({\n input: [[\"id\", input.id]],\n swrOptions: {\n revalidateOnFocus: false,\n ...input.swrOptions,\n },\n });\n },\n};\n","import { SWRHook, useCategories, UseCategories } from \"@plasmicpkgs/commerce\";\nimport React from \"react\";\nimport data from \"../data.json\";\nexport default useCategories as UseCategories<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-categories\",\n },\n async fetcher({ input, options, fetch }) {\n const { categoryId } = input;\n if (!categoryId) {\n return data.categories;\n }\n const category = data.categories.find(\n (category) => category.id === categoryId\n );\n return category ? [category] : [];\n },\n useHook: ({ useData }) => (input) => {\n const response = useData({\n input: [[\"categoryId\", input?.categoryId]],\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n });\n return React.useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.length ?? 0) <= 0;\n },\n enumerable: true,\n },\n }),\n [response]\n );\n },\n};\n","import { SWRHook, useBrands, UseBrands } from \"@plasmicpkgs/commerce\";\nimport React from \"react\";\nimport data from \"../data.json\";\nexport default useBrands as UseBrands<typeof handler>;\n\nexport const handler: SWRHook<any> = {\n fetchOptions: {\n query: \"use-brands\",\n },\n async fetcher({ input, options, fetch }) {\n const vendorsStrings = data.products.map((product) => product.vendor);\n return Array.from(new Set(vendorsStrings).values()).map((v) => {\n const id = v.replace(/\\s+/g, \"-\").toLowerCase();\n return {\n entityId: id,\n name: v,\n path: `brands/${id}`,\n };\n });\n },\n useHook: ({ useData }) => (input) => {\n const response = useData({\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n });\n return React.useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.length ?? 0) <= 0;\n },\n enumerable: true,\n },\n }),\n [response]\n );\n },\n};\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/local/src\n Changes: Add export data\n*/\nexport * from \"./registerable\";\nexport { localProvider, data };\nexport type { LocalProvider };\nimport {\n getCommerceProvider,\n useCommerce as useCoreCommerce,\n} from \"@plasmicpkgs/commerce\";\nimport data from \"./data.json\";\nimport { localProvider, LocalProvider } from \"./provider\";\n\nexport const CommerceProvider = getCommerceProvider(localProvider);\n\nexport const useCommerce = () => useCoreCommerce<LocalProvider>();\n","import { GlobalContextMeta } from \"@plasmicapp/host\";\nimport registerGlobalContext from \"@plasmicapp/host/registerGlobalContext\";\nimport React from \"react\";\nimport { CommerceProvider } from \"./local\";\nimport { Registerable } from \"./registerable\";\n\ninterface CommerceProviderProps {\n children?: React.ReactNode;\n}\n\nexport const commerceProviderMeta: GlobalContextMeta<CommerceProviderProps> = {\n name: \"plasmic-commerce-local-provider\",\n displayName: \"Local Provider\",\n props: {},\n importPath: \"@plasmicpkgs/commerce-local\",\n importName: \"CommerceProviderComponent\",\n};\n\nfunction CommerceProviderComponent(props: CommerceProviderProps) {\n return <CommerceProvider>{props.children}</CommerceProvider>;\n}\n\nexport function registerCommerceProvider(\n loader?: Registerable,\n customCommerceProviderMeta?: GlobalContextMeta<CommerceProviderProps>\n) {\n const doRegisterComponent: typeof registerGlobalContext = (...args) =>\n loader\n ? loader.registerGlobalContext(...args)\n : registerGlobalContext(...args);\n doRegisterComponent(\n CommerceProviderComponent,\n customCommerceProviderMeta ?? commerceProviderMeta\n );\n}\n","import { Registerable } from \"./registerable\";\nimport { registerCommerceProvider } from \"./registerCommerceProvider\";\nexport * from \"./registerable\";\n\nexport * from \"./local\";\n\nexport function registerAll(loader?: Registerable) {\n registerCommerceProvider(loader);\n}\n\nexport { registerCommerceProvider };"],"names":["getCart","cartId","Cookies","get","cartStr","cart","JSON","parse","undefined","id","createdAt","currency","code","taxesIncluded","lineItems","lineItemsSubtotalPrice","subtotalPrice","totalPrice","Date","now","toString","set","stringify","createCart","sortProduct","a","b","sortKey","price","value","localeCompare","localProvider","locale","cartCookie","fetcher","_ref","_asyncToGenerator","_regenerator","m","_callee","res","w","_context","n","console","log","fetch","v","ok","json","data","apply","arguments","useCart","fetchOptions","query","input","useHook","_ref2","useData","response","swrOptions","_extends","revalidateOnFocus","React","useMemo","Object","create","isEmpty","_response$data$lineIt","_response$data","length","enumerable","useAddItem","item","quantity","Number","isInteger","CommerceError","message","lineItem","variantId","_item$quantity","_iterator","_createForOfIteratorHelperLoose","products","_step","done","variant","product","variants","find","_item$quantity2","currencyCode","currentLineItem","push","newCart","mutate","useCallback","_addItem","_callee2","_context2","_x","useUpdateItem","useRemoveItem","_removeItem","useSearch","search","brandId","sort","count","categoryId","category","categories","filter","_category$products","includes","vendor","replace","toLowerCase","name","slug","slice","found","prefixSearch","useProduct","_data$products$find","site","useCategories","_response$data$length","useBrands","vendorsStrings","map","Array","from","Set","values","entityId","path","CommerceProvider","getCommerceProvider","commerceProviderMeta","displayName","props","importPath","importName","CommerceProviderComponent","children","registerCommerceProvider","loader","customCommerceProviderMeta","registerGlobalContext","doRegisterComponent","useCoreCommerce"],"mappings":"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"}
|