@gem-sdk/components 17.0.0-dev.29 → 17.0.0-dev.31

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";var e=require("react/jsx-runtime"),r=require("@gem-sdk/core");require("react");var t=require("../../../../../grid/components/row/Row.js"),s=require("../../../../../grid/components/ChildrenDroppable.js"),i=require("@gem-sdk/system"),d=require("../common/attrs.js"),a=require("../common/classes.js");exports.ProductOfferItem=c=>{let{product:l,setting:u,builderProps:o,children:n,index:m,totalProduct:j,builderAttrs:f,styles:q}=c,g=r.useEditorMode(),{variantSelected:h,productOfferLayout:p,layout:x,...v}=u??{};Object.keys(x||{}).forEach(e=>{p?.[e]==="2col"&&x?.[e]&&(x[e].display="fill")});let y=h?.[l?.baseID??""]?.variantId,I=i.createAttr({...d.getProductOfferAttrs(l,o?.uid)}),O=i.createClass({...a.getProductOfferItemClasses(m,u,j)});return e.jsx("div",{className:O,children:e.jsx(r.ProductProvider,{product:l,readOnly:!0,initialVariantId:y??"Latest",uid:o?.uid,children:e.jsx("div",{..."edit"===g?{...I}:{},children:e.jsx(t.default,{builderAttrs:f,setting:{...v,layout:x},styles:q,children:r.isEmptyChildren(n)?e.jsx(s.default,{}):n})})})},`uid-${l?.id}`)};
2
+ "use strict";var e=require("react/jsx-runtime"),r=require("@gem-sdk/core"),t=require("react"),s=require("../../../../../grid/components/row/Row.js"),i=require("../../../../../grid/components/ChildrenDroppable.js"),d=require("@gem-sdk/system"),c=require("../common/attrs.js"),n=require("../common/classes.js"),u=require("../context/PrdOfferSubscriptionPresenceContext.js");exports.ProductOfferItem=o=>{let{product:l,setting:a,builderProps:f,children:m,index:j,totalProduct:x,builderAttrs:P,styles:p}=o,{isEditMode:q}=r.useRenderMode(),{variantSelected:h,productOfferLayout:g,layout:O,...b}=a??{};Object.keys(O||{}).forEach(e=>{g?.[e]==="2col"&&O?.[e]&&(O[e].display="fill")});let v=h?.[l?.baseID??""]?.variantId,y=d.createAttr({...c.getProductOfferAttrs(l,f?.uid)}),C=d.createClass({...n.getProductOfferItemClasses(j,a,x)}),I=t.useRef(null),R=e.jsx("div",{ref:I,...q?{...y}:{},children:e.jsx(s.default,{builderAttrs:P,setting:{...b,layout:O},styles:p,children:r.isEmptyChildren(m)?e.jsx(i.default,{}):m})});return e.jsx("div",{className:C,children:e.jsx(r.ProductProvider,{product:l,readOnly:!0,initialVariantId:v??"Latest",uid:f?.uid,children:q?e.jsx(u.ProductOfferSubscriptionPresenceProvider,{containerRef:I,children:R}):R})},`uid-${l?.id}`)};
@@ -0,0 +1,2 @@
1
+ 'use client';
2
+ "use strict";var e=require("react/jsx-runtime"),r=require("react"),s=require("../hooks/useProductOfferSubscriptionBlocksObserver.js");const t=r.createContext(void 0);exports.ProductOfferSubscriptionPresenceProvider=({children:r,containerRef:o})=>{let u=s.useProductOfferSubscriptionBlocksObserver(o);return e.jsx(t.Provider,{value:u,children:r})},exports.useProductOfferSubscriptionPresence=()=>r.useContext(t);
@@ -0,0 +1 @@
1
+ "use strict";var t=require("../../../constants/index.js");exports.scanSubscriptionBlocks=e=>{let r=e.querySelectorAll('[id^="product-subscription-"][data-selling-type]'),s=!1,i=!1;return r.forEach(e=>{let r=e.getAttribute("data-selling-type");r===t.SubscriptionEnum.ONE_TIME&&(s=!0),r===t.SubscriptionEnum.SUBSCRIPTION&&(i=!0)}),{hasOneTimeBlock:s,hasSubscriptionBlock:i,hasBoth:s&&i}};
@@ -0,0 +1 @@
1
+ "use strict";var e=require("react"),r=require("../helpers/scanSubscriptionBlocks.js");exports.useProductOfferSubscriptionBlocksObserver=t=>{let[s,c]=e.useState(()=>({hasOneTimeBlock:!1,hasSubscriptionBlock:!1,hasBoth:!1}));return e.useLayoutEffect(()=>{let e=t.current;if(!e)return;let s=()=>{c(r.scanSubscriptionBlocks(e))};s();let u=new MutationObserver(s);return u.observe(e,{childList:!0,subtree:!0}),()=>{u.disconnect()}},[t]),s};
@@ -1 +1 @@
1
- "use strict";var e=require("react"),i=require("@gem-sdk/core"),n=require("../../../constants/index.js"),s=require("./useSellingPlanOptions.js"),u=require("../../../hooks/useSubscriptionSellingType.js");exports.useSubscriptionVisibility=({setting:r})=>{let l=i.useProductStore(e=>e.setSubscriptionSellingType),{isOneTime:t,subscriptionSellingType:S}=u.useSubscriptionSellingType(),o=s.useSellingPlanOptions(r),p=i.useProduct(),c=e.useMemo(()=>p?.requiresSellingPlan,[p?.requiresSellingPlan]),g=e.useMemo(()=>t?n.SubscriptionEnum.ONE_TIME:n.SubscriptionEnum.SUBSCRIPTION,[t]);e.useEffect(()=>{S||(r?.sellingType===n.SubscriptionEnum.ONE_TIME?l(n.SubscriptionEnum.ONE_TIME):l(r?.sellingType??n.SubscriptionEnum.SUBSCRIPTION))},[l,r?.sellingType,S]);let E=!c&&o&&o.length>0,T=r?.sellingType===n.SubscriptionEnum.SUBSCRIPTION&&(!o||0===o.length),b=r?.sellingType===n.SubscriptionEnum.ONE_TIME&&c,m=(!o||0===o.length)&&!c;return{selectedType:g,shouldShowRadio:E,isOneTimeHidden:b,requiresSellingPlan:c,isOnetimeOnly:m,hasNoSellingPlanOptions:T,setSubscriptionSellingType:l}};
1
+ "use strict";var e=require("react"),i=require("@gem-sdk/core"),s=require("../../../constants/index.js"),n=require("../../product-offer/context/PrdOfferSubscriptionPresenceContext.js"),u=require("./useSellingPlanOptions.js"),r=require("../../../hooks/useSubscriptionSellingType.js");exports.useSubscriptionVisibility=({setting:t})=>{let o=i.useProductStore(e=>e.setSubscriptionSellingType),{isOneTime:l,subscriptionSellingType:S}=r.useSubscriptionSellingType(),c=u.useSellingPlanOptions(t),p=i.useProduct(),E=n.useProductOfferSubscriptionPresence(),T=c&&c.length>0,b=void 0!==E,O=e.useMemo(()=>void 0===E||E.hasBoth,[E]),m=e.useMemo(()=>p?.requiresSellingPlan,[p?.requiresSellingPlan]),g=e.useMemo(()=>l?s.SubscriptionEnum.ONE_TIME:s.SubscriptionEnum.SUBSCRIPTION,[l]);e.useEffect(()=>{S||(t?.sellingType===s.SubscriptionEnum.ONE_TIME?o(s.SubscriptionEnum.ONE_TIME):o(t?.sellingType??s.SubscriptionEnum.SUBSCRIPTION))},[o,t?.sellingType,S]);let P=b&&!!E?.hasSubscriptionBlock&&!E?.hasOneTimeBlock&&S===s.SubscriptionEnum.ONE_TIME;e.useEffect(()=>{P&&o(s.SubscriptionEnum.SUBSCRIPTION)},[o,P]);let I=t?.sellingType===s.SubscriptionEnum.SUBSCRIPTION&&!T,a=t?.sellingType===s.SubscriptionEnum.ONE_TIME&&m;return{selectedType:g,shouldShowRadio:!m&&T&&O,isOneTimeHidden:a,requiresSellingPlan:m,isOnetimeOnly:!T&&!m,hasNoSellingPlanOptions:I,setSubscriptionSellingType:o}};
@@ -1,6 +1,6 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@gem-sdk/core"),t=require("../../../helpers.js"),s=require("@gem-sdk/system"),i=require("./ProductListCarouselLayout.liquid.js"),d=require("./ProductListGridLayout.liquid.js"),a=require("./common/styles.js"),r=require("./common/classes.js"),n=require("./common/helpers.js");exports.default=o=>{let{setting:l,styles:c,pageContext:u}=o,g=u?.pageType==="GP_FUNNEL_PAGE";if(g)return"";let{hasRelatedExclude:p,relatedExcludeTrim:f,collectionID:m,isLatestProducts:$,isGrid:P,numberOfProducts:_,productListId:h,productListHandles:y,sortedBy:v,isReverse:E,productSrc:S,productNumber:k,isSorted:L,relatedTag:b,collectionHandle:x}=n.getDataLiquid(o),R=()=>e.template`
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@gem-sdk/core"),t=require("../../../helpers.js"),s=require("@gem-sdk/system"),i=require("./ProductListCarouselLayout.liquid.js"),d=require("./ProductListGridLayout.liquid.js"),a=require("./common/styles.js"),r=require("./common/classes.js"),n=require("./common/helpers.js");exports.default=o=>{let{setting:l,styles:c,pageContext:u}=o,g=u?.pageType==="GP_FUNNEL_PAGE";if(g)return"";let{hasRelatedExclude:p,relatedExcludeTrim:f,collectionID:m,isLatestProducts:$,isGrid:P,numberOfProducts:_,productListId:h,productListHandles:y,sortedBy:v,isReverse:E,productSrc:S,productNumber:k,isSorted:b,relatedTag:L,collectionHandle:x}=n.getDataLiquid(o),R=()=>e.template`
2
2
  ${e.RenderIf("RelatedProduct"===S,`
3
- assign relatedTag = '${b}'
3
+ assign relatedTag = '${L}'
4
4
  assign assignProduct = product
5
5
  assign idAssignProduct = assignProduct.id
6
6
  paginate collections.all.products by 10000
@@ -135,7 +135,7 @@
135
135
  `;return e.template`
136
136
  {%- liquid
137
137
  assign productHandles = '${y.toString()}'| split: ','
138
- assign collection_handle = ${x}
138
+ assign collection_handle = '${x}'
139
139
  assign products = null
140
140
  assign target_collection = null
141
141
  assign productSrc = '${S}'
@@ -144,7 +144,7 @@
144
144
 
145
145
  if request.page_type == 'collection' or preview_page_type == 'collection'
146
146
  assign target_collection = collection
147
- if productSrc == 'Collection' and collection_handle != empty
147
+ if productSrc == 'Collection' and collection_handle != blank
148
148
  ${t}
149
149
  elsif target_collection == empty or target_collection == null
150
150
  if '${m.toLowerCase()}' == 'latest'
@@ -154,7 +154,7 @@
154
154
  endif
155
155
  endif
156
156
  paginate target_collection.products by ${_||4}
157
- assign products = target_collection.products ${L?v:""} ${E?"| reverse":""}
157
+ assign products = target_collection.products ${b?v:""} ${E?"| reverse":""}
158
158
  endpaginate
159
159
  else
160
160
  if productSrc == 'RelatedProduct'
@@ -181,7 +181,7 @@
181
181
  ${t}
182
182
  endif
183
183
  paginate target_collection.products by ${_||4}
184
- assign products = target_collection.products ${L?v:""} ${E?"| reverse":""}
184
+ assign products = target_collection.products ${b?v:""} ${E?"| reverse":""}
185
185
  endpaginate
186
186
  endif
187
187
  endif
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import{jsx as r}from"react/jsx-runtime";import{useEditorMode as t,ProductProvider as e,isEmptyChildren as i}from"@gem-sdk/core";import"react";import o from"../../../../../grid/components/row/Row.js";import m from"../../../../../grid/components/ChildrenDroppable.js";import{createAttr as s,createClass as d}from"@gem-sdk/system";import{getProductOfferAttrs as l}from"../common/attrs.js";import{getProductOfferItemClasses as n}from"../common/classes.js";let a=a=>{let{product:c,setting:p,builderProps:f,children:u,index:h,totalProduct:j,builderAttrs:g,styles:y}=a,b=t(),{variantSelected:I,productOfferLayout:k,layout:v,...O}=p??{};Object.keys(v||{}).forEach(r=>{k?.[r]==="2col"&&v?.[r]&&(v[r].display="fill")});let w=I?.[c?.baseID??""]?.variantId,x=s({...l(c,f?.uid)}),D=d({...n(h,p,j)});return r("div",{className:D,children:r(e,{product:c,readOnly:!0,initialVariantId:w??"Latest",uid:f?.uid,children:r("div",{..."edit"===b?{...x}:{},children:r(o,{builderAttrs:g,setting:{...O,layout:v},styles:y,children:i(u)?r(m,{}):u})})})},`uid-${c?.id}`)};export{a as ProductOfferItem};
2
+ import{jsx as r}from"react/jsx-runtime";import{useRenderMode as e,isEmptyChildren as t,ProductProvider as o}from"@gem-sdk/core";import{useRef as i}from"react";import m from"../../../../../grid/components/row/Row.js";import s from"../../../../../grid/components/ChildrenDroppable.js";import{createAttr as n,createClass as d}from"@gem-sdk/system";import{getProductOfferAttrs as c}from"../common/attrs.js";import{getProductOfferItemClasses as l}from"../common/classes.js";import{ProductOfferSubscriptionPresenceProvider as a}from"../context/PrdOfferSubscriptionPresenceContext.js";let f=f=>{let{product:p,setting:u,builderProps:h,children:j,index:b,totalProduct:g,builderAttrs:y,styles:x}=f,{isEditMode:I}=e(),{variantSelected:O,productOfferLayout:k,layout:v,...P}=u??{};Object.keys(v||{}).forEach(r=>{k?.[r]==="2col"&&v?.[r]&&(v[r].display="fill")});let w=O?.[p?.baseID??""]?.variantId,C=n({...c(p,h?.uid)}),D=d({...l(b,u,g)}),R=i(null),A=r("div",{ref:R,...I?{...C}:{},children:r(m,{builderAttrs:y,setting:{...P,layout:v},styles:x,children:t(j)?r(s,{}):j})});return r("div",{className:D,children:r(o,{product:p,readOnly:!0,initialVariantId:w??"Latest",uid:h?.uid,children:I?r(a,{containerRef:R,children:A}):A})},`uid-${p?.id}`)};export{f as ProductOfferItem};
@@ -0,0 +1,2 @@
1
+ 'use client';
2
+ import{jsx as r}from"react/jsx-runtime";import{useContext as e,createContext as o}from"react";import{useProductOfferSubscriptionBlocksObserver as t}from"../hooks/useProductOfferSubscriptionBlocksObserver.js";let i=o(void 0),c=({children:e,containerRef:o})=>{let c=t(o);return r(i.Provider,{value:c,children:e})},s=()=>e(i);export{c as ProductOfferSubscriptionPresenceProvider,s as useProductOfferSubscriptionPresence};
@@ -0,0 +1 @@
1
+ import{SubscriptionEnum as t}from"../../../constants/index.js";let e=e=>{let r=e.querySelectorAll('[id^="product-subscription-"][data-selling-type]'),l=!1,o=!1;return r.forEach(e=>{let r=e.getAttribute("data-selling-type");r===t.ONE_TIME&&(l=!0),r===t.SUBSCRIPTION&&(o=!0)}),{hasOneTimeBlock:l,hasSubscriptionBlock:o,hasBoth:l&&o}};export{e as scanSubscriptionBlocks};
@@ -0,0 +1 @@
1
+ import{useState as e,useLayoutEffect as r}from"react";import{scanSubscriptionBlocks as t}from"../helpers/scanSubscriptionBlocks.js";let s=s=>{let[o,c]=e(()=>({hasOneTimeBlock:!1,hasSubscriptionBlock:!1,hasBoth:!1}));return r(()=>{let e=s.current;if(!e)return;let r=()=>{c(t(e))};r();let o=new MutationObserver(r);return o.observe(e,{childList:!0,subtree:!0}),()=>{o.disconnect()}},[s]),o};export{s as useProductOfferSubscriptionBlocksObserver};
@@ -1 +1 @@
1
- import{useMemo as e,useEffect as l}from"react";import{useProductStore as i,useProduct as n}from"@gem-sdk/core";import{SubscriptionEnum as s}from"../../../constants/index.js";import{useSellingPlanOptions as r}from"./useSellingPlanOptions.js";import{useSubscriptionSellingType as t}from"../../../hooks/useSubscriptionSellingType.js";let o=({setting:o})=>{let p=i(e=>e.setSubscriptionSellingType),{isOneTime:g,subscriptionSellingType:S}=t(),T=r(o),m=n(),I=e(()=>m?.requiresSellingPlan,[m?.requiresSellingPlan]),u=e(()=>g?s.ONE_TIME:s.SUBSCRIPTION,[g]);l(()=>{S||(o?.sellingType===s.ONE_TIME?p(s.ONE_TIME):p(o?.sellingType??s.SUBSCRIPTION))},[p,o?.sellingType,S]);let y=!I&&T&&T.length>0,E=o?.sellingType===s.SUBSCRIPTION&&(!T||0===T.length),O=o?.sellingType===s.ONE_TIME&&I,N=(!T||0===T.length)&&!I;return{selectedType:u,shouldShowRadio:y,isOneTimeHidden:O,requiresSellingPlan:I,isOnetimeOnly:N,hasNoSellingPlanOptions:E,setSubscriptionSellingType:p}};export{o as useSubscriptionVisibility};
1
+ import{useMemo as e,useEffect as i}from"react";import{useProductStore as o,useProduct as l}from"@gem-sdk/core";import{SubscriptionEnum as s}from"../../../constants/index.js";import{useProductOfferSubscriptionPresence as r}from"../../product-offer/context/PrdOfferSubscriptionPresenceContext.js";import{useSellingPlanOptions as t}from"./useSellingPlanOptions.js";import{useSubscriptionSellingType as n}from"../../../hooks/useSubscriptionSellingType.js";let p=({setting:p})=>{let S=o(e=>e.setSubscriptionSellingType),{isOneTime:T,subscriptionSellingType:m}=n(),O=t(p),c=l(),u=r(),I=O&&O.length>0,g=void 0!==u,f=e(()=>void 0===u||u.hasBoth,[u]),E=e(()=>c?.requiresSellingPlan,[c?.requiresSellingPlan]),a=e(()=>T?s.ONE_TIME:s.SUBSCRIPTION,[T]);i(()=>{m||(p?.sellingType===s.ONE_TIME?S(s.ONE_TIME):S(p?.sellingType??s.SUBSCRIPTION))},[S,p?.sellingType,m]);let y=g&&!!u?.hasSubscriptionBlock&&!u?.hasOneTimeBlock&&m===s.ONE_TIME;i(()=>{y&&S(s.SUBSCRIPTION)},[S,y]);let N=p?.sellingType===s.SUBSCRIPTION&&!I,P=p?.sellingType===s.ONE_TIME&&E;return{selectedType:a,shouldShowRadio:!E&&I&&f,isOneTimeHidden:P,requiresSellingPlan:E,isOnetimeOnly:!I&&!E,hasNoSellingPlanOptions:N,setSubscriptionSellingType:S}};export{p as useSubscriptionVisibility};
@@ -135,7 +135,7 @@ import{RenderIf as e,isLocalEnv as s,baseAssetURL as t,template as i}from"@gem-s
135
135
  `;return i`
136
136
  {%- liquid
137
137
  assign productHandles = '${x.toString()}'| split: ','
138
- assign collection_handle = ${F}
138
+ assign collection_handle = '${F}'
139
139
  assign products = null
140
140
  assign target_collection = null
141
141
  assign productSrc = '${A}'
@@ -144,7 +144,7 @@ import{RenderIf as e,isLocalEnv as s,baseAssetURL as t,template as i}from"@gem-s
144
144
 
145
145
  if request.page_type == 'collection' or preview_page_type == 'collection'
146
146
  assign target_collection = collection
147
- if productSrc == 'Collection' and collection_handle != empty
147
+ if productSrc == 'Collection' and collection_handle != blank
148
148
  ${e}
149
149
  elsif target_collection == empty or target_collection == null
150
150
  if '${_.toLowerCase()}' == 'latest'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gem-sdk/components",
3
- "version": "17.0.0-dev.29",
3
+ "version": "17.0.0-dev.31",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "main": "dist/cjs/index.js",
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "devDependencies": {
29
29
  "@gem-sdk/core": "17.0.0-dev.12",
30
- "@gem-sdk/styles": "17.0.0-dev.9",
30
+ "@gem-sdk/styles": "17.0.0-dev.30",
31
31
  "@gem-sdk/system": "17.0.0-dev.9",
32
32
  "@types/react-transition-group": "^4.4.12",
33
33
  "postcss-import": "16.1.1",