@plasmicpkgs/commerce 0.0.13 → 0.0.16

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({});
@@ -1546,13 +1561,6 @@ var useCategories = function useCategories(input) {
1546
1561
  }, hook))(input);
1547
1562
  };
1548
1563
 
1549
- var useCommerceExtraFeatures = function useCommerceExtraFeatures() {
1550
- var _useCommerce = useCommerce(),
1551
- providerRef = _useCommerce.providerRef;
1552
-
1553
- return providerRef.current.extraFeatures;
1554
- };
1555
-
1556
1564
  var categoryCollectionMeta = {
1557
1565
  name: "plasmic-commerce-category-collection",
1558
1566
  displayName: "Category Collection",
@@ -1600,8 +1608,10 @@ var categoryCollectionMeta = {
1600
1608
  var _ctx$categories$map;
1601
1609
 
1602
1610
  return (_ctx$categories$map = ctx == null ? void 0 : ctx.categories.map(function (category) {
1611
+ var _category$depth;
1612
+
1603
1613
  return {
1604
- label: category.name,
1614
+ label: "" + " ".repeat((_category$depth = category.depth) != null ? _category$depth : 0) + category.name,
1605
1615
  value: category.id
1606
1616
  };
1607
1617
  })) != null ? _ctx$categories$map : [];
@@ -1626,7 +1636,6 @@ function CategoryCollection(props) {
1626
1636
  emptyMessage = props.emptyMessage,
1627
1637
  selectedCategory = props.category,
1628
1638
  setControlContextData = props.setControlContextData;
1629
- var features = useCommerceExtraFeatures();
1630
1639
  var inEditor = React__default.useContext(host.PlasmicCanvasContext);
1631
1640
 
1632
1641
  var _useCategories = useCategories(),
@@ -1635,7 +1644,6 @@ function CategoryCollection(props) {
1635
1644
 
1636
1645
  var _useCategories2 = useCategories({
1637
1646
  categoryId: selectedCategory,
1638
- topologicalSort: !selectedCategory && (features == null ? void 0 : features.includeSubCategories),
1639
1647
  addIsEmptyField: !!inEditor
1640
1648
  }),
1641
1649
  categories = _useCategories2.data,
@@ -1774,6 +1782,61 @@ function registerCategoryLink(loader, customCategoryLinkMeta) {
1774
1782
  doRegisterComponent(CategoryLink, customCategoryLinkMeta != null ? customCategoryLinkMeta : categoryLinkMeta);
1775
1783
  }
1776
1784
 
1785
+ var categoryMediaMeta = {
1786
+ name: "plasmic-commerce-category-media",
1787
+ displayName: "Category Media",
1788
+ props: {
1789
+ mediaIndex: "number",
1790
+ mediaSize: {
1791
+ type: "choice",
1792
+ options: [{
1793
+ label: "Fill",
1794
+ value: "fill"
1795
+ }, {
1796
+ label: "Container",
1797
+ value: "contain"
1798
+ }, {
1799
+ label: "Cover",
1800
+ value: "cover"
1801
+ }, {
1802
+ label: "None",
1803
+ value: "none"
1804
+ }, {
1805
+ label: "Scale down",
1806
+ value: "scale-down"
1807
+ }]
1808
+ }
1809
+ },
1810
+ importPath: "@plasmicpkgs/commerce",
1811
+ importName: "CategoryMedia"
1812
+ };
1813
+ function CategoryMedia(props) {
1814
+ var _image$url;
1815
+
1816
+ var className = props.className,
1817
+ _props$mediaIndex = props.mediaIndex,
1818
+ mediaIndex = _props$mediaIndex === void 0 ? 0 : _props$mediaIndex,
1819
+ mediaSize = props.mediaSize;
1820
+ var category = useCategoryContext();
1821
+ var image = category != null && category.images ? category.images[mediaIndex] : undefined;
1822
+ return React__default.createElement("img", {
1823
+ alt: (category == null ? void 0 : category.name) || "Category Image",
1824
+ src: (_image$url = image == null ? void 0 : image.url) != null ? _image$url : "",
1825
+ loading: "lazy",
1826
+ className: className,
1827
+ style: {
1828
+ objectFit: mediaSize
1829
+ }
1830
+ });
1831
+ }
1832
+ function registerCategoryMedia(loader, customCategoryMediaMeta) {
1833
+ var doRegisterComponent = function doRegisterComponent() {
1834
+ return loader ? loader.registerComponent.apply(loader, arguments) : registerComponent.apply(void 0, arguments);
1835
+ };
1836
+
1837
+ doRegisterComponent(CategoryMedia, customCategoryMediaMeta != null ? customCategoryMediaMeta : categoryMediaMeta);
1838
+ }
1839
+
1777
1840
  var fetcher$3 = SWRFetcher;
1778
1841
 
1779
1842
  var fn$3 = function fn(provider) {
@@ -1899,6 +1962,13 @@ var useBrands = function useBrands(input) {
1899
1962
  }, hook))(input);
1900
1963
  };
1901
1964
 
1965
+ var useCommerceExtraFeatures = function useCommerceExtraFeatures() {
1966
+ var _useCommerce = useCommerce(),
1967
+ providerRef = _useCommerce.providerRef;
1968
+
1969
+ return providerRef.current.extraFeatures;
1970
+ };
1971
+
1902
1972
  var productCollectionMeta = {
1903
1973
  name: "plasmic-commerce-product-collection",
1904
1974
  displayName: "Product Collection",
@@ -1944,8 +2014,10 @@ var productCollectionMeta = {
1944
2014
  var _ctx$categories$map;
1945
2015
 
1946
2016
  return (_ctx$categories$map = ctx == null ? void 0 : ctx.categories.map(function (category) {
2017
+ var _category$depth;
2018
+
1947
2019
  return {
1948
- label: category.name,
2020
+ label: "" + " ".repeat((_category$depth = category.depth) != null ? _category$depth : 0) + category.name,
1949
2021
  value: category.id
1950
2022
  };
1951
2023
  })) != null ? _ctx$categories$map : [];
@@ -2151,7 +2223,26 @@ var productMediaMeta = {
2151
2223
  name: "plasmic-commerce-product-media",
2152
2224
  displayName: "Product Media",
2153
2225
  props: {
2154
- mediaIndex: "number"
2226
+ mediaIndex: "number",
2227
+ mediaSize: {
2228
+ type: "choice",
2229
+ options: [{
2230
+ label: "Fill",
2231
+ value: "fill"
2232
+ }, {
2233
+ label: "Container",
2234
+ value: "contain"
2235
+ }, {
2236
+ label: "Cover",
2237
+ value: "cover"
2238
+ }, {
2239
+ label: "None",
2240
+ value: "none"
2241
+ }, {
2242
+ label: "Scale down",
2243
+ value: "scale-down"
2244
+ }]
2245
+ }
2155
2246
  },
2156
2247
  importPath: "@plasmicpkgs/commerce",
2157
2248
  importName: "ProductMedia"
@@ -2161,14 +2252,19 @@ function ProductMedia(props) {
2161
2252
 
2162
2253
  var className = props.className,
2163
2254
  _props$mediaIndex = props.mediaIndex,
2164
- mediaIndex = _props$mediaIndex === void 0 ? 0 : _props$mediaIndex;
2255
+ mediaIndex = _props$mediaIndex === void 0 ? 0 : _props$mediaIndex,
2256
+ mediaSize = props.mediaSize;
2165
2257
  var product = useProduct();
2166
- var image = product == null ? void 0 : product.images[mediaIndex];
2258
+ var sliderContext = useProductSliderContext();
2259
+ var image = product == null ? void 0 : product.images[sliderContext != null ? sliderContext : mediaIndex];
2167
2260
  return React__default.createElement("img", {
2168
- alt: (product == null ? void 0 : product.name) || 'Product Image',
2261
+ alt: (product == null ? void 0 : product.name) || "Product Image",
2169
2262
  src: product ? (_image$url = image == null ? void 0 : image.url) != null ? _image$url : "" : placeholderImage,
2170
- loading: 'lazy',
2171
- className: className
2263
+ loading: "lazy",
2264
+ className: className,
2265
+ style: {
2266
+ objectFit: mediaSize
2267
+ }
2172
2268
  });
2173
2269
  }
2174
2270
  function registerProductMedia(loader, customProductMediaMeta) {
@@ -2263,6 +2359,90 @@ function registerProductQuantity(loader, customProductQuantityMeta) {
2263
2359
  doRegisterComponent(ProductQuantity, customProductQuantityMeta != null ? customProductQuantityMeta : productQuantityMeta);
2264
2360
  }
2265
2361
 
2362
+ var productSliderMeta = {
2363
+ name: "plasmic-commerce-product-slider",
2364
+ displayName: "Product Slider",
2365
+ props: {
2366
+ thumbsVisible: {
2367
+ type: "number",
2368
+ description: "Number of thumbs visible",
2369
+ defaultValue: 4,
2370
+ defaultValueHint: 4
2371
+ },
2372
+ slideContainer: {
2373
+ type: "slot",
2374
+ defaultValue: {
2375
+ type: "vbox",
2376
+ children: [{
2377
+ type: "component",
2378
+ name: "plasmic-commerce-product-media"
2379
+ }]
2380
+ }
2381
+ },
2382
+ thumbsContainer: {
2383
+ type: "slot",
2384
+ defaultValue: {
2385
+ type: "hbox",
2386
+ children: [{
2387
+ type: "component",
2388
+ name: "plasmic-commerce-product-media"
2389
+ }]
2390
+ }
2391
+ },
2392
+ slideSelected: {
2393
+ type: "number",
2394
+ defaultValue: 0,
2395
+ defaultValueHint: 0,
2396
+ description: "Current slide selected"
2397
+ }
2398
+ },
2399
+ importPath: "@plasmicpkgs/commerce",
2400
+ importName: "ProductSlider"
2401
+ };
2402
+ function ProductSlider(props) {
2403
+ var className = props.className,
2404
+ slideContainer = props.slideContainer,
2405
+ thumbsContainer = props.thumbsContainer,
2406
+ _props$thumbsVisible = props.thumbsVisible,
2407
+ thumbsVisible = _props$thumbsVisible === void 0 ? 4 : _props$thumbsVisible,
2408
+ _props$slideSelected = props.slideSelected,
2409
+ slideSelected = _props$slideSelected === void 0 ? 0 : _props$slideSelected;
2410
+ var product = useProduct();
2411
+
2412
+ var _React$useState = React__default.useState(slideSelected),
2413
+ selected = _React$useState[0],
2414
+ setSelected = _React$useState[1];
2415
+
2416
+ var maximumRight = product.images.length - thumbsVisible;
2417
+ var leftIndex = Math.min(maximumRight, Math.max(0, selected - 1));
2418
+ return React__default.createElement("div", {
2419
+ className: className
2420
+ }, React__default.createElement(ProductSliderProvider, {
2421
+ mediaIndex: selected,
2422
+ children: slideContainer
2423
+ }), React__default.createElement("div", {
2424
+ style: {
2425
+ display: "grid",
2426
+ gridTemplateColumns: "repeat(" + thumbsVisible + ", 1fr)"
2427
+ }
2428
+ }, product.images.slice(leftIndex, leftIndex + thumbsVisible).map(function (image, i) {
2429
+ return host.repeatedElement(i === 0, React__default.createElement(ProductSliderProvider, {
2430
+ mediaIndex: leftIndex + i,
2431
+ children: thumbsContainer,
2432
+ onClick: function onClick() {
2433
+ return setSelected(leftIndex + i);
2434
+ }
2435
+ }));
2436
+ })));
2437
+ }
2438
+ function registerProductSlider(loader, customProductSliderMeta) {
2439
+ var doRegisterComponent = function doRegisterComponent() {
2440
+ return loader ? loader.registerComponent.apply(loader, arguments) : registerComponent.apply(void 0, arguments);
2441
+ };
2442
+
2443
+ doRegisterComponent(ProductSlider, customProductSliderMeta != null ? customProductSliderMeta : productSliderMeta);
2444
+ }
2445
+
2266
2446
  var productTextFieldMeta = {
2267
2447
  name: "plasmic-commerce-product-text-field",
2268
2448
  displayName: "Product Text Field",
@@ -2295,14 +2475,14 @@ function ProductTextField(props) {
2295
2475
  var value;
2296
2476
 
2297
2477
  if (field === "description") {
2298
- return product.descriptionHtml ? React__default.createElement("div", {
2478
+ var _product$descriptionH;
2479
+
2480
+ return React__default.createElement("div", {
2299
2481
  className: className,
2300
2482
  dangerouslySetInnerHTML: {
2301
- __html: product.descriptionHtml
2483
+ __html: (_product$descriptionH = product.descriptionHtml) != null ? _product$descriptionH : product.description
2302
2484
  }
2303
- }) : React__default.createElement("div", {
2304
- className: className
2305
- }, product.description);
2485
+ });
2306
2486
  } else {
2307
2487
  value = product[field];
2308
2488
  }
@@ -2402,7 +2582,10 @@ var product = {
2402
2582
  __proto__: null
2403
2583
  };
2404
2584
 
2405
-
2585
+ /*
2586
+ Forked from https://github.com/vercel/commerce/tree/main/packages/commerce/src
2587
+ Changes: Added CategoryImage and depth/children/parent_id to Category
2588
+ */
2406
2589
 
2407
2590
  var site = {
2408
2591
  __proto__: null
@@ -2418,10 +2601,12 @@ function registerAll(loader) {
2418
2601
  registerProductQuantity(loader);
2419
2602
  registerProductVariantPicker(loader);
2420
2603
  registerProductBox(loader);
2604
+ registerProductSlider(loader);
2421
2605
  registerProductLink(loader);
2422
2606
  registerCategoryCollection(loader);
2423
2607
  registerCategoryField(loader);
2424
2608
  registerCategoryLink(loader);
2609
+ registerCategoryMedia(loader);
2425
2610
  }
2426
2611
 
2427
2612
  exports.AddToCartButton = AddToCartButton;
@@ -2430,6 +2615,7 @@ exports.CartType = cart;
2430
2615
  exports.CategoryCollection = CategoryCollection;
2431
2616
  exports.CategoryField = CategoryField;
2432
2617
  exports.CategoryLink = CategoryLink;
2618
+ exports.CategoryMedia = CategoryMedia;
2433
2619
  exports.CommerceError = CommerceError;
2434
2620
  exports.CoreCommerceProvider = CoreCommerceProvider;
2435
2621
  exports.FetcherError = FetcherError;
@@ -2440,6 +2626,7 @@ exports.ProductMedia = ProductMedia;
2440
2626
  exports.ProductPlaceholder = defaultProduct;
2441
2627
  exports.ProductPriceComponent = ProductPriceComponent;
2442
2628
  exports.ProductQuantity = ProductQuantity;
2629
+ exports.ProductSlider = ProductSlider;
2443
2630
  exports.ProductTextField = ProductTextField;
2444
2631
  exports.ProductTypes = product;
2445
2632
  exports.ProductVariantPicker = ProductVariantPicker;
@@ -2450,6 +2637,7 @@ exports.cartMeta = cartMeta;
2450
2637
  exports.categoryCollectionMeta = categoryCollectionMeta;
2451
2638
  exports.categoryFieldMeta = categoryFieldMeta;
2452
2639
  exports.categoryLinkMeta = categoryLinkMeta;
2640
+ exports.categoryMediaMeta = categoryMediaMeta;
2453
2641
  exports.fetcher = fetcher$4;
2454
2642
  exports.getCommerceProvider = getCommerceProvider;
2455
2643
  exports.productBoxMeta = productBoxMeta;
@@ -2458,6 +2646,7 @@ exports.productLinkMeta = productLinkMeta;
2458
2646
  exports.productMediaMeta = productMediaMeta;
2459
2647
  exports.productPriceMeta = productPriceMeta;
2460
2648
  exports.productQuantityMeta = productQuantityMeta;
2649
+ exports.productSliderMeta = productSliderMeta;
2461
2650
  exports.productTextFieldMeta = productTextFieldMeta;
2462
2651
  exports.productVariantPickerMeta = productVariantPickerMeta;
2463
2652
  exports.registerAddToCartButton = registerAddToCartButton;
@@ -2466,12 +2655,14 @@ exports.registerCart = registerCart;
2466
2655
  exports.registerCategoryCollection = registerCategoryCollection;
2467
2656
  exports.registerCategoryField = registerCategoryField;
2468
2657
  exports.registerCategoryLink = registerCategoryLink;
2658
+ exports.registerCategoryMedia = registerCategoryMedia;
2469
2659
  exports.registerProductBox = registerProductBox;
2470
2660
  exports.registerProductCollection = registerProductCollection;
2471
2661
  exports.registerProductLink = registerProductLink;
2472
2662
  exports.registerProductMedia = registerProductMedia;
2473
2663
  exports.registerProductPrice = registerProductPrice;
2474
2664
  exports.registerProductQuantity = registerProductQuantity;
2665
+ exports.registerProductSlider = registerProductSlider;
2475
2666
  exports.registerProductVariantPicker = registerProductVariantPicker;
2476
2667
  exports.registerTextField = registerTextField;
2477
2668
  exports.useAddItem = useAddItem;