@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.
@@ -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({});
@@ -1539,13 +1554,6 @@ var useCategories = function useCategories(input) {
1539
1554
  }, hook))(input);
1540
1555
  };
1541
1556
 
1542
- var useCommerceExtraFeatures = function useCommerceExtraFeatures() {
1543
- var _useCommerce = useCommerce(),
1544
- providerRef = _useCommerce.providerRef;
1545
-
1546
- return providerRef.current.extraFeatures;
1547
- };
1548
-
1549
1557
  var categoryCollectionMeta = {
1550
1558
  name: "plasmic-commerce-category-collection",
1551
1559
  displayName: "Category Collection",
@@ -1593,8 +1601,10 @@ var categoryCollectionMeta = {
1593
1601
  var _ctx$categories$map;
1594
1602
 
1595
1603
  return (_ctx$categories$map = ctx == null ? void 0 : ctx.categories.map(function (category) {
1604
+ var _category$depth;
1605
+
1596
1606
  return {
1597
- label: category.name,
1607
+ label: "" + " ".repeat((_category$depth = category.depth) != null ? _category$depth : 0) + category.name,
1598
1608
  value: category.id
1599
1609
  };
1600
1610
  })) != null ? _ctx$categories$map : [];
@@ -1619,7 +1629,6 @@ function CategoryCollection(props) {
1619
1629
  emptyMessage = props.emptyMessage,
1620
1630
  selectedCategory = props.category,
1621
1631
  setControlContextData = props.setControlContextData;
1622
- var features = useCommerceExtraFeatures();
1623
1632
  var inEditor = React.useContext(PlasmicCanvasContext);
1624
1633
 
1625
1634
  var _useCategories = useCategories(),
@@ -1628,7 +1637,6 @@ function CategoryCollection(props) {
1628
1637
 
1629
1638
  var _useCategories2 = useCategories({
1630
1639
  categoryId: selectedCategory,
1631
- topologicalSort: !selectedCategory && (features == null ? void 0 : features.includeSubCategories),
1632
1640
  addIsEmptyField: !!inEditor
1633
1641
  }),
1634
1642
  categories = _useCategories2.data,
@@ -1767,6 +1775,61 @@ function registerCategoryLink(loader, customCategoryLinkMeta) {
1767
1775
  doRegisterComponent(CategoryLink, customCategoryLinkMeta != null ? customCategoryLinkMeta : categoryLinkMeta);
1768
1776
  }
1769
1777
 
1778
+ var categoryMediaMeta = {
1779
+ name: "plasmic-commerce-category-media",
1780
+ displayName: "Category Media",
1781
+ props: {
1782
+ mediaIndex: "number",
1783
+ mediaSize: {
1784
+ type: "choice",
1785
+ options: [{
1786
+ label: "Fill",
1787
+ value: "fill"
1788
+ }, {
1789
+ label: "Container",
1790
+ value: "contain"
1791
+ }, {
1792
+ label: "Cover",
1793
+ value: "cover"
1794
+ }, {
1795
+ label: "None",
1796
+ value: "none"
1797
+ }, {
1798
+ label: "Scale down",
1799
+ value: "scale-down"
1800
+ }]
1801
+ }
1802
+ },
1803
+ importPath: "@plasmicpkgs/commerce",
1804
+ importName: "CategoryMedia"
1805
+ };
1806
+ function CategoryMedia(props) {
1807
+ var _image$url;
1808
+
1809
+ var className = props.className,
1810
+ _props$mediaIndex = props.mediaIndex,
1811
+ mediaIndex = _props$mediaIndex === void 0 ? 0 : _props$mediaIndex,
1812
+ mediaSize = props.mediaSize;
1813
+ var category = useCategoryContext();
1814
+ var image = category != null && category.images ? category.images[mediaIndex] : undefined;
1815
+ return React.createElement("img", {
1816
+ alt: (category == null ? void 0 : category.name) || "Category Image",
1817
+ src: (_image$url = image == null ? void 0 : image.url) != null ? _image$url : "",
1818
+ loading: "lazy",
1819
+ className: className,
1820
+ style: {
1821
+ objectFit: mediaSize
1822
+ }
1823
+ });
1824
+ }
1825
+ function registerCategoryMedia(loader, customCategoryMediaMeta) {
1826
+ var doRegisterComponent = function doRegisterComponent() {
1827
+ return loader ? loader.registerComponent.apply(loader, arguments) : registerComponent.apply(void 0, arguments);
1828
+ };
1829
+
1830
+ doRegisterComponent(CategoryMedia, customCategoryMediaMeta != null ? customCategoryMediaMeta : categoryMediaMeta);
1831
+ }
1832
+
1770
1833
  var fetcher$3 = SWRFetcher;
1771
1834
 
1772
1835
  var fn$3 = function fn(provider) {
@@ -1892,6 +1955,13 @@ var useBrands = function useBrands(input) {
1892
1955
  }, hook))(input);
1893
1956
  };
1894
1957
 
1958
+ var useCommerceExtraFeatures = function useCommerceExtraFeatures() {
1959
+ var _useCommerce = useCommerce(),
1960
+ providerRef = _useCommerce.providerRef;
1961
+
1962
+ return providerRef.current.extraFeatures;
1963
+ };
1964
+
1895
1965
  var productCollectionMeta = {
1896
1966
  name: "plasmic-commerce-product-collection",
1897
1967
  displayName: "Product Collection",
@@ -1937,8 +2007,10 @@ var productCollectionMeta = {
1937
2007
  var _ctx$categories$map;
1938
2008
 
1939
2009
  return (_ctx$categories$map = ctx == null ? void 0 : ctx.categories.map(function (category) {
2010
+ var _category$depth;
2011
+
1940
2012
  return {
1941
- label: category.name,
2013
+ label: "" + " ".repeat((_category$depth = category.depth) != null ? _category$depth : 0) + category.name,
1942
2014
  value: category.id
1943
2015
  };
1944
2016
  })) != null ? _ctx$categories$map : [];
@@ -2144,7 +2216,26 @@ var productMediaMeta = {
2144
2216
  name: "plasmic-commerce-product-media",
2145
2217
  displayName: "Product Media",
2146
2218
  props: {
2147
- mediaIndex: "number"
2219
+ mediaIndex: "number",
2220
+ mediaSize: {
2221
+ type: "choice",
2222
+ options: [{
2223
+ label: "Fill",
2224
+ value: "fill"
2225
+ }, {
2226
+ label: "Container",
2227
+ value: "contain"
2228
+ }, {
2229
+ label: "Cover",
2230
+ value: "cover"
2231
+ }, {
2232
+ label: "None",
2233
+ value: "none"
2234
+ }, {
2235
+ label: "Scale down",
2236
+ value: "scale-down"
2237
+ }]
2238
+ }
2148
2239
  },
2149
2240
  importPath: "@plasmicpkgs/commerce",
2150
2241
  importName: "ProductMedia"
@@ -2154,14 +2245,19 @@ function ProductMedia(props) {
2154
2245
 
2155
2246
  var className = props.className,
2156
2247
  _props$mediaIndex = props.mediaIndex,
2157
- mediaIndex = _props$mediaIndex === void 0 ? 0 : _props$mediaIndex;
2248
+ mediaIndex = _props$mediaIndex === void 0 ? 0 : _props$mediaIndex,
2249
+ mediaSize = props.mediaSize;
2158
2250
  var product = useProduct();
2159
- var image = product == null ? void 0 : product.images[mediaIndex];
2251
+ var sliderContext = useProductSliderContext();
2252
+ var image = product == null ? void 0 : product.images[sliderContext != null ? sliderContext : mediaIndex];
2160
2253
  return React.createElement("img", {
2161
- alt: (product == null ? void 0 : product.name) || 'Product Image',
2254
+ alt: (product == null ? void 0 : product.name) || "Product Image",
2162
2255
  src: product ? (_image$url = image == null ? void 0 : image.url) != null ? _image$url : "" : placeholderImage,
2163
- loading: 'lazy',
2164
- className: className
2256
+ loading: "lazy",
2257
+ className: className,
2258
+ style: {
2259
+ objectFit: mediaSize
2260
+ }
2165
2261
  });
2166
2262
  }
2167
2263
  function registerProductMedia(loader, customProductMediaMeta) {
@@ -2256,6 +2352,90 @@ function registerProductQuantity(loader, customProductQuantityMeta) {
2256
2352
  doRegisterComponent(ProductQuantity, customProductQuantityMeta != null ? customProductQuantityMeta : productQuantityMeta);
2257
2353
  }
2258
2354
 
2355
+ var productSliderMeta = {
2356
+ name: "plasmic-commerce-product-slider",
2357
+ displayName: "Product Slider",
2358
+ props: {
2359
+ thumbsVisible: {
2360
+ type: "number",
2361
+ description: "Number of thumbs visible",
2362
+ defaultValue: 4,
2363
+ defaultValueHint: 4
2364
+ },
2365
+ slideContainer: {
2366
+ type: "slot",
2367
+ defaultValue: {
2368
+ type: "vbox",
2369
+ children: [{
2370
+ type: "component",
2371
+ name: "plasmic-commerce-product-media"
2372
+ }]
2373
+ }
2374
+ },
2375
+ thumbsContainer: {
2376
+ type: "slot",
2377
+ defaultValue: {
2378
+ type: "hbox",
2379
+ children: [{
2380
+ type: "component",
2381
+ name: "plasmic-commerce-product-media"
2382
+ }]
2383
+ }
2384
+ },
2385
+ slideSelected: {
2386
+ type: "number",
2387
+ defaultValue: 0,
2388
+ defaultValueHint: 0,
2389
+ description: "Current slide selected"
2390
+ }
2391
+ },
2392
+ importPath: "@plasmicpkgs/commerce",
2393
+ importName: "ProductSlider"
2394
+ };
2395
+ function ProductSlider(props) {
2396
+ var className = props.className,
2397
+ slideContainer = props.slideContainer,
2398
+ thumbsContainer = props.thumbsContainer,
2399
+ _props$thumbsVisible = props.thumbsVisible,
2400
+ thumbsVisible = _props$thumbsVisible === void 0 ? 4 : _props$thumbsVisible,
2401
+ _props$slideSelected = props.slideSelected,
2402
+ slideSelected = _props$slideSelected === void 0 ? 0 : _props$slideSelected;
2403
+ var product = useProduct();
2404
+
2405
+ var _React$useState = React.useState(slideSelected),
2406
+ selected = _React$useState[0],
2407
+ setSelected = _React$useState[1];
2408
+
2409
+ var maximumRight = product.images.length - thumbsVisible;
2410
+ var leftIndex = Math.min(maximumRight, Math.max(0, selected - 1));
2411
+ return React.createElement("div", {
2412
+ className: className
2413
+ }, React.createElement(ProductSliderProvider, {
2414
+ mediaIndex: selected,
2415
+ children: slideContainer
2416
+ }), React.createElement("div", {
2417
+ style: {
2418
+ display: "grid",
2419
+ gridTemplateColumns: "repeat(" + thumbsVisible + ", 1fr)"
2420
+ }
2421
+ }, product.images.slice(leftIndex, leftIndex + thumbsVisible).map(function (image, i) {
2422
+ return repeatedElement(i === 0, React.createElement(ProductSliderProvider, {
2423
+ mediaIndex: leftIndex + i,
2424
+ children: thumbsContainer,
2425
+ onClick: function onClick() {
2426
+ return setSelected(leftIndex + i);
2427
+ }
2428
+ }));
2429
+ })));
2430
+ }
2431
+ function registerProductSlider(loader, customProductSliderMeta) {
2432
+ var doRegisterComponent = function doRegisterComponent() {
2433
+ return loader ? loader.registerComponent.apply(loader, arguments) : registerComponent.apply(void 0, arguments);
2434
+ };
2435
+
2436
+ doRegisterComponent(ProductSlider, customProductSliderMeta != null ? customProductSliderMeta : productSliderMeta);
2437
+ }
2438
+
2259
2439
  var productTextFieldMeta = {
2260
2440
  name: "plasmic-commerce-product-text-field",
2261
2441
  displayName: "Product Text Field",
@@ -2288,14 +2468,14 @@ function ProductTextField(props) {
2288
2468
  var value;
2289
2469
 
2290
2470
  if (field === "description") {
2291
- return product.descriptionHtml ? React.createElement("div", {
2471
+ var _product$descriptionH;
2472
+
2473
+ return React.createElement("div", {
2292
2474
  className: className,
2293
2475
  dangerouslySetInnerHTML: {
2294
- __html: product.descriptionHtml
2476
+ __html: (_product$descriptionH = product.descriptionHtml) != null ? _product$descriptionH : product.description
2295
2477
  }
2296
- }) : React.createElement("div", {
2297
- className: className
2298
- }, product.description);
2478
+ });
2299
2479
  } else {
2300
2480
  value = product[field];
2301
2481
  }
@@ -2395,7 +2575,10 @@ var product = {
2395
2575
  __proto__: null
2396
2576
  };
2397
2577
 
2398
-
2578
+ /*
2579
+ Forked from https://github.com/vercel/commerce/tree/main/packages/commerce/src
2580
+ Changes: Added CategoryImage and depth/children/parent_id to Category
2581
+ */
2399
2582
 
2400
2583
  var site = {
2401
2584
  __proto__: null
@@ -2411,11 +2594,13 @@ function registerAll(loader) {
2411
2594
  registerProductQuantity(loader);
2412
2595
  registerProductVariantPicker(loader);
2413
2596
  registerProductBox(loader);
2597
+ registerProductSlider(loader);
2414
2598
  registerProductLink(loader);
2415
2599
  registerCategoryCollection(loader);
2416
2600
  registerCategoryField(loader);
2417
2601
  registerCategoryLink(loader);
2602
+ registerCategoryMedia(loader);
2418
2603
  }
2419
2604
 
2420
- 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 };
2605
+ export { AddToCartButton, CartComponent, cart as CartType, CategoryCollection, CategoryField, CategoryLink, CategoryMedia, CommerceError, CoreCommerceProvider, FetcherError, ProductBox, ProductCollection, ProductLink, ProductMedia, defaultProduct as ProductPlaceholder, ProductPriceComponent, ProductQuantity, ProductSlider, ProductTextField, product as ProductTypes, ProductVariantPicker, site as SiteTypes, ValidationError, addToCartButtonMeta, cartMeta, categoryCollectionMeta, categoryFieldMeta, categoryLinkMeta, categoryMediaMeta, fetcher$4 as fetcher, getCommerceProvider, productBoxMeta, productCollectionMeta, productLinkMeta, productMediaMeta, productPriceMeta, productQuantityMeta, productSliderMeta, productTextFieldMeta, productVariantPickerMeta, registerAddToCartButton, registerAll, registerCart, registerCategoryCollection, registerCategoryField, registerCategoryLink, registerCategoryMedia, registerProductBox, registerProductCollection, registerProductLink, registerProductMedia, registerProductPrice, registerProductQuantity, registerProductSlider, registerProductVariantPicker, registerTextField, useAddItem, useBrands, useCart, useCategories, useCommerce, useProduct$1 as useProduct, useRemoveItem, useSearch, useUpdateItem };
2421
2606
  //# sourceMappingURL=commerce.esm.js.map