@gem-sdk/components 17.0.0-dev.30 → 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,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};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gem-sdk/components",
3
- "version": "17.0.0-dev.30",
3
+ "version": "17.0.0-dev.31",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "main": "dist/cjs/index.js",