@plasmicpkgs/commerce 0.0.13 → 0.0.14

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.
@@ -964,6 +964,7 @@ var defaultProduct = {
964
964
 
965
965
  var ProductContext = /*#__PURE__*/React.createContext(undefined);
966
966
  var CategoryContext = /*#__PURE__*/React.createContext(undefined);
967
+ var SliderContext = /*#__PURE__*/React.createContext(undefined);
967
968
  function ProductProvider(_ref) {
968
969
  var product = _ref.product,
969
970
  children = _ref.children;
@@ -988,6 +989,20 @@ function CategoryProvider(_ref2) {
988
989
  var useCategoryContext = function useCategoryContext() {
989
990
  return useContext(CategoryContext);
990
991
  };
992
+ function ProductSliderProvider(_ref3) {
993
+ var mediaIndex = _ref3.mediaIndex,
994
+ onClick = _ref3.onClick,
995
+ children = _ref3.children;
996
+ return React.createElement(SliderContext.Provider, {
997
+ value: mediaIndex,
998
+ key: mediaIndex
999
+ }, React.cloneElement(React.isValidElement(children) ? children : React.createElement(React.Fragment, null), {
1000
+ onClick: onClick
1001
+ }));
1002
+ }
1003
+ var useProductSliderContext = function useProductSliderContext() {
1004
+ return useContext(SliderContext);
1005
+ };
991
1006
 
992
1007
  var _excluded = ["children"];
993
1008
  var Commerce = /*#__PURE__*/createContext({});
@@ -1767,6 +1782,38 @@ function registerCategoryLink(loader, customCategoryLinkMeta) {
1767
1782
  doRegisterComponent(CategoryLink, customCategoryLinkMeta != null ? customCategoryLinkMeta : categoryLinkMeta);
1768
1783
  }
1769
1784
 
1785
+ var categoryMediaMeta = {
1786
+ name: "plasmic-commerce-category-media",
1787
+ displayName: "Category Media",
1788
+ props: {
1789
+ mediaIndex: "number"
1790
+ },
1791
+ importPath: "@plasmicpkgs/commerce",
1792
+ importName: "CategoryMedia"
1793
+ };
1794
+ function CategoryMedia(props) {
1795
+ var _image$url;
1796
+
1797
+ var className = props.className,
1798
+ _props$mediaIndex = props.mediaIndex,
1799
+ mediaIndex = _props$mediaIndex === void 0 ? 0 : _props$mediaIndex;
1800
+ var category = useCategoryContext();
1801
+ var image = category != null && category.images ? category.images[mediaIndex] : undefined;
1802
+ return React.createElement("img", {
1803
+ alt: (category == null ? void 0 : category.name) || "Category Image",
1804
+ src: (_image$url = image == null ? void 0 : image.url) != null ? _image$url : "",
1805
+ loading: "lazy",
1806
+ className: className
1807
+ });
1808
+ }
1809
+ function registerCategoryMedia(loader, customCategoryMediaMeta) {
1810
+ var doRegisterComponent = function doRegisterComponent() {
1811
+ return loader ? loader.registerComponent.apply(loader, arguments) : registerComponent.apply(void 0, arguments);
1812
+ };
1813
+
1814
+ doRegisterComponent(CategoryMedia, customCategoryMediaMeta != null ? customCategoryMediaMeta : categoryMediaMeta);
1815
+ }
1816
+
1770
1817
  var fetcher$3 = SWRFetcher;
1771
1818
 
1772
1819
  var fn$3 = function fn(provider) {
@@ -2156,11 +2203,12 @@ function ProductMedia(props) {
2156
2203
  _props$mediaIndex = props.mediaIndex,
2157
2204
  mediaIndex = _props$mediaIndex === void 0 ? 0 : _props$mediaIndex;
2158
2205
  var product = useProduct();
2159
- var image = product == null ? void 0 : product.images[mediaIndex];
2206
+ var sliderContext = useProductSliderContext();
2207
+ var image = product == null ? void 0 : product.images[sliderContext != null ? sliderContext : mediaIndex];
2160
2208
  return React.createElement("img", {
2161
- alt: (product == null ? void 0 : product.name) || 'Product Image',
2209
+ alt: (product == null ? void 0 : product.name) || "Product Image",
2162
2210
  src: product ? (_image$url = image == null ? void 0 : image.url) != null ? _image$url : "" : placeholderImage,
2163
- loading: 'lazy',
2211
+ loading: "lazy",
2164
2212
  className: className
2165
2213
  });
2166
2214
  }
@@ -2256,6 +2304,90 @@ function registerProductQuantity(loader, customProductQuantityMeta) {
2256
2304
  doRegisterComponent(ProductQuantity, customProductQuantityMeta != null ? customProductQuantityMeta : productQuantityMeta);
2257
2305
  }
2258
2306
 
2307
+ var productSliderMeta = {
2308
+ name: "plasmic-commerce-product-slider",
2309
+ displayName: "Product Slider",
2310
+ props: {
2311
+ thumbsVisible: {
2312
+ type: "number",
2313
+ description: "Number of thumbs visible",
2314
+ defaultValue: 4,
2315
+ defaultValueHint: 4
2316
+ },
2317
+ slideContainer: {
2318
+ type: "slot",
2319
+ defaultValue: {
2320
+ type: "vbox",
2321
+ children: [{
2322
+ type: "component",
2323
+ name: "plasmic-commerce-product-media"
2324
+ }]
2325
+ }
2326
+ },
2327
+ thumbsContainer: {
2328
+ type: "slot",
2329
+ defaultValue: {
2330
+ type: "hbox",
2331
+ children: [{
2332
+ type: "component",
2333
+ name: "plasmic-commerce-product-media"
2334
+ }]
2335
+ }
2336
+ },
2337
+ slideSelected: {
2338
+ type: "number",
2339
+ defaultValue: 0,
2340
+ defaultValueHint: 0,
2341
+ description: "Current slide selected"
2342
+ }
2343
+ },
2344
+ importPath: "@plasmicpkgs/commerce",
2345
+ importName: "ProductSlider"
2346
+ };
2347
+ function ProductSlider(props) {
2348
+ var className = props.className,
2349
+ slideContainer = props.slideContainer,
2350
+ thumbsContainer = props.thumbsContainer,
2351
+ _props$thumbsVisible = props.thumbsVisible,
2352
+ thumbsVisible = _props$thumbsVisible === void 0 ? 4 : _props$thumbsVisible,
2353
+ _props$slideSelected = props.slideSelected,
2354
+ slideSelected = _props$slideSelected === void 0 ? 0 : _props$slideSelected;
2355
+ var product = useProduct();
2356
+
2357
+ var _React$useState = React.useState(slideSelected),
2358
+ selected = _React$useState[0],
2359
+ setSelected = _React$useState[1];
2360
+
2361
+ var maximumRight = product.images.length - thumbsVisible;
2362
+ var leftIndex = Math.min(maximumRight, Math.max(0, selected - 1));
2363
+ return React.createElement("div", {
2364
+ className: className
2365
+ }, React.createElement(ProductSliderProvider, {
2366
+ mediaIndex: selected,
2367
+ children: slideContainer
2368
+ }), React.createElement("div", {
2369
+ style: {
2370
+ display: "grid",
2371
+ gridTemplateColumns: "repeat(" + thumbsVisible + ", 1fr)"
2372
+ }
2373
+ }, product.images.slice(leftIndex, leftIndex + thumbsVisible).map(function (image, i) {
2374
+ return repeatedElement(i === 0, React.createElement(ProductSliderProvider, {
2375
+ mediaIndex: leftIndex + i,
2376
+ children: thumbsContainer,
2377
+ onClick: function onClick() {
2378
+ return setSelected(leftIndex + i);
2379
+ }
2380
+ }));
2381
+ })));
2382
+ }
2383
+ function registerProductSlider(loader, customProductSliderMeta) {
2384
+ var doRegisterComponent = function doRegisterComponent() {
2385
+ return loader ? loader.registerComponent.apply(loader, arguments) : registerComponent.apply(void 0, arguments);
2386
+ };
2387
+
2388
+ doRegisterComponent(ProductSlider, customProductSliderMeta != null ? customProductSliderMeta : productSliderMeta);
2389
+ }
2390
+
2259
2391
  var productTextFieldMeta = {
2260
2392
  name: "plasmic-commerce-product-text-field",
2261
2393
  displayName: "Product Text Field",
@@ -2288,14 +2420,14 @@ function ProductTextField(props) {
2288
2420
  var value;
2289
2421
 
2290
2422
  if (field === "description") {
2291
- return product.descriptionHtml ? React.createElement("div", {
2423
+ var _product$descriptionH;
2424
+
2425
+ return React.createElement("div", {
2292
2426
  className: className,
2293
2427
  dangerouslySetInnerHTML: {
2294
- __html: product.descriptionHtml
2428
+ __html: (_product$descriptionH = product.descriptionHtml) != null ? _product$descriptionH : product.description
2295
2429
  }
2296
- }) : React.createElement("div", {
2297
- className: className
2298
- }, product.description);
2430
+ });
2299
2431
  } else {
2300
2432
  value = product[field];
2301
2433
  }
@@ -2395,7 +2527,10 @@ var product = {
2395
2527
  __proto__: null
2396
2528
  };
2397
2529
 
2398
-
2530
+ /*
2531
+ Forked from https://github.com/vercel/commerce/tree/main/packages/commerce/src
2532
+ Changes: Added CategoryImage
2533
+ */
2399
2534
 
2400
2535
  var site = {
2401
2536
  __proto__: null
@@ -2411,10 +2546,12 @@ function registerAll(loader) {
2411
2546
  registerProductQuantity(loader);
2412
2547
  registerProductVariantPicker(loader);
2413
2548
  registerProductBox(loader);
2549
+ registerProductSlider(loader);
2414
2550
  registerProductLink(loader);
2415
2551
  registerCategoryCollection(loader);
2416
2552
  registerCategoryField(loader);
2417
2553
  registerCategoryLink(loader);
2554
+ registerCategoryMedia(loader);
2418
2555
  }
2419
2556
 
2420
2557
  export { AddToCartButton, CartComponent, cart as CartType, CategoryCollection, CategoryField, CategoryLink, CommerceError, CoreCommerceProvider, FetcherError, ProductBox, ProductCollection, ProductLink, ProductMedia, defaultProduct as ProductPlaceholder, ProductPriceComponent, ProductQuantity, ProductTextField, product as ProductTypes, ProductVariantPicker, site as SiteTypes, ValidationError, addToCartButtonMeta, cartMeta, categoryCollectionMeta, categoryFieldMeta, categoryLinkMeta, fetcher$4 as fetcher, getCommerceProvider, productBoxMeta, productCollectionMeta, productLinkMeta, productMediaMeta, productPriceMeta, productQuantityMeta, productTextFieldMeta, productVariantPickerMeta, registerAddToCartButton, registerAll, registerCart, registerCategoryCollection, registerCategoryField, registerCategoryLink, registerProductBox, registerProductCollection, registerProductLink, registerProductMedia, registerProductPrice, registerProductQuantity, registerProductVariantPicker, registerTextField, useAddItem, useBrands, useCart, useCategories, useCommerce, useProduct$1 as useProduct, useRemoveItem, useSearch, useUpdateItem };