@gem-sdk/core 17.0.0-dev.81 → 17.0.0-dev.82
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/contexts/BuilderContext.js +1 -1
- package/dist/cjs/contexts/ProductContext.js +1 -1
- package/dist/cjs/hooks/useProduct.js +1 -1
- package/dist/esm/contexts/BuilderContext.js +1 -1
- package/dist/esm/contexts/ProductContext.js +1 -1
- package/dist/esm/hooks/useProduct.js +1 -1
- package/dist/types/index.d.ts +4 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("zustand");const s=r.createContext(null),i=(e,r,s)=>t.createStore((t,
|
|
2
|
+
"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("zustand");const s=r.createContext(null),i=(e,r,s,i)=>t.createStore((t,u)=>({state:e,isPostPurchase:r,isPreview:s,sectionIndex:i,getItem:e=>u().state[e],getIsPostPurchase:()=>u().isPostPurchase,getIsPreview:()=>u().isPreview}));exports.BuilderProvider=({children:t,state:u,isPostPurchase:o,isPreview:n,sectionIndex:a,lazy:c,priority:d,...P})=>{let l=c?r.Suspense:r.Fragment,v=i(u,o,n,a);return e.jsx(l,{children:e.jsx(s.Provider,{...P,value:v,children:t})})},exports.useBuilderStore=(e,i)=>{let u=r.useContext(s);if(!u)throw Error("useBuilderStore must be used within a BuilderProvider");return t.useStore(u,e,i)};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("zustand");require("swr"),require("../graphql/queries/articles.generated.js"),require("../graphql/queries/blogs.generated.js"),require("@gem-sdk/adapter-shopify"),require("swr/mutation"),require("../graphql/queries/collection-detail-filter.generated.js"),require("../graphql/queries/collection.generated.js"),require("../graphql/queries/collections.generated.js"),require("../graphql/queries/published-theme-pages.generated.js"),require("../graphql/queries/products.generated.js"),require("../graphql/queries/store-property.generated.js"),require("../graphql/queries/preview-page.generated.js"),require("../graphql/queries/published-shop-metas.generated.js"),require("../graphql/queries/shop-shopify.generated.js"),require("../graphql/queries/products-with-selling-plans.generated.js"),require("../graphql/queries/product-variant-with-selling-plans.generated.js"),require("../graphql/queries/product-variants.generated.js"),require("../graphql/queries/product-little-detail.generated.js"),require("../graphql/queries/product-medias.generated.js"),require("swr/infinite"),require("vanilla-lazyload"),require("../hooks/useCartUI.js"),require("../graphql/queries/product-value-label.generated.js"),require("../hooks/useStickyStore.js");var i=require("../helpers/variant.js");require("../types/builder.js"),require("../types/builderUpsell.js"),require("../types/custom.js"),require("../types/animations.js"),require("react-transition-group"),require("classnames"),require("dayjs"),require("@gem-sdk/core");var s=require("../helpers/flatten-connection.js");require("../helpers/convert.js"),require("crc-32");const
|
|
2
|
+
"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("zustand");require("swr"),require("../graphql/queries/articles.generated.js"),require("../graphql/queries/blogs.generated.js"),require("@gem-sdk/adapter-shopify"),require("swr/mutation"),require("../graphql/queries/collection-detail-filter.generated.js"),require("../graphql/queries/collection.generated.js"),require("../graphql/queries/collections.generated.js"),require("../graphql/queries/published-theme-pages.generated.js"),require("../graphql/queries/products.generated.js"),require("../graphql/queries/store-property.generated.js"),require("../graphql/queries/preview-page.generated.js"),require("../graphql/queries/published-shop-metas.generated.js"),require("../graphql/queries/shop-shopify.generated.js"),require("../graphql/queries/products-with-selling-plans.generated.js"),require("../graphql/queries/product-variant-with-selling-plans.generated.js"),require("../graphql/queries/product-variants.generated.js"),require("../graphql/queries/product-little-detail.generated.js"),require("../graphql/queries/product-medias.generated.js"),require("swr/infinite"),require("vanilla-lazyload"),require("../hooks/useCartUI.js"),require("../graphql/queries/product-value-label.generated.js"),require("../hooks/useStickyStore.js");var i=require("../helpers/variant.js");require("../types/builder.js"),require("../types/builderUpsell.js"),require("../types/custom.js"),require("../types/animations.js"),require("react-transition-group"),require("classnames"),require("dayjs"),require("@gem-sdk/core");var s=require("../helpers/flatten-connection.js");require("../helpers/convert.js"),require("crc-32");const a=r.createContext(null),u=e=>t.createStore((r,t)=>({...e,updateProperty:(e,t)=>{r(r=>({properties:r.properties?.map(r=>r.key===e?{...r,...t}:r)}))},setUseProductCompareAtPrice:e=>{r({useProductCompareAtPrice:e})},setShouldRequireUploadMessage:e=>{r({shouldRequireUploadMessage:e})},setRequireUpload:e=>{r({requireUpload:e})},addProperty:e=>{let i=t().properties;i?.some(r=>r.key===e.key)||r(r=>({properties:[...r.properties??[],e]}))},removeProperty:e=>{r(r=>({properties:r.properties?.filter(r=>r.key!==e)}))},setQuantity:e=>{r({quantity:e>0?e:1})},setProductFeaturedImage:e=>{r({featuredImageGlobal:e})},incrementQuantity:()=>{r(e=>{let r=e.quantity??1;return{quantity:r+1}})},decrementQuantity:()=>{r(e=>{let r=e.quantity??1;return{quantity:r>2?r-1:1}})},setSelectedOption:(e,t)=>{r(r=>e&&t?{selectedOptions:{...r?.selectedOptions,[e]:t}}:r)},forceSelectedOption:e=>{r(r=>({selectedOptions:{...r?.selectedOptions,...e}}))},updateIsSubmit:e=>{r({isSubmit:e})},setHasUpdatePriceFollowQuantity:e=>{r({updatePrice:e})},setHasPreSelected:e=>{r({hasPreSelected:e})},setIsChangeSelectedOption:e=>{r({isChangeSelectedOption:e})},setSubscriptionSellingType:e=>{r({subscriptionSellingType:e})},setSelectedSellingPlan:e=>{r({selectedSellingPlan:e})}}));exports.ProductProvider=({children:t,product:l,initialVariantId:n,initialVariantBaseId:o,quantity:d=1,isSyncProduct:p,hasPreSelected:q,uid:c})=>{let g=r.useId(),h=r.useMemo(()=>{let e,r={},t=!!n&&"Latest"!==n,a=t?n:void 0;if(l){let t=s.flattenConnection(l.variants),a=t[0],u=t.find(e=>i.checkInStock(e)),d=t.find(e=>e?.id===n||e?.baseID===o)??u??a;r=d?.selectedOptions?.reduce((e,r)=>r.name?{...e,[r.name]:r.value}:e,{}),e=l.medias?.edges.find(e=>e.node?.id===d?.mediaId)?.node??l.featuredImage}return u({product:l,quantity:d,selectedOptions:r,uiqueId:g,featuredImageGlobal:e,isSyncProduct:p,hasPreSelected:q,uid:c,offerSingleVariantID:a})},[l,d,g,p,q,n,c]);return e.jsx(a.Provider,{value:h,children:e.jsx(e.Fragment,{children:t})})},exports.useProductStore=(e,i)=>{let s=r.useContext(a);if(!s)throw Error("Element of product must be used inside a Product");return t.useStore(s,e,i)};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
"use strict";var e=require("react"),r=require("../contexts/ProductContext.js");require("react/jsx-runtime"),require("zustand");var t=require("../contexts/PageContext.js");require("swr"),require("../graphql/queries/articles.generated.js"),require("../graphql/queries/blogs.generated.js"),require("@gem-sdk/adapter-shopify"),require("swr/mutation"),require("../graphql/queries/collection-detail-filter.generated.js"),require("../graphql/queries/collection.generated.js"),require("../graphql/queries/collections.generated.js"),require("../graphql/queries/published-theme-pages.generated.js"),require("../graphql/queries/products.generated.js"),require("../graphql/queries/store-property.generated.js"),require("../graphql/queries/preview-page.generated.js"),require("../graphql/queries/published-shop-metas.generated.js"),require("../graphql/queries/shop-shopify.generated.js"),require("../graphql/queries/products-with-selling-plans.generated.js"),require("../graphql/queries/product-variant-with-selling-plans.generated.js"),require("../graphql/queries/product-variants.generated.js"),require("../graphql/queries/product-little-detail.generated.js"),require("../graphql/queries/product-medias.generated.js"),require("swr/infinite"),require("vanilla-lazyload"),require("./useCartUI.js");var u=require("./useFormatMoney.js");require("../graphql/queries/product-value-label.generated.js"),require("./useStickyStore.js");var s=require("../helpers/variant.js"),o=require("./shop/useShopifyLink.js");require("../types/builder.js"),require("../types/builderUpsell.js"),require("../types/custom.js"),require("../types/animations.js"),require("react-transition-group"),require("classnames"),require("dayjs"),require("@gem-sdk/core");var i=require("../helpers/flatten-connection.js");require("../helpers/convert.js"),require("crc-32");var a=require("../helpers/product.js");const n=()=>r.useProductStore(e=>e.product),c=()=>{let t=r.useProductStore(e=>e.setSelectedOption),u=r.useProductStore(e=>e.selectedOptions),s=r.useProductStore(e=>e.forceSelectedOption),o=r.useProductStore(e=>e.isSyncProduct),i=r.useProductStore(e=>e.isChangeSelectedOption),a=r.useProductStore(e=>e.setIsChangeSelectedOption),n=e.useCallback((e,r,u,s)=>{if(!s&&o){let t=new CustomEvent("set-selected-option",{bubbles:!0,cancelable:!0,composed:!0,detail:{optionId:e,optionValue:r,productId:u,isManualChange:!0}});window.dispatchEvent(t)}t(e,r),a(!0)},[o,t,a]),
|
|
2
|
+
"use strict";var e=require("react"),r=require("../contexts/ProductContext.js");require("react/jsx-runtime"),require("zustand");var t=require("../contexts/PageContext.js");require("swr"),require("../graphql/queries/articles.generated.js"),require("../graphql/queries/blogs.generated.js"),require("@gem-sdk/adapter-shopify"),require("swr/mutation"),require("../graphql/queries/collection-detail-filter.generated.js"),require("../graphql/queries/collection.generated.js"),require("../graphql/queries/collections.generated.js"),require("../graphql/queries/published-theme-pages.generated.js"),require("../graphql/queries/products.generated.js"),require("../graphql/queries/store-property.generated.js"),require("../graphql/queries/preview-page.generated.js"),require("../graphql/queries/published-shop-metas.generated.js"),require("../graphql/queries/shop-shopify.generated.js"),require("../graphql/queries/products-with-selling-plans.generated.js"),require("../graphql/queries/product-variant-with-selling-plans.generated.js"),require("../graphql/queries/product-variants.generated.js"),require("../graphql/queries/product-little-detail.generated.js"),require("../graphql/queries/product-medias.generated.js"),require("swr/infinite"),require("vanilla-lazyload"),require("./useCartUI.js");var u=require("./useFormatMoney.js");require("../graphql/queries/product-value-label.generated.js"),require("./useStickyStore.js");var s=require("../helpers/variant.js"),o=require("./shop/useShopifyLink.js");require("../types/builder.js"),require("../types/builderUpsell.js"),require("../types/custom.js"),require("../types/animations.js"),require("react-transition-group"),require("classnames"),require("dayjs"),require("@gem-sdk/core");var i=require("../helpers/flatten-connection.js");require("../helpers/convert.js"),require("crc-32");var a=require("../helpers/product.js");const n=()=>r.useProductStore(e=>e.product),c=()=>{let t=r.useProductStore(e=>e.setSelectedOption),u=r.useProductStore(e=>e.selectedOptions),s=r.useProductStore(e=>e.forceSelectedOption),o=r.useProductStore(e=>e.isSyncProduct),i=r.useProductStore(e=>e.isChangeSelectedOption),a=r.useProductStore(e=>e.setIsChangeSelectedOption),n=r.useProductStore(e=>e.offerSingleVariantID),c=e.useCallback((e,r,u,s)=>{if(!s&&o){let t=new CustomEvent("set-selected-option",{bubbles:!0,cancelable:!0,composed:!0,detail:{optionId:e,optionValue:r,productId:u,isManualChange:!0}});window.dispatchEvent(t)}t(e,r),a(!0)},[o,t,a]),d=e.useCallback((e,r,t,u)=>{if(!t&&o){let t=new CustomEvent("force-selected-option",{bubbles:!0,cancelable:!0,composed:!0,detail:{selectedOption:e,productId:r,isManualChange:u}});window.dispatchEvent(t)}s(e)},[s,o]);return e.useMemo(()=>({isChangeSelectedOption:i,selectedOptions:u,setSelectedOption:c,forceSelectedOption:d,offerSingleVariantID:n}),[u,c,d])},d=()=>{let e=r.useProductStore(e=>e.product?.variants);return i.flattenConnection(e)},l=()=>{let{selectedOptions:r}=c(),t=d();return e.useMemo(()=>a.getSelectedVariant(t,r),[r,t])};exports.useCheckAvailableVariantInStock=(e,r)=>{let t=d();return!!t&&t.some(t=>{if(t){let{selectedOptions:u}=t,o=u?.some(t=>t?.name===e&&t.value===r),i=s.checkInStock(t);return o&&i}return!1})},exports.useCurrentVariant=l,exports.useCurrentVariantInStock=()=>{let e=l(),r=n();return s.checkInStock(e,r)},exports.useFeaturedImageGlobal=()=>r.useProductStore(e=>e.featuredImageGlobal),exports.useHasPreSelected=()=>{let t=r.useProductStore(e=>e.hasPreSelected),u=r.useProductStore(e=>e.setHasPreSelected);return e.useMemo(()=>({hasPreSelected:t,setHasPreSelected:u}),[t,u])},exports.useIsSyncProduct=()=>r.useProductStore(e=>e.isSyncProduct),exports.useProduct=n,exports.useProductBundleDiscount=()=>{let e=r.useProductStore(e=>e.useProductCompareAtPrice),t=r.useProductStore(e=>e.setUseProductCompareAtPrice);return{useProductCompareAtPrice:e,seUseProductCompareAtPrice:t}},exports.useProductOfferDiscount=()=>{let e=t.usePageStore(e=>e.productOffers),r=n(),s=l(),o=e?.find(e=>e?.node?.objectBaseID===r?.baseID)?.node;if(!o||!o.isEnabled)return 0;let i=o?.value;if(o&&"PERCENTAGE"===o.valueType&&i){let e=u.convertDecimalToNumber(s?.price)??0;i=i*e/100}return i||0},exports.useProductProperties=()=>r.useProductStore(e=>e.properties),exports.useProductShopifyEditLink=()=>{let e=r.useProductStore(e=>e.product),t=e?.baseID?.replace("gid://shopify/Product/",""),{linkEditProduct:u}=o.useShopifyLink({productId:t});return{linkEditProduct:u,redirectProductShopifyLink:()=>{u&&window.open(u,"_blank")}}},exports.useQuantity=()=>{let t=r.useProductStore(e=>e.quantity),u=r.useProductStore(e=>e.updatePrice),s=r.useProductStore(e=>e.decrementQuantity),o=r.useProductStore(e=>e.incrementQuantity),i=r.useProductStore(e=>e.setQuantity),a=r.useProductStore(e=>e.setHasUpdatePriceFollowQuantity),n=r.useProductStore(e=>e.isSyncProduct),c=r.useProductStore(e=>e.product),d=c?.id,l=e.useCallback(()=>{i(1)},[i]);return e.useEffect(()=>{if(n){let e=new CustomEvent("set-product-quantity",{bubbles:!0,cancelable:!0,composed:!0,detail:{quantity:t,productId:d}});window.dispatchEvent(e)}},[t,n,d]),e.useMemo(()=>({quantity:t,hasUpdatePrice:u,increment:o,decrement:s,reset:l,setQuantity:i,setUpdatePrice:a}),[s,o,t,l,i,a,u])},exports.useSelectedOption=c,exports.useUniqProductID=()=>r.useProductStore(e=>e.uiqueId),exports.useVariant=r=>{let t=d();return e.useMemo(()=>t?.find(e=>e?.id===r),[r,t])},exports.useVariantOutStock=(e,r,t)=>{let{selectedOptions:u}=c(),o=d(),i=t.optionNumber-1;if(t.position<i)return o.some(t=>{if(t){let{selectedOptions:u}=t,o=u?.some(t=>t?.name===e&&t.value===r),i=s.checkInStock(t);return o&&i}});let n=a.getSelectedVariant(o,{...u,[e]:r});return s.checkInStock(n)},exports.useVariants=d;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import{jsx as e}from"react/jsx-runtime";import{useContext as r,createContext as t,Suspense as i,Fragment as s}from"react";import{useStore as o,createStore as u}from"zustand";let
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{useContext as r,createContext as t,Suspense as i,Fragment as s}from"react";import{useStore as o,createStore as u}from"zustand";let d=t(null),l=(e,r,t,i)=>u((s,o)=>({state:e,isPostPurchase:r,isPreview:t,sectionIndex:i,getItem:e=>o().state[e],getIsPostPurchase:()=>o().isPostPurchase,getIsPreview:()=>o().isPreview})),P=({children:r,state:t,isPostPurchase:o,isPreview:u,sectionIndex:P,lazy:a,priority:n,...m})=>{let c=a?i:s,h=l(t,o,u,P);return e(c,{children:e(d.Provider,{...m,value:h,children:r})})},a=(e,t)=>{let i=r(d);if(!i)throw Error("useBuilderStore must be used within a BuilderProvider");return o(i,e,t)};export{P as BuilderProvider,a as useBuilderStore};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useId as r,useMemo as i,useContext as s,createContext as o}from"react";import{useStore as p,createStore as a}from"zustand";import"swr";import"../graphql/queries/articles.generated.js";import"../graphql/queries/blogs.generated.js";import"@gem-sdk/adapter-shopify";import"swr/mutation";import"../graphql/queries/collection-detail-filter.generated.js";import"../graphql/queries/collection.generated.js";import"../graphql/queries/collections.generated.js";import"../graphql/queries/published-theme-pages.generated.js";import"../graphql/queries/products.generated.js";import"../graphql/queries/store-property.generated.js";import"../graphql/queries/preview-page.generated.js";import"../graphql/queries/published-shop-metas.generated.js";import"../graphql/queries/shop-shopify.generated.js";import"../graphql/queries/products-with-selling-plans.generated.js";import"../graphql/queries/product-variant-with-selling-plans.generated.js";import"../graphql/queries/product-variants.generated.js";import"../graphql/queries/product-little-detail.generated.js";import"../graphql/queries/product-medias.generated.js";import"swr/infinite";import"vanilla-lazyload";import"../hooks/useCartUI.js";import"../graphql/queries/product-value-label.generated.js";import"../hooks/useStickyStore.js";import{checkInStock as l}from"../helpers/variant.js";import"../types/builder.js";import"../types/builderUpsell.js";import"../types/custom.js";import"../types/animations.js";import"react-transition-group";import"classnames";import"dayjs";import"@gem-sdk/core";import{flattenConnection as n}from"../helpers/flatten-connection.js";import"../helpers/convert.js";import"crc-32";let d=o(null),u=e=>a((t,r)=>({...e,updateProperty:(e,r)=>{t(t=>({properties:t.properties?.map(t=>t.key===e?{...t,...r}:t)}))},setUseProductCompareAtPrice:e=>{t({useProductCompareAtPrice:e})},setShouldRequireUploadMessage:e=>{t({shouldRequireUploadMessage:e})},setRequireUpload:e=>{t({requireUpload:e})},addProperty:e=>{let i=r().properties;i?.some(t=>t.key===e.key)||t(t=>({properties:[...t.properties??[],e]}))},removeProperty:e=>{t(t=>({properties:t.properties?.filter(t=>t.key!==e)}))},setQuantity:e=>{t({quantity:e>0?e:1})},setProductFeaturedImage:e=>{t({featuredImageGlobal:e})},incrementQuantity:()=>{t(e=>{let t=e.quantity??1;return{quantity:t+1}})},decrementQuantity:()=>{t(e=>{let t=e.quantity??1;return{quantity:t>2?t-1:1}})},setSelectedOption:(e,r)=>{t(t=>e&&r?{selectedOptions:{...t?.selectedOptions,[e]:r}}:t)},forceSelectedOption:e=>{t(t=>({selectedOptions:{...t?.selectedOptions,...e}}))},updateIsSubmit:e=>{t({isSubmit:e})},setHasUpdatePriceFollowQuantity:e=>{t({updatePrice:e})},setHasPreSelected:e=>{t({hasPreSelected:e})},setIsChangeSelectedOption:e=>{t({isChangeSelectedOption:e})},setSubscriptionSellingType:e=>{t({subscriptionSellingType:e})},setSelectedSellingPlan:e=>{t({selectedSellingPlan:e})}})),m=({children:s,product:o,initialVariantId:p,initialVariantBaseId:a,quantity:m=1,isSyncProduct:c,hasPreSelected:g,uid:q})=>{let h=r(),j=i(()=>{let e,t={};if(o){let r=n(o.variants),i=r[0],s=r.find(e=>l(e)),d=r.find(e=>e?.id===p||e?.baseID===a)??s??i;t=d?.selectedOptions?.reduce((e,t)=>t.name?{...e,[t.name]:t.value}:e,{}),e=o.medias?.edges.find(e=>e.node?.id===d?.mediaId)?.node??o.featuredImage}return u({product:o,quantity:m,selectedOptions:t,uiqueId:h,featuredImageGlobal:e,isSyncProduct:c,hasPreSelected:g,uid:q})},[o,m,h,c,g,p,q]);return e(d.Provider,{value:j,children:e(t,{children:s})})},c=(e,t)=>{let r=s(d);if(!r)throw Error("Element of product must be used inside a Product");return p(r,e,t)};export{m as ProductProvider,c as useProductStore};
|
|
2
|
+
import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useId as r,useMemo as i,useContext as s,createContext as o}from"react";import{useStore as p,createStore as a}from"zustand";import"swr";import"../graphql/queries/articles.generated.js";import"../graphql/queries/blogs.generated.js";import"@gem-sdk/adapter-shopify";import"swr/mutation";import"../graphql/queries/collection-detail-filter.generated.js";import"../graphql/queries/collection.generated.js";import"../graphql/queries/collections.generated.js";import"../graphql/queries/published-theme-pages.generated.js";import"../graphql/queries/products.generated.js";import"../graphql/queries/store-property.generated.js";import"../graphql/queries/preview-page.generated.js";import"../graphql/queries/published-shop-metas.generated.js";import"../graphql/queries/shop-shopify.generated.js";import"../graphql/queries/products-with-selling-plans.generated.js";import"../graphql/queries/product-variant-with-selling-plans.generated.js";import"../graphql/queries/product-variants.generated.js";import"../graphql/queries/product-little-detail.generated.js";import"../graphql/queries/product-medias.generated.js";import"swr/infinite";import"vanilla-lazyload";import"../hooks/useCartUI.js";import"../graphql/queries/product-value-label.generated.js";import"../hooks/useStickyStore.js";import{checkInStock as l}from"../helpers/variant.js";import"../types/builder.js";import"../types/builderUpsell.js";import"../types/custom.js";import"../types/animations.js";import"react-transition-group";import"classnames";import"dayjs";import"@gem-sdk/core";import{flattenConnection as n}from"../helpers/flatten-connection.js";import"../helpers/convert.js";import"crc-32";let d=o(null),u=e=>a((t,r)=>({...e,updateProperty:(e,r)=>{t(t=>({properties:t.properties?.map(t=>t.key===e?{...t,...r}:t)}))},setUseProductCompareAtPrice:e=>{t({useProductCompareAtPrice:e})},setShouldRequireUploadMessage:e=>{t({shouldRequireUploadMessage:e})},setRequireUpload:e=>{t({requireUpload:e})},addProperty:e=>{let i=r().properties;i?.some(t=>t.key===e.key)||t(t=>({properties:[...t.properties??[],e]}))},removeProperty:e=>{t(t=>({properties:t.properties?.filter(t=>t.key!==e)}))},setQuantity:e=>{t({quantity:e>0?e:1})},setProductFeaturedImage:e=>{t({featuredImageGlobal:e})},incrementQuantity:()=>{t(e=>{let t=e.quantity??1;return{quantity:t+1}})},decrementQuantity:()=>{t(e=>{let t=e.quantity??1;return{quantity:t>2?t-1:1}})},setSelectedOption:(e,r)=>{t(t=>e&&r?{selectedOptions:{...t?.selectedOptions,[e]:r}}:t)},forceSelectedOption:e=>{t(t=>({selectedOptions:{...t?.selectedOptions,...e}}))},updateIsSubmit:e=>{t({isSubmit:e})},setHasUpdatePriceFollowQuantity:e=>{t({updatePrice:e})},setHasPreSelected:e=>{t({hasPreSelected:e})},setIsChangeSelectedOption:e=>{t({isChangeSelectedOption:e})},setSubscriptionSellingType:e=>{t({subscriptionSellingType:e})},setSelectedSellingPlan:e=>{t({selectedSellingPlan:e})}})),m=({children:s,product:o,initialVariantId:p,initialVariantBaseId:a,quantity:m=1,isSyncProduct:c,hasPreSelected:g,uid:q})=>{let h=r(),j=i(()=>{let e,t={},r=!!p&&"Latest"!==p,i=r?p:void 0;if(o){let r=n(o.variants),i=r[0],s=r.find(e=>l(e)),d=r.find(e=>e?.id===p||e?.baseID===a)??s??i;t=d?.selectedOptions?.reduce((e,t)=>t.name?{...e,[t.name]:t.value}:e,{}),e=o.medias?.edges.find(e=>e.node?.id===d?.mediaId)?.node??o.featuredImage}return u({product:o,quantity:m,selectedOptions:t,uiqueId:h,featuredImageGlobal:e,isSyncProduct:c,hasPreSelected:g,uid:q,offerSingleVariantID:i})},[o,m,h,c,g,p,q]);return e(d.Provider,{value:j,children:e(t,{children:s})})},c=(e,t)=>{let r=s(d);if(!r)throw Error("Element of product must be used inside a Product");return p(r,e,t)};export{m as ProductProvider,c as useProductStore};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import{useMemo as e,useCallback as t,useEffect as r}from"react";import{useProductStore as i}from"../contexts/ProductContext.js";import"react/jsx-runtime";import"zustand";import{usePageStore as s}from"../contexts/PageContext.js";import"swr";import"../graphql/queries/articles.generated.js";import"../graphql/queries/blogs.generated.js";import"@gem-sdk/adapter-shopify";import"swr/mutation";import"../graphql/queries/collection-detail-filter.generated.js";import"../graphql/queries/collection.generated.js";import"../graphql/queries/collections.generated.js";import"../graphql/queries/published-theme-pages.generated.js";import"../graphql/queries/products.generated.js";import"../graphql/queries/store-property.generated.js";import"../graphql/queries/preview-page.generated.js";import"../graphql/queries/published-shop-metas.generated.js";import"../graphql/queries/shop-shopify.generated.js";import"../graphql/queries/products-with-selling-plans.generated.js";import"../graphql/queries/product-variant-with-selling-plans.generated.js";import"../graphql/queries/product-variants.generated.js";import"../graphql/queries/product-little-detail.generated.js";import"../graphql/queries/product-medias.generated.js";import"swr/infinite";import"vanilla-lazyload";import"./useCartUI.js";import{convertDecimalToNumber as o}from"./useFormatMoney.js";import"../graphql/queries/product-value-label.generated.js";import"./useStickyStore.js";import{checkInStock as a}from"../helpers/variant.js";import{useShopifyLink as n}from"./shop/useShopifyLink.js";import"../types/builder.js";import"../types/builderUpsell.js";import"../types/custom.js";import"../types/animations.js";import"react-transition-group";import"classnames";import"dayjs";import"@gem-sdk/core";import{flattenConnection as p}from"../helpers/flatten-connection.js";import"../helpers/convert.js";import"crc-32";import{getSelectedVariant as u}from"../helpers/product.js";let l=()=>i(e=>e.uiqueId),d=()=>i(e=>e.product),c=()=>i(e=>e.featuredImageGlobal),m=()=>i(e=>e.properties),g=()=>i(e=>e.isSyncProduct),h=()=>{let e=i(e=>e.useProductCompareAtPrice),t=i(e=>e.setUseProductCompareAtPrice);return{useProductCompareAtPrice:e,seUseProductCompareAtPrice:t}},q=()=>{let e=i(e=>e.product),t=e?.baseID?.replace("gid://shopify/Product/",""),{linkEditProduct:r}=n({productId:t});return{linkEditProduct:r,redirectProductShopifyLink:()=>{r&&window.open(r,"_blank")}}},f=()=>{let s=i(e=>e.quantity),o=i(e=>e.updatePrice),a=i(e=>e.decrementQuantity),n=i(e=>e.incrementQuantity),p=i(e=>e.setQuantity),u=i(e=>e.setHasUpdatePriceFollowQuantity),l=i(e=>e.isSyncProduct),d=i(e=>e.product),c=d?.id,m=t(()=>{p(1)},[p]);return r(()=>{if(l){let e=new CustomEvent("set-product-quantity",{bubbles:!0,cancelable:!0,composed:!0,detail:{quantity:s,productId:c}});window.dispatchEvent(e)}},[s,l,c]),e(()=>({quantity:s,hasUpdatePrice:o,increment:n,decrement:a,reset:m,setQuantity:p,setUpdatePrice:u}),[a,n,s,m,p,u,o])},j=()=>{let t=i(e=>e.hasPreSelected),r=i(e=>e.setHasPreSelected);return e(()=>({hasPreSelected:t,setHasPreSelected:r}),[t,r])},y=()=>{let r=i(e=>e.setSelectedOption),s=i(e=>e.selectedOptions),o=i(e=>e.forceSelectedOption),a=i(e=>e.isSyncProduct),n=i(e=>e.isChangeSelectedOption),p=i(e=>e.setIsChangeSelectedOption),u=t((e,t,i,s)=>{if(!s&&a){let r=new CustomEvent("set-selected-option",{bubbles:!0,cancelable:!0,composed:!0,detail:{optionId:e,optionValue:t,productId:i,isManualChange:!0}});window.dispatchEvent(r)}r(e,t),p(!0)},[a,r,p]),
|
|
2
|
+
import{useMemo as e,useCallback as t,useEffect as r}from"react";import{useProductStore as i}from"../contexts/ProductContext.js";import"react/jsx-runtime";import"zustand";import{usePageStore as s}from"../contexts/PageContext.js";import"swr";import"../graphql/queries/articles.generated.js";import"../graphql/queries/blogs.generated.js";import"@gem-sdk/adapter-shopify";import"swr/mutation";import"../graphql/queries/collection-detail-filter.generated.js";import"../graphql/queries/collection.generated.js";import"../graphql/queries/collections.generated.js";import"../graphql/queries/published-theme-pages.generated.js";import"../graphql/queries/products.generated.js";import"../graphql/queries/store-property.generated.js";import"../graphql/queries/preview-page.generated.js";import"../graphql/queries/published-shop-metas.generated.js";import"../graphql/queries/shop-shopify.generated.js";import"../graphql/queries/products-with-selling-plans.generated.js";import"../graphql/queries/product-variant-with-selling-plans.generated.js";import"../graphql/queries/product-variants.generated.js";import"../graphql/queries/product-little-detail.generated.js";import"../graphql/queries/product-medias.generated.js";import"swr/infinite";import"vanilla-lazyload";import"./useCartUI.js";import{convertDecimalToNumber as o}from"./useFormatMoney.js";import"../graphql/queries/product-value-label.generated.js";import"./useStickyStore.js";import{checkInStock as a}from"../helpers/variant.js";import{useShopifyLink as n}from"./shop/useShopifyLink.js";import"../types/builder.js";import"../types/builderUpsell.js";import"../types/custom.js";import"../types/animations.js";import"react-transition-group";import"classnames";import"dayjs";import"@gem-sdk/core";import{flattenConnection as p}from"../helpers/flatten-connection.js";import"../helpers/convert.js";import"crc-32";import{getSelectedVariant as u}from"../helpers/product.js";let l=()=>i(e=>e.uiqueId),d=()=>i(e=>e.product),c=()=>i(e=>e.featuredImageGlobal),m=()=>i(e=>e.properties),g=()=>i(e=>e.isSyncProduct),h=()=>{let e=i(e=>e.useProductCompareAtPrice),t=i(e=>e.setUseProductCompareAtPrice);return{useProductCompareAtPrice:e,seUseProductCompareAtPrice:t}},q=()=>{let e=i(e=>e.product),t=e?.baseID?.replace("gid://shopify/Product/",""),{linkEditProduct:r}=n({productId:t});return{linkEditProduct:r,redirectProductShopifyLink:()=>{r&&window.open(r,"_blank")}}},f=()=>{let s=i(e=>e.quantity),o=i(e=>e.updatePrice),a=i(e=>e.decrementQuantity),n=i(e=>e.incrementQuantity),p=i(e=>e.setQuantity),u=i(e=>e.setHasUpdatePriceFollowQuantity),l=i(e=>e.isSyncProduct),d=i(e=>e.product),c=d?.id,m=t(()=>{p(1)},[p]);return r(()=>{if(l){let e=new CustomEvent("set-product-quantity",{bubbles:!0,cancelable:!0,composed:!0,detail:{quantity:s,productId:c}});window.dispatchEvent(e)}},[s,l,c]),e(()=>({quantity:s,hasUpdatePrice:o,increment:n,decrement:a,reset:m,setQuantity:p,setUpdatePrice:u}),[a,n,s,m,p,u,o])},j=()=>{let t=i(e=>e.hasPreSelected),r=i(e=>e.setHasPreSelected);return e(()=>({hasPreSelected:t,setHasPreSelected:r}),[t,r])},y=()=>{let r=i(e=>e.setSelectedOption),s=i(e=>e.selectedOptions),o=i(e=>e.forceSelectedOption),a=i(e=>e.isSyncProduct),n=i(e=>e.isChangeSelectedOption),p=i(e=>e.setIsChangeSelectedOption),u=i(e=>e.offerSingleVariantID),l=t((e,t,i,s)=>{if(!s&&a){let r=new CustomEvent("set-selected-option",{bubbles:!0,cancelable:!0,composed:!0,detail:{optionId:e,optionValue:t,productId:i,isManualChange:!0}});window.dispatchEvent(r)}r(e,t),p(!0)},[a,r,p]),d=t((e,t,r,i)=>{if(!r&&a){let r=new CustomEvent("force-selected-option",{bubbles:!0,cancelable:!0,composed:!0,detail:{selectedOption:e,productId:t,isManualChange:i}});window.dispatchEvent(r)}o(e)},[o,a]);return e(()=>({isChangeSelectedOption:n,selectedOptions:s,setSelectedOption:l,forceSelectedOption:d,offerSingleVariantID:u}),[s,l,d])},b=()=>{let e=i(e=>e.product?.variants);return p(e)},P=t=>{let r=b();return e(()=>r?.find(e=>e?.id===t),[t,r])},S=()=>{let{selectedOptions:t}=y(),r=b();return e(()=>u(r,t),[t,r])},v=()=>{let e=S(),t=d();return a(e,t)},w=(e,t,r)=>{let{selectedOptions:i}=y(),s=b(),o=r.optionNumber-1;if(r.position<o)return s.some(r=>{if(r){let{selectedOptions:i}=r,s=i?.some(r=>r?.name===e&&r.value===t),o=a(r);return s&&o}});let n=u(s,{...i,[e]:t});return a(n)},C=(e,t)=>{let r=b();return!!r&&r.some(r=>{if(r){let{selectedOptions:i}=r,s=i?.some(r=>r?.name===e&&r.value===t),o=a(r);return s&&o}return!1})},I=()=>{let e=s(e=>e.productOffers),t=d(),r=S(),i=e?.find(e=>e?.node?.objectBaseID===t?.baseID)?.node;if(!i||!i.isEnabled)return 0;let a=i?.value;if(i&&"PERCENTAGE"===i.valueType&&a){let e=o(r?.price)??0;a=a*e/100}return a||0};export{C as useCheckAvailableVariantInStock,S as useCurrentVariant,v as useCurrentVariantInStock,c as useFeaturedImageGlobal,j as useHasPreSelected,g as useIsSyncProduct,d as useProduct,h as useProductBundleDiscount,I as useProductOfferDiscount,m as useProductProperties,q as useProductShopifyEditLink,f as useQuantity,y as useSelectedOption,l as useUniqProductID,P as useVariant,w as useVariantOutStock,b as useVariants};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -42795,8 +42795,9 @@ type BuilderContextProps = {
|
|
|
42795
42795
|
getIsPostPurchase: () => boolean | undefined;
|
|
42796
42796
|
isPreview?: boolean;
|
|
42797
42797
|
getIsPreview: () => boolean | undefined;
|
|
42798
|
+
sectionIndex?: number;
|
|
42798
42799
|
};
|
|
42799
|
-
type BuilderProviderProps = Pick<BuilderContextProps, 'state' | 'isPostPurchase' | 'isPreview'> & {
|
|
42800
|
+
type BuilderProviderProps = Pick<BuilderContextProps, 'state' | 'isPostPurchase' | 'isPreview' | 'sectionIndex'> & {
|
|
42800
42801
|
children: React.ReactNode;
|
|
42801
42802
|
lazy?: boolean;
|
|
42802
42803
|
priority?: boolean;
|
|
@@ -43042,6 +43043,7 @@ type ProductContextProps = {
|
|
|
43042
43043
|
uiqueId: string;
|
|
43043
43044
|
product?: ProductsWithSellingPlansDetailFragment;
|
|
43044
43045
|
quantity?: number;
|
|
43046
|
+
offerSingleVariantID?: string;
|
|
43045
43047
|
selectedOptions?: Record<string, string>;
|
|
43046
43048
|
properties?: AttributeProp[];
|
|
43047
43049
|
featuredImageGlobal?: MediaSelectFragment;
|
|
@@ -55246,6 +55248,7 @@ declare const useSelectedOption: () => {
|
|
|
55246
55248
|
selectedOptions: Record<string, string> | undefined;
|
|
55247
55249
|
setSelectedOption: (optionId?: Maybe$1<string>, optionValue?: Maybe$1<string>, productId?: Maybe$1<string>, noEmit?: boolean) => void;
|
|
55248
55250
|
forceSelectedOption: (selectedOption?: Record<string, string>, productId?: Maybe$1<string>, noEmit?: boolean, isManualChange?: boolean) => void;
|
|
55251
|
+
offerSingleVariantID: string | undefined;
|
|
55249
55252
|
};
|
|
55250
55253
|
declare const useVariants: () => Maybe$1<Pick<ProductVariant$1, "id" | "title" | "baseID" | "sku" | "barcode" | "costPrice" | "height" | "inventoryPolicy" | "inventoryQuantity" | "inventoryStatus" | "isDigital" | "length" | "lowInventoryAmount" | "manageInventory" | "mediaId" | "platform" | "price" | "salePrice" | "soldIndividually" | "weight" | "width"> & {
|
|
55251
55254
|
selectedOptions: Array<Pick<SelectedOption$1, "name" | "value" | "optionType">>;
|