@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.
@@ -971,6 +971,7 @@ var defaultProduct = {
971
971
 
972
972
  var ProductContext = /*#__PURE__*/React__default.createContext(undefined);
973
973
  var CategoryContext = /*#__PURE__*/React__default.createContext(undefined);
974
+ var SliderContext = /*#__PURE__*/React__default.createContext(undefined);
974
975
  function ProductProvider(_ref) {
975
976
  var product = _ref.product,
976
977
  children = _ref.children;
@@ -995,6 +996,20 @@ function CategoryProvider(_ref2) {
995
996
  var useCategoryContext = function useCategoryContext() {
996
997
  return React.useContext(CategoryContext);
997
998
  };
999
+ function ProductSliderProvider(_ref3) {
1000
+ var mediaIndex = _ref3.mediaIndex,
1001
+ onClick = _ref3.onClick,
1002
+ children = _ref3.children;
1003
+ return React__default.createElement(SliderContext.Provider, {
1004
+ value: mediaIndex,
1005
+ key: mediaIndex
1006
+ }, React__default.cloneElement(React__default.isValidElement(children) ? children : React__default.createElement(React__default.Fragment, null), {
1007
+ onClick: onClick
1008
+ }));
1009
+ }
1010
+ var useProductSliderContext = function useProductSliderContext() {
1011
+ return React.useContext(SliderContext);
1012
+ };
998
1013
 
999
1014
  var _excluded = ["children"];
1000
1015
  var Commerce = /*#__PURE__*/React.createContext({});
@@ -1774,6 +1789,38 @@ function registerCategoryLink(loader, customCategoryLinkMeta) {
1774
1789
  doRegisterComponent(CategoryLink, customCategoryLinkMeta != null ? customCategoryLinkMeta : categoryLinkMeta);
1775
1790
  }
1776
1791
 
1792
+ var categoryMediaMeta = {
1793
+ name: "plasmic-commerce-category-media",
1794
+ displayName: "Category Media",
1795
+ props: {
1796
+ mediaIndex: "number"
1797
+ },
1798
+ importPath: "@plasmicpkgs/commerce",
1799
+ importName: "CategoryMedia"
1800
+ };
1801
+ function CategoryMedia(props) {
1802
+ var _image$url;
1803
+
1804
+ var className = props.className,
1805
+ _props$mediaIndex = props.mediaIndex,
1806
+ mediaIndex = _props$mediaIndex === void 0 ? 0 : _props$mediaIndex;
1807
+ var category = useCategoryContext();
1808
+ var image = category != null && category.images ? category.images[mediaIndex] : undefined;
1809
+ return React__default.createElement("img", {
1810
+ alt: (category == null ? void 0 : category.name) || "Category Image",
1811
+ src: (_image$url = image == null ? void 0 : image.url) != null ? _image$url : "",
1812
+ loading: "lazy",
1813
+ className: className
1814
+ });
1815
+ }
1816
+ function registerCategoryMedia(loader, customCategoryMediaMeta) {
1817
+ var doRegisterComponent = function doRegisterComponent() {
1818
+ return loader ? loader.registerComponent.apply(loader, arguments) : registerComponent.apply(void 0, arguments);
1819
+ };
1820
+
1821
+ doRegisterComponent(CategoryMedia, customCategoryMediaMeta != null ? customCategoryMediaMeta : categoryMediaMeta);
1822
+ }
1823
+
1777
1824
  var fetcher$3 = SWRFetcher;
1778
1825
 
1779
1826
  var fn$3 = function fn(provider) {
@@ -2163,11 +2210,12 @@ function ProductMedia(props) {
2163
2210
  _props$mediaIndex = props.mediaIndex,
2164
2211
  mediaIndex = _props$mediaIndex === void 0 ? 0 : _props$mediaIndex;
2165
2212
  var product = useProduct();
2166
- var image = product == null ? void 0 : product.images[mediaIndex];
2213
+ var sliderContext = useProductSliderContext();
2214
+ var image = product == null ? void 0 : product.images[sliderContext != null ? sliderContext : mediaIndex];
2167
2215
  return React__default.createElement("img", {
2168
- alt: (product == null ? void 0 : product.name) || 'Product Image',
2216
+ alt: (product == null ? void 0 : product.name) || "Product Image",
2169
2217
  src: product ? (_image$url = image == null ? void 0 : image.url) != null ? _image$url : "" : placeholderImage,
2170
- loading: 'lazy',
2218
+ loading: "lazy",
2171
2219
  className: className
2172
2220
  });
2173
2221
  }
@@ -2263,6 +2311,90 @@ function registerProductQuantity(loader, customProductQuantityMeta) {
2263
2311
  doRegisterComponent(ProductQuantity, customProductQuantityMeta != null ? customProductQuantityMeta : productQuantityMeta);
2264
2312
  }
2265
2313
 
2314
+ var productSliderMeta = {
2315
+ name: "plasmic-commerce-product-slider",
2316
+ displayName: "Product Slider",
2317
+ props: {
2318
+ thumbsVisible: {
2319
+ type: "number",
2320
+ description: "Number of thumbs visible",
2321
+ defaultValue: 4,
2322
+ defaultValueHint: 4
2323
+ },
2324
+ slideContainer: {
2325
+ type: "slot",
2326
+ defaultValue: {
2327
+ type: "vbox",
2328
+ children: [{
2329
+ type: "component",
2330
+ name: "plasmic-commerce-product-media"
2331
+ }]
2332
+ }
2333
+ },
2334
+ thumbsContainer: {
2335
+ type: "slot",
2336
+ defaultValue: {
2337
+ type: "hbox",
2338
+ children: [{
2339
+ type: "component",
2340
+ name: "plasmic-commerce-product-media"
2341
+ }]
2342
+ }
2343
+ },
2344
+ slideSelected: {
2345
+ type: "number",
2346
+ defaultValue: 0,
2347
+ defaultValueHint: 0,
2348
+ description: "Current slide selected"
2349
+ }
2350
+ },
2351
+ importPath: "@plasmicpkgs/commerce",
2352
+ importName: "ProductSlider"
2353
+ };
2354
+ function ProductSlider(props) {
2355
+ var className = props.className,
2356
+ slideContainer = props.slideContainer,
2357
+ thumbsContainer = props.thumbsContainer,
2358
+ _props$thumbsVisible = props.thumbsVisible,
2359
+ thumbsVisible = _props$thumbsVisible === void 0 ? 4 : _props$thumbsVisible,
2360
+ _props$slideSelected = props.slideSelected,
2361
+ slideSelected = _props$slideSelected === void 0 ? 0 : _props$slideSelected;
2362
+ var product = useProduct();
2363
+
2364
+ var _React$useState = React__default.useState(slideSelected),
2365
+ selected = _React$useState[0],
2366
+ setSelected = _React$useState[1];
2367
+
2368
+ var maximumRight = product.images.length - thumbsVisible;
2369
+ var leftIndex = Math.min(maximumRight, Math.max(0, selected - 1));
2370
+ return React__default.createElement("div", {
2371
+ className: className
2372
+ }, React__default.createElement(ProductSliderProvider, {
2373
+ mediaIndex: selected,
2374
+ children: slideContainer
2375
+ }), React__default.createElement("div", {
2376
+ style: {
2377
+ display: "grid",
2378
+ gridTemplateColumns: "repeat(" + thumbsVisible + ", 1fr)"
2379
+ }
2380
+ }, product.images.slice(leftIndex, leftIndex + thumbsVisible).map(function (image, i) {
2381
+ return host.repeatedElement(i === 0, React__default.createElement(ProductSliderProvider, {
2382
+ mediaIndex: leftIndex + i,
2383
+ children: thumbsContainer,
2384
+ onClick: function onClick() {
2385
+ return setSelected(leftIndex + i);
2386
+ }
2387
+ }));
2388
+ })));
2389
+ }
2390
+ function registerProductSlider(loader, customProductSliderMeta) {
2391
+ var doRegisterComponent = function doRegisterComponent() {
2392
+ return loader ? loader.registerComponent.apply(loader, arguments) : registerComponent.apply(void 0, arguments);
2393
+ };
2394
+
2395
+ doRegisterComponent(ProductSlider, customProductSliderMeta != null ? customProductSliderMeta : productSliderMeta);
2396
+ }
2397
+
2266
2398
  var productTextFieldMeta = {
2267
2399
  name: "plasmic-commerce-product-text-field",
2268
2400
  displayName: "Product Text Field",
@@ -2295,14 +2427,14 @@ function ProductTextField(props) {
2295
2427
  var value;
2296
2428
 
2297
2429
  if (field === "description") {
2298
- return product.descriptionHtml ? React__default.createElement("div", {
2430
+ var _product$descriptionH;
2431
+
2432
+ return React__default.createElement("div", {
2299
2433
  className: className,
2300
2434
  dangerouslySetInnerHTML: {
2301
- __html: product.descriptionHtml
2435
+ __html: (_product$descriptionH = product.descriptionHtml) != null ? _product$descriptionH : product.description
2302
2436
  }
2303
- }) : React__default.createElement("div", {
2304
- className: className
2305
- }, product.description);
2437
+ });
2306
2438
  } else {
2307
2439
  value = product[field];
2308
2440
  }
@@ -2402,7 +2534,10 @@ var product = {
2402
2534
  __proto__: null
2403
2535
  };
2404
2536
 
2405
-
2537
+ /*
2538
+ Forked from https://github.com/vercel/commerce/tree/main/packages/commerce/src
2539
+ Changes: Added CategoryImage
2540
+ */
2406
2541
 
2407
2542
  var site = {
2408
2543
  __proto__: null
@@ -2418,10 +2553,12 @@ function registerAll(loader) {
2418
2553
  registerProductQuantity(loader);
2419
2554
  registerProductVariantPicker(loader);
2420
2555
  registerProductBox(loader);
2556
+ registerProductSlider(loader);
2421
2557
  registerProductLink(loader);
2422
2558
  registerCategoryCollection(loader);
2423
2559
  registerCategoryField(loader);
2424
2560
  registerCategoryLink(loader);
2561
+ registerCategoryMedia(loader);
2425
2562
  }
2426
2563
 
2427
2564
  exports.AddToCartButton = AddToCartButton;