@haus-storefront-react/order-lines 1.0.4-next.11 → 1.0.4-next.12

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/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## 1.0.4-next.11 (2026-03-18)
2
+
3
+ ### 🧱 Updated Dependencies
4
+
5
+ - Updated store/hooks to 1.0.4-next.11
6
+ - Updated core to 1.0.4-next.11
7
+ - Updated common/utils to 1.0.4-next.11
8
+ - Updated common/ui to 1.0.4-next.11
9
+ - Updated shared/types to 1.0.4-next.11
10
+
1
11
  ## 1.0.4-next.10 (2026-03-18)
2
12
 
3
13
  ### 🧱 Updated Dependencies
package/index.js CHANGED
@@ -23,4 +23,4 @@ React keys must be passed directly to JSX without using spread:
23
23
  ${r}
24
24
  }`,variables:n.default.queryVariablesMap(t)}},e.prototype.operationTemplate=function(e){return`${typeof this.operation==`string`?this.operation:`${this.operation.alias}: ${this.operation.name}`} ${this.queryDataNameAndArgumentMap()} {
25
25
  ${this.queryFieldsMap(this.fields)}
26
- }`},e.prototype.queryFieldsMap=function(e){var t=this;return e?e.map(function(e){return typeof e==`object`?`${Object.keys(e)[0]} { ${t.queryFieldsMap(Object.values(e)[0])} }`:`${e}`}).join(`, `):``},e}()}));o((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.adapters=e.query=e.mutation=e.subscription=void 0,e.adapters=pc().default;var t=mc(),n=hc(),r=gc();function i(e,t,r){var i;if(Array.isArray(e)){if(t){var a=new t(e,r);return a.queriesBuilder(e)}return i=new n.default(e,r),i.queriesBuilder(e)}if(t){var a=new t(e,r);return a.queryBuilder()}return i=new n.default(e,r),i.queryBuilder()}e.query=i;function a(e,n,r){var i,a;return Array.isArray(e)?n?(i=new n(e,r),i.mutationsBuilder(e)):(a=new t.default(e,r),a.mutationsBuilder(e)):n?(i=new n(e,r),i.mutationBuilder()):(a=new t.default(e,r),a.mutationBuilder())}e.mutation=a;function o(e,t){var n,i;return Array.isArray(e)?t?(n=new t(e),n.subscriptionsBuilder(e)):(i=new r.default(e),i.subscriptionsBuilder(e)):t?(n=new t(e),n.subscriptionBuilder()):(i=new r.default(e),i.subscriptionBuilder())}e.subscription=o}))();var _c=()=>{let e=(0,u.useContext)(pa)?.sdk;return e||console.error(`You must wrap your component in a <DataProvider>`),e?.sdkType===`dummy`||e?.sdkType,e},Q=()=>{let{getPlatform:e}=_c();return e()},vc=(e,t)=>{let n=(0,d.useQueryClient)();return(0,d.useMutation)(e,t||n)};function yc({value:e,onValueChange:t,min:n=0,max:r,step:i=1}){let a=Q(),[o,s]=(0,u.useState)(e);(0,u.useEffect)(()=>{s(e)},[e]);let c=(0,u.useCallback)(()=>{let e=o+i;(r===void 0||e<=r)&&(s(e),t(e))},[o,r,t,i]),l=(0,u.useCallback)(()=>{let e=o-i;e>=n&&(s(e),t(e))},[o,n,t,i]),d=(0,u.useCallback)(e=>{let i=parseInt(e.target.value,10);!isNaN(i)&&i>=n&&(r===void 0||i<=r)&&(s(i),t(i))},[r,n,t]);return{value:o,increment:c,decrement:l,getDecrementProps:(0,u.useCallback)((e={})=>F({type:`button`,onClick:l,"aria-label":`Decrease quantity`,disabled:o<=n,...e},a),[l,o,n,a]),getIncrementProps:(0,u.useCallback)((e={})=>F({type:`button`,onClick:c,"aria-label":`Increase quantity`,disabled:r!==void 0&&o>=r,...e},a),[c,o,r,a]),getInputProps:(0,u.useCallback)((e={})=>Mi({type:`number`,value:o,onChange:d,min:n,max:r,pattern:`[0-9]*`,"aria-label":`Quantity`,"aria-valuemin":n,"aria-valuemax":r,"aria-valuenow":o,"aria-valuetext":`${o} items`,role:`spinbutton`,...e},a),[d,o,r,n,a])}}var bc=`QuantityButtons`,[xc,Sc]=Oi(bc),[Cc,wc]=xc(bc),Tc=({children:e,value:t,onValueChange:n,min:r=0,max:i,step:a,__scopeQuantityButtons:o})=>(0,P.jsx)(Cc,{scope:o,value:t,onValueChange:n,min:r,max:i,step:a,children:e});Tc.displayName=bc;var Ec=`QuantityButtonsIncrement`,Dc=({children:e,asChild:t,__scopeQuantityButtons:n,...r})=>{let{getIncrementProps:i}=yc(wc(Ec,n)),a=Q();return(0,P.jsx)(I(a,t,`button`),{...F(i({...r}),a),children:e})};Dc.displayName=Ec;var Oc=`QuantityButtonsDecrement`,kc=({children:e,asChild:t,__scopeQuantityButtons:n,...r})=>{let{getDecrementProps:i}=yc(wc(Oc,n)),a=Q();return(0,P.jsx)(I(a,t,`button`),{...F(i({...r}),a),children:e})};kc.displayName=Oc;var Ac=`QuantityButtonsInput`,jc=({__scopeQuantityButtons:e,...t})=>{let{getInputProps:n}=yc(wc(Ac,e)),r=Q();return(0,P.jsx)(Ii(`input`,r),{...Mi(n(t),r)})};jc.displayName=Ac;var Mc={Root:Tc,Increment:Dc,Decrement:kc,Input:jc},Nc=`Price`,[Pc,Fc]=Oi(Nc),[Ic,Lc]=Pc(Nc),Rc=({children:e,price:t,priceWithTax:n,currencyCode:r,withTax:i,decimals:a,asChild:o,__scopePrice:s,...c})=>{let{getFeature:l}=_c(),u=Q(),d=I(u),f=l(`pricesIncludeTax`),p=l(`showDecimals`),m=l(`customPriceCurrency`),h={price:i??f?n:t,currencyCode:r,showDecimals:a??p??!1,customPriceCurrency:m},g=o?d:Ii(`div`,u);return(0,P.jsx)(Ic,{scope:s,...h,children:(0,P.jsx)(g,{...c,children:e})})};Rc.displayName=Nc;var zc=({children:e,asChild:t,__scopePrice:n,...r})=>{let{price:i}=Lc(Nc,n),a=Q(),o=I(a);return typeof i==`object`&&`min`in i&&`max`in i&&i.min!==i.max?(0,P.jsx)(t?o:Ii(`span`,a),{...r,children:e}):null};zc.displayName=`PriceFrom`;var Bc=({children:e,withCurrency:t,asChild:n,__scopePrice:r,...i})=>{let{price:a,currencyCode:o,showDecimals:s,customPriceCurrency:c}=Lc(Nc,r),l=Q(),u=I(l),d=qi(a);return(0,P.jsxs)(n?u:Ii(`span`,l),{...i,children:[Ji(d,t?o:void 0,s,c),e]})};Bc.displayName=`PriceAmount`;var Vc=({asChild:e,__scopePrice:t,...n})=>{let{customPriceCurrency:r,currencyCode:i}=Lc(Nc,t),a=Q(),o=I(a);return(0,P.jsx)(e?o:Ii(`span`,a),{...n,children:r||i})};Vc.displayName=`PriceCurrency`;var Hc=(e={})=>{let t=_c();return(0,d.useQuery)({queryKey:[f.ACTIVE_ORDER],queryFn:()=>t.activeOrder(),refetchOnWindowFocus:!0,refetchOnMount:!0,...e})},Uc=e=>{let t=_c(),n=(0,d.useQueryClient)(),r=V(da,`cart:error`),i=V(da,`cart:updated`),a=V(da,`cart:updating`),o=V(fa,`orderline:updated`),s=(0,u.useRef)(null),c=(0,u.useRef)(null),l=(0,u.useMemo)(()=>{let e=Si(async(e,n)=>{a({data:{payload:{orderLineId:e,quantity:n}},action:B.UPDATE});try{let r=await t.adjustOrderLine({orderLineId:e,quantity:n});return c.current?.(r),r}catch(e){c.current?.(e)}},500);return(t,n)=>(s.current=new Promise(e=>{c.current=e}),e(t,n),s.current)},[a,t]),p=vc({mutationFn:async({orderLineId:e,quantity:t})=>{a({data:{payload:{orderLineId:e,quantity:t}},action:B.UPDATE});let n=await l(e,t);if(!n)throw Error(`Failed to adjust order line`);if(Zi(n))throw n;return n},onMutate:async({orderLineId:e,quantity:t},r)=>{let i=r?.client??n;await i.cancelQueries({queryKey:[f.ACTIVE_ORDER]});let a=i.getQueryData([f.ACTIVE_ORDER]);return i.setQueryData([f.ACTIVE_ORDER],n=>{if(!n)return n;let r=n.lines.find(t=>t.id===e);return{...n,lines:n.lines.map(n=>n.id===e?{...n,quantity:t}:n),totalQuantity:n.totalQuantity+t-(r?.quantity||0)}}),{previousOrder:a}},onError:(e,t,i,a)=>{let o=a?.client??n;r({data:e,action:B.UPDATE}),i?.previousOrder&&o.setQueryData([f.ACTIVE_ORDER],i.previousOrder)},onSettled:(e,t,a,s,c)=>{if((c?.client??n).invalidateQueries({queryKey:[f.ACTIVE_ORDER]}),e)if(t)r({data:t,action:B.UPDATE});else if(Zi(e))r({data:e,action:B.UPDATE});else{let t=e,n=t.lines.find(e=>e.id===a.orderLineId);i({data:{payload:a,orderLine:n,order:t},action:B.UPDATE}),o({payload:a,orderLine:n,order:t})}}});return{adjustOrderLine:async(t,n)=>(e?.preAdjust&&await e.preAdjust(t,n),await p.mutateAsync({orderLineId:t,quantity:n})),error:p.error,isLoading:p.isPending,data:n.getQueryData([f.ACTIVE_ORDER])?.lines}},Wc=(e,t={})=>{let n=_c();return(0,d.useQuery)({queryKey:[f.ORDER_BY_CODE,e],queryFn:()=>n.orderByCode(e),enabled:!!e,...t})},Gc=()=>{let e=_c(),t=(0,d.useQueryClient)(),n=V(da,`cart:error`),r=V(da,`cart:updated`),i=V(da,`cart:updating`),a=vc({mutationFn:t=>(i({data:{payload:{orderLineId:t,quantity:0}},action:B.REMOVE}),e.removeOrderLine(t)),onMutate:async(e,n)=>{let r=n?.client??t;await r.cancelQueries({queryKey:[f.ACTIVE_ORDER]});let i=r.getQueryData([f.ACTIVE_ORDER]),a=i?.lines.find(t=>t.id===e)?.quantity??0;return r.setQueryData([f.ACTIVE_ORDER],t=>t&&{...t,lines:t.lines.filter(t=>t.id!==e),totalQuantity:t.totalQuantity-a}),{previousOrder:i}},onError:(e,r,i,a)=>{let o=a?.client??t;n({data:e,action:B.REMOVE}),i?.previousOrder&&(o.setQueryData([f.ACTIVE_ORDER],i.previousOrder),t.setQueryData([f.ACTIVE_ORDER],i.previousOrder))},onSettled:(e,i,a,o,s)=>{(s?.client??t).invalidateQueries({queryKey:[f.ACTIVE_ORDER]}),Zi(e)||i?n({data:i||e,action:B.REMOVE}):r({data:{payload:{orderLineId:a,quantity:0},order:e},action:B.REMOVE})}});return{removeOrderLine:async e=>await a.mutateAsync(e),error:a.error,isLoading:a.isPending}},Kc=({orderCode:e,adjustable:t=!0,removable:n=!0,fetchActiveOrder:r=!0,min:i=0,max:a,step:o=1,callbacks:s}={})=>{let c=Q(),l=Hc({enabled:r&&!e}),d=Wc(e||``,{enabled:!!e}),f=(0,u.useMemo)(()=>e?d.data?.lines:l.data?.lines,[e,l.data?.lines,d.data?.lines]),{removeOrderLine:p,error:m,isLoading:h}=Gc(),g=(0,u.useCallback)((t,r={})=>F({type:`button`,onClick:()=>p(t),"aria-label":`Remove item`,disabled:h||!n||!!e,...r},c),[p,h,n,e,c]),{adjustOrderLine:_,error:v,isLoading:y}=Uc({preAdjust:s?.preAdjust}),b=(0,u.useCallback)(async(e,t)=>{if(f?.find(t=>t.id===e)&&!(t<i)&&!(a&&t>a))return await _(e,t)},[_,f,i,a]),x=(0,u.useCallback)((n,r={})=>F({type:`button`,oncClick:()=>b(n,o),"aria-label":`Increase quantity`,disabled:y||!t||!!e,...r},c),[b,o,y,t,e,c]),S=(0,u.useCallback)((n,r={})=>F({type:`button`,onClick:()=>b(n,-o),"aria-label":`Decrease quantity`,disabled:y||!t||!!e,...r},c),[b,o,y,t,e,c]),C=(0,u.useCallback)((e,t={})=>Mi({type:`input`,onChange:t=>b(e,Number(t.target.value)),...t},c),[b,c]);return{...l||d,orderLines:f,adjustOrderLine:b,removeOrderLine:p,adjustError:v,removeError:m,isAdjusting:y,isRemoving:h,getRemoveProps:g,getIncrementProps:x,getDecrementProps:S,getAdjustProps:C}},qc=`OrderLines`,[Jc,Yc]=Oi(qc),[Xc,Zc]=Jc(qc),Qc=({children:e,orderCode:t,adjustable:n=!0,removable:r=!0,callbacks:i,__scopeOrderLines:a})=>{let o={...Kc({orderCode:t,adjustable:n,removable:r,callbacks:i,fetchActiveOrder:!t}),isAdjustable:n&&!t,isRemovable:r&&!t,callbacks:i};return(0,P.jsx)(Xc,{scope:a,...o,children:e?.(o)})};Qc.displayName=qc;var $=`OrderLineItem`,[$c,el]=Jc($),tl=({children:e,orderLine:t,__scopeOrderLines:n})=>{let{adjustOrderLine:r,removeOrderLine:i,adjustError:a,removeError:o,isAdjusting:s,isRemoving:c,isAdjustable:l,isRemovable:u,getRemoveProps:d,callbacks:f}=Zc($,n);return(0,P.jsx)($c,{scope:n,orderLine:t,adjustOrderLine:e=>r(t.id,e),removeOrderLine:()=>i(t.id),adjustError:a,removeError:o,isAdjusting:s,isRemoving:c,isAdjustable:l,isRemovable:u,getRemoveProps:(e={})=>d(t.id,e),callbacks:f,children:e})};tl.displayName=$;var nl=`OrderLineImage`,rl=({alt:e,asChild:t,__scopeOrderLines:n,...r})=>{let{orderLine:i}=el($,n),a=i.featuredAsset?.preview,o=Q(),s=I(o,t,`img`);return a?(0,P.jsx)(s,{alt:e??i.productVariant.name,src:a,...Ni(r,o)}):null};rl.displayName=nl;var il=`OrderLineRemove`,al=({children:e,asChild:t,__scopeOrderLines:n,...r})=>{let{getRemoveProps:i,isRemovable:a}=el($,n),o=Q(),s=I(o,t,`button`);return a?(0,P.jsx)(s,{...F(i(r),o),children:e}):null};al.displayName=il;var ol=`OrderLineQuantity`,sl=({children:e,min:t=0,max:n,step:r=1,__scopeOrderLines:i})=>{let{orderLine:a,isAdjustable:o,callbacks:s}=el($,i),{adjustOrderLine:c}=Uc({preAdjust:s?.preAdjust});return!o||!a?null:(0,P.jsx)(Mc.Root,{__scopeQuantityButtons:i,value:a.quantity,onValueChange:async e=>{if(e>=t&&(!n||e<=n))try{await c(a.id,e)}catch(e){console.error(`Failed to adjust quantity:`,e)}},min:t,max:n,step:r,children:e})};sl.displayName=ol;var cl={Root:sl,Decrement:Mc.Decrement,Input:Mc.Input,Increment:Mc.Increment,Remove:({children:e,...t})=>{let{getRemoveProps:n}=el($);return(0,P.jsx)(`button`,{...n(t),children:e})}},ll=`OrderLinesPrice`,ul=({children:e,withDiscountPrice:t=!1,__scopeOrderLines:n})=>{let{orderLine:r}=el($,n),{productVariant:i,discountedLinePriceWithTax:a,linePriceWithTax:o,linePrice:s}=r,{currencyCode:c}=i;return Qi(e,{price:s,priceWithTax:o,currencyCode:c,isPromotion:t&&a!==o,isFromPrice:typeof s==`object`&&`min`in s&&`max`in s&&s.min!==s.max})};ul.displayName=ll;var dl={Root:Qc,Item:tl,Image:rl,Remove:al,Quantity:cl,Price:ul};exports.OrderLines=dl,exports.createOrderLinesScope=Yc,exports.useOrderLinesProps=Kc;
26
+ }`},e.prototype.queryFieldsMap=function(e){var t=this;return e?e.map(function(e){return typeof e==`object`?`${Object.keys(e)[0]} { ${t.queryFieldsMap(Object.values(e)[0])} }`:`${e}`}).join(`, `):``},e}()}));o((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.adapters=e.query=e.mutation=e.subscription=void 0,e.adapters=pc().default;var t=mc(),n=hc(),r=gc();function i(e,t,r){var i;if(Array.isArray(e)){if(t){var a=new t(e,r);return a.queriesBuilder(e)}return i=new n.default(e,r),i.queriesBuilder(e)}if(t){var a=new t(e,r);return a.queryBuilder()}return i=new n.default(e,r),i.queryBuilder()}e.query=i;function a(e,n,r){var i,a;return Array.isArray(e)?n?(i=new n(e,r),i.mutationsBuilder(e)):(a=new t.default(e,r),a.mutationsBuilder(e)):n?(i=new n(e,r),i.mutationBuilder()):(a=new t.default(e,r),a.mutationBuilder())}e.mutation=a;function o(e,t){var n,i;return Array.isArray(e)?t?(n=new t(e),n.subscriptionsBuilder(e)):(i=new r.default(e),i.subscriptionsBuilder(e)):t?(n=new t(e),n.subscriptionBuilder()):(i=new r.default(e),i.subscriptionBuilder())}e.subscription=o}))();var _c=()=>{let e=(0,u.useContext)(pa)?.sdk;return e||console.error(`You must wrap your component in a <DataProvider>`),e?.sdkType===`dummy`||e?.sdkType,e},Q=()=>{let{getPlatform:e}=_c();return e()},vc=(e,t)=>{let n=(0,d.useQueryClient)();return(0,d.useMutation)(e,t||n)};function yc({value:e,onValueChange:t,min:n=0,max:r,step:i=1}){let a=Q(),[o,s]=(0,u.useState)(e);(0,u.useEffect)(()=>{s(e)},[e]);let c=(0,u.useCallback)(()=>{let e=o+i;(r===void 0||e<=r)&&(s(e),t(e))},[o,r,t,i]),l=(0,u.useCallback)(()=>{let e=o-i;e>=n&&(s(e),t(e))},[o,n,t,i]),d=(0,u.useCallback)(e=>{let i=parseInt(e.target.value,10);!isNaN(i)&&i>=n&&(r===void 0||i<=r)&&(s(i),t(i))},[r,n,t]);return{value:o,increment:c,decrement:l,getDecrementProps:(0,u.useCallback)((e={})=>F({type:`button`,onClick:l,"aria-label":`Decrease quantity`,disabled:o<=n,...e},a),[l,o,n,a]),getIncrementProps:(0,u.useCallback)((e={})=>F({type:`button`,onClick:c,"aria-label":`Increase quantity`,disabled:r!==void 0&&o>=r,...e},a),[c,o,r,a]),getInputProps:(0,u.useCallback)((e={})=>Mi({type:`number`,value:o,onChange:d,min:n,max:r,pattern:`[0-9]*`,"aria-label":`Quantity`,"aria-valuemin":n,"aria-valuemax":r,"aria-valuenow":o,"aria-valuetext":`${o} items`,role:`spinbutton`,...e},a),[d,o,r,n,a])}}var bc=`QuantityButtons`,[xc,Sc]=Oi(bc),[Cc,wc]=xc(bc),Tc=({children:e,value:t,onValueChange:n,min:r=0,max:i,step:a,__scopeQuantityButtons:o})=>(0,P.jsx)(Cc,{scope:o,value:t,onValueChange:n,min:r,max:i,step:a,children:e});Tc.displayName=bc;var Ec=`QuantityButtonsIncrement`,Dc=({children:e,asChild:t,__scopeQuantityButtons:n,...r})=>{let{getIncrementProps:i}=yc(wc(Ec,n)),a=Q();return(0,P.jsx)(I(a,t,`button`),{...F(i({...r}),a),children:e})};Dc.displayName=Ec;var Oc=`QuantityButtonsDecrement`,kc=({children:e,asChild:t,__scopeQuantityButtons:n,...r})=>{let{getDecrementProps:i}=yc(wc(Oc,n)),a=Q();return(0,P.jsx)(I(a,t,`button`),{...F(i({...r}),a),children:e})};kc.displayName=Oc;var Ac=`QuantityButtonsInput`,jc=({__scopeQuantityButtons:e,...t})=>{let{getInputProps:n}=yc(wc(Ac,e)),r=Q();return(0,P.jsx)(Ii(`input`,r),{...Mi(n(t),r)})};jc.displayName=Ac;var Mc={Root:Tc,Increment:Dc,Decrement:kc,Input:jc},Nc=`Price`,[Pc,Fc]=Oi(Nc),[Ic,Lc]=Pc(Nc),Rc=({children:e,price:t,priceWithTax:n,currencyCode:r,withTax:i,decimals:a,asChild:o,__scopePrice:s,...c})=>{let{getFeature:l}=_c(),u=Q(),d=I(u),f=l(`pricesIncludeTax`),p=l(`showDecimals`),m=l(`customPriceCurrency`),h={price:i??f?n:t,currencyCode:r,showDecimals:a??p??!1,customPriceCurrency:m},g=o?d:Ii(`div`,u);return(0,P.jsx)(Ic,{scope:s,...h,children:(0,P.jsx)(g,{...c,children:e})})};Rc.displayName=Nc;var zc=({children:e,asChild:t,__scopePrice:n,...r})=>{let{price:i}=Lc(Nc,n),a=Q(),o=I(a);return typeof i==`object`&&`min`in i&&`max`in i&&i.min!==i.max?(0,P.jsx)(t?o:Ii(`span`,a),{...r,children:e}):null};zc.displayName=`PriceFrom`;var Bc=({children:e,withCurrency:t,asChild:n,__scopePrice:r,...i})=>{let{price:a,currencyCode:o,showDecimals:s,customPriceCurrency:c}=Lc(Nc,r),l=Q(),u=I(l),d=qi(a);return(0,P.jsxs)(n?u:Ii(`span`,l),{...i,children:[Ji(d,t?o:void 0,s,c),e]})};Bc.displayName=`PriceAmount`;var Vc=({asChild:e,__scopePrice:t,...n})=>{let{customPriceCurrency:r,currencyCode:i}=Lc(Nc,t),a=Q(),o=I(a);return(0,P.jsx)(e?o:Ii(`span`,a),{...n,children:r||i})};Vc.displayName=`PriceCurrency`;var Hc=(e={})=>{let t=_c();return(0,d.useQuery)({queryKey:[f.ACTIVE_ORDER],queryFn:()=>t.activeOrder(),refetchOnWindowFocus:!0,refetchOnMount:!0,...e})},Uc=e=>{let t=_c(),n=(0,d.useQueryClient)(),r=V(da,`cart:error`),i=V(da,`cart:updated`),a=V(da,`cart:updating`),o=V(fa,`orderline:updated`),s=(0,u.useRef)(null),c=(0,u.useRef)(null),l=(0,u.useMemo)(()=>{let e=Si(async(e,n)=>{a({data:{payload:{orderLineId:e,quantity:n}},action:B.UPDATE});try{let r=await t.adjustOrderLine({orderLineId:e,quantity:n});return c.current?.(r),r}catch(e){c.current?.(e)}},500);return(t,n)=>(s.current=new Promise(e=>{c.current=e}),e(t,n),s.current)},[a,t]),p=vc({mutationFn:async({orderLineId:e,quantity:t})=>{a({data:{payload:{orderLineId:e,quantity:t}},action:B.UPDATE});let n=await l(e,t);if(!n)throw Error(`Failed to adjust order line`);if(Zi(n))throw n;return n},onMutate:async({orderLineId:e,quantity:t},r)=>{let i=r?.client??n;await i.cancelQueries({queryKey:[f.ACTIVE_ORDER]});let a=i.getQueryData([f.ACTIVE_ORDER]);return i.setQueryData([f.ACTIVE_ORDER],n=>{if(!n)return n;let r=n.lines.find(t=>t.id===e);return{...n,lines:n.lines.map(n=>n.id===e?{...n,quantity:t}:n),totalQuantity:n.totalQuantity+t-(r?.quantity||0)}}),{previousOrder:a}},onError:(e,t,i,a)=>{let o=a?.client??n;r({data:e,action:B.UPDATE}),i?.previousOrder&&o.setQueryData([f.ACTIVE_ORDER],i.previousOrder)},onSettled:(e,t,a,s,c)=>{if((c?.client??n).invalidateQueries({queryKey:[f.ACTIVE_ORDER]}),e)if(t)r({data:t,action:B.UPDATE});else if(Zi(e))r({data:e,action:B.UPDATE});else{let t=e,n=t.lines.find(e=>e.id===a.orderLineId);i({data:{payload:a,orderLine:n,order:t},action:B.UPDATE}),o({payload:a,orderLine:n,order:t})}}});return{adjustOrderLine:async(t,n)=>(e?.preAdjust&&await e.preAdjust(t,n),await p.mutateAsync({orderLineId:t,quantity:n})),error:p.error,isLoading:p.isPending,data:n.getQueryData([f.ACTIVE_ORDER])?.lines}},Wc=(e,t={})=>{let n=_c();return(0,d.useQuery)({queryKey:[f.ORDER_BY_CODE,e],queryFn:()=>n.orderByCode(e),enabled:!!e,...t})},Gc=e=>{let t=_c(),n=(0,d.useQueryClient)(),r=V(da,`cart:error`),i=V(da,`cart:updated`),a=V(da,`cart:updating`),o=vc({mutationFn:async n=>(e?.preRemove&&await e.preRemove(n),a({data:{payload:{orderLineId:n,quantity:0}},action:B.REMOVE}),t.removeOrderLine(n)),onMutate:async(e,t)=>{let r=t?.client??n;await r.cancelQueries({queryKey:[f.ACTIVE_ORDER]});let i=r.getQueryData([f.ACTIVE_ORDER]),a=i?.lines.find(t=>t.id===e)?.quantity??0;return r.setQueryData([f.ACTIVE_ORDER],t=>t&&{...t,lines:t.lines.filter(t=>t.id!==e),totalQuantity:t.totalQuantity-a}),{previousOrder:i}},onError:(e,t,i,a)=>{let o=a?.client??n;r({data:e,action:B.REMOVE}),i?.previousOrder&&(o.setQueryData([f.ACTIVE_ORDER],i.previousOrder),n.setQueryData([f.ACTIVE_ORDER],i.previousOrder))},onSettled:(e,t,a,o,s)=>{(s?.client??n).invalidateQueries({queryKey:[f.ACTIVE_ORDER]}),Zi(e)||t?r({data:t||e,action:B.REMOVE}):i({data:{payload:{orderLineId:a,quantity:0},order:e},action:B.REMOVE})}});return{removeOrderLine:async e=>await o.mutateAsync(e),error:o.error,isLoading:o.isPending}},Kc=({orderCode:e,adjustable:t=!0,removable:n=!0,fetchActiveOrder:r=!0,min:i=0,max:a,step:o=1,callbacks:s}={})=>{let c=Q(),l=Hc({enabled:r&&!e}),d=Wc(e||``,{enabled:!!e}),f=(0,u.useMemo)(()=>e?d.data?.lines:l.data?.lines,[e,l.data?.lines,d.data?.lines]),{removeOrderLine:p,error:m,isLoading:h}=Gc({preRemove:s?.preRemove}),g=(0,u.useCallback)((t,r={})=>F({type:`button`,onClick:async()=>await p(t),"aria-label":`Remove item`,disabled:h||!n||!!e,...r},c),[p,h,n,e,c]),{adjustOrderLine:_,error:v,isLoading:y}=Uc({preAdjust:s?.preAdjust}),b=(0,u.useCallback)(async(e,t)=>{if(f?.find(t=>t.id===e)&&!(t<i)&&!(a&&t>a))return await _(e,t)},[_,f,i,a]),x=(0,u.useCallback)((n,r={})=>F({type:`button`,oncClick:()=>b(n,o),"aria-label":`Increase quantity`,disabled:y||!t||!!e,...r},c),[b,o,y,t,e,c]),S=(0,u.useCallback)((n,r={})=>F({type:`button`,onClick:()=>b(n,-o),"aria-label":`Decrease quantity`,disabled:y||!t||!!e,...r},c),[b,o,y,t,e,c]),C=(0,u.useCallback)((e,t={})=>Mi({type:`input`,onChange:t=>b(e,Number(t.target.value)),...t},c),[b,c]);return{...l||d,orderLines:f,adjustOrderLine:b,removeOrderLine:p,adjustError:v,removeError:m,isAdjusting:y,isRemoving:h,getRemoveProps:g,getIncrementProps:x,getDecrementProps:S,getAdjustProps:C}},qc=`OrderLines`,[Jc,Yc]=Oi(qc),[Xc,Zc]=Jc(qc),Qc=({children:e,orderCode:t,adjustable:n=!0,removable:r=!0,callbacks:i,__scopeOrderLines:a})=>{let o={...Kc({orderCode:t,adjustable:n,removable:r,callbacks:i,fetchActiveOrder:!t}),isAdjustable:n&&!t,isRemovable:r&&!t,callbacks:i};return(0,P.jsx)(Xc,{scope:a,...o,children:e?.(o)})};Qc.displayName=qc;var $=`OrderLineItem`,[$c,el]=Jc($),tl=({children:e,orderLine:t,__scopeOrderLines:n})=>{let{adjustOrderLine:r,removeOrderLine:i,adjustError:a,removeError:o,isAdjusting:s,isRemoving:c,isAdjustable:l,isRemovable:u,getRemoveProps:d,callbacks:f}=Zc($,n);return(0,P.jsx)($c,{scope:n,orderLine:t,adjustOrderLine:e=>r(t.id,e),removeOrderLine:()=>i(t.id),adjustError:a,removeError:o,isAdjusting:s,isRemoving:c,isAdjustable:l,isRemovable:u,getRemoveProps:(e={})=>d(t.id,e),callbacks:f,children:e})};tl.displayName=$;var nl=`OrderLineImage`,rl=({alt:e,asChild:t,__scopeOrderLines:n,...r})=>{let{orderLine:i}=el($,n),a=i.featuredAsset?.preview,o=Q(),s=I(o,t,`img`);return a?(0,P.jsx)(s,{alt:e??i.productVariant.name,src:a,...Ni(r,o)}):null};rl.displayName=nl;var il=`OrderLineRemove`,al=({children:e,asChild:t,__scopeOrderLines:n,...r})=>{let{getRemoveProps:i,isRemovable:a}=el($,n),o=Q(),s=I(o,t,`button`);return a?(0,P.jsx)(s,{...F(i(r),o),children:e}):null};al.displayName=il;var ol=`OrderLineQuantity`,sl=({children:e,min:t=0,max:n,step:r=1,__scopeOrderLines:i})=>{let{orderLine:a,isAdjustable:o,callbacks:s}=el($,i),{adjustOrderLine:c}=Uc({preAdjust:s?.preAdjust});return!o||!a?null:(0,P.jsx)(Mc.Root,{__scopeQuantityButtons:i,value:a.quantity,onValueChange:async e=>{if(e>=t&&(!n||e<=n))try{await c(a.id,e)}catch(e){console.error(`Failed to adjust quantity:`,e)}},min:t,max:n,step:r,children:e})};sl.displayName=ol;var cl={Root:sl,Decrement:Mc.Decrement,Input:Mc.Input,Increment:Mc.Increment,Remove:({children:e,...t})=>{let{getRemoveProps:n}=el($);return(0,P.jsx)(`button`,{...n(t),children:e})}},ll=`OrderLinesPrice`,ul=({children:e,withDiscountPrice:t=!1,__scopeOrderLines:n})=>{let{orderLine:r}=el($,n),{productVariant:i,discountedLinePriceWithTax:a,linePriceWithTax:o,linePrice:s}=r,{currencyCode:c}=i;return Qi(e,{price:s,priceWithTax:o,currencyCode:c,isPromotion:t&&a!==o,isFromPrice:typeof s==`object`&&`min`in s&&`max`in s&&s.min!==s.max})};ul.displayName=ll;var dl={Root:Qc,Item:tl,Image:rl,Remove:al,Quantity:cl,Price:ul};exports.OrderLines=dl,exports.createOrderLinesScope=Yc,exports.useOrderLinesProps=Kc;
package/index.mjs CHANGED
@@ -3948,17 +3948,17 @@ var qc = (e = {}) => {
3948
3948
  enabled: !!e,
3949
3949
  ...t
3950
3950
  });
3951
- }, Xc = () => {
3952
- let e = Sc(), t = f(), n = H(ha, "cart:error"), r = H(ha, "cart:updated"), i = H(ha, "cart:updating"), a = Cc({
3953
- mutationFn: (t) => (i({
3951
+ }, Xc = (e) => {
3952
+ let t = Sc(), n = f(), r = H(ha, "cart:error"), i = H(ha, "cart:updated"), a = H(ha, "cart:updating"), o = Cc({
3953
+ mutationFn: async (n) => (e?.preRemove && await e.preRemove(n), a({
3954
3954
  data: { payload: {
3955
- orderLineId: t,
3955
+ orderLineId: n,
3956
3956
  quantity: 0
3957
3957
  } },
3958
3958
  action: V.REMOVE
3959
- }), e.removeOrderLine(t)),
3960
- onMutate: async (e, n) => {
3961
- let r = n?.client ?? t;
3959
+ }), t.removeOrderLine(n)),
3960
+ onMutate: async (e, t) => {
3961
+ let r = t?.client ?? n;
3962
3962
  await r.cancelQueries({ queryKey: [_.ACTIVE_ORDER] });
3963
3963
  let i = r.getQueryData([_.ACTIVE_ORDER]), a = i?.lines.find((t) => t.id === e)?.quantity ?? 0;
3964
3964
  return r.setQueryData([_.ACTIVE_ORDER], (t) => t && {
@@ -3967,18 +3967,18 @@ var qc = (e = {}) => {
3967
3967
  totalQuantity: t.totalQuantity - a
3968
3968
  }), { previousOrder: i };
3969
3969
  },
3970
- onError: (e, r, i, a) => {
3971
- let o = a?.client ?? t;
3972
- n({
3970
+ onError: (e, t, i, a) => {
3971
+ let o = a?.client ?? n;
3972
+ r({
3973
3973
  data: e,
3974
3974
  action: V.REMOVE
3975
- }), i?.previousOrder && (o.setQueryData([_.ACTIVE_ORDER], i.previousOrder), t.setQueryData([_.ACTIVE_ORDER], i.previousOrder));
3975
+ }), i?.previousOrder && (o.setQueryData([_.ACTIVE_ORDER], i.previousOrder), n.setQueryData([_.ACTIVE_ORDER], i.previousOrder));
3976
3976
  },
3977
- onSettled: (e, i, a, o, s) => {
3978
- (s?.client ?? t).invalidateQueries({ queryKey: [_.ACTIVE_ORDER] }), ta(e) || i ? n({
3979
- data: i || e,
3977
+ onSettled: (e, t, a, o, s) => {
3978
+ (s?.client ?? n).invalidateQueries({ queryKey: [_.ACTIVE_ORDER] }), ta(e) || t ? r({
3979
+ data: t || e,
3980
3980
  action: V.REMOVE
3981
- }) : r({
3981
+ }) : i({
3982
3982
  data: {
3983
3983
  payload: {
3984
3984
  orderLineId: a,
@@ -3991,18 +3991,18 @@ var qc = (e = {}) => {
3991
3991
  }
3992
3992
  });
3993
3993
  return {
3994
- removeOrderLine: async (e) => await a.mutateAsync(e),
3995
- error: a.error,
3996
- isLoading: a.isPending
3994
+ removeOrderLine: async (e) => await o.mutateAsync(e),
3995
+ error: o.error,
3996
+ isLoading: o.isPending
3997
3997
  };
3998
3998
  }, Zc = ({ orderCode: e, adjustable: t = !0, removable: n = !0, fetchActiveOrder: i = !0, min: a = 0, max: s, step: c = 1, callbacks: l } = {}) => {
3999
3999
  let u = Q(), d = qc({ enabled: i && !e }), f = Yc(e || "", { enabled: !!e }), p = o(() => e ? f.data?.lines : d.data?.lines, [
4000
4000
  e,
4001
4001
  d.data?.lines,
4002
4002
  f.data?.lines
4003
- ]), { removeOrderLine: m, error: h, isLoading: g } = Xc(), _ = r((t, r = {}) => I({
4003
+ ]), { removeOrderLine: m, error: h, isLoading: g } = Xc({ preRemove: l?.preRemove }), _ = r((t, r = {}) => I({
4004
4004
  type: "button",
4005
- onClick: () => m(t),
4005
+ onClick: async () => await m(t),
4006
4006
  "aria-label": "Remove item",
4007
4007
  disabled: g || !n || !!e,
4008
4008
  ...r
@@ -20,6 +20,7 @@ type OrderLinesContextValue = UseOrderLinesResult & {
20
20
  isRemovable: boolean;
21
21
  callbacks?: {
22
22
  preAdjust?: (orderLineId: string, quantity: number) => Promise<void>;
23
+ preRemove?: (lineId: string) => Promise<void>;
23
24
  };
24
25
  };
25
26
  interface OrderLinesRootProps {
@@ -29,6 +30,7 @@ interface OrderLinesRootProps {
29
30
  removable?: boolean;
30
31
  callbacks?: {
31
32
  preAdjust?: (orderLineId: string, quantity: number) => Promise<void>;
33
+ preRemove?: (lineId: string) => Promise<void>;
32
34
  };
33
35
  }
34
36
  interface OrderLineItemProps {
@@ -14,7 +14,7 @@ export type UseOrderLinesResult = UseQueryResult<Maybe<Order>, Error> & {
14
14
  getDecrementProps: (props?: Partial<ButtonHTMLAttributes<HTMLButtonElement>>) => ButtonHTMLAttributes<HTMLButtonElement>;
15
15
  getIncrementProps: (props?: Partial<ButtonHTMLAttributes<HTMLButtonElement>>) => ButtonHTMLAttributes<HTMLButtonElement>;
16
16
  };
17
- interface UseOrderLinesOptions {
17
+ export interface UseOrderLinesOptions {
18
18
  orderCode?: string;
19
19
  adjustable?: boolean;
20
20
  removable?: boolean;
@@ -24,7 +24,7 @@ interface UseOrderLinesOptions {
24
24
  step?: number;
25
25
  callbacks?: {
26
26
  preAdjust?: (orderLineId: string, quantity: number) => Promise<void>;
27
+ preRemove?: (lineId: string) => Promise<void>;
27
28
  };
28
29
  }
29
30
  export declare const useOrderLinesProps: ({ orderCode, adjustable, removable, fetchActiveOrder, min, max, step, callbacks, }?: UseOrderLinesOptions) => UseOrderLinesResult;
30
- export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haus-storefront-react/order-lines",
3
- "version": "1.0.4-next.11",
3
+ "version": "1.0.4-next.12",
4
4
  "main": "./index.js",
5
5
  "types": "./index.d.ts",
6
6
  "exports": {
@@ -11,11 +11,11 @@
11
11
  }
12
12
  },
13
13
  "dependencies": {
14
- "@haus-storefront-react/common-ui": "1.0.4-next.11",
15
- "@haus-storefront-react/common-utils": "1.0.4-next.11",
16
- "@haus-storefront-react/core": "1.0.4-next.11",
17
- "@haus-storefront-react/hooks": "1.0.4-next.11",
18
- "@haus-storefront-react/shared-types": "1.0.4-next.11"
14
+ "@haus-storefront-react/common-ui": "1.0.4-next.12",
15
+ "@haus-storefront-react/common-utils": "1.0.4-next.12",
16
+ "@haus-storefront-react/core": "1.0.4-next.12",
17
+ "@haus-storefront-react/hooks": "1.0.4-next.12",
18
+ "@haus-storefront-react/shared-types": "1.0.4-next.12"
19
19
  },
20
20
  "publishConfig": {
21
21
  "access": "restricted"