@gem-sdk/components 12.0.0-dev.125 → 12.0.0-dev.126
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/cjs/product/components/product-images-v3/components/child/ProductFeaturedImageOnly.js +1 -1
- package/dist/cjs/product/components/product-list-v3/ProductList.js +1 -1
- package/dist/cjs/product/components/product-list-v3/hooks/useCollectionQuery.js +1 -0
- package/dist/cjs/product/components/product-list-v3/hooks/useMainRelatedProductQuery.js +1 -0
- package/dist/cjs/product/components/product-list-v3/hooks/useProductRelatedQuery.js +1 -0
- package/dist/cjs/product/components/product-list-v3/hooks/useProductsQuery.js +1 -0
- package/dist/esm/product/components/product-images-v3/components/child/ProductFeaturedImageOnly.js +1 -1
- package/dist/esm/product/components/product-list-v3/ProductList.js +1 -1
- package/dist/esm/product/components/product-list-v3/hooks/useCollectionQuery.js +1 -0
- package/dist/esm/product/components/product-list-v3/hooks/useMainRelatedProductQuery.js +1 -0
- package/dist/esm/product/components/product-list-v3/hooks/useProductRelatedQuery.js +1 -0
- package/dist/esm/product/components/product-list-v3/hooks/useProductsQuery.js +1 -0
- package/package.json +2 -2
package/dist/cjs/product/components/product-images-v3/components/child/ProductFeaturedImageOnly.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),core=require("@gem-sdk/core"),React=require("react"),NextImage=require("../../../../../image/components/NextImage.js"),MediaIcon=require("./MediaIcon.js"),productFeaturedImage=require("../../common/productFeaturedImage.js"),ProductFeatureVideo=require("./ProductFeatureVideo.js");const defaultImage={src:"https://cdn.shopify.com/s/assets/no-image-2048-5e88c1b20e087fb7bbe9a3771824e743c244f437e4f8ba93bbf7b11b53f7824c_large.gif",id:"noImageError",width:480,height:480,alt:"no image",contentType:"IMAGE"},ProductFeaturedImageOnly=({image:e,imageShowWhenHover:t,setting:r,aspectRatio:
|
|
2
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),core=require("@gem-sdk/core"),React=require("react"),NextImage=require("../../../../../image/components/NextImage.js"),MediaIcon=require("./MediaIcon.js"),productFeaturedImage=require("../../common/productFeaturedImage.js"),ProductFeatureVideo=require("./ProductFeatureVideo.js");const defaultImage={src:"https://cdn.shopify.com/s/assets/no-image-2048-5e88c1b20e087fb7bbe9a3771824e743c244f437e4f8ba93bbf7b11b53f7824c_large.gif",id:"noImageError",width:480,height:480,alt:"no image",contentType:"IMAGE"},ProductFeaturedImageOnly=({image:e,imageShowWhenHover:t,setting:r,aspectRatio:a})=>{let o=core.useProduct(),c=core.useCurrentDevice(),s=core.useShopStore(e=>e.storefrontUrl),{isEditMode:u,isPreviewSharePageMode:i}=core.useRenderMode(),n=React.useMemo(()=>"none"!==core.getResponsiveValueByScreen(r.ftClickOpenLightBox,c),[c,r.ftClickOpenLightBox]),d=React.useMemo(()=>!u&&["VIDEO","EXTERNAL_VIDEO"].includes(e?.contentType||"")&&!n,[u,e?.contentType,n]),m=React.useMemo(()=>e?{...e,src:d?e.src:productFeaturedImage.isFeatureMedia(e?.contentType)?e?.previewImage:e.src}:defaultImage,[e,d]),l=React.useMemo(()=>{if(i)return"javascript:void(0)";if(!s)return"#";let e=new URL(s);return o?`${e.protocol}//${e.host}/products/${o.handle}`:"#"},[s,o,i]),g=e=>"product-link"===core.getResponsiveValueByScreen(r.ftClickOpenLightBox,c)?jsxRuntime.jsx("a",{title:o?.title,href:l,className:"gp-w-full",children:e}):e,h=React.useMemo(()=>r?.hoverEffect!=="none"&&!productFeaturedImage.isFeatureMedia(m?.contentType),[m?.contentType,r?.hoverEffect]),p=React.useMemo(()=>r?.hoverEffect=="zoom"&&r?.zoomType=="glasses"&&!productFeaturedImage.isFeatureMedia(m?.contentType),[m?.contentType,r?.hoverEffect,r?.zoomType]),f=React.useCallback(e=>"IMAGE"!==e.contentType?e.previewImage:e.src,[]),y=React.useMemo(()=>t?"other"!==r.hoverEffect?f(m):f(t):defaultImage.src,[t,m,r.hoverEffect,f]);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:g(jsxRuntime.jsx(jsxRuntime.Fragment,{children:d?jsxRuntime.jsx(ProductFeatureVideo.default,{type:m?.contentType,url:m.src??"",aspectRatio:a}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(NextImage.default,{draggable:"false",src:m.src,width:m?.width,height:m?.height,alt:m?.alt,setting:{aspectRatio:a,layout:r?.ftLayout},priority:r?.preload,className:"featured-image-only",style:{width:"100%",height:"100%",cursor:"pointer"}}),jsxRuntime.jsx(MediaIcon.default,{contentType:m?.contentType??""}),h&&jsxRuntime.jsx(NextImage.default,{draggable:"false",src:y,width:r?.hoverEffect==="other"?t?.width:m.width,height:r?.hoverEffect==="other"?t?.height:m.height,alt:r?.hoverEffect==="other"?t?.alt:m.alt,setting:{layout:r.ftLayout,aspectRatio:a},style:{width:"100%",height:"100%"},className:core.cls("hover-image featured-image-only !gp-max-w-none",productFeaturedImage.getZoomImageClass()),priority:r?.preload}),p&&jsxRuntime.jsx("div",{className:core.cls(productFeaturedImage.getZoomLenClass(),"room-len"),style:{...core.makeStyle({bgi:`url("${m?.src}")`})}})]})}))})};var ProductFeaturedImageOnly$1=React.memo(ProductFeaturedImageOnly);exports.default=ProductFeaturedImageOnly$1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),dynamic=require("next/dynamic"),Loading=require("../../../common/components/Loading.js"),React=require("react"),core=require("@gem-sdk/core"),SalePageProductListWarning=require("../SalePageProductListWarning.js"),Head=require("next/head"),ProductListGridLayout=require("./ProductListGridLayout.js"),ProductListCarouselLayout=require("./ProductListCarouselLayout.js"),styles=require("./common/styles.js"),system=require("@gem-sdk/system"),classes=require("./common/classes.js"),helpers=require("./common/helpers.js"),helpers$1=require("../../../dialog/common/helpers.js");const ProductNotFound=dynamic(()=>Promise.resolve().then(function(){return require("../ProductNotFound.js")}),{loading:Loading.default}),ProductList=e=>{let{children:t,styles:r,builderProps:o,setting:s,builderAttrs:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),dynamic=require("next/dynamic"),Loading=require("../../../common/components/Loading.js"),React=require("react"),core=require("@gem-sdk/core"),SalePageProductListWarning=require("../SalePageProductListWarning.js"),Head=require("next/head"),ProductListGridLayout=require("./ProductListGridLayout.js"),ProductListCarouselLayout=require("./ProductListCarouselLayout.js"),styles=require("./common/styles.js"),system=require("@gem-sdk/system"),classes=require("./common/classes.js"),helpers=require("./common/helpers.js"),helpers$1=require("../../../dialog/common/helpers.js"),useProductsQuery=require("./hooks/useProductsQuery.js"),useCollectionQuery=require("./hooks/useCollectionQuery.js"),useProductRelatedQuery=require("./hooks/useProductRelatedQuery.js"),useMainRelatedProductQuery=require("./hooks/useMainRelatedProductQuery.js");const ProductNotFound=dynamic(()=>Promise.resolve().then(function(){return require("../ProductNotFound.js")}),{loading:Loading.default}),ProductList=e=>{let{children:t,styles:r,builderProps:o,setting:s,builderAttrs:d}=e,{isRelatedProduct:u,productSetting:i}=helpers.getData(e),{isEditMode:a,isPreviewSharePageMode:l}=core.useRenderMode(),c=core.useCurrentDevice(),n=core.usePageType(),g=core.usePageStore(e=>e.dynamicCollection),[m,P]=React.useState(1),[h,j]=React.useState(!0),y="GP_FUNNEL_PAGE"===n,x="GP_COLLECTION"==n;x&&(i.productSrc="DynamicCollection",i.collectionId=g?.collectionId??"latest");let p=i?.productSrc??"Collection",{mainRelatedProduct:R,relatedProductIdAssigned:f}=useMainRelatedProductQuery.default({isEditMode:a,isPreviewSharePageMode:l,isRelatedProduct:u,relatedProductId:i.relatedProductId}),k=i.relatedTag&&i.relatedTag[0],L=i.relatedTag&&"tags"===i.relatedTag[0]&&(!R?.tags||R?.tags.length===0),v=i.relatedTag&&"collection"===i.relatedTag[0]&&(!R?.collections?.edges||R?.collections.edges.length===0),S=i.relatedTag&&"vendor"===i.relatedTag[0]&&!R?.vendor,C=L||v||S,{isNotFoundRelatedProduct:I,relatedProducts:b}=useProductRelatedQuery.default({isEditMode:a,isPreviewSharePageMode:l,isRelatedProduct:u,productSetting:i,setting:s,mainRelatedProduct:R}),q=useProductsQuery.useProductsQuery({productIds:"PickProduct"===p?i?.productIds:void 0,defaultSelectedProductCount:i?.numOfSelectedProducts}),T=React.useMemo(()=>({id:i?.collectionId??"latest",numberOfProducts:s?.numberOfProducts??4,orderBy:s?.orderBy}),[i?.collectionId,Number(s?.numberOfProducts),s?.orderBy]),M=useCollectionQuery.useCollectionQuery({variables:"PickProduct"!==p?T:void 0}),Q="PickProduct"===p?q.isLoading:M.isLoading,w="PickProduct"===p?q.error:M.error,G="PickProduct"===p?q.isValidating:M.isValidating,N=M.data?.collections?.edges?.[0]?.node,O="PickProduct"===p?core.flattenConnection(q.data?.products):core.flattenConnection(N?.products),A=core.usePageStore(e=>e.assignedProductIds),B=core.usePageStore(e=>e.isApplyAllProducts),F=React.useMemo(()=>(A??[]).length>0&&!B||B,[A,B]),E=b?.data?.products&&F?core.flattenConnection(b?.data?.products):[],D=u?E:"PickProduct"===p&&i?.productIds?.length?i?.productIds?.map(e=>O?.find(t=>t?.baseID===e)).filter(Boolean)??O:"PickProduct"!==p?O:O.filter((e,t)=>t<(i?.numOfSelectedProducts??4)),H=React.useMemo(()=>I&&u&&a||!D.length&&!Q&&h&&a,[h,Q,I,u,a,D.length]),W=React.useMemo(()=>!D||I&&u,[I,u,D]),$=React.useMemo(()=>{if(!s?.sameHeight)return[];let e=0,t=Math.ceil((D?.length??0)/+(s?.slidesToShow?.[c]??1));return Array.from(Array(D?.length??0)).map((o,d)=>(d>=+(s?.slidesToShow?.[c]??1)*(e+1)&&++e,{gridRow:`${1+m*e}/${m+1+m*e}`,marginBottom:e+1<t?helpers$1.getPropertyByDevice(r?.horizontalGutter,c):void 0}))},[s?.sameHeight,s?.slidesToShow,m,D?.length,c,r?.horizontalGutter]),_=React.useMemo(()=>G||Q||w||!D||I&&u,[w,Q,I,u,G,D]),z=React.useMemo(()=>R?.collections?.edges.map(e=>e.node?.id)??[],[R?.collections?.edges]);React.useEffect(()=>{_||setTimeout(()=>{let{builderData:e}=o??{},t=e?.childrens?.[0];if(!t)return;let r=document.querySelector(`[data-id=${t}] div`);r&&P(r.childElementCount||1)},a?0:500)},[o,_,a,z]);let V=React.useMemo(()=>({collection:N,products:D,settings:{loop:s?.loop??{desktop:!1},scrollMode:s?.scrollMode??{desktop:"snap"},slidesToShow:s?.slidesToShow??{desktop:4,tablet:3,mobile:1},layout:r?.layout,dot:s?.dot,dotStyle:s?.dotStyle,arrow:s?.arrow,controlOverContent:s?.controlOverContent},styles:{horizontalGutter:r?.horizontalGutter,verticalGutter:r?.verticalGutter,fullWidth:r?.fullWidth,spacing:r?.spacing,width:r?.width,height:r?.height}}),[N,D,s,r]);if(o?.isPreview&&y)return jsxRuntime.jsx(jsxRuntime.Fragment,{});if(H)return jsxRuntime.jsx(jsxRuntime.Fragment,{children:system.If(h,jsxRuntime.jsx(ProductNotFound,{builderAttrs:d,collectionHandle:N?.handle,productSrc:p,onClose:()=>j(!1),children:t,relatedTagString:k,assignProductNoTags:C,noAssignedProduct:!f}))});let{productListWrapStyle:U,productListContentStyle:J,productListWrapAlignStyle:K}=styles.getStyle(e),{productListWrapClass:X}=classes.getClass(e),Y=()=>jsxRuntime.jsx(jsxRuntime.Fragment,{children:system.If(r?.layout==="grid",jsxRuntime.jsx(ProductListGridLayout.default,{...e,productSortedById:D,generateGridRowArray:$}),jsxRuntime.jsx(ProductListCarouselLayout.default,{...e,productSortedById:D}))});return jsxRuntime.jsxs("div",{...d,className:X,style:U,children:[!!r?.preloadBgImage&&jsxRuntime.jsxs(Head,{children:[!!r.backgroundImage?.desktop?.image?.src&&jsxRuntime.jsx("link",{rel:"preload",href:r.backgroundImage.desktop.image.src,as:"image"}),!!r.backgroundImage?.tablet?.image?.src&&jsxRuntime.jsx("link",{rel:"preload",href:r.backgroundImage?.tablet?.image?.src,as:"image"}),!!r.backgroundImage?.mobile?.image?.src&&jsxRuntime.jsx("link",{rel:"preload",href:r.backgroundImage?.mobile?.image?.src,as:"image"})]}),Q||G?jsxRuntime.jsx(Loading.default,{}):w?jsxRuntime.jsxs("div",{children:["Error: ",w?.message]}):W?jsxRuntime.jsx("div",{children:"Products not found"}):jsxRuntime.jsx(core.ProductListProvider,{...V,children:jsxRuntime.jsx("div",{className:"gp-flex gp-w-full",style:K,children:jsxRuntime.jsxs("div",{style:J,children:[y&&jsxRuntime.jsx(SalePageProductListWarning.default,{}),Y()]})})}),core.filterToolbarPreview(t,!0)]})};exports.default=ProductList;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var core=require("@gem-sdk/core"),React=require("react"),useSWR=require("swr");const useCollectionQuery=({variables:e})=>{let r=core.useFetchHandle(),t=core.usePageStore(e=>e.publicStoreFrontData),o=React.useMemo(()=>core.hasPublicStoreFrontData(t)?core.createStoreFrontFetcher(t):r,[t]),a=core.useIsSampleProduct(),c=core.useIsStorefrontProduct(),u=useSWR(core.generateCollectionQueryKey({...e,isSample:a,isStorefront:c}),([,e])=>core.getCollection(o,e),{revalidateOnMount:!1,revalidateIfStale:!0});return React.useEffect(()=>{let r=!!u.error,t=u.isLoading||u.isValidating,o=!u.data&&!t,a=!r&&o&&e;a&&u.mutate()},[e,u.data,u.error,u.isLoading,u.isValidating]),u};exports.useCollectionQuery=useCollectionQuery;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),core=require("@gem-sdk/core");const useMainRelatedProductQuery=({isRelatedProduct:e,relatedProductId:r,isEditMode:t,isPreviewSharePageMode:o})=>{let c=core.useFetchHandle(),u=core.usePageStore(e=>e.dynamicProduct),a=core.usePageStore(e=>e.publicStoreFrontData),d=u?.productId&&u?.productId!==r?u?.productId:r,s=React.useMemo(()=>core.hasPublicStoreFrontData(a)?core.createStoreFrontFetcher(a):c,[a]),{data:n}=core.useProductQuery(e&&d?d:void 0,{revalidateOnMount:t||o},s);return{relatedProductIdAssigned:d,mainRelatedProduct:n}};exports.default=useMainRelatedProductQuery;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),core=require("@gem-sdk/core");const useProductRelatedQuery=({setting:e,isEditMode:t,isPreviewSharePageMode:r,isRelatedProduct:a,mainRelatedProduct:d,productSetting:s})=>{let[o,c]=React.useState(!1),[l,u]=React.useState(),i=core.useFetchHandle(),n=core.usePageStore(e=>e.publicStoreFrontData),h=React.useMemo(()=>core.hasPublicStoreFrontData(n)?core.createStoreFrontFetcher(n):i,[n]),g=core.useProductsQueryAll(l,{revalidateOnMount:t||r,keepPreviousData:!0,refreshInterval:0},h);return React.useEffect(()=>{if(a&&d&&s.relatedTag&&"recommended-product"!==s.relatedType){let t;switch(c(!1),s.hasRelatedExclude&&(t=s?.relatedExclude&&s.relatedExclude.split(",").map(e=>e.trim())),s.relatedTag[0]){case"vendor":u({first:e?.numberOfProducts,where:{vendor:s.relatedTag&&"vendor"===s.relatedTag[0]?d?.vendor:"",idNEQ:d.id}});break;case"collection":{let r;let a=d?.collections?.edges.map(e=>e.node?.id);if(!a||a?.length===0){c(!0);break}u(r=t&&t.length>0?{first:e?.numberOfProducts,where:{idNEQ:d.id,hasCollectionProductsWith:[{hasCollectionWith:[{idIn:a},{titleNotIn:t}]}]}}:{first:e?.numberOfProducts,where:{idNEQ:d.id,hasCollectionProductsWith:[{hasCollectionWith:[{idIn:a}]}]}});break}case"tags":{let r;if(!d.tags||0===d.tags.length){c(!0);break}u(r=t&&t.length>0?{first:e?.numberOfProducts,where:{idNEQ:d.id,hasProductTagsWith:[{hasTagsWith:[{nameIn:d.tags},{nameNotIn:t}]}]}}:{first:e?.numberOfProducts,where:{idNEQ:d.id,hasProductTagsWith:[{hasTagsWith:[{nameIn:d.tags}]}]}})}}}},[d,s.relatedType,s.relatedTag,e?.numberOfProducts,s.relatedExclude,s.hasRelatedExclude,a]),{isNotFoundRelatedProduct:o,relatedProducts:g}};exports.default=useProductRelatedQuery;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var core=require("@gem-sdk/core"),React=require("react"),useSWR=require("swr");const useProductsQuery=({defaultSelectedProductCount:e,productIds:r})=>{let t=core.useFetchHandle(),o=core.usePageStore(e=>e.publicStoreFrontData),s=React.useMemo(()=>core.hasPublicStoreFrontData(o)?core.createStoreFrontFetcher(o):t,[o]),u=core.useIsSampleProduct(),c=core.useIsStorefrontProduct(),a=core.generateProductsQueryKey({ids:r??[],isSample:u,isStorefront:c,defaultSelectedProductCount:e}),i=useSWR(a,async([,e])=>core.getProducts(s,e),{revalidateOnMount:!1});return React.useEffect(()=>{let e=!!i.error,t=i.isLoading||i.isValidating,o=!i.data&&!t,s=!e&&o&&r?.length;s&&i.mutate()},[r?.length,i.data,i.error,i.isLoading,i.isValidating]),{...i}};exports.useProductsQuery=useProductsQuery;
|
package/dist/esm/product/components/product-images-v3/components/child/ProductFeaturedImageOnly.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import{jsx as e,Fragment as t,jsxs as r}from"react/jsx-runtime";import{useProduct as o,useCurrentDevice as a,useShopStore as c,useRenderMode as i,getResponsiveValueByScreen as n,cls as l,makeStyle as s}from"@gem-sdk/core";import{memo as
|
|
2
|
+
import{jsx as e,Fragment as t,jsxs as r}from"react/jsx-runtime";import{useProduct as o,useCurrentDevice as a,useShopStore as c,useRenderMode as i,getResponsiveValueByScreen as n,cls as l,makeStyle as s}from"@gem-sdk/core";import{memo as f,useMemo as h,useCallback as m}from"react";import p from"../../../../../image/components/NextImage.js";import d from"./MediaIcon.js";import{isFeatureMedia as g,getZoomImageClass as u,getZoomLenClass as y}from"../../common/productFeaturedImage.js";import I from"./ProductFeatureVideo.js";let defaultImage={src:"https://cdn.shopify.com/s/assets/no-image-2048-5e88c1b20e087fb7bbe9a3771824e743c244f437e4f8ba93bbf7b11b53f7824c_large.gif",id:"noImageError",width:480,height:480,alt:"no image",contentType:"IMAGE"},ProductFeaturedImageOnly=({image:f,imageShowWhenHover:v,setting:E,aspectRatio:T})=>{let w=o(),b=a(),O=c(e=>e.storefrontUrl),{isEditMode:x,isPreviewSharePageMode:L}=i(),j=h(()=>"none"!==n(E.ftClickOpenLightBox,b),[b,E.ftClickOpenLightBox]),F=h(()=>!x&&["VIDEO","EXTERNAL_VIDEO"].includes(f?.contentType||"")&&!j,[x,f?.contentType,j]),N=h(()=>f?{...f,src:F?f.src:g(f?.contentType)?f?.previewImage:f.src}:defaultImage,[f,F]),$=h(()=>{if(L)return"javascript:void(0)";if(!O)return"#";let e=new URL(O);return w?`${e.protocol}//${e.host}/products/${w.handle}`:"#"},[O,w,L]),k=t=>"product-link"===n(E.ftClickOpenLightBox,b)?e("a",{title:w?.title,href:$,className:"gp-w-full",children:t}):t,P=h(()=>E?.hoverEffect!=="none"&&!g(N?.contentType),[N?.contentType,E?.hoverEffect]),R=h(()=>E?.hoverEffect=="zoom"&&E?.zoomType=="glasses"&&!g(N?.contentType),[N?.contentType,E?.hoverEffect,E?.zoomType]),z=m(e=>"IMAGE"!==e.contentType?e.previewImage:e.src,[]),A=h(()=>v?"other"!==E.hoverEffect?z(N):z(v):defaultImage.src,[v,N,E.hoverEffect,z]);return e(t,{children:k(e(t,{children:F?e(I,{type:N?.contentType,url:N.src??"",aspectRatio:T}):r(t,{children:[e(p,{draggable:"false",src:N.src,width:N?.width,height:N?.height,alt:N?.alt,setting:{aspectRatio:T,layout:E?.ftLayout},priority:E?.preload,className:"featured-image-only",style:{width:"100%",height:"100%",cursor:"pointer"}}),e(d,{contentType:N?.contentType??""}),P&&e(p,{draggable:"false",src:A,width:E?.hoverEffect==="other"?v?.width:N.width,height:E?.hoverEffect==="other"?v?.height:N.height,alt:E?.hoverEffect==="other"?v?.alt:N.alt,setting:{layout:E.ftLayout,aspectRatio:T},style:{width:"100%",height:"100%"},className:l("hover-image featured-image-only !gp-max-w-none",u()),priority:E?.preload}),R&&e("div",{className:l(y(),"room-len"),style:{...s({bgi:`url("${N?.src}")`})}})]})}))})};var ProductFeaturedImageOnly$1=f(ProductFeaturedImageOnly);export{ProductFeaturedImageOnly$1 as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,Fragment as
|
|
1
|
+
import{jsx as e,Fragment as o,jsxs as t}from"react/jsx-runtime";import r from"next/dynamic";import d from"../../../common/components/Loading.js";import{useState as l,useMemo as i,useEffect as s}from"react";import{useRenderMode as c,useCurrentDevice as a,usePageType as n,usePageStore as u,flattenConnection as m,ProductListProvider as g,filterToolbarPreview as p}from"@gem-sdk/core";import h from"../SalePageProductListWarning.js";import P from"next/head";import f from"./ProductListGridLayout.js";import k from"./ProductListCarouselLayout.js";import{getStyle as y}from"./common/styles.js";import{If as I}from"@gem-sdk/system";import{getClass as b}from"./common/classes.js";import{getData as v}from"./common/helpers.js";import{getPropertyByDevice as T}from"../../../dialog/common/helpers.js";import{useProductsQuery as S}from"./hooks/useProductsQuery.js";import{useCollectionQuery as j}from"./hooks/useCollectionQuery.js";import L from"./hooks/useProductRelatedQuery.js";import w from"./hooks/useMainRelatedProductQuery.js";let ProductNotFound=r(()=>import("../ProductNotFound.js"),{loading:d}),ProductList=r=>{let{children:C,styles:G,builderProps:N,setting:O,builderAttrs:A}=r,{isRelatedProduct:B,productSetting:x}=v(r),{isEditMode:E,isPreviewSharePageMode:z}=c(),F=a(),M=n(),Q=u(e=>e.dynamicCollection),[H,R]=l(1),[W,$]=l(!0),_="GP_FUNNEL_PAGE"===M,D="GP_COLLECTION"==M;D&&(x.productSrc="DynamicCollection",x.collectionId=Q?.collectionId??"latest");let V=x?.productSrc??"Collection",{mainRelatedProduct:q,relatedProductIdAssigned:U}=w({isEditMode:E,isPreviewSharePageMode:z,isRelatedProduct:B,relatedProductId:x.relatedProductId}),J=x.relatedTag&&x.relatedTag[0],K=x.relatedTag&&"tags"===x.relatedTag[0]&&(!q?.tags||q?.tags.length===0),X=x.relatedTag&&"collection"===x.relatedTag[0]&&(!q?.collections?.edges||q?.collections.edges.length===0),Y=x.relatedTag&&"vendor"===x.relatedTag[0]&&!q?.vendor,Z=K||X||Y,{isNotFoundRelatedProduct:ee,relatedProducts:eo}=L({isEditMode:E,isPreviewSharePageMode:z,isRelatedProduct:B,productSetting:x,setting:O,mainRelatedProduct:q}),et=S({productIds:"PickProduct"===V?x?.productIds:void 0,defaultSelectedProductCount:x?.numOfSelectedProducts}),er=i(()=>({id:x?.collectionId??"latest",numberOfProducts:O?.numberOfProducts??4,orderBy:O?.orderBy}),[x?.collectionId,Number(O?.numberOfProducts),O?.orderBy]),ed=j({variables:"PickProduct"!==V?er:void 0}),el="PickProduct"===V?et.isLoading:ed.isLoading,ei="PickProduct"===V?et.error:ed.error,es="PickProduct"===V?et.isValidating:ed.isValidating,ec=ed.data?.collections?.edges?.[0]?.node,ea="PickProduct"===V?m(et.data?.products):m(ec?.products),en=u(e=>e.assignedProductIds),eu=u(e=>e.isApplyAllProducts),em=i(()=>(en??[]).length>0&&!eu||eu,[en,eu]),eg=eo?.data?.products&&em?m(eo?.data?.products):[],ep=B?eg:"PickProduct"===V&&x?.productIds?.length?x?.productIds?.map(e=>ea?.find(o=>o?.baseID===e)).filter(Boolean)??ea:"PickProduct"!==V?ea:ea.filter((e,o)=>o<(x?.numOfSelectedProducts??4)),eh=i(()=>ee&&B&&E||!ep.length&&!el&&W&&E,[W,el,ee,B,E,ep.length]),eP=i(()=>!ep||ee&&B,[ee,B,ep]),ef=i(()=>{if(!O?.sameHeight)return[];let e=0,o=Math.ceil((ep?.length??0)/+(O?.slidesToShow?.[F]??1));return Array.from(Array(ep?.length??0)).map((t,r)=>(r>=+(O?.slidesToShow?.[F]??1)*(e+1)&&++e,{gridRow:`${1+H*e}/${H+1+H*e}`,marginBottom:e+1<o?T(G?.horizontalGutter,F):void 0}))},[O?.sameHeight,O?.slidesToShow,H,ep?.length,F,G?.horizontalGutter]),ek=i(()=>es||el||ei||!ep||ee&&B,[ei,el,ee,B,es,ep]),ey=i(()=>q?.collections?.edges.map(e=>e.node?.id)??[],[q?.collections?.edges]);s(()=>{ek||setTimeout(()=>{let{builderData:e}=N??{},o=e?.childrens?.[0];if(!o)return;let t=document.querySelector(`[data-id=${o}] div`);t&&R(t.childElementCount||1)},E?0:500)},[N,ek,E,ey]);let eI=i(()=>({collection:ec,products:ep,settings:{loop:O?.loop??{desktop:!1},scrollMode:O?.scrollMode??{desktop:"snap"},slidesToShow:O?.slidesToShow??{desktop:4,tablet:3,mobile:1},layout:G?.layout,dot:O?.dot,dotStyle:O?.dotStyle,arrow:O?.arrow,controlOverContent:O?.controlOverContent},styles:{horizontalGutter:G?.horizontalGutter,verticalGutter:G?.verticalGutter,fullWidth:G?.fullWidth,spacing:G?.spacing,width:G?.width,height:G?.height}}),[ec,ep,O,G]);if(N?.isPreview&&_)return e(o,{});if(eh)return e(o,{children:I(W,e(ProductNotFound,{builderAttrs:A,collectionHandle:ec?.handle,productSrc:V,onClose:()=>$(!1),children:C,relatedTagString:J,assignProductNoTags:Z,noAssignedProduct:!U}))});let{productListWrapStyle:eb,productListContentStyle:ev,productListWrapAlignStyle:eT}=y(r),{productListWrapClass:eS}=b(r),ej=()=>e(o,{children:I(G?.layout==="grid",e(f,{...r,productSortedById:ep,generateGridRowArray:ef}),e(k,{...r,productSortedById:ep}))});return t("div",{...A,className:eS,style:eb,children:[!!G?.preloadBgImage&&t(P,{children:[!!G.backgroundImage?.desktop?.image?.src&&e("link",{rel:"preload",href:G.backgroundImage.desktop.image.src,as:"image"}),!!G.backgroundImage?.tablet?.image?.src&&e("link",{rel:"preload",href:G.backgroundImage?.tablet?.image?.src,as:"image"}),!!G.backgroundImage?.mobile?.image?.src&&e("link",{rel:"preload",href:G.backgroundImage?.mobile?.image?.src,as:"image"})]}),el||es?e(d,{}):ei?t("div",{children:["Error: ",ei?.message]}):eP?e("div",{children:"Products not found"}):e(g,{...eI,children:e("div",{className:"gp-flex gp-w-full",style:eT,children:t("div",{style:ev,children:[_&&e(h,{}),ej()]})})}),p(C,!0)]})};export{ProductList as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useFetchHandle as r,usePageStore as t,hasPublicStoreFrontData as e,createStoreFrontFetcher as a,useIsSampleProduct as o,useIsStorefrontProduct as i,generateCollectionQueryKey as l,getCollection as n}from"@gem-sdk/core";import{useMemo as d,useEffect as m}from"react";import s from"swr";let useCollectionQuery=({variables:u})=>{let c=r(),g=t(r=>r.publicStoreFrontData),p=d(()=>e(g)?a(g):c,[g]),f=o(),v=i(),y=s(l({...u,isSample:f,isStorefront:v}),([,r])=>n(p,r),{revalidateOnMount:!1,revalidateIfStale:!0});return m(()=>{let r=!!y.error,t=y.isLoading||y.isValidating,e=!y.data&&!t,a=!r&&e&&u;a&&y.mutate()},[u,y.data,y.error,y.isLoading,y.isValidating]),y};export{useCollectionQuery};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useMemo as t}from"react";import{useFetchHandle as r,usePageStore as e,hasPublicStoreFrontData as d,createStoreFrontFetcher as o,useProductQuery as a}from"@gem-sdk/core";let useMainRelatedProductQuery=({isRelatedProduct:u,relatedProductId:c,isEditMode:i,isPreviewSharePageMode:l})=>{let n=r(),p=e(t=>t.dynamicProduct),m=e(t=>t.publicStoreFrontData),s=p?.productId&&p?.productId!==c?p?.productId:c,f=t(()=>d(m)?o(m):n,[m]),{data:y}=a(u&&s?s:void 0,{revalidateOnMount:i||l},f);return{relatedProductIdAssigned:s,mainRelatedProduct:y}};export{useMainRelatedProductQuery as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useState as e,useMemo as t,useEffect as r}from"react";import{useFetchHandle as a,usePageStore as d,hasPublicStoreFrontData as l,createStoreFrontFetcher as s,useProductsQueryAll as i}from"@gem-sdk/core";let useProductRelatedQuery=({setting:o,isEditMode:n,isPreviewSharePageMode:c,isRelatedProduct:u,mainRelatedProduct:h,productSetting:g})=>{let[m,f]=e(!1),[P,b]=e(),p=a(),T=d(e=>e.publicStoreFrontData),E=t(()=>l(T)?s(T):p,[T]),W=i(P,{revalidateOnMount:n||c,keepPreviousData:!0,refreshInterval:0},E);return r(()=>{if(u&&h&&g.relatedTag&&"recommended-product"!==g.relatedType){let e;switch(f(!1),g.hasRelatedExclude&&(e=g?.relatedExclude&&g.relatedExclude.split(",").map(e=>e.trim())),g.relatedTag[0]){case"vendor":b({first:o?.numberOfProducts,where:{vendor:g.relatedTag&&"vendor"===g.relatedTag[0]?h?.vendor:"",idNEQ:h.id}});break;case"collection":{let t;let r=h?.collections?.edges.map(e=>e.node?.id);if(!r||r?.length===0){f(!0);break}b(t=e&&e.length>0?{first:o?.numberOfProducts,where:{idNEQ:h.id,hasCollectionProductsWith:[{hasCollectionWith:[{idIn:r},{titleNotIn:e}]}]}}:{first:o?.numberOfProducts,where:{idNEQ:h.id,hasCollectionProductsWith:[{hasCollectionWith:[{idIn:r}]}]}});break}case"tags":{let t;if(!h.tags||0===h.tags.length){f(!0);break}b(t=e&&e.length>0?{first:o?.numberOfProducts,where:{idNEQ:h.id,hasProductTagsWith:[{hasTagsWith:[{nameIn:h.tags},{nameNotIn:e}]}]}}:{first:o?.numberOfProducts,where:{idNEQ:h.id,hasProductTagsWith:[{hasTagsWith:[{nameIn:h.tags}]}]}})}}}},[h,g.relatedType,g.relatedTag,o?.numberOfProducts,g.relatedExclude,g.hasRelatedExclude,u]),{isNotFoundRelatedProduct:m,relatedProducts:W}};export{useProductRelatedQuery as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useFetchHandle as r,usePageStore as t,hasPublicStoreFrontData as e,createStoreFrontFetcher as a,useIsSampleProduct as o,useIsStorefrontProduct as i,generateProductsQueryKey as s,getProducts as d}from"@gem-sdk/core";import{useMemo as n,useEffect as u}from"react";import l from"swr";let useProductsQuery=({defaultSelectedProductCount:m,productIds:g})=>{let c=r(),p=t(r=>r.publicStoreFrontData),f=n(()=>e(p)?a(p):c,[p]),y=o(),h=i(),L=s({ids:g??[],isSample:y,isStorefront:h,defaultSelectedProductCount:m}),P=l(L,async([,r])=>d(f,r),{revalidateOnMount:!1});return u(()=>{let r=!!P.error,t=P.isLoading||P.isValidating,e=!P.data&&!t,a=!r&&e&&g?.length;a&&P.mutate()},[g?.length,P.data,P.error,P.isLoading,P.isValidating]),{...P}};export{useProductsQuery};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gem-sdk/components",
|
|
3
|
-
"version": "12.0.0-dev.
|
|
3
|
+
"version": "12.0.0-dev.126",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"i18n:extract": "rollup -c ./scripts/rollup.config.settings.mjs && node ./scripts/translate/extract-texts-to-locales.js && node ./scripts/translate/en-keys-usage.js"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@gem-sdk/core": "12.0.0-dev.
|
|
29
|
+
"@gem-sdk/core": "12.0.0-dev.126",
|
|
30
30
|
"@gem-sdk/styles": "12.0.0-dev.124",
|
|
31
31
|
"@gem-sdk/system": "12.0.0-dev.124",
|
|
32
32
|
"@types/react-transition-group": "^4.4.12",
|