@gem-sdk/core 1.14.0-dev.732 → 1.14.0-dev.734
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/components/ComponentWrapperPreview.js +1 -1
- package/dist/cjs/contexts/ProductContext.js +1 -1
- package/dist/cjs/hooks/useProduct.js +1 -1
- package/dist/esm/components/ComponentWrapperPreview.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 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),react=require("react"),composeAdvanceStyle=require("../helpers/compose-advance-style.js"),constant=require("./constant.js"),RenderCustomCode=require("./RenderCustomCode.js"),ComponentToolbarPreview=require("./ComponentToolbarPreview.js"),useApplyAnimation=require("../hooks/animation/useApplyAnimation.js");require("zustand"),require("swr"),require("@gem-sdk/adapter-shopify"),require("swr/mutation");var shop=require("../hooks/shop.js");require("vanilla-lazyload"),require("../hooks/useCartUI.js"),require("../helpers/convert.js");const ComponentWrapperPreview=({children:e,...t})=>{react.useEffect(()=>{let e=new CustomEvent("editor:component:render",{bubbles:!0,detail:{componentUid:t.uid}});window.dispatchEvent(e)},[t.uid]),useApplyAnimation.default({props:t});let o=shop.usePageType();if("section"===t.type)return null;let n={};if("Section"===t.tag&&t.isThemeSection&&(n["data-theme-section"]=!0),t.editorConfigs){let e=t.editorConfigs;e.placeholder?.notAppendBeforeAfter&&(n["data-placeholder-not-append-before-after"]=!0),e.placeholder?.notAppendLeftRight&&(n["data-placeholder-not-append-left-right"]=!0),e.toolbar?.parent&&(n["data-toolbar-parent"]=!0),e.component?.noDelete&&(n["data-component-no-delete"]=!0),e.component?.noDuplicate&&(n["data-component-no-duplicate"]=!0),e.component?.noDragDrop&&(n["data-component-no-drag-drop"]=!0),e.component?.noSetting&&(n["data-component-no-setting"]=!0),e.component?.isThirdParty&&(n["data-component-is-third-party"]=!0),e.toolbar?.hide&&(n["data-toolbar-hide"]=!0),e.slots?.children&&(n["data-slots-children"]=!0),e.toolbar?.hide||(n["data-toolbar-wrap"]=!0)}t?.editorConfigs?.toolbar?.hide||(n["data-toolbar-wrap"]=!0);let a=composeAdvanceStyle.composeAdvanceStyle(t.advanced,t.tag,o),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),react=require("react"),composeAdvanceStyle=require("../helpers/compose-advance-style.js"),constant=require("./constant.js"),RenderCustomCode=require("./RenderCustomCode.js"),ComponentToolbarPreview=require("./ComponentToolbarPreview.js"),useApplyAnimation=require("../hooks/animation/useApplyAnimation.js");require("zustand"),require("swr"),require("@gem-sdk/adapter-shopify"),require("swr/mutation");var shop=require("../hooks/shop.js");require("vanilla-lazyload"),require("../hooks/useCartUI.js"),require("../helpers/convert.js");const ComponentWrapperPreview=({children:e,...t})=>{react.useEffect(()=>{let e=new CustomEvent("editor:component:render",{bubbles:!0,detail:{componentUid:t.uid}});window.dispatchEvent(e)},[t.uid]),useApplyAnimation.default({props:t});let o=shop.usePageType();if("section"===t.type)return null;let n={};if("Section"===t.tag&&t.isThemeSection&&(n["data-theme-section"]=!0),t.editorConfigs){let e=t.editorConfigs;e.placeholder?.notAppendBeforeAfter&&(n["data-placeholder-not-append-before-after"]=!0),e.placeholder?.notAppendLeftRight&&(n["data-placeholder-not-append-left-right"]=!0),e.toolbar?.parent&&(n["data-toolbar-parent"]=!0),e.component?.noDelete&&(n["data-component-no-delete"]=!0),e.component?.noDuplicate&&(n["data-component-no-duplicate"]=!0),e.component?.noDragDrop&&(n["data-component-no-drag-drop"]=!0),e.component?.noSetting&&(n["data-component-no-setting"]=!0),e.component?.isThirdParty&&(n["data-component-is-third-party"]=!0),e.toolbar?.hide&&(n["data-toolbar-hide"]=!0),e.slots?.children&&(n["data-slots-children"]=!0),e.toolbar?.hide||(n["data-toolbar-wrap"]=!0)}t?.editorConfigs?.toolbar?.hide||(n["data-toolbar-wrap"]=!0);let a=e=>"GP_FUNNEL_PAGE"===o&&["ProductList","Header"].includes(e),r=composeAdvanceStyle.composeAdvanceStyle(t.advanced,t.tag,o),s=t.advanced,i={...n,"data-uid":t.uid,"data-component-type":"component","data-component-tag":t.tag,"data-component-label":t.label,"data-not-droppable":a(t.tag)};return constant.disableWrap.includes(t.tag)&&react.isValidElement(e)?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(RenderCustomCode.default,{uid:t.uid,advanced:s}),jsxRuntime.jsxs(e.type,{className:s?.cssClass,...e.props,style:r,builderAttrs:i,advanced:s,children:[e.props.children,jsxRuntime.jsx(ComponentToolbarPreview.ComponentToolbarPreview,{...t})]})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(RenderCustomCode.default,{uid:t.uid,advanced:s}),jsxRuntime.jsxs("div",{style:constant.excludeApplyStyle.includes(t.tag)?{"--mb":r?.["--mb"],"--mb-tablet":r?.["--mb-tablet"],"--mb-mobile":r?.["--mb-mobile"]}:r,className:`${t.uid} ${t.advanced?.cssClass?t.advanced?.cssClass:""}`,...i,children:[!constant.excludeApplyStyle.includes(t.tag)&&e,react.isValidElement(e)&&constant.excludeApplyStyle.includes(t.tag)&&jsxRuntime.jsx(e.type,{...e.props,style:r,advanced:s}),jsxRuntime.jsx(ComponentToolbarPreview.ComponentToolbarPreview,{...t})]})]})};exports.default=ComponentWrapperPreview;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var jsxRuntime=require("react/jsx-runtime"),zustand=require("zustand"),react=require("react"),flattenConnection=require("../helpers/flatten-connection.js"),variant=require("../helpers/variant.js");const ProductContext=react.createContext(null),createProductStoreProvider=e=>zustand.createStore((t,r)=>({...e,updateProperty:(e,r)=>{t(t=>({properties:t.properties?.map(t=>t.key===e?{...t,...r}:t)}))},addProperty:e=>{let n=r().properties;n?.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})}})),ProductProvider=({children:e,product:t,initialVariantId:r,quantity:n=1,isSyncProduct:o})=>{let i=react.useId(),u=react.useMemo(()=>{let e,u={};if(t){let n=flattenConnection.flattenConnection(t.variants),o=n[0],i=n.find(e=>variant.checkInStock(e)),
|
|
1
|
+
"use strict";var jsxRuntime=require("react/jsx-runtime"),zustand=require("zustand"),react=require("react"),flattenConnection=require("../helpers/flatten-connection.js"),variant=require("../helpers/variant.js");const ProductContext=react.createContext(null),createProductStoreProvider=e=>zustand.createStore((t,r)=>({...e,updateProperty:(e,r)=>{t(t=>({properties:t.properties?.map(t=>t.key===e?{...t,...r}:t)}))},addProperty:e=>{let n=r().properties;n?.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})}})),ProductProvider=({children:e,product:t,initialVariantId:r,quantity:n=1,isSyncProduct:o})=>{let i=react.useId(),u=react.useMemo(()=>{let e,u={};if(t){let n=flattenConnection.flattenConnection(t.variants),o=n[0],i=n.find(e=>variant.checkInStock(e)),a=n.find(e=>e?.id===r)??i??o;u=a?.selectedOptions.reduce((e,t)=>t.name?{...e,[t.name]:t.value}:e,{}),e=t.medias?.edges.find(e=>e.node?.id===a?.mediaId)?.node??t.featuredImage}return createProductStoreProvider({product:t,quantity:n,selectedOptions:u,uiqueId:i,featuredImageGlobal:e,isSyncProduct:o})},[r,t,n,i,o]);return jsxRuntime.jsx(ProductContext.Provider,{value:u,children:jsxRuntime.jsx(jsxRuntime.Fragment,{children:e})})},useProductStore=(e,t)=>{let r=react.useContext(ProductContext);if(!r)throw Error("Element of product must be used inside a Product");return zustand.useStore(r,e,t)};exports.ProductProvider=ProductProvider,exports.useProductStore=useProductStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var react=require("react"),ProductContext=require("../contexts/ProductContext.js"),flattenConnection=require("../helpers/flatten-connection.js");require("react/jsx-runtime"),require("zustand"),require("swr");var PageContext=require("../contexts/PageContext.js");require("@gem-sdk/adapter-shopify"),require("swr/mutation"),require("vanilla-lazyload"),require("./useCartUI.js");var variant=require("../helpers/variant.js");require("react-transition-group"),require("@gem-sdk/core");var product=require("../helpers/product.js");require("../helpers/convert.js");const useUniqProductID=()=>ProductContext.useProductStore(e=>e.uiqueId),useProduct=()=>ProductContext.useProductStore(e=>e.product),useFeaturedImageGlobal=()=>ProductContext.useProductStore(e=>e.featuredImageGlobal),useProductProperties=()=>ProductContext.useProductStore(e=>e.properties),useIsSyncProduct=()=>ProductContext.useProductStore(e=>e.isSyncProduct),useQuantity=()=>{let e=ProductContext.useProductStore(e=>e.quantity),t=ProductContext.useProductStore(e=>e.
|
|
1
|
+
"use strict";var react=require("react"),ProductContext=require("../contexts/ProductContext.js"),flattenConnection=require("../helpers/flatten-connection.js");require("react/jsx-runtime"),require("zustand"),require("swr");var PageContext=require("../contexts/PageContext.js");require("@gem-sdk/adapter-shopify"),require("swr/mutation"),require("vanilla-lazyload"),require("./useCartUI.js");var variant=require("../helpers/variant.js");require("react-transition-group"),require("@gem-sdk/core");var product=require("../helpers/product.js");require("../helpers/convert.js");const useUniqProductID=()=>ProductContext.useProductStore(e=>e.uiqueId),useProduct=()=>ProductContext.useProductStore(e=>e.product),useFeaturedImageGlobal=()=>ProductContext.useProductStore(e=>e.featuredImageGlobal),useProductProperties=()=>ProductContext.useProductStore(e=>e.properties),useIsSyncProduct=()=>ProductContext.useProductStore(e=>e.isSyncProduct),useQuantity=()=>{let e=ProductContext.useProductStore(e=>e.quantity),t=ProductContext.useProductStore(e=>e.updatePrice),r=ProductContext.useProductStore(e=>e.decrementQuantity),u=ProductContext.useProductStore(e=>e.incrementQuantity),o=ProductContext.useProductStore(e=>e.setQuantity),n=ProductContext.useProductStore(e=>e.setHasUpdatePriceFollowQuantity),s=ProductContext.useProductStore(e=>e.isSyncProduct),c=ProductContext.useProductStore(e=>e.product),a=c?.id,i=react.useCallback(()=>{o(1)},[o]);return react.useEffect(()=>{if(s){let t=new CustomEvent("set-product-quantity",{bubbles:!0,cancelable:!0,composed:!0,detail:{quantity:e,productId:a}});window.dispatchEvent(t)}},[e,s,a]),react.useMemo(()=>({quantity:e,hasUpdatePrice:t,increment:u,decrement:r,reset:i,setQuantity:o,setUpdatePrice:n}),[r,u,e,i,o,n,t])},useSelectedOption=()=>{let e=ProductContext.useProductStore(e=>e.setSelectedOption),t=ProductContext.useProductStore(e=>e.selectedOptions),r=ProductContext.useProductStore(e=>e.forceSelectedOption),u=ProductContext.useProductStore(e=>e.isSyncProduct),o=react.useCallback((t,r,o,n)=>{if(!n&&u){let e=new CustomEvent("set-selected-option",{bubbles:!0,cancelable:!0,composed:!0,detail:{optionId:t,optionValue:r,productId:o}});window.dispatchEvent(e)}e(t,r)},[e,u]),n=react.useCallback((e,t,o)=>{if(!o&&u){let r=new CustomEvent("force-selected-option",{bubbles:!0,cancelable:!0,composed:!0,detail:{selectedOption:e,productId:t}});window.dispatchEvent(r)}r(e)},[r,u]);return react.useMemo(()=>({selectedOptions:t,setSelectedOption:o,forceSelectedOption:n}),[t,o,n])},useVariants=()=>{let e=ProductContext.useProductStore(e=>e.product?.variants);return flattenConnection.flattenConnection(e)},useVariant=e=>{let t=useVariants();return react.useMemo(()=>t?.find(t=>t?.id===e),[e,t])},useCurrentVariant=()=>{let{selectedOptions:e}=useSelectedOption(),t=useVariants();return react.useMemo(()=>product.getSelectedVariant(t,e),[e,t])},useCurrentVariantInStock=()=>{let e=useCurrentVariant(),t=useVariants();return variant.checkInStock(e,t)},useVariantOutStock=(e,t,r)=>{let{selectedOptions:u}=useSelectedOption(),o=useVariants(),n=r.optionNumber-1;if(r.position<n)return o.some(r=>{if(r){let{selectedOptions:u}=r,o=u?.some(r=>r?.name===e&&r.value===t),n=variant.checkInStock(r);return o&&n}});let s=product.getSelectedVariant(o,{...u,[e]:t});return variant.checkInStock(s)},useCheckAvailableVariantInStock=(e,t)=>{let r=useVariants();return!!r&&r.some(r=>{if(r){let{selectedOptions:u}=r,o=u?.some(r=>r?.name===e&&r.value===t),n=variant.checkInStock(r);return o&&n}return!1})},useProductOfferDiscount=()=>{let e=PageContext.usePageStore(e=>e.productOffers),t=useProduct(),r=useCurrentVariant(),u=e?.find(e=>e?.node?.objectBaseID===t?.baseID)?.node;if(!u||!u.isEnabled)return 0;let o=u?.value;if(u&&"PERCENTAGE"===u.valueType&&o){let e=r?.price||0;o=o*e/100}return o||0};exports.useCheckAvailableVariantInStock=useCheckAvailableVariantInStock,exports.useCurrentVariant=useCurrentVariant,exports.useCurrentVariantInStock=useCurrentVariantInStock,exports.useFeaturedImageGlobal=useFeaturedImageGlobal,exports.useIsSyncProduct=useIsSyncProduct,exports.useProduct=useProduct,exports.useProductOfferDiscount=useProductOfferDiscount,exports.useProductProperties=useProductProperties,exports.useQuantity=useQuantity,exports.useSelectedOption=useSelectedOption,exports.useUniqProductID=useUniqProductID,exports.useVariant=useVariant,exports.useVariantOutStock=useVariantOutStock,exports.useVariants=useVariants;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as t,Fragment as e,jsx as o}from"react/jsx-runtime";import{useEffect as a,isValidElement as n}from"react";import{composeAdvanceStyle as r}from"../helpers/compose-advance-style.js";import{disableWrap as d,excludeApplyStyle as i}from"./constant.js";import p from"./RenderCustomCode.js";import{ComponentToolbarPreview as l}from"./ComponentToolbarPreview.js";import s from"../hooks/animation/useApplyAnimation.js";import"zustand";import"swr";import"@gem-sdk/adapter-shopify";import"swr/mutation";import{usePageType as m}from"../hooks/shop.js";import"vanilla-lazyload";import"../hooks/useCartUI.js";import"../helpers/convert.js";let ComponentWrapperPreview=({children:c,...h})=>{a(()=>{let t=new CustomEvent("editor:component:render",{bubbles:!0,detail:{componentUid:h.uid}});window.dispatchEvent(t)},[h.uid]),s({props:h});let u=m();if("section"===h.type)return null;let b={};if("Section"===h.tag&&h.isThemeSection&&(b["data-theme-section"]=!0),h.editorConfigs){let t=h.editorConfigs;t.placeholder?.notAppendBeforeAfter&&(b["data-placeholder-not-append-before-after"]=!0),t.placeholder?.notAppendLeftRight&&(b["data-placeholder-not-append-left-right"]=!0),t.toolbar?.parent&&(b["data-toolbar-parent"]=!0),t.component?.noDelete&&(b["data-component-no-delete"]=!0),t.component?.noDuplicate&&(b["data-component-no-duplicate"]=!0),t.component?.noDragDrop&&(b["data-component-no-drag-drop"]=!0),t.component?.noSetting&&(b["data-component-no-setting"]=!0),t.component?.isThirdParty&&(b["data-component-is-third-party"]=!0),t.toolbar?.hide&&(b["data-toolbar-hide"]=!0),t.slots?.children&&(b["data-slots-children"]=!0),t.toolbar?.hide||(b["data-toolbar-wrap"]=!0)}h?.editorConfigs?.toolbar?.hide||(b["data-toolbar-wrap"]=!0);let f=t=>"GP_FUNNEL_PAGE"===u&&["ProductList","Header"].includes(t),g=r(h.advanced,h.tag,u),v=h.advanced,C={...b,"data-uid":h.uid,"data-component-type":"component","data-component-tag":h.tag,"data-component-label":h.label,"data-not-droppable":f(h.tag)};return d.includes(h.tag)&&n(c)?t(e,{children:[o(p,{uid:h.uid,advanced:v}),t(c.type,{className:v?.cssClass,...c.props,style:g,builderAttrs:C,advanced:v,children:[c.props.children,o(l,{...h})]})]}):t(e,{children:[o(p,{uid:h.uid,advanced:v}),t("div",{style:i.includes(h.tag)?{"--mb":g?.["--mb"],"--mb-tablet":g?.["--mb-tablet"],"--mb-mobile":g?.["--mb-mobile"]}:g,className:`${h.uid} ${h.advanced?.cssClass?h.advanced?.cssClass:""}`,...C,children:[!i.includes(h.tag)&&c,n(c)&&i.includes(h.tag)&&o(c.type,{...c.props,style:g,advanced:v}),o(l,{...h})]})]})};export{ComponentWrapperPreview as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useStore as r,createStore as o}from"zustand";import{useId as i,useMemo as d,useContext as n,createContext as u}from"react";import{flattenConnection as
|
|
1
|
+
import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useStore as r,createStore as o}from"zustand";import{useId as i,useMemo as d,useContext as n,createContext as u}from"react";import{flattenConnection as a}from"../helpers/flatten-connection.js";import{checkInStock as s}from"../helpers/variant.js";let ProductContext=u(null),createProductStoreProvider=e=>o((t,r)=>({...e,updateProperty:(e,r)=>{t(t=>({properties:t.properties?.map(t=>t.key===e?{...t,...r}:t)}))},addProperty:e=>{let o=r().properties;o?.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})}})),ProductProvider=({children:r,product:o,initialVariantId:n,quantity:u=1,isSyncProduct:p})=>{let c=i(),l=d(()=>{let e,t={};if(o){let r=a(o.variants),i=r[0],d=r.find(e=>s(e)),u=r.find(e=>e?.id===n)??d??i;t=u?.selectedOptions.reduce((e,t)=>t.name?{...e,[t.name]:t.value}:e,{}),e=o.medias?.edges.find(e=>e.node?.id===u?.mediaId)?.node??o.featuredImage}return createProductStoreProvider({product:o,quantity:u,selectedOptions:t,uiqueId:c,featuredImageGlobal:e,isSyncProduct:p})},[n,o,u,c,p]);return e(ProductContext.Provider,{value:l,children:e(t,{children:r})})},useProductStore=(e,t)=>{let o=n(ProductContext);if(!o)throw Error("Element of product must be used inside a Product");return r(o,e,t)};export{ProductProvider,useProductStore};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useCallback as e,useEffect as t,useMemo as r}from"react";import{useProductStore as n}from"../contexts/ProductContext.js";import{flattenConnection as u}from"../helpers/flatten-connection.js";import"react/jsx-runtime";import"zustand";import"swr";import{usePageStore as o}from"../contexts/PageContext.js";import"@gem-sdk/adapter-shopify";import"swr/mutation";import"vanilla-lazyload";import"./useCartUI.js";import{checkInStock as s}from"../helpers/variant.js";import"react-transition-group";import"@gem-sdk/core";import{getSelectedVariant as i}from"../helpers/product.js";import"../helpers/convert.js";let useUniqProductID=()=>n(e=>e.uiqueId),useProduct=()=>n(e=>e.product),useFeaturedImageGlobal=()=>n(e=>e.featuredImageGlobal),useProductProperties=()=>n(e=>e.properties),useIsSyncProduct=()=>n(e=>e.isSyncProduct),useQuantity=()=>{let u=n(e=>e.quantity),o=n(e=>e.
|
|
1
|
+
import{useCallback as e,useEffect as t,useMemo as r}from"react";import{useProductStore as n}from"../contexts/ProductContext.js";import{flattenConnection as u}from"../helpers/flatten-connection.js";import"react/jsx-runtime";import"zustand";import"swr";import{usePageStore as o}from"../contexts/PageContext.js";import"@gem-sdk/adapter-shopify";import"swr/mutation";import"vanilla-lazyload";import"./useCartUI.js";import{checkInStock as s}from"../helpers/variant.js";import"react-transition-group";import"@gem-sdk/core";import{getSelectedVariant as i}from"../helpers/product.js";import"../helpers/convert.js";let useUniqProductID=()=>n(e=>e.uiqueId),useProduct=()=>n(e=>e.product),useFeaturedImageGlobal=()=>n(e=>e.featuredImageGlobal),useProductProperties=()=>n(e=>e.properties),useIsSyncProduct=()=>n(e=>e.isSyncProduct),useQuantity=()=>{let u=n(e=>e.quantity),o=n(e=>e.updatePrice),s=n(e=>e.decrementQuantity),i=n(e=>e.incrementQuantity),a=n(e=>e.setQuantity),c=n(e=>e.setHasUpdatePriceFollowQuantity),l=n(e=>e.isSyncProduct),d=n(e=>e.product),p=d?.id,m=e(()=>{a(1)},[a]);return t(()=>{if(l){let e=new CustomEvent("set-product-quantity",{bubbles:!0,cancelable:!0,composed:!0,detail:{quantity:u,productId:p}});window.dispatchEvent(e)}},[u,l,p]),r(()=>({quantity:u,hasUpdatePrice:o,increment:i,decrement:s,reset:m,setQuantity:a,setUpdatePrice:c}),[s,i,u,m,a,c,o])},useSelectedOption=()=>{let t=n(e=>e.setSelectedOption),u=n(e=>e.selectedOptions),o=n(e=>e.forceSelectedOption),s=n(e=>e.isSyncProduct),i=e((e,r,n,u)=>{if(!u&&s){let t=new CustomEvent("set-selected-option",{bubbles:!0,cancelable:!0,composed:!0,detail:{optionId:e,optionValue:r,productId:n}});window.dispatchEvent(t)}t(e,r)},[t,s]),a=e((e,t,r)=>{if(!r&&s){let r=new CustomEvent("force-selected-option",{bubbles:!0,cancelable:!0,composed:!0,detail:{selectedOption:e,productId:t}});window.dispatchEvent(r)}o(e)},[o,s]);return r(()=>({selectedOptions:u,setSelectedOption:i,forceSelectedOption:a}),[u,i,a])},useVariants=()=>{let e=n(e=>e.product?.variants);return u(e)},useVariant=e=>{let t=useVariants();return r(()=>t?.find(t=>t?.id===e),[e,t])},useCurrentVariant=()=>{let{selectedOptions:e}=useSelectedOption(),t=useVariants();return r(()=>i(t,e),[e,t])},useCurrentVariantInStock=()=>{let e=useCurrentVariant(),t=useVariants();return s(e,t)},useVariantOutStock=(e,t,r)=>{let{selectedOptions:n}=useSelectedOption(),u=useVariants(),o=r.optionNumber-1;if(r.position<o)return u.some(r=>{if(r){let{selectedOptions:n}=r,u=n?.some(r=>r?.name===e&&r.value===t),o=s(r);return u&&o}});let a=i(u,{...n,[e]:t});return s(a)},useCheckAvailableVariantInStock=(e,t)=>{let r=useVariants();return!!r&&r.some(r=>{if(r){let{selectedOptions:n}=r,u=n?.some(r=>r?.name===e&&r.value===t),o=s(r);return u&&o}return!1})},useProductOfferDiscount=()=>{let e=o(e=>e.productOffers),t=useProduct(),r=useCurrentVariant(),n=e?.find(e=>e?.node?.objectBaseID===t?.baseID)?.node;if(!n||!n.isEnabled)return 0;let u=n?.value;if(n&&"PERCENTAGE"===n.valueType&&u){let e=r?.price||0;u=u*e/100}return u||0};export{useCheckAvailableVariantInStock,useCurrentVariant,useCurrentVariantInStock,useFeaturedImageGlobal,useIsSyncProduct,useProduct,useProductOfferDiscount,useProductProperties,useQuantity,useSelectedOption,useUniqProductID,useVariant,useVariantOutStock,useVariants};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -25857,6 +25857,8 @@ type ProductContextProps = {
|
|
|
25857
25857
|
isSubmit?: boolean;
|
|
25858
25858
|
updateIsSubmit: (value: boolean) => void;
|
|
25859
25859
|
isSyncProduct?: boolean;
|
|
25860
|
+
setHasUpdatePriceFollowQuantity: (updatePrice: boolean) => void;
|
|
25861
|
+
updatePrice?: boolean;
|
|
25860
25862
|
};
|
|
25861
25863
|
type ProductProviderProps = Pick<ProductContextProps, 'product' | 'quantity' | 'selectedOptions' | 'isSyncProduct'> & {
|
|
25862
25864
|
initialVariantId?: string;
|
|
@@ -34202,10 +34204,12 @@ declare const useProductProperties: () => {
|
|
|
34202
34204
|
declare const useIsSyncProduct: () => boolean | undefined;
|
|
34203
34205
|
declare const useQuantity: () => {
|
|
34204
34206
|
quantity: number | undefined;
|
|
34207
|
+
hasUpdatePrice: boolean | undefined;
|
|
34205
34208
|
increment: () => void;
|
|
34206
34209
|
decrement: () => void;
|
|
34207
34210
|
reset: () => void;
|
|
34208
34211
|
setQuantity: (num: number) => void;
|
|
34212
|
+
setUpdatePrice: (updatePrice: boolean) => void;
|
|
34209
34213
|
};
|
|
34210
34214
|
declare const useSelectedOption: () => {
|
|
34211
34215
|
selectedOptions: Record<string, string> | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gem-sdk/core",
|
|
3
|
-
"version": "1.14.0-dev.
|
|
3
|
+
"version": "1.14.0-dev.734",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@gem-sdk/adapter-shopify": "1.14.0-dev.619",
|
|
31
|
-
"@gem-sdk/styles": "1.14.0-dev.
|
|
31
|
+
"@gem-sdk/styles": "1.14.0-dev.733"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"react-error-boundary": "4.0.10",
|