@gem-sdk/components 8.0.3 → 9.0.0

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.
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),Text=require("../../../text/components/Text.js"),system=require("@gem-sdk/system"),classes=require("./common/classes.js"),attrs=require("./common/attrs.js"),helpers=require("./common/helpers.js"),useGpPrice=require("./hooks/useGpPrice.js"),core=require("@gem-sdk/core");const ProductPrice=e=>{let{style:s,children:r}=e,t=core.useEditorMode(),i="edit"===t,{elementRef:c,moneyFormatted:u,currentProductId:a,isNoComparePrice:m,isNoComparePriceILP:o,emitNoDataSignal:l}=useGpPrice.useGpPrice(e),n=system.createClass(classes.getWrapperClasses(e)),x=system.createAttr(attrs.getAttrs(e,a)),p=helpers.getTextProps(e,u),d={visibility:"hidden",opacity:0,maxWidth:0,maxHeight:0},j=o?d:s;return jsxRuntime.jsxs("div",{ref:c,...x,className:n,style:j,"aria-hidden":"true",onClick:l,children:[m&&i?jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsx("div",{className:"gp-flex-col gp-flex gp-justify-between gp-p-2",children:jsxRuntime.jsx("p",{className:"gp-text-[#212121] gp-text-[12px] gp-leading-3 ",children:"No compare price"})})}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Text.default,{...p}),r]}),core.filterToolbarPreview(r,!0)]})};exports.default=ProductPrice;
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),Text=require("../../../text/components/Text.js"),system=require("@gem-sdk/system"),classes=require("./common/classes.js"),attrs=require("./common/attrs.js"),helpers=require("./common/helpers.js"),useGpPrice=require("./hooks/useGpPrice.js"),core=require("@gem-sdk/core");const ProductPrice=e=>{let{style:s,children:r}=e,t=core.useEditorMode(),i="edit"===t,{elementRef:c,moneyFormatted:u,currentProductId:o,isNoComparePrice:a,isNoComparePriceILP:m,shouldHiddenComparePrice:l,emitNoDataSignal:n}=useGpPrice.useGpPrice(e),x=system.createClass(classes.getWrapperClasses(e)),d=system.createAttr(attrs.getAttrs(e,{isILP:!i,productId:o,shouldHiddenComparePrice:l})),p=helpers.getTextProps(e,u),j={visibility:"hidden",opacity:0,maxWidth:0,maxHeight:0},g=m?j:s;return jsxRuntime.jsxs("div",{ref:c,...d,className:x,style:g,"aria-hidden":"true",onClick:n,children:[a&&i?jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsx("div",{className:"gp-flex-col gp-flex gp-justify-between gp-p-2",children:jsxRuntime.jsx("p",{className:"gp-text-[#212121] gp-text-[12px] gp-leading-3 ",children:"No compare price"})})}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Text.default,{...p}),r]}),core.filterToolbarPreview(r,!0)]})};exports.default=ProductPrice;
@@ -1 +1 @@
1
- "use strict";var helpers=require("../../../../helpers.js");const getAttrs=(e,t)=>{let{builderAttrs:r,setting:a,builderProps:i}=e,p=a?.priceType==="compare";return helpers.filterTruthyObject({...r,id:`shopify-text-element-${i?.uid}`,"data-id":i?.uid,"data-product-id":t,"data-hidden":!!p&&"{% if variant.compare_at_price > variant.price and variant.compare_at_price >= 0 %}false{% else %}true{% endif %}"})};exports.getAttrs=getAttrs;
1
+ "use strict";var helpers=require("../../../../helpers.js");const getAttrs=(e,{isILP:t,productId:r,shouldHiddenComparePrice:a}={})=>{let{builderAttrs:i,setting:p,builderProps:s}=e,d=p?.priceType==="compare",c=()=>!!d&&(t?String(a):"{% if variant.compare_at_price > variant.price and variant.compare_at_price >= 0 %}false{% else %}true{% endif %}");return helpers.filterTruthyObject({...i,id:`shopify-text-element-${s?.uid}`,"data-id":s?.uid,"data-product-id":r,"data-hidden":c()})};exports.getAttrs=getAttrs;
@@ -1 +1 @@
1
- "use strict";const getWrapperClasses=s=>{let{builderProps:e,classNames:t,advanced:a}=s;return{"gp-product-price group-data-[state=loading]:gp-invisible data-[hidden=true]:gp-hidden":!0,...e?.uid&&{[e.uid]:!0},...a?.cssClass&&{[a.cssClass]:!0},...t&&{[t]:!0}}};exports.getWrapperClasses=getWrapperClasses;
1
+ "use strict";const getWrapperClasses=s=>{let{builderProps:e,classNames:t,advanced:a}=s;return{"gp-product-price group-data-[state=loading]:gp-invisible data-[hidden=true]:!gp-hidden":!0,...e?.uid&&{[e.uid]:!0},...a?.cssClass&&{[a.cssClass]:!0},...t&&{[t]:!0}}};exports.getWrapperClasses=getWrapperClasses;
@@ -1 +1 @@
1
- "use strict";var React=require("react"),common=require("../../product-variants/common/common.js"),core=require("@gem-sdk/core");const useGpPrice=e=>{let{setting:r,builderProps:t}=e,c=React.useRef(null),o=core.useEditorMode(),{quantity:u,hasUpdatePrice:i}=core.useQuantity(),a=core.useCurrentVariant(),{useProductCompareAtPrice:n}=core.useProductBundleDiscount(),s=e["bundle-item"],d=a?.price??0,p=a?.salePrice??0,l=r?.priceType==="compare",{trigger:m}=core.useInteraction(),g=core.useProduct(),y=g?.baseID?.replace("gid://shopify/Product/",""),P=core.useShopStore(e=>e.showPriceCurrency),h=React.useMemo(()=>s?.quantity?s.quantity:i&&u||1,[u,i,s?.quantity]),b=React.useMemo(()=>{let e=Number(s?.discountValue);return s?.discountType==="percentage"?d*h*e/100:e},[s?.discountType,s?.discountValue,d,h]),v=React.useMemo(()=>s?.discountValue?n?(p||d)*h:d*h:p*h,[s?.discountValue,d,h,p,n]),M=React.useMemo(()=>{let e=d*h;return l?v:b?Math.max(0,e-b):e},[d,h,b,v,l]),R=(e,r)=>{m({event:"price"===r?"gp:rollback:price-change":"gp:rollback:compare-price-change",selector:`[data-id="${t?.uid}"]`,element:c.current}),m({event:"price"===r?"gp:price-change":"gp:compare-price-change",data:e,selector:`[data-id="${t?.uid}"]`,element:c.current})};common.useTransition(e=>{e!==d&&R(d,"price")},[d]),common.useTransition(e=>{e!==p&&R(p,"compare")},[p]);let q=()=>{if("edit"!==o)return;let e=new CustomEvent("editor:product-source-no-data-warning",{bubbles:!0,detail:{uid:t?.uid,value:!M&&l,tag:"ProductPrice"}});window.dispatchEvent(e)},w=core.useFormatMoney(M??0,P||!1),T=l&&!M,V="edit"!==o&&T;return{elementRef:c,moneyFormatted:w,currentProductId:y,isNoComparePrice:T,isNoComparePriceILP:V,emitNoDataSignal:q}};exports.useGpPrice=useGpPrice;
1
+ "use strict";var React=require("react"),common=require("../../product-variants/common/common.js"),core=require("@gem-sdk/core");const useGpPrice=e=>{let{setting:r,builderProps:t}=e,c=React.useRef(null),o=core.useEditorMode(),{quantity:u,hasUpdatePrice:i}=core.useQuantity(),a=core.useCurrentVariant(),{useProductCompareAtPrice:n}=core.useProductBundleDiscount(),s=e["bundle-item"],d=a?.price??0,p=a?.salePrice??0,m=r?.priceType==="compare",{trigger:l}=core.useInteraction(),g=core.useProduct(),y=g?.baseID?.replace("gid://shopify/Product/",""),P=core.useShopStore(e=>e.showPriceCurrency),h=React.useMemo(()=>s?.quantity?s.quantity:i&&u||1,[u,i,s?.quantity]),b=React.useMemo(()=>{let e=Number(s?.discountValue);return s?.discountType==="percentage"?d*h*e/100:e},[s?.discountType,s?.discountValue,d,h]),M=React.useMemo(()=>s?.discountValue?n?(p||d)*h:d*h:p*h,[s?.discountValue,d,h,p,n]),R=React.useMemo(()=>{let e=d*h;return m?M:b?Math.max(0,e-b):e},[d,h,b,M,m]),v=React.useMemo(()=>!!m&&(!(p>d)||!(p>=0)),[m,p,d]),q=(e,r)=>{l({event:"price"===r?"gp:rollback:price-change":"gp:rollback:compare-price-change",selector:`[data-id="${t?.uid}"]`,element:c.current}),l({event:"price"===r?"gp:price-change":"gp:compare-price-change",data:e,selector:`[data-id="${t?.uid}"]`,element:c.current})};common.useTransition(e=>{e!==d&&q(d,"price")},[d]),common.useTransition(e=>{e!==p&&q(p,"compare")},[p]);let w=()=>{if("edit"!==o)return;let e=new CustomEvent("editor:product-source-no-data-warning",{bubbles:!0,detail:{uid:t?.uid,value:!R&&m,tag:"ProductPrice"}});window.dispatchEvent(e)},T=core.useFormatMoney(R??0,P||!1),V=m&&!R,f="edit"!==o&&V;return{elementRef:c,moneyFormatted:T,currentProductId:y,isNoComparePrice:V,isNoComparePriceILP:f,emitNoDataSignal:w,shouldHiddenComparePrice:v}};exports.useGpPrice=useGpPrice;
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import{jsxs as e,jsx as r,Fragment as t}from"react/jsx-runtime";import o from"../../../text/components/Text.js";import{createClass as i,createAttr as m}from"@gem-sdk/system";import{getWrapperClasses as s}from"./common/classes.js";import{getAttrs as c}from"./common/attrs.js";import{getTextProps as p}from"./common/helpers.js";import{useGpPrice as l}from"./hooks/useGpPrice.js";import{useEditorMode as d,filterToolbarPreview as a}from"@gem-sdk/core";let ProductPrice=n=>{let{style:f,children:g}=n,h=d(),x="edit"===h,{elementRef:u,moneyFormatted:j,currentProductId:y,isNoComparePrice:P,isNoComparePriceILP:k,emitNoDataSignal:N}=l(n),v=i(s(n)),b=m(c(n,y)),w=p(n,j),C={visibility:"hidden",opacity:0,maxWidth:0,maxHeight:0},G=k?C:f;return e("div",{ref:u,...b,className:v,style:G,"aria-hidden":"true",onClick:N,children:[P&&x?r(t,{children:r("div",{className:"gp-flex-col gp-flex gp-justify-between gp-p-2",children:r("p",{className:"gp-text-[#212121] gp-text-[12px] gp-leading-3 ",children:"No compare price"})})}):e(t,{children:[r(o,{...w}),g]}),a(g,!0)]})};export{ProductPrice as default};
2
+ import{jsxs as e,jsx as r,Fragment as o}from"react/jsx-runtime";import t from"../../../text/components/Text.js";import{createClass as i,createAttr as m}from"@gem-sdk/system";import{getWrapperClasses as s}from"./common/classes.js";import{getAttrs as c}from"./common/attrs.js";import{getTextProps as p}from"./common/helpers.js";import{useGpPrice as d}from"./hooks/useGpPrice.js";import{useEditorMode as l,filterToolbarPreview as a}from"@gem-sdk/core";let ProductPrice=n=>{let{style:f,children:h}=n,g=l(),x="edit"===g,{elementRef:u,moneyFormatted:j,currentProductId:P,isNoComparePrice:y,isNoComparePriceILP:k,shouldHiddenComparePrice:N,emitNoDataSignal:v}=d(n),b=i(s(n)),C=m(c(n,{isILP:!x,productId:P,shouldHiddenComparePrice:N})),H=p(n,j),I={visibility:"hidden",opacity:0,maxWidth:0,maxHeight:0},w=k?I:f;return e("div",{ref:u,...C,className:b,style:w,"aria-hidden":"true",onClick:v,children:[y&&x?r(o,{children:r("div",{className:"gp-flex-col gp-flex gp-justify-between gp-p-2",children:r("p",{className:"gp-text-[#212121] gp-text-[12px] gp-leading-3 ",children:"No compare price"})})}):e(o,{children:[r(t,{...H}),h]}),a(h,!0)]})};export{ProductPrice as default};
@@ -1 +1 @@
1
- import{filterTruthyObject as e}from"../../../../helpers.js";let getAttrs=(t,r)=>{let{builderAttrs:a,setting:i,builderProps:d}=t,p=i?.priceType==="compare";return e({...a,id:`shopify-text-element-${d?.uid}`,"data-id":d?.uid,"data-product-id":r,"data-hidden":!!p&&"{% if variant.compare_at_price > variant.price and variant.compare_at_price >= 0 %}false{% else %}true{% endif %}"})};export{getAttrs};
1
+ import{filterTruthyObject as e}from"../../../../helpers.js";let getAttrs=(t,{isILP:r,productId:a,shouldHiddenComparePrice:i}={})=>{let{builderAttrs:d,setting:p,builderProps:n}=t,c=p?.priceType==="compare",o=()=>!!c&&(r?String(i):"{% if variant.compare_at_price > variant.price and variant.compare_at_price >= 0 %}false{% else %}true{% endif %}");return e({...d,id:`shopify-text-element-${n?.uid}`,"data-id":n?.uid,"data-product-id":a,"data-hidden":o()})};export{getAttrs};
@@ -1 +1 @@
1
- let getWrapperClasses=e=>{let{builderProps:s,classNames:a,advanced:t}=e;return{"gp-product-price group-data-[state=loading]:gp-invisible data-[hidden=true]:gp-hidden":!0,...s?.uid&&{[s.uid]:!0},...t?.cssClass&&{[t.cssClass]:!0},...a&&{[a]:!0}}};export{getWrapperClasses};
1
+ let getWrapperClasses=e=>{let{builderProps:s,classNames:a,advanced:t}=e;return{"gp-product-price group-data-[state=loading]:gp-invisible data-[hidden=true]:!gp-hidden":!0,...s?.uid&&{[s.uid]:!0},...t?.cssClass&&{[t.cssClass]:!0},...a&&{[a]:!0}}};export{getWrapperClasses};
@@ -1 +1 @@
1
- import{useRef as e,useMemo as r}from"react";import{useTransition as t}from"../../product-variants/common/common.js";import{useEditorMode as c,useQuantity as i,useCurrentVariant as a,useProductBundleDiscount as n,useInteraction as o,useProduct as u,useShopStore as p,useFormatMoney as d}from"@gem-sdk/core";let useGpPrice=l=>{let{setting:m,builderProps:s}=l,g=e(null),b=c(),{quantity:h,hasUpdatePrice:y}=i(),P=a(),{useProductCompareAtPrice:v}=n(),f=l["bundle-item"],w=P?.price??0,V=P?.salePrice??0,k=m?.priceType==="compare",{trigger:q}=o(),T=u(),x=T?.baseID?.replace("gid://shopify/Product/",""),C=p(e=>e.showPriceCurrency),E=r(()=>f?.quantity?f.quantity:y&&h||1,[h,y,f?.quantity]),G=r(()=>{let e=Number(f?.discountValue);return f?.discountType==="percentage"?w*E*e/100:e},[f?.discountType,f?.discountValue,w,E]),$=r(()=>f?.discountValue?v?(V||w)*E:w*E:V*E,[f?.discountValue,w,E,V,v]),j=r(()=>{let e=w*E;return k?$:G?Math.max(0,e-G):e},[w,E,G,$,k]),D=(e,r)=>{q({event:"price"===r?"gp:rollback:price-change":"gp:rollback:compare-price-change",selector:`[data-id="${s?.uid}"]`,element:g.current}),q({event:"price"===r?"gp:price-change":"gp:compare-price-change",data:e,selector:`[data-id="${s?.uid}"]`,element:g.current})};t(e=>{e!==w&&D(w,"price")},[w]),t(e=>{e!==V&&D(V,"compare")},[V]);let I=()=>{if("edit"!==b)return;let e=new CustomEvent("editor:product-source-no-data-warning",{bubbles:!0,detail:{uid:s?.uid,value:!j&&k,tag:"ProductPrice"}});window.dispatchEvent(e)},M=d(j??0,C||!1),N=k&&!j,z="edit"!==b&&N;return{elementRef:g,moneyFormatted:M,currentProductId:x,isNoComparePrice:N,isNoComparePriceILP:z,emitNoDataSignal:I}};export{useGpPrice};
1
+ import{useRef as e,useMemo as r}from"react";import{useTransition as t}from"../../product-variants/common/common.js";import{useEditorMode as c,useQuantity as i,useCurrentVariant as a,useProductBundleDiscount as n,useInteraction as o,useProduct as u,useShopStore as p,useFormatMoney as d}from"@gem-sdk/core";let useGpPrice=l=>{let{setting:m,builderProps:s}=l,g=e(null),b=c(),{quantity:h,hasUpdatePrice:y}=i(),P=a(),{useProductCompareAtPrice:v}=n(),f=l["bundle-item"],w=P?.price??0,V=P?.salePrice??0,k=m?.priceType==="compare",{trigger:q}=o(),T=u(),x=T?.baseID?.replace("gid://shopify/Product/",""),C=p(e=>e.showPriceCurrency),E=r(()=>f?.quantity?f.quantity:y&&h||1,[h,y,f?.quantity]),G=r(()=>{let e=Number(f?.discountValue);return f?.discountType==="percentage"?w*E*e/100:e},[f?.discountType,f?.discountValue,w,E]),$=r(()=>f?.discountValue?v?(V||w)*E:w*E:V*E,[f?.discountValue,w,E,V,v]),j=r(()=>{let e=w*E;return k?$:G?Math.max(0,e-G):e},[w,E,G,$,k]),D=r(()=>!!k&&(!(V>w)||!(V>=0)),[k,V,w]),I=(e,r)=>{q({event:"price"===r?"gp:rollback:price-change":"gp:rollback:compare-price-change",selector:`[data-id="${s?.uid}"]`,element:g.current}),q({event:"price"===r?"gp:price-change":"gp:compare-price-change",data:e,selector:`[data-id="${s?.uid}"]`,element:g.current})};t(e=>{e!==w&&I(w,"price")},[w]),t(e=>{e!==V&&I(V,"compare")},[V]);let M=()=>{if("edit"!==b)return;let e=new CustomEvent("editor:product-source-no-data-warning",{bubbles:!0,detail:{uid:s?.uid,value:!j&&k,tag:"ProductPrice"}});window.dispatchEvent(e)},N=d(j??0,C||!1),z=k&&!j,A="edit"!==b&&z;return{elementRef:g,moneyFormatted:N,currentProductId:x,isNoComparePrice:z,isNoComparePriceILP:A,emitNoDataSignal:M,shouldHiddenComparePrice:D}};export{useGpPrice};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gem-sdk/components",
3
- "version": "8.0.3",
3
+ "version": "9.0.0",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "main": "dist/cjs/index.js",